Sia-pa

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Sia-pa as PDF for free.

More details

  • Words: 31,221
  • Pages: 49
Università di Palermo: Facoltà di Ingegneria; Corso di Laurea in Ingegneria Gestionale (Ing. M. Ficicchia: a.a. 2003-2004) Dispense (versione 1.0 del 03/5/2004) di

Sistemi Informativi Aziendali SOMMARIO

1 Introduzione................................................................................................................................2 1.1 Oggetto della materia.............................................................................................................2 1.2 Contesto in cui si evolve l’informatica..................................................................................2 2 L’Hardware.................................................................................................................................3 2.1 La scheda madre....................................................................................................................4 2.2 La schede che si inseriscono sulla scheda madre..................................................................5 2.3 Le memorie di massa.............................................................................................................6 2.4 Le periferiche.........................................................................................................................9 3 Il Software.................................................................................................................................10 3.1 Il software di sistema...........................................................................................................11 3.2 Il software applicativo.........................................................................................................14 4 Le reti.........................................................................................................................................15 4.1 Tipologie di reti....................................................................................................................15 4.2 Elementi costituenti una rete................................................................................................16 4.3 La rete Internet.....................................................................................................................18 4.4 Le applicazioni diffuse in tutti i settori................................................................................22 4.5 Le applicazioni nel settore industriale.................................................................................24 4.6 Le applicazioni nel settore dei servizi..................................................................................24 5 L’integrazione delle applicazioni.............................................................................................31 5.1 L’integrazione orizzontale...................................................................................................32 5.2 L’integrazione verticale.......................................................................................................33 6 Le basi di dati............................................................................................................................35 6.1 File.......................................................................................................................................35 6.2 Database...............................................................................................................................37 7 Pianificazione e realizzazione di un sistema informativo......................................................41 7.1 L’ingegneria del software....................................................................................................42 7.2 I paradigmi di programmazione...........................................................................................44 7.3 La misura del software.........................................................................................................46 7.4 L’utilizzo dei Sistemi Informativi Aziendali........................................................................48 Indice delle figure Figura 1 – Architettura hardware di un Personal Computer....................................................4 Figura 2 – Struttura di un Hard Disk..........................................................................................7 Figura 3 – Struttura di un codice a barre....................................................................................9 Figura 4 – Classificazione del software......................................................................................10 Figura 5 – Topologie di reti locali (LAN)...................................................................................15 Figura 6 – Lo stack ISO/OSI......................................................................................................18 Figura 7 – Posizionamento dei canali di accesso rispetto ai vincoli........................................26 Figura 8 – La macchina Enigma................................................................................................28 Figura 9 – Schema di funzionamento di un sistema a chiave simmetrica..............................29 Figura 10 – Schema di funzionamento di un sistema a chiave asimmetrica..........................30 Figura 11 – Esempio di chiave pubblica....................................................................................30 Figura 12 – Esempi di analisi multidimensionale OLAP.........................................................34 Figura 13 – La struttura di un file.............................................................................................35 Figura 14 – Confronto tra l’organizzazione dei file piatti e dei Database..............................37 Figura 15 – Esempio di Database gerarchico............................................................................38 Figura 16 – Relazioni 1:1, 1:m ed m:n.......................................................................................39 Figura 17 – Esempi di relazioni 1:1, 1:m ed m:n......................................................................39 Figura 18 – Rappresentazione di una relazione 1:m................................................................39 pag. 1 di 49

Figura 19 – Rappresentazione di una relazione m:n................................................................40 Figura 20 – Confronto tra modello relazionale e modello ad oggetti......................................41 Figura 21 – Esempio di un diagramma strutturale di un programma...................................45 Figura 22 – Esempio di classi ed ereditarietà............................................................................46 Figura 23 – Schema di applicazione del metodo dei Function Point......................................47 1 1.1

Introduzione Oggetto della materia

Sistema Informativo Aziendale Un Sistema Informativo Aziendale può essere definito come l’insieme di persone, macchine, reti, applicazioni software e processi che permettono all’azienda di disporre delle informazioni giuste al momento giusto. Ciclo di vita di un Sistema Informativo Aziendale Un Sistema Informativo percorre generalmente un ciclo di vita caratterizzato da alcune fasi ben precise: • Fattibilità tecnico-economica: fase in cui vengono stabiliti gli obiettivi, verificata la fattibilità tecnica e fatta una prima valutazione dei costi e dei benefici; • Analisi: fase in cui viene effettuata la modellazione dei processi da informatizzare, la progettazione di dettaglio delle funzionalità e delle banche-dati del Sistema Informativo; • Progettazione: fase in cui viene effettuata la progettazione di dettaglio dei componenti software del Sistema Informativo; • Realizzazione: fase in cui il sistema viene realizzato, utilizzando due possibili strategie, in genere combinate: o make (realizzare), che consiste nel sviluppare appositamente il software; o buy (comprare), che consiste nell’acquisire software già pronto ed, eventualmente, personalizzarlo; • Collaudo: fase durante la quale i singoli componenti software e l’intero sistema vengono collaudati e, se necessario, modificati; • Manutenzione: fase continua caratterizzata da piccoli interventi sul software per: o rimuovere eventuali anomalie; o adeguare il software alla mutata normativa; o adeguare il software a tecnologie più avanzate; o migliorare le prestazioni del software; o aggiungere nuove funzionalità o migliorare quelle esistenti; • Utilizzo: fase continua che costituisce lo scopo finale della implementazione dei Sistemi Informativi. Alcune categorie ed esempi di Sistemi Informativi Aziendali o Sistemi di supporto alla produzione industriale (CAD, CAM, etc…); o Sistemi di supporto alla gestione aziendale (Personale, Contabilità, Contr. di Gestione, etc.); o Sistemi bancari (Sportello, C/C, Borsa Titoli, etc…); o Sistemi per la PAC (Pubblica Amministrazione Centrale) (Contabilità di Stato, Finanza, Pubblica Istruzione, Beni Culturali, etc…); o Sistemi per la PAL (Pubblica Amm.ne Locale) (Anagrafe, Stato Civile, Tributi, etc…); o Sistemi per la Sanità (ADT, CUP, Pronto Soccorso, Diagnostica per immagini, etc…); o Sistemi per l’e-Commerce (Catalogo elettronico, carrello della spesa, pagamenti, etc…); o Sistemi di pianificaz., consuntivaz., controllo (MIS, DSS, DataWarehouse, cruscotti, etc…). 1.2

Contesto in cui si evolve l’informatica

La Società dell’Informazione (o post-industriale) L’era industriale, iniziata con l’invenzione delle macchine complesse, è ormai terminata; siamo nell’era successiva, post-industriale, definita da molti Società dell’Informazione. Quale data di transizione (come sempre puramente formale) sono state proposte, tra le altre: o l’invenzione del computer (a sua volta oggetto di dibattito, oscilla tra il 1930 e il 1945); o la creazione di Arpanet/Internet (anni ’60-‘70); o la caduta del muro di Berlino (novembre 1989); Ma ne potrebbero esistere molte altre, precedenti e successive: dall’invenzione del telefono, a quella della radio, dalla messa in orbita del primo satellite per le telecomunicazioni, alla nascita del World Wide Web.

pag. 2 di 49

Caratteristiche della Società Industriale La Società Industriale era caratterizzata dal seguente profilo: o Produz. di beni utilizzando grandi quantità di materie prime (carbone, petrolio, acciaio, etc); o Produzione di massa dei beni grazie alla standardizzazione (ad esempio, nel settore tessile); o Sistemi di lavoro alienanti per gli operai, perché basati su piccoli compiti scialbi ripetitivi (Taylorismo). o Separazione netta tra prodotto e servizio. Definizione di prodotto e servizio (Karl Marx – Il Capitale) Il prodotto viene realizzato e consumato in momenti differenti (Es.: tessuto). Il servizio viene consumato nello stesso momento in cui viene prodotto (Es.: trasporto in treno). Attenzione: Alcuni testi riportano definizioni errate di prodotto e servizio. Il più comune errore è che il prodotto sia materiale ed il servizio immateriale. In realtà ci sono prodotti immateriali (software, film) e servizi con elevata componente materiale (ristorante). Caratteristiche della Società dell’Informazione La Società dell’Informazione è invece caratterizzata dal seguente profilo: o Sviluppo autosostenibile (risparmio di materie prime); o Dematerializzazione del prodotto (es.: software); o Virtualizzazione del servizio (es.: banca on-line); o Virtualizzazione del posto di lavoro (Virtual Workplace, es.: consulenza); o Personalizzazione di massa (grazie a metodologie e tecnologie telematiche); o Lavoro altamente specializzato ma vario e gratificante. o Globalizzazione, comunicazione, connessione. Evoluzione del ruolo del computer nella Società dell’Informazione Il computer ha subito nel corso dei decenni un’evoluzione del proprio ruolo nella Società dell’Informazione. Si possono distinguere almeno tre ruoli principali: o Prima fase (anni ’40-’50): il computer è un calcolatore (da cui il nome inglese); Es.: Enigma/Colossus, ricerca; previsioni del tempo; o Seconda fase (anni ’60-’80): il computer è un gestore (da cui il nome francese ordinateur); Es.: sistemi informativi aziendali classici; o Terza fase (anni ’90-2000): il computer è un comunicatore; Es.: Internet, E-mail, etc… Col passare del tempo i nuovi ruoli si affiancano a quelli vecchi, che permangono, anche se tendono a rivestire un ruolo di nicchia (ad esempio, supercalcolatori per la ricerca scientifica). L’ICT (Information and Communication Technology) Come conseguenza del terzo ruolo, l’Informatica (fusione dei termini Informazione e Automatica) dagli anni ’90 diventa ICT (Information and Communication Technology = Tecnologia dell’informazione e della comunicazione), a sottolineare la convergenza e l’integrazione tra gli aspetti di elaborazione e di comunicazione. Un esempio tipico di questa convergenza ed integrazione è il confine sempre più labile tra un anello e l’altro nella catena dei PDA (Personal Digital Assistant = Assistente digitale personale): telefoni cellulari, Smartphone, PC Phone, Palmari, PC laptop, PC portatili. 2

L’Hardware

Hardware e Software L’hardware (in inglese significa roba dura; è un termine da tempo utilizzato con il significato di ferramenta) è l’insieme di tutte le componenti tangibili di un elaboratore, cioè la parte fisica, materiale di un computer (circuiti, magneti, cavi, schede, contenitori, etc…). Il software (in inglese significa roba molle; è un neologismo inventato per l’informatica, in contrapposizione ad hardware) è l’insieme di tutte le componenti intangibili di un elaboratore, cioè i programmi scritti per farlo funzionare e memorizzati nell’hardware. Il PC (Personal Computer) I primi computer (anni ’40) erano basati su valvole termoioniche ed erano grandi come un appartamento di lusso. Col passare degli anni divennero meno imponenti e poi, con la diffusione dei transistor prima (anni ’50-’60) e dei circuiti integrati dopo (anni ’70-‘80), via via più piccoli: si parlò di midi-computer (grandi come un armadio), minicomputer (grandi come una lavatrice), micro-computer (grandi come un cassetto). pag. 3 di 49

Nel 1981 IBM operò una svolta storica introducendo il Personal Computer, un micro-computer il cui cuore era un micro-processore costituito da un unico circuito integrato, il quale, oltre ad essere piccolo come una macchina da scrivere, era dotato di un’interfaccia così semplice (Sistema Operativo DOS) da essere utilizzabile da chiunque quale computer personale. Il successo fu enorme e tale da rendere l’architettura hardware PC prevalente su tutte le altre. Pertanto ci limiteremo a trattare l’hardware di un PC. Componenti dell’architettura di un PC I componenti di un Personal Computer sono: o Scheda madre, su cui sono cablati, tra l’altro, il processore, il bus, il clock, la ROM, le porte di comunicazione con l’esterno e le interfacce; o Schede di memoria centrale (RAM) e di espansione (video, audio, comunicazione, etc…); o Disposit. di memoria di massa (Floppy Disk, Hard Disk, dispos. ottici, memorie USB, etc); o Periferiche di input (Tastiera, mouse, lettore ottico, scanner, etc…); o Periferiche di output (Monitor, stampante, casse, etc…).

Figura 1 – Architettura hardware di un Personal Computer 2.1

La scheda madre

E’ la scheda più grossa che si trovi dentro il case (contenitore) del PC e ne costituisce il cuore. E’ affollata di componenti elettronici (transistor, resistenze, condensatori, bobine) tra cui spiccano alcuni grossi circuiti integrati. Il più grosso è la CPU. La CPU (Central Processing Unit) La CPU (Central Processing Unit = Unità di elaborazione centrale) è un microprocessore ad alta integrazione (contiene milioni di transistor), che effettua le elaborazioni principali del computer. La CPU elabora le istruzioni del programma in esecuzione sul computer, che sono di due tipi: o Aritmetiche: consistono in un calcolo (in genere una delle 4 operazioni) che coinvolge due o più numeri memorizzati in altrettante locazioni di memoria, producendo un risultato che viene memorizzato in un’altra locazione di memoria; o Logiche: consistono in un confronto tra due più valori memorizzati in altrettante locazioni di memoria, che produce un risultato vero o falso (es. A > B); La CPU è composta da due unità: o Control Unit (Unità di controllo): scorre sequenzialmente le istruzioni del programma in esecuzione, le trasmette all’ALU, che le esegue, e ne acquisisce il risultato; se l’istruzione è aritmetica, deposita il risultato nella locazione di memoria specificata dall’istruzione; se l’istruzione è logica, esegue o meno un salto ad un’altra istruzione specificata a seconda che il risultato sia vero o falso; o ALU (Arithmetic Logic Unit – Unità Logico-Aritmetica): esegue i calcoli ed i confronti richiesti dalla Control Unit, producendo il risultato numerico (istruzione aritmetica) o la condizione Vero/Falso (istruzione logica); In questo modo, la CPU è in grado non solo di eseguire calcoli complessi in tempi ridottissimi, ma anche di “prendere decisioni” in fase esecutiva sulla base dei valori delle variabili di programma. La CPU è il componente più veloce del computer, in grado di eseguire miliardi di istruzioni al secondo. La potenza (velocità) di una CPU si misura oggi (aprile 2004) in GHz (GigaHertz, ossia miliardi di Hertz, cicli al secondo). pag. 4 di 49

Il bus Il bus (autobus) è l’autostrada di collegamento tra la CPU e le altre componenti del computer. Consente ai dati di fluire da un componente all’altro con la velocità più adatta al caso. La velocità del bus è in genere intermedia tra quella della CPU e quella delle altre componenti. Il clock Il clock (orologio) è un oscillatore al quarzo che scandisce i cicli (Hertz) di funzionamento della CPU e degli altri componenti. Ogni ciclo corrisponde in genere ad un’istruzione eseguita dalla CPU. Gli altri componenti, più lenti, effettuano un’operazione ogni n cicli. Le frequenze dei clock odierni si misurano in GHz. La ROM (Read Only Memory) La ROM (Read Only Memory = Memoria di sola lettura) è una memoria elettronica di sola lettura, che viene memorizzata in fabbrica con un software detto di bootstrap (anello nello stivale, utile per calzarlo). La ROM è una memoria veloce, in grado di comunicare con efficienza con la CPU, senza costringerla ad attese penalizzanti. Il software di bootstrap in essa contenuto è in grado di avviare il computer all’accensione in attesa che si attivi il Sistema Operativo del Computer. L’esigenza di disporre di una ROM è dovuta al fatto che, come si vedrà, la CPU non può leggere istruzioni dall’Hard Disk perché questo è troppo lento e, all’accensione, non può leggere istruzioni dalla RAM perché questa è volatile. In assenza delle istruzioni non volatili memorizzate sulla veloce ROM (bootstrap) i computer non potrebbero avviarsi. Le porte di comunicazione Sulla scheda madre sono cablate numerose porte di comunicazione con dispositivi esterni al computer. Le più comuni sono: o Porta tastiera: serve a connettere la tastiera; o Porta mouse: serve a connettere il mouse; o Porte seriali (in genere due): trasmettono i dati serialmente, un bit dopo l’altro; servono a connettere dispositivi seriali, come lettori di codici a barre, scanner, modem e molti altri; vanno lentamente in disuso, sostituite dalle porte USB; o Porta parallela: trasmette i dati 8 bit alla volta; serve a connettere la stampante; o Porte USB (Universal Serial Bus = Autobus seriale universale; sui computer moderni ce ne sono almeno 6, di cui due sul frontale): trasmette i dati serialmente, ma ad alta velocità; serve a connettere praticamente tutte le periferiche; inoltre, a differenza delle altre porte, può connettere e sconnettere i dispositivi a caldo (senza spegnere il computer), può connettere più dispositivi in serie ed è in grado di fornire anche l’alimentazione; ideale per dispositivi ad alto trasferimento di dati (come macchine fotografiche e videocamere) ha ormai di fatto rimpiazzato le porte seriali; Le interfacce Sulla scheda madre sono cablate anche le interfacce con dispositivi interni al computer ma fisicamente staccati dalla scheda stessa. Le più comuni sono: o Interfaccia per il Floppy Disk; sta andando lentamente in disuso; o Interfacce per le altre memorie di massa (Hard Disk, lettori/masterizzatori CD/DVD); in genere ci sono due canali, ciascuno dei quali supporta due dispositivi, per un totale di quattro dispositivi. 2.2

La schede che si inseriscono sulla scheda madre

Sulla scheda madre esistono degli slot (fessure) nei quali è possibile inserire delle schede aggiuntive. Alcuni slot sono dedicati alle schede di memoria centrale (RAM), altri sono disponibili per schede di espansione, che incrementano le funzionalità del PC. La RAM (Random Access Memory) La RAM (Random Access Memory = Memoria ad accesso casuale) è una memoria elettronica che può essere letta e scritta. Le sue caratteristiche sono: o Elevata velocità; è in genere il componente più veloce dopo la CPU; o Volatilità dei dati; per la persistenza dei dati, occorre l’alimentazione elettrica; conseguentemente, la RAM perde tutti i dati ad ogni spegnimento del computer; o Alto costo per dato memorizzato; essendo una memoria elettronica, il costo è elevato rispetto alle memorie magnetiche (come gli Hard Disk) o ottiche (come i CD/DVD); o Limitata capacità di memorizzazione (qualche centinaio di MB) dovuta all’alto costo. Per la sua elevata velocità, la RAM è l’unica memoria (oltre alla ROM, che però non è scrivibile) che può dialogare direttamente con la CPU senza che quest’ultima trascorra la gran parte del suo tempo in attesa di leggere o scrivere pag. 5 di 49

un dato. Tutti i dati e le istruzioni del computer che devono essere elaborati dalla CPU vengono pertanto memorizzati temporaneamente sulla RAM, che assume quindi il ruolo di memoria centrale dell’elaboratore. Questo è il motivo per il quale tutti i computer utilizzano una RAM, nonostante l’alto costo. La caratteristica principale di una RAM è la capienza che si misura oggi (aprile 04) in centinaia di MB (MegaByte, cioè milioni di Byte), con tendenza a portarsi sul GB (GigaByte, cioè miliardi di Byte). I tagli sono sempre potenze di 2 (128MB, 256MB, 512MB, etc…). La potenza di un computer deriva dalla velocità della CPU e, subito dopo, dalla quantità di RAM istallata. La scheda video Sulla scheda madre esiste uno slot denominato AGP (Accelerated Graphic Port = Porta grafica accelerata), predisposto per l’inserimento della scheda video. La scheda video è un piccolo computer fornito di processore grafico, schede di memoria ed altri componenti che elaborano il software grafico del programmi creando la grafica da inviare al monitor. La scheda video è dotata di un’uscita (denominata VGA – Video Graphics Array = Matrice grafica video) che consente la connessione al video ed oggi, sempre più spesso, di altre uscite, come la DVI (Digital Video Interface = Interfaccia video digitale) per la connessione a monitor digitali (LCD, Plasma, etc…) o la S-Video per televisori, etc… Alcune schede moderne, orientate ai videogiocatori, montano processori grafici che rivaleggiano in potenza con la CPU del computer. Altre, orientate alla multimedialità, ospitano sintonizzatori TV o satellitari o hanno capacità di acquisizione video. La scheda audio Gli altri slot di espansione della scheda madre possono ospitare schede per gli usi più disparati. Tra questi vi è la scheda audio, che elabora il software audio dei programmi creando i segnali audio per le periferiche destinate (casse). La scheda audio ha almeno un’uscita di tipo jack che permette il collegamento alle casse stereo amplificate, un ingresso jack per il microfono ed un ingresso dedicato per il Joystick (bastone da divertimento, una periferica di gioco che, per ragioni storiche, è pilotata dalla scheda audio). Nelle schede moderne esistono altre uscite, tra cui una digitale di tipo S/PDIF (Sony/Philips Digital InterFace = Interfaccia digitale Sony/Philips) che consente il collegamento digitale ad un amplificatore decodificatore di segnali Dolby Digital e DTS (Digital Theather Systems, inc.). Inoltre ormai la gran parte delle schede moderne supporta un sistema surround a 5.1 canali. Le schede audio più sofisticate sono dei veri e propri sistemi Home Theater. La scheda di rete La scheda di rete è una scheda di espansione che consente il collegamento del PC ad una rete locale. Essa trasforma i segnali del bus del computer in segnali coerenti con la rete locale (oggi quasi esclusivamente di tipo Ethernet). Ha un’uscita di rete oggi esclusivamente di tipo RJ45. Si vanno lentamente diffondendo schede di rete wireless (senza fili), che utilizzano una tecnologia ad onde radio secondo lo standard 802.11b (comunemente citato come Wi-Fi). Queste “schede”, tuttavia, in genere non si inseriscono nella scheda madre, ma si collegano ad una porta del PC (in genere USB). La scheda modem La scheda modem (MODulatore DEModulatore) è una scheda di espansione che consente il collegamento del PC alla linea telefonica. La scheda trasforma i segnali del bus del computer in segnali telefonici analogici da inviare sul doppino telefonico. La scheda ha un’uscita telefonica oggi esclusivamente di tipo RJ11. Esistono alcune varianti della scheda modem dedicate a connessioni telefoniche particolari. Tra queste le più diffuse sono la scheda ADSL che consente un collegamento analogico ad alta velocità sul doppino telefonico e la scheda ISDN predisposta per le linee telefoniche digitali. 2.3

Le memorie di massa

La memoria RAM è una memoria veloce, ma volatile e molto costosa, quindi disponibile in tagli relativamente piccoli (alcune centinaia di MB). Per memorizzare permanentemente grandi quantità di dati (decine di GB) a basso costo i computer dispongono delle memorie di massa. Le loro caratteristiche sono: o Persistenza dei dati; grazie alla tecnologia magnetica o ottica i dati si conservano anche in assenza di alimentazione; o Basso costo per dato memorizzato; o Elevata capacità (decine o centinaia di GB per gli Hard Disk), dovuta al basso costo; o Bassa velocità; i dati devono essere spostati temporaneamente sulla RAM per poter essere elaborati dalla CPU. Il Floppy Disk Il Floppy Disk (Disco molle, floscio) è la prima tipologia di memoria di massa ad essere apparsa sui PC. Consiste in un disco di piccole dimensioni a tecnologia magnetica, che oggi può contenere 1,4 MB e viene inserito in un drive presente nel case del PC per la lettura e scrittura. pag. 6 di 49

Contenuto in una custodia rigida da taschino (il termine floppy ha ragioni storiche), è studiato per consentire comodi trasferimenti di dati tra PC. Oggi è in disuso per la scarsa capacità, sostituito dalle più comode, più veloci e molto più capienti memorie USB. L’Hard Disk L’Hard Disk (Disco rigido) è anch’esso un disco a tecnologia magnetica, ma è istallato in maniera fissa sul PC ed ha una struttura molto più complessa. Il disco è in realtà un cilindro costituito da più dischi piani coassiali, la cui superficie ha un rivestimento magnetico. Un braccio in grado di muoversi radialmente porta le testine di lettura/scrittura, in modo che il movimento rotatorio dei dischi combinato con quello radiale del braccio permetta alle testine di raggiungere qualunque punto della superficie magnetizzata. Per rispecchiare questa struttura di funzionamento, la superficie magnetizzata di ogni disco è suddivisa in tracce concentriche, la cui sovrapposizione sui dischi forma un cilindro, raggiungibile con il posizionamento radiale del braccio portatestine. Ciascuna traccia è ulteriormente suddivisa in settori. L’Hard Disk è la principale memoria di massa di un PC. La sua caratteristica più importante è la capienza (si misura in decine o, tendenzialmente, centinaia di GB, GigaByte: miliardi di Byte).

Figura 2 – Struttura di un Hard Disk Le memorie di massa ottiche (CD e DVD) Le memorie di massa ottiche sono dischi che, come i Floppy Disk, vengono inseriti in un drive in grado di leggerli (Lettore) o di leggerli e scriverli (Masterizzatore), ma a differenza dei Floppy Disk e degli Hard Disk utilizzano una tecnologia ottica. I dischi ottici sono costituiti da uno strato di policarbonato di 12 cm di diametro, sul quale viene deposto uno strato fotoriflettente che contiene una traccia a forma di spirale dall’interno del disco verso l’esterno. La spirale è costituita da una serie di pit (fossi), scarsamente riflettenti e quindi opachi, e di land (terreno piano), altamente riflettenti e quindi luminosi. Un raggio laser prodotto dal drive ottico esplora la spirale, viene riflesso da pit e land in modo diverso e viene letto da un fotorilevatore, distinguendo le zone ad alta e bassa riflettività. In questo modo sul disco ottico può essere memorizzata l’informazione. Esistono fondamentalmente tre tipi di dischi ottici: di sola lettura (identificati con la sigla ROM – Read Only Memory = Memoria di sola lettura), registrabili (con sigla R – Recordable = Registrabile) e riscrivibili (identificati con la sigla RW – ReWritable = Riscrivibile). I dischi ottici di sola lettura (ROM) vengono stampati in serie in stabilimenti opportunamente attrezzati, in un processo nel quale pit e land vengono creati meccanicam, in modo irreversibile. I dischi ottici registrabili (R), invece, vengono scritti da un dispositivo ottico (masterizzatore) con un laser di potenza più elevata rispetto a quella del semplice lettore. Essi possiedono uno strato di pigmenti organici che, quando colpiti da una luce laser di opportuna potenza, diventano opachi, creando i pit. Le parti della spirale non colpite dal laser, rimangono land. I dischi ottici riscrivibili (RW) vengono anch’essi scritti da un masterizzatore, ma il meccanismo è più complesso. Questi dischi possiedono uno strato di un composto chimico in grado di cambiare fase quando colpito dalla luce del laser. Il composto è inizialmente in uno stato policristallino, ad alta riflettività. Quando viene colpito dal laser, tramite un riscaldamento e repentino raffreddamento, passa ad uno stato amorfo, opaco, che realizza i pit. Per ritrasformare i pit in land, il masterizzatore deve applicare una potenza bassa e costante per riportare il composto pag. 7 di 49

allo stato cristallino. La maggiore complessità del processo spiega perché i tempi di masterizzaz. dei supporti riscrivibili sono maggiori di quelli dei supporti registrabili. I dischi ottici esistono in due principali formati, che differiscono per la densità di pit e land sulla spirale e, conseguentemente per la capacità: CD e DVD. I CD (Compact Disk) I CD (Compact Disk = Disco compatto) sono dischi a tecnologia ottica che utilizzano un raggio laser di lunghezza d’onda di 780 nanometri (infrarosso) per la lettura e la scrittura. La loro capacità è di 650 MB, che, con vari accorgimenti, può essere portata a 700 MB o anche oltre. Ne esistono tre tipi: CD-ROM di sola lettura, CD-R registrabili e CD-RW riscrivibili. Sono ancora diffusamente utilizzati per la distribuzione del software e per la registrazione di musica, ma, data la loro relativa bassa capienza, tendono ad essere sostituiti dai DVD come sistemi di archiviazione di massa. I DVD (La sigla è ufficialmente priva di significato) I DVD sono dischi a tecnologia ottica che utilizzano un raggio laser di lunghezza d’onda di 650 nanometri (rosso) per la lettura e la scrittura. Ne esistono numerosi tipi, che utilizzano standard differenti e capacità differenti. o DVD-ROM, di sola lettura; ne esistono 4 formati, a seconda che utilizzino una sola o entrambe le facce e che ciascuna faccia contenga un singolo strato riflettente o un doppio strato (leggibili entrambi cambiando la messa a fuoco del laser): Formato Strato Faccia Capacità DVD-5 Singolo Singola 4,7 GB DVD-9 Doppio Singola 8,5 GB DVD-10 Singolo Doppia 9,4 GB DVD-18 Doppio Doppia 17 GB Nota: i formati DVD-5 e soprattutto DVD-9 sono molto diffusi per la distribuzione di film. I formati DVD-10 e DVD-18 sono praticamente inutilizzati. o DVD registrabili e riscrivibili, esistono tre standard: Formato Tipo Capacità Sponsor DVD Forum DVD-R Registrabile 4,3 GB Pioneer Standard DVD-RW Riscrivibile 4,3 GB Pioneer Standard DVD+R Registrabile 4,3 GB Sony, Philips Respinto DVD+RW Riscrivibile 4,3 GB Sony, Philips Respinto DVD RAM Riscrivibile 4,7/9,4 GB Panasonic Standard Nota: esiste una forte competizione tra gli standard –R e +R, nonostante quest’ultimo non sia stato approvato dal DVD Forum. Il formato RAM è poco utilizzato e relegato ad usi informatici, anche perché richiede che il disco sia sigillato in una cartuccia. Nota sulle capacità di memoria L’unità di misura minima della memoria è il bit (binary digit = cifra binaria, ma bit significa anche pezzettino), che può assumere valore 0 e 1 (si o no, acceso o spento, etc…). I bit sono raggruppati in gruppi di 8, chiamati Byte, che costituiscono l’unità base per la capacità di memoria, perché rappresentano il gruppo di bit ideale per rappresentare un carattere (lettera, numero, etc...). Poiché i computer basano la loro logica di funzionamento sulla numerazione binaria, i multipli del Byte sono potenze di 2 e non di 10. Per motivi di praticità, si continuano ad usare i multipli decimali classici delle altre branche dell’ingegneria (Kilo per mille, Mega per un milione, Giga per un miliardo, etc…), associandoli alla potenza di due più vicina al multiplo decimale. Si ha pertanto la seguente situazione: Unità Pari a Considerato comunemente KB (KiloByte) 210 = 1.024 Byte Un migliaio di Byte MB (MegaByte) 220 = 1.048.576 Byte Un milione di Byte GB (GigaByte) 230 = 1.073.741.824 Byte Un miliardo di Byte TB (TeraByte) 240 = 1.099.511.627.776 Byte Mille miliardi di Byte Conseguentemente, 4,7 miliardi di Byte non corrispondono a 4,7 GB, ma a: 4.700.000.000 / 1.073.741.824 ≈= 4,38 GB I produttori di DVD registrabili e riscrivibili, giocando su tale equivoco, vendono dischi da 4,7 miliardi di Byte, illudendo gli utenti ingenui che si tratti di 4,7 GB, mentre in realtà sono poco più di 4,3 GB. Nota sul futuro dei dischi ottici Nel corso del 2004 stanno per essere progressivamente introdotti DVD registrabili e riscrivibili a doppio strato, sia nello standard +R che –R, con capacità finalmente eguale a quella dei DVD-ROM (9,4 GB come i DVD-9). pag. 8 di 49

Entro il 2005 dovrebbero diffondersi i DVD ad alta definizione (HD DVD) che utilizzano un laser di lunghezza d’onda di 480 nanometri (laser blu) e che dovrebbero avere una capienza oscillante tra i 25 ed i 50 GB. Le memorie USB (Universal Serial Bus) Le memorie USB (Universal Serial Bus = Autobus seriale universale) sono memorie di tipo elettronico e sono rimovibili come i Floppy Disk. Si tratta di piccoli oggetti, delle dimensioni massime di un evidenziatore (da cui il nome volgare Pen Drive = Dispositivo a penna), che si inseriscono nella porta USB del PC, tramite la quale ricevono sia il collegamento che l’alimentazione. La tecnologia utilizzata consente la persistenza dei dati, ma non il loro utilizzo, anche in assenza di alimentazione. Sono dotate di capacità di memoria molto più elevate di un Floppy Disk (in genere da 32 MB a 2 GB), in continua ascesa ed a costi sempre inferiori, per cui stanno definitivamente sostituendo il Floppy Disk per le esigenze di trasferimento e trasporto di dati. 2.4

Le periferiche

La tastiera La tastiera è una periferica di input che consente l’immissione di testo. Ne esistono versioni personalizzate per i diversi paesi, che si adattano alle diverse frequenze di utilizzo delle lettere e comprendono i caratteri speciali del paese (ad esempio, le lettere accentate per l’Italia.). Si diffondono sempre più le tastiere wireless, che si collegano all’unità centrale tramite onde radio, senza l’utilizzo di un cavo. Il mouse Il mouse è una periferica di input che costituisce il dispositivo di puntamento del PC. Il mouse permette di puntare un oggetto grafico mostrato a video e, “cliccando” il tasto sinistro, di attivare la funzionalità ad esso associato. Il mouse è dotato anche di un tasto destro, che attiva funzionalità accessorie, come un menu di pop-up (apparizione), e spesso di un terzo tasto. E’ inoltre dotato di una rotellina, che consente lo scorrimento verticale della finestra in uso. I tradizionali mouse con sfera vengono sempre di più sostituiti da mouse ottici che rilevano il movimento tramite una fotocellula. Si diffondono inoltre sempre più i mouse wireless che si collegano all’unità centrale tramite onde radio, senza l’utilizzo di un cavo. Il lettore ottico Il lettore ottico è una periferica di input che legge i codici a barre ed il testo. E’ utilizzato per l’acquisizione veloce di etichette con codice a barre o di testo a stampatello, in quest’ultimo caso associato a software di riconoscimento che garantisce una percentuale di riconoscimento dipendente dai caratteri utilizzati e dalla chiarezza del testo.

Figura 3 – Struttura di un codice a barre Lo scanner Lo scanner è una periferica di input che acquisisce immagini. E’ dotato di una finestra in formato A4 o A3 che fotografa l’immagine e, attraverso il software associato, lo trasforma in uno dei formati digitali utilizzati in informatica. E’ utilizzato anche per acquisire documenti di testo cartacei che vengono riconosciuti con appositi software. Il monitor Il monitor è una periferica di output che mostra la grafica generata dalla scheda video, alla quale viene collegato. I monitor tradizionali utilizzano una tecnologia analogica CRT (Cathode Ray Tube = Tubo a raggi catodici) ed hanno dimensioni che vanno dai 17” ai 21” (pollici, equivalenti a 2,54 cm.) pag. 9 di 49

Si vanno diffondendo, a costi superiori ma in continuo calo, i monitor digitali LCD (Liquid Crystal Display = Schermo a cristalli liquidi) che hanno il vantaggio della profondità estremamente ridotta, per la mancanza di tubo catodico, e del consumo ridotto, ma possiedono ancora una qualità dell’immagine inferiore ai CRT, soprattutto per l’incapacità di riprodurre i neri profondi e l’effetto scia nelle immagini in rapido cambiamento. Un ulteriore vantaggio dei monitor LCD è la presenza di una connessione DVI (Digital Video Interface = Interfaccia video digitale), che consente di evitare (purché anche la scheda video ne sia dotata) la conversione digitale/analogica dei monitor CRT. La stampante La stampante è una periferica di output che stampa documenti multimediali. Esistono diverse tecnologie; le più diffuse sono: o Ad aghi, che utilizza una matrice di aghi per la stampa; monocromatica, lenta e di bassa qualità, è oggi caduta in disuso e viene utilizzata solo per la stampa di moduli continui; o Laser, che forma l’immagine mediante un raggio laser e la fissa sulla carta utilizzando un toner; esistono versioni A4 ed A3, monocromatiche (molto diffuse) ed a colori (molto costose); è veloce e di alta qualità ed è molto diffusa per la stampa di documenti; o A getto d’inchiostro, dotata di una testina che nebulizza goccioline d’inchiostro sulla carta; è in genere a colori, con cartucce d’inchiostro per il nero ed i tre colori principali (giallo, magenta e ciano); esistono anche versioni per stampa fotografica a sei colori; produce stampe di alta qualità, ma è molto lenta e supporta solo il formato A4; è in genere utilizzata per usi amatoriali, anche per il ridotto costo iniziale, spesso vanificato però dall’alto costo delle cartucce (che a volte superano il costo della stampante). Le casse Le casse sono periferiche di output che riproducono l’audio prodotto dalla scheda audio alla quale si collegano. Sono in genere amplificate e riproducono un suono stereo. Si vanno sempre più diffondendo sistemi di casse a più vie, in genere 5.1 per utilizzi Home Theater, con due casse anteriori per la musica, un canale centrale per i dialoghi, due casse posteriori per gli effetti ed un subwoofer per le basse frequenze. 3

Il Software

Il software è l’insieme di tutte le componenti intangibili di un elaboratore, cioè i programmi scritti per farlo funzionare e memorizzati nell’hardware. Senza il software l’hardware non può svolgere alcuna funzione. Classificazione del software Il software si può distinguere in due grandi categorie: o Software di base o di sistema: permette al computer di avviarsi, gestisce le risorse del sistema, gestisce il file system, effettua il monitoraggio del sistema, costituisce l’interfaccia con gli utenti ed il software applicativo, svolge diverse funzioni di utilità; o Software applicativo: svolge le funzionalità richieste dagli utenti; si distingue in software standard e dedicato in base alla specializzazione;

Figura 4 – Classificazione del software

pag. 10 di 49

3.1

Il software di sistema

Il software di sistema comprende: • Sistema operativo; • Traduttori; • Programmi di utilità. Il Sistema Operativo Il sistema operativo (d’ora in poi S.O.) permette al computer di avviarsi, gestisce le risorse del sistema, gestisce il file system, effettua il monitoraggio del sistema, costituisce l’interfaccia con gli utenti ed il software applicativo. L’esigenza di un S.O. discende dalla complessità e ricchezza dell’hardware che un computer mette a disposizione al software applicativo. I diversi programmi applicativi che vengono eseguiti in un computer hanno il fine di offrire ai propri utenti le funzionalità richieste, utilizzando le risorse hardware a disposizione. In assenza di un intermediario che filtri le richieste, assegni le priorità e “regoli il traffico” dei dati, ciascun programma applicativo tenderebbe ad appropriarsi e a detenere le risorse hardware di cui ha bisogno; si genererebbe così una congestione che porterebbe all’arresto dei processi (deadlock = punto morto). Il S.O. è l’unico programma autorizzato ad accedere alle risorse hardware, mediando tra le richieste dei programmi applicativi. In presenza di un conflitto di esigenze, il S.O. ripartisce le risorse tra i programmi, assegnandole a ciascuno per finestre temporali (time slicing = affettamento del tempo), secondo priorità che sono stabilite dagli amministratori del sistema. In tal modo, tutti i processi applicativi percepiscono un accesso continuo alle risorse hardware, come se ne avessero la disponibilità esclusiva. In sintesi, i compiti di un S.O. sono: • Avviamento del computer, caricando in memoria centrale (RAM) tutte le informazioni necessarie alla gestione e portando a regime tutti i processi necessari alla gestione delle risorse del sistema; • Gestione delle risorse hardware del sistema; il S.O. suddivide il tempo in fette sottili (time slicing), assegnando le risorse contese ad ogni processo per quella fetta di tempo; in tal modo si realizza il multitasking (multicompito), ossia è come se più processi venissero elaborati “contemporaneamente”; • Gestione di una risorsa molto importante: lo spazio su disco, tramite un’organizzazione che si chiama file system (vedi sotto); • Monitoraggio della corretta esecuzione dei processi e dell’utilizzo delle risorse; • Interfaccia ai programmi applicativi ed agli utenti direttamente connessi (Amministratori, operatori) per accedere alle risorse hardware ed al file system. I S.O. sono composti da un blocco più “interno”, denominato kernel (nocciolo, gheriglio della noce), che gestisce direttamente le risorse hardware e da una shell (guscio) che costituisce l’interfaccia dei programmi e degli utenti con il kernel. Il S.O. risiede normalmente sull’Hard Disk del computer. Il BIOS (Basic Input/Output System) e il Bootstrap All’accensione del computer si ha la seguente situazione di stallo: • la memoria centrale (RAM) non contiene alcun programma e alcun dato perché è volatile; • i programmi necessari ad avviare il computer (che sono parti del sistema operativo) risiedono sull’Hard Disk; • il processore (CPU) non può eseguire i programmi sull’Hard Disk perché quest’ultimo è troppo lento per lui; può dialogare solo con la RAM, ma questa è vuota; • il sistema non può partire. Per superare questa impasse, è stato ideato il BIOS (Basic Input/Output System = Sistema di input/output di base). Il BIOS è un programma che risiede sulla ROM, al quale il microprocessore cede il controllo all’accensione del computer. Il BIOS dapprima effettua il test di tutti i componenti hardware, quindi carica in memoria centrale le parti del S.O. indispensabili ad avviare il computer. L’operazione di avviamento tramite BIOS si chiama Bootstrap (è un anello attaccato alla parte superiore di uno stivale, utile per tirarlo verso l’alto e calzarlo), perché risolve l’impasse descritta sopra, ricordando l’inverosimile capacità del mitico Barone di Munchhausen di sollevarsi dalle acque del mare tirandosi per gli anelli degli stivali. Il BIOS costituisce inoltre l’interfaccia di basso livello tra il S.O. e i singoli componneti hardware. E’ il BIOS che si occupa dei dettagli del colloquio con i dispositivi hardware e che si adatta ai cambiamenti di questi ultimi. Il BIOS è una parte integrante del computer, come l’hardware, perchè risiede sulla ROM ed è quindi preistallato sulla scheda madre. Per questo motivo il BIOS viene chiamato firmware (roba salda, stabile).

pag. 11 di 49

Il File System Lo spazio su disco è una delle più importanti risorse hardware che il S.O. deve gestire e far condividere ai processi. Ciascuna applicazione ha necessità di memorizzare sul disco i programmi che dovrà eseguire quando viene attivata ed i dati utilizzati. Inoltre, gli utenti hanno la necessità di memorizzare i propri dati (ad esempio, documenti). Il S.O. organizza lo spazio su disco secondo una struttura gerarchica ad albero composta da una directory (Cartella) root (radice) e da directory che via via si ramificano da questa, le quali contengono i singoli file corrispondenti ai singoli programmi esecutivi o ai singoli documenti. Questa organizzazione si chiama File System (sistema di file). E’ compito del S.O. gestire l’aggiornamento delle directory e dei file nel File System, consentendo di creare, modificare e cancellare file ed intere directory secondo le richieste dei programmi applicativi e degli utenti, facilitate tramite un’interfaccia. Sistemi Operativi ed Architetture I S.O. svolgono ruoli diversi in dipendenza delle diverse architetture dei sistemi informatici. Inizialmente, esisteva una sola architettura, detta Mainframe, la cui caratteristica fondamentale è la monoliticità. In questa architettura, un grosso elaboratore centrale, il Mainframe, effettua tutte le elaborazioni, mentre i terminali di accesso periferici sono definiti “stupidi”, in quanto non in grado di effettuare elaborazioni in proprio, ma si limitano a dialogare con l’unità centrale, inviando gli input digitati da tastiera e riversando gli output ricevuti su video o su stampante. In questa architettura monolitica, il S.O. del Mainframe gestisce tutto, mentre i terminali stupidi non hanno bisogno di un S.O. perché privi di risorse proprie. Negli anni ’80 si è diffusa una nuova architettura, oggi dominante, denominata Client/Server. In questa architettura sia l’elaboratore centrale (Server), che quelli periferici (Client) sono dotati di proprie risorse e svolgono proprie elaborazioni. Ciò che cambia è il ruolo. Il Server in genere detiene la basi-dati e le logiche applicative, che sono comuni a tutto il sistema. Il Client effettua localmente le elaborazioni di interfaccia e di logica locale, sgravando le linee di comunicazione da un traffico pesante e ripetitivo. In questa architettura, sia il Server che il Client hanno la necessità di un S.O., perché entrambi detengono risorse e svolgono processi, ma il ruolo è diverso. I S.O. Server sono più complessi, supportano hardware più potenti (multiprocessore) e gestiscono la concorrenza di molti utenti. I S.O. Client sono più semplici ed orientati prevalentemente al singolo utente. Sistemi Operativi Client Il S.O. Client di gran lunga più diffuso al mondo e Microsoft Windows, giunto alla versione XP. Il suo vantaggio principale sta nella semplicità d’uso, dovuta anche all’ottima interfaccia grafica. Il punto debole principale dei sistemi Windows è sempre stata la stabilità, ossia la capacità di funzionare a lungo senza bloccarsi anche sotto un utilizzo gravoso. L’attuale versione XP sembra comunque molto migliorata sotto questo aspetto. I sistemi Windows sono eredi del S.O. montato sul primo PC IBM, e cioè Microsoft DOS (Disk Operating System = Sistema operativo a dischi). Questo sistema, che utilizza un’interfaccia a caratteri, ha sempre posto problemi di difficoltà d’uso per i neofiti. Tra gli altri S.O. Client è opportuno citare il sistema Linux, di cui si parlerà più avanti, anche se la sua diffusione nel settore dei Client è improbabile per la sua maggiore complessità e la minore disponibilità di software rispetto a Windows. Sistemi Operativi Server Nel campo dei S.O. Server la situazione è più complessa. Microsoft Windows Server, oggi giunto alla versione 2003, è uno tra i più diffusi, ma esistono numerosi competitor. Una famiglia di S.O. Server che da sempre fa concorrenza a Windows è quella dei sistemi UNIX. Lo UNIX originario nacque nei Bell Laboratories nel 1969, per offrire al mercato, come suggerisce il nome, un S.O. unico e definitivo. In realtà, gli eventi successivi hanno visto il disgregarsi di UNIX in numerosi S.O. proprietari, imparentati ma incompatibili, che girano su hardware differenti, sponsorizzati dai relativi produttori (Sun, IBM, HP, Digital, Sco/Intel, etc). Rispetto a Windows i sistemi UNIX sono più robusti, ma, per l’utilizzo, richiedono personale più specializzato. Inoltre, l’alto costo dell’hardware necessario (almeno per alcuni) e la frammentazione di versioni e standard ne limitano la diffusione. Un S.O. che invece sta vivendo da alcuni anni un vero e proprio boom di diffusione nell’ambito Server, costituendo una seria minaccia allo strapotere di Microsoft, è Linux, che, per la sua natura di fenomeno travolgente, che va al di là degli stessi confini informatici, merita una trattazione a parte. Linux e l’Open Source Nel ’91 uno studente universitario di Helsinki, Linus Torvalds pubblicò uno storico messaggio su un forum dedicato agli utenti del S.O. Minix (un S.O. tipo UNIX sviluppato per fini didattici per il processore Intel 8086, lo stesso su cui era basato il primo PC IBM). Il messaggio diceva: pag. 12 di 49

Hello everybody out there using minix I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. La dichiarazione dai toni in sordina (just a hobby, won’t be big and professional like gnu = solo un hobby, non sarà grosso e professionale come gnu) era destinata in realtà a cambiare la storia dell’informatica. I motivi fondamentali erano: • Torvalds si apprestava a realizzare un S.O. di tipo UNIX per un processore (Intel 80386) che era in quel momento il processore più avanzato per PC e quindi anche il più diffuso; • Torvalds utilizzò per il suo S.O. componenti del progetto GNU e ne adottò la filosofia. GNU (Gnu is Not Unix) è un progetto, avviato nel 1983 da Richard Stallman, un professore del MIT, per lo sviluppo di un S.O. di tipo UNIX il cui codice, a differenza degli altri S.O., non era tenuto gelosamente segreto, ma reso pubblico, con libertà per ciascuno di copiarlo, modificarlo e ridistribuirlo. Il S.O. viene infatti distribuito con licenza GPL (General Public License = Licenza pubblica generale), che consente agli utenti non solo di leggere in chiaro il codice del software, ma addirittura di modificarlo, se questi ritengono di essere in grado di migliorarlo. L’unica condizione imposta dalla licenza GPL è che le eventuali modifiche siano anch’esse distribuite con licenza GPL, in modo che altri possano modificarle e ridistribuirle e così via in modo ricorsivo (anche la sigla GNU è ricorsiva). Torvalds adottò la filosofia del progetto GNU e, con l’aiuto di un numero sempre crescente di appassionati connessi da Internet in un unico gruppo di sviluppo mondiale, sviluppò il kernel del nuovo S.O. che chiamò, dalla sintesi del suo nome di battesimo e di UNIX, Linux. Linux, oltre ad essere di dominio pubblico e modificabile è anche gratuito (condizione non implicita nella licenza GPL), anche se le sue distribuzioni (kernel + shell + accessori) da parte di aziende specializzate (come Red Hat) hanno un costo, se pur molto limitato (giustificato da extra e utility aggiunte). Il kernel è scaricabile gratuitamente da Internet. Ben presto l’idea di un software gratuito e di dominio pubblico si estese oltre i confini dei S.O., abbracciando praticamente tutti i tipi di software e prendendo la denominazione di Open Source (letteralmente sorgente aperto). Il fenomeno dell’Open Source si è abbattuto come un maglio sullo “statu quo” dell’industria informatica. Basti pensare a come Microsoft venda a caro prezzo le proprie licenze software e conservi gelosamente in cassaforte i propri codici sorgente, che ovviamente non sono modificabili, pena l’incorrere nelle sanzioni di legge. Inoltre, la diffusione mondiale del software Open Source e l’entusiasmo degli sviluppatori che, spesso solo per la soddisfazione personale di risolvere un “bug” o di migliorare una funzionalità, si prestano gratuitamente ad intervenire sul software, ha creato una situazione apparentemente paradossale. La risoluzione delle problematiche sui software Open Source è più semplice e rapida di quella relativa ai software a pagamento, dove spesso capita che il produttore non sia interessato a risolvere la problematica, perché gli utenti coinvolti sono troppo pochi, perché riguarda una versione non più in commercio, etc… Di fronte a tale fenomeno, le grandi aziende informatiche hanno reagito con strategie diverse. Microsoft è rimasta acerrima nemica dell’Open Source, considerandolo una minaccia alla propria esistenza e sostenendo che comunque i suoi costi sono superiori a quelli dei prodotti Microsoft, a causa della minore facilità d’uso che richiede maggiori costi di formazione del personale. I concorrenti, come IBM, HP, etc… hanno invece, dopo un periodo di incertezza, abbracciato il S.O. Linux, creandone distribuzioni personalizzate per i propri Server ed usandolo come arma per limitare lo strapotere di Microsoft. SCO, produttrice di un S.O. di tipo UNIX per processori Intel e quindi fortemente danneggiata dal fenomeno Linux, ha invece avviato una causa contro lo stesso concetto di GPL, che secondo questa azienda viola i diritti di copyright. Oggi il S.O. Linux si diffonde sempre di più sui Server di tutte le aziende ed ha anche ottenuto importanti riconoscimenti presso la Pubblica Amministrazione europea, che, in un numero sempre maggiore di casi, lo ha adottato come standard di preferenza. I traduttori Il software di sistema comprende altre tipologie di programmi, che si affiancano e completano i S.O. Tra questi vi sono i programmi traduttori. Tutti i programmi che girano su un computer sono una lista di istruzioni che vengono eseguite dal processore. Affinché il processore sia in grado di comprendere le istruzioni, queste devono essere codificate nel linguaggio del processore, detto linguaggio macchina. La lista di istruzioni scritte in linguaggio macchina si chiama codice eseguibile, perché è immediatamente eseguibile dal processore. Il linguaggio macchina consiste di una serie di istruzioni espresse come codici esadecimali. E’ estremamente difficile per un essere umano programmare nell’astruso linguaggio macchina e, se questa fosse l’unica possibilità, solo un ristretto numero di tecnici altamente specializzati sarebbe in grado di scrivere programmi (come avveniva agli albori dell’informatica). Per facilitare il compito dei programmatori sono stati inventati linguaggi più vicini all’uomo, che in genere fanno uso di parole inglesi e di costrutti logico-matematici (come if-then-else). Tramite questi linguaggi, detti evoluti (ne esistono moltissimi, tra i più diffusi possiamo citare Cobol, Basic, C, Java), i programmatori scrivono un codice, detto sorgente, che non è direttamente comprensibile dal processore. Programmi specializzati, detti traduttori, convertono il codice sorgente scritto nel linguaggio evoluto in linguaggio macchina, producendo il codice eseguibile. Esistono due strategie di traduzione e due categorie di traduttori: pag. 13 di 49



I compilatori: agiscono prima dell’esecuzione del programma, in una fase che si chiama compilazione; essi traducono il codice sorgente di un intero programma in codice eseguibile (detto compilato) e lo ottimizzano tenendo conto delle eventuali ricorrenze di istruzioni, ridondanze, ingenuità del programmatore; il codice eseguibile viene poi eseguito come se fosse stato scritto all’origine in linguaggio macchina; • Gli interpreti: agiscono direttamente durante l’esecuzione del programma, traducendo un’istruzione alla volta dal linguaggio evoluto al linguaggio macchina; quindi l’istruzione tradotta viene passata al processore per l’esecuzione. Ciascuna strategia ha vantaggi e svantaggi. I compilatori sono in grado di ottimizzare la traduzione perché hanno la visibilità contemporanea di tutto il programma, ma richiedono una fase aggiuntiva di compilazione ogni volta che il programma viene modificato anche in una sola istruzione. Gli interpreti non richiedono la fase di compilazione, ma non sono in grado di ottimizzare il programma perché ne vedono un’istruzione alla volta. I programmi di utilità Il software di sistema comprende anche una serie (sempre più articolata e complessa con l’evolversi dei S.O.) di programmi che svolgono funzioni accessorie, detti programmi di utilità. Ne esistono moltissimi, per gli scopi più vari. Tra i più importanti si citano: • Le utilità di back-up (appoggio, sostegno), che permettono di salvare il contenuto dei dischi su supporti rimovibili (dischi ottici) o su altri computer addetti allo scopo e di ripristinarli (restore = ripristino) in caso di necessità (ad esempio guasto irreparabile del disco fisso); • Manutenzione del disco fisso: controllo dello stato di frammentazione, deframmentazione, settori danneggiati, etc… • Impostazione delle caratteristiche di rete del computer: indirizzi, protocolli, connessioni, etc • Monitoraggio dei processi in corso e loro amministrazione; • Gestione delle periferiche, soprattutto stampanti; • Esecuzione di file multimediali; • Guida on-line del sistema operativo. 3.2

Il software applicativo

Il software applicativo è deputato a realizzare le funzionalità richieste dagli utenti. E’ il software che fa qualcosa di utile dal punto di vista dell’utente. Può essere classificato in due grandi categorie: • Software applicativo standard; • Software applicativo dedicato. Il software applicativo standard Il software applicativo standard copre esigenze diffuse e comuni a vaste categorie di utenti. Esso viene quindi realizzato sulla base di specifiche ricavate dalla conoscenza generale della problematica, fornita da esperti del settore, o da indagini di mercato. Viene in genere offerto in vendita in configurazioni standard, dette pacchetti applicativi, che sono valide per la grande maggioranza degli utenti e che sono spesso personalizzabili dall’utente stesso per coprire eventuali esigenze residue. In base all’ampiezza della categoria di utenti a cui il software standard si rivolge, esso può essere ulteriormente suddiviso in tre sottocategorie: • Il software standard generico si rivolge praticamente a tutti gli utenti, coprendo esigenze di base di quasi tutte le categorie lavorative; comprende i cosiddetti software di produttività individuale, che supportano il lavoro di ufficio del singolo impiegato, (elaboratori di testo, fogli elettronici, etc…, come ad esempio la suite Microsoft Office), i software di elaborazione grafica (come Adobe Photoshop), i database (come Access, Oracle, etc…); • Il software standard specifico si rivolge a categorie di utenti specializzate, ma comunque diffuse pressoché in tutte le aziende; comprende le applicazioni per la gestione della contabilità, per il CAD (Computer Aided Design), per la pianificaz. della produzione, etc; • Il software di settore si rivolge a categorie specializzate che si trovano solo in specifici settori aziendali; comprende, ad esempio, i sistemi per la gestione dei trasporti, quelli per la gestione ospedaliera, etc… Il software applicativo dedicato Il software applicativo dedicato copre esigenze specifiche di un particolare cliente. Esso viene quindi sviluppato su misura, in base alle specifiche ricavate dalle interviste effettuate con i futuri utenti. Conseguentemente il suo costo è molto superiore a quello del software standard e viene prodotto solo quando non è possibile o non è accettato dal cliente l’utilizzo di un software standard, magari personalizzato. Esempi di software dedicato sono i grandi sistemi di automazione degli aeroporti, quelli di Help Desk e Call Center, etc… pag. 14 di 49

4

Le reti

Le reti sono il complesso di apparecchiature informatiche e di telecomunicazione (computer compresi) interconnesse tra loro tramite mezzi di comunicazione. Generalmente, tuttavia, quando si parla di rete, si fa comunemente riferimento alla parte della rete che garantisce il collegamento tra i computer (escludendo questi ultimi). Le reti consentono ai computer di scambiarsi messaggi e dati. 4.1 Tipologie di reti La principale classificazione delle reti è la differenziazione tra reti locali e reti geografiche. Reti locali – LAN (Local Area Network) Le reti locali (LAN) collegano i computer all’interno di uno stesso edificio o tra edifici vicini appartenenti alla stessa area, ma comunque senza mai attraversare il suolo pubblico. Le reti locali possono avere diverse topologie: • ad anello, nelle quali i computer sono collegati da un anello chiuso; i computer adiacenti si scambiano messaggi direttamente, gli altri indirettamente tramite quelli intermedi; • a bus, nelle quali i computer sono collegati ad un cavo principale detto bus; i messaggi veicolati dal bus vengono raccolti e scaricati solo dai dispositivi ad essi interessati, mentre gli altri li ignorano; il nome deriva dall’analogia con il comportamento degli autobus, che caricano e scaricano ad ogni fermata solo i passeggeri interessati a quella fermata; • a stella, nelle quali i tutti computer sono collegati ad un’apparecchiatura centrale che comunica singolarmente con tutti, facendo da tramite tra i computer; • a maglia, nelle quali tutti i computer sono collegati a due a due tra di loro, offrendo una grande ridondanza di collegamenti. Ciascuna tipologia ha vantaggi e svantaggi: per es. a maggiore ridondanza e quindi affidabilità corrispondono maggiori costi e complessità. Inoltre, alcune reti sono più adatte di altre a particolari edifici e collegamenti.

Figura 5 – Topologie di reti locali (LAN) Inoltre le reti locali possono utilizzare diversi standard tecnologici, sui quali si basa la trasmissione fisica del segnale. I più importanti sono: •

Token Ring (anello a gettone), utilizzato nelle reti ad anello; i computer che vogliono trasmettere un messaggio lo inseriscono nell’anello insieme ad un “gettone” (una stringa di bit); quando il computer destinatario preleva il messaggio, rimuove il gettone comunicando così l’avvenuto recapito del messaggio;



Ethernet (da ether = etere, la sostanza che si riteneva pervadesse l’universo e consentisse la trasmissione della luce prima che Einstein formulasse la relatività ristretta; secondo gli inventori, la trasmissione dei segnali via cavo era analoga alla trasmissione della luce nell’etere); la rete Ethernet trasmette i segnali a 10 Mbps (Mega bit per secondo), utilizzando cavi coassiali o il doppino telefonico. pag. 15 di 49

Oggi le reti locali più utilizzate sono a stella (con eventuali sotto stelle) basate su standard Ethernet. Si vanno lentamente diffondendo le reti locali WLAN (Wireless LAN = LAN senza fili), dove il mezzo di trasmissione sono le onde elettromagnetiche trasmesse secondo uno standard della famiglia 802.11x, detto comunemente Wi-Fi (Wireless Fidelity = Fedeltà senza fili). Queste reti permettono il collegamento dei computer all’interno di un’area delle dimensioni di un edificio, senza bisogno di collegamenti fisici e consentendo lo spostamento anche continuo dei computer. Le reti Wi-Fi sono ideali per gli edifici a tutela storica ed artistica, dove non è consentito praticare fori o lasciare canalette in vista. Sono inoltre ideali per utenti dotati di PC portatili, che hanno la possibilità di connettersi semplicemente entrando nell’area servita dal Wi-Fi. Tra gli svantaggi, si segnala la maggiore difficoltà di garantire la sicurezza della rete, visto che i dati viaggiano per etere e l’inevitabile “inquinamento elettromagnetico”, visto che è molto difficile adattare la portata della rete alla geometria dell’edificio o del locale servito. Molti locali pubblici (aeroporti, hotel, fast food, supermercati) soprattutto negli Stati Uniti offrono un servizio Wi-Fi per la connessione ad Internet, gratuito o a pagamento, ai propri clienti. Questi siti sono noti come “Hot Spot” (Punti Caldi). Un’altra tipologia di rete wireless ad onde elettromagnetiche, è quella basata sulla tecnologia Bluetooth. Questa tecnologia supporta piccole reti locali a corto raggio (max. 10 metri) ed è oggi utilizzata principalmente per la connessione wireless di dispositivi diversi che si trovano nella stessa stanza o in stanze adiacenti, come PC, stampanti, palmari, telefoni cellulari, etc… Infine, esiste un’altra tecnologia wireless basata sui raggi infrarossi, la quale supporta piccolissime reti locali tra dispositivi allineati a vista, come PC e stampante, PC e palmare, etc Reti geografiche – WAN (Wide Area Network) Le reti geografiche (WAN) connettono gli elaboratori su vaste aree geografiche e sono in genere integrate con le reti di fonia, o comunque messe a disposiz. dagli stessi gestori (ad es, Telecom). Dal punto di vista dell’esclusività, si distinguono reti condivise, che utilizzano la stessa rete telefonica dove transita il traffico di fonia e reti dedicate, che utilizzano linee riservate all’utente che usufruisce del collegamento (oggi poco usate). Sotto il profilo tecnologico, si distinguono linee analogiche e digitali. Le più diffuse sono: • la classica linea telefonica analogica presente comunemente nelle case, costituita dal doppino telefonico intrecciato con presa telefonica (tripolare, in disuso, o l’attuale RJ-11); queste linee vengono utilizzate con un MODEM (MODulatore DEModulatore), un apparecchio che converte i segnali digitali del computer in segnali analogici per la linea telefonica e viceversa; il MODEM fornisce velocità di trasmissione basse, fino a 56 Kbps (Kilo bit per secondo); • la linea digitale ISDN (Integrated Services Digital Network = Rete digitale di servizi integrati), utilizzata da aziende e uffici, che trasmette voce e dati in formato digitale sul doppino telefonico tramite un ISDN Adapter (Adattatore, detto volgarmente “modem” ISDN); affinché due utenti possano comunicare occorre che entrambi abbiano una linea ISDN; la velocità supportata sale ad un massimo di 128 Kbps; oggi la diffusione di linee ISDN è in calo a favore delle linee xDSL; • la famiglia di connessioni digitali xDSL (Digital Subscriber Line = Linea Abbonato Digitale); questa tecnologia innovativa consente trasmissioni di voce e dati ad alta velocità sul doppino telefonico, purché l’utente si trovi vicino alla centrale telefonica (last mile = ultimo miglio); inoltre la connessione dei dati è sempre attiva, indipendentemente dall’utilizzo della comunicazione vocale (telefonata); il principio della tecnologia DSL è quello di superare il collo di bottiglia della trasmissione analogica che, essendo stata ideata per trasmettere la voce, utilizza solo una ristretta banda dello spettro di frequenze supportate dal doppino telefonico; DSL invece trasmette le informazioni digitalmente sfruttando tutta la banda del doppino telefonico e separandola tra parte dati (di gran lunga prevalente) e la parte voce; DSL può raggiungere una velocità massima di 6,1 Mbps (Mega bit per secondo); richiede che l’utente istalli un DSL Adapter (volgarmente chiamato “modem” DSL); esistono numerosi standard della famiglia xDSL; tra i più diffusi citiamo: o ADSL (Asymmetric DSL) è una tecnologia asimmetrica, che riserva una banda molto più ampia al downstream (flusso da centrale a utente) rispetto che all’upstream (flusso da utente a centrale); è ideale per la navigazione casalinga su Internet, dove la mole dei dati in ricezione è molto più alta di quella dei dati inviati; ADSL consente una velocità massima di 6,1 Mbps in downstream e 640 Kbps in upstream; o HDSL (High bit rate DSL = DSL ad alto tasso di bit) è una tecnologia simmetrica, che garantisce velocità fino a 2,048 Mbps in entrambe le direzioni a costi relativamente bassi ed è sempre più diffusa presso le aziende. Esistono inoltre altre tecnologie di rete geografica, che utilizzano mezzi diversi dal cavo elettrico/telefonico: collegamenti via fibra ottica (il mezzo è la luce); collegamenti via satellite (il mezzo sono le onde elettromagnetiche); collegamenti via ponti radio (il mezzo sono ancora le onde elettromagnetiche), etc… 4.2 Elementi costituenti una rete Indipendentemente dalla tipologia, gli elementi che costituiscono una rete sono sempre: • I nodi della rete; • Il mezzo di trasmissione della rete; • Le apparecchiature di rete; • I protocolli di comunicazione. pag. 16 di 49

I nodi della rete I nodi della rete sono i punti di connessione tra le tratte. Un nodo può essere: • terminale, nel qual caso si tratta di uno dei computer collegati; • intermedio o di ridistribuzione, la cui funzione è quella di ricevere un messaggio, riconoscere il destinatario e reinstradarlo verso quest’ultimo; in genere, è un’apparecchiatura di rete (vedi sotto). Perché un computer possa collegarsi in rete, costituendo un nodo terminale, deve possedere un dispositivo di collegamento ed il relativo software. La tipologia del dispositivo di collegamento dipende dalla tipologia di rete. Per il collegamento ad una LAN, il computer deve disporre di una scheda di rete; se la LAN è Wi-Fi, il computer deve disporre di una scheda 802.11b. Per il collegamento ad una WAN esistono molte più possibilità. Il collegamento potrebbe avvenire tramite una LAN intermediaria (come avviene nelle aziende), per cui serve la classica scheda di rete. In caso di collegamento diretto alla rete telefonica, serve un MODEM tradizionale se si utilizza la fonia tradizionale, un adattatore ADSL se si utilizza questa tecnologia, uno ISDN per questi tipo di connessioni, etc… Il mezzo di trasmissione della rete Esistono numerosi mezzi di trasmissione fisici per le reti. Si citano: • Il cavo coassiale (es quello dell’antenna TV), utilizzato per le LAN Ethernet, oggi in disuso; • Il doppino telefonico, utilizzato per le LAN e per le WAN basate sulla rete di fonia; • La fibra ottica, utilizzata per LAN e WAN a larga banda (alta velocità); • I raggi infrarossi, utilizzati per piccole e piccolissime LAN senza fili ma a vista; • Le onde elettromagnetiche, utilizzate per LAN medie (Wi-Fi) e piccole (Bluetooth) e WAN (satellite, ponti radio) senza fili (wireless); Le apparecchiature di rete Le apparecchiature di rete realizzano i nodi intermedi della rete, consentendo il collegamento dei vari tronconi, l’instradamento dei dati, la regolamentazione degli accessi di una rete interna da e verso l’esterno, etc… I più diffusi sono: • Gli Hub (letteralmente mozzo di ruota) di una rete locale, dove convergono i cavi provenienti dai computer (da cui il nome) e che provvedono a regolare il traffico dei messaggi garantendo che essi giungano dal mittente ai destinatari; • Gli Switch (interruttore), che istradano i messaggi in transito in base agli indirizzi fisici di destinazione; la loro funzione si sovrappone in gran parte a quella degli Hub, ma possiedono un maggiore livello di “intelligenza”; • I Router (instradatore), ubicati al confine tra due reti, che ricevono i messaggi, determinano l’indirizzo del prossimo nodo in base alle condizioni della rete e reindirizzano i messaggi verso di essi; i messaggi rimbalzano da un Router all’altro fino ad arrivare a destinazione; • I Gateway (porta), che rappresentano i punti di ingresso in un’altra rete; un Gateway può essere un computer, un Router, uno Switch, etc... • I Firewall (porta tagliafuoco), che proteggono le reti interne dai possibili attacchi provenienti dall’esterno; • I Proxi (computer prossimale) che regolano l’accesso degli utenti di una rete interna al mondo esterno. I protocolli di comunicazione Quando due entità vogliono comunicare devono prima stabilire le modalità con cui avverrà il colloquio. Queste comprendono, ad esempio, il modo con cui la conversazione viene avviata, le modalità con cui la parola viene passata da un interlocutore all’altro, la distinzione tra una richiesta, una risposta e un’affermazione, le modalità di chiusura temporanea o definitiva della conversazione, etc… Perché due computer possano dialogare occorre stabilire tutti questi e molti altri dettagli relativi alle modalità di dialogo: occorre cioè concordare un insieme di regole, un protocollo di comunicaz. (dal greco protocollon, foglietto accluso ai manoscritti per descriverne il contenuto). I protocolli di comunicazione coprono diversi aspetti della comunicazione, da quelli più strettamente legati al mezzo fisico, a quelli concernenti gli aspetti logici della trasmissione dei dati fino agli aspetti applicativi che riguardano gli standard di trasmissione dei dati. A questi diversi aspetti, chiamati livelli di comunicazione, corrispondono protocolli diversi, che stabiliscono lo standard di comunicazione per quello livello.

pag. 17 di 49

Gli istituti di standardizzazione internazionale hanno disegnato uno stack (pila) di 7 livelli di protocolli di comunicazione, chiamato lo stack ISO/OSI (International Standard Organization/Open System Interconnection), che costituisce un modello di riferimento a 7 livelli dove collocare i protocolli realmente esistenti.

Figura 6 – Lo stack ISO/OSI Lo stack ISO/OSI prevede 7 livelli che vanno dagli standard fisici (livello 1) a quelli applicativi (livello 7). Ogni livello acquisisce gli standard del livello inferiore, aggiunge i propri e li trasmette al livello superiore. I livelli sono divisi in due gruppi. Il gruppo di 3 livelli inferiori specifica gli standard di rete, cioè gli standard utilizzati dai messaggi per circolare sulla rete. Il gruppo di 4 livelli superiori specifica gli standard utente, cioè quelli utilizzati in fase di consegna del messaggio allo specifico utente. Quando un messaggio che circola sulla rete trova il suo destinatario, accede ai livelli superiori per le modalità di consegna. I livelli stabiliscono i seguenti standard: • Livello 1 - il livello fisico: stabilisce gli standard di trasmissione del flusso di bit nel mezzo di rete a livello meccanico ed elettrico (ad esempio, potenziale elettrico); • Livello 2 – il livello data-link: stabilisce gli standard di sincronizzazione per il livello fisico e regola le stringhe di bit (ad esempio, che fare se una stringa contiene molti 1 consecutivi ?); • Livello 3 – il livello di rete: gestisce l’instradamento dei dati in entrata ed uscita, identificando i nodi della rete con un indirizzo univoco (ad esempio indirizzo IP); • Livello 4 – il livello di trasporto: garantisce la partenza (suddivisione) e l’arrivo (ricombinazione) dei pacchetti, segnalando gli eventuali errori (ad esempio, pacchetto danneggiato, si prega rinviarlo); • Livello 5 – il livello di sessione: stabilisce gli standard di avviamento, coordinamento e termine di una conversazione o di uno scambio di dati tra applicazioni (ad esempio, tiene traccia del punto al quale è arrivata la conversazione). • Livello 6 – il livello di presentazione: converte i dati in ingresso ed in uscita da un formato di presentazione ad un altro (ad esempio, da un flusso di testo ad una finestra di pop-up); • Livello 7 – il livello applicativo: identifica i partner della comunicazione (ad esempio identificazione e privilegi degli utenti), stabilisce gli standard di scambio dei dati applicativi (ad esempio, formato dei campi, etc...). Per ciascun livello, esistono numerosi protocolli di comunicazione concorrenti. Nel passato ogni produttore di hardware o di sistemi operativi creava il suo protocollo di comunicazione proprietario, che copriva generalmente i primi 4 livelli. Un esempio è il protocollo NetBEUI di Microsoft Windows. Questa pluralità di protocolli generava un contesto di enorme difficoltà di integrazione tra sistemi di vendor diversi. L’avvento di Internet ha cambiato tutto. Infatti, il protocollo standard di Internet TCP/IP, che verrà illustrato in seguito, è in breve diventato il protocollo standard dell’ICT, relegando a ruoli marginali tutti gli altri protocolli. 4.3 La rete Internet La rete Internet è la rete di gran lunga più importante che esista al mondo, la rete di tutte le reti, tanto da essere spesso chiamata semplicemente la Rete. Cenni storici Le origini di Internet risalgono al 1973 (al 1969 se si considera la rete ARPANET un precursore di Internet), quando, nel clima della Guerra Fredda, nel contesto della ricerca di un sistema di comunicazione che potesse sopravvivere ad un attacco nucleare strategico, l’agenzia statunitense DARPA (Defence Advanced Research Projects Agency) avviò pag. 18 di 49

un programma di ricerca per sviluppare tecnologie di rete geografica in grado di assicurare la connessione anche se una o più tratte di collegamento fossero state distrutte da ordigni atomici. I risultati del progetto portarono a sviluppare una rete a “commutazione di pacchetto”. In questo tipo di rete, l’informazione da trasmettere viene scomposta in tronconi, detti pacchetti (packet), che vengono spediti su una rete dalla tipologia a maglia, dove ogni pacchetto può seguire un percorso differente per arrivare a destinazione, scegliendo ad ogni nodo il successivo lato della maglia più conveniente da seguire. Al nodo di destinazione, i pacchetti vengono ricomposti nell’ordine giusto. In tal modo, se uno o più tratti della maglia vengono distrutti, i pacchetti trovano comunque una via, per quanto lunga e articolata, per giungere a destinazione. Il progetto divenne presto noto come “the internetting project (il progetto che interconnette le reti)” ed il sistema di reti che ne risultò fu chiamato “Internet”. Per assicurare la commutazione di pacchetto, il progetto sviluppò appositi protocolli: il protocollo IP (Internet Protocol) per stabilire gli standard di nomenclatura dei nodi (PC compresi) ed il protocollo TCP (Transmission Control Protocol), per la suddivisione in pacchetti, il loro instradamento e la ricomposizione dei pacchetti. I due protocolli, insieme a molti altri utilizzati da Internet (circa 100), costituiscono la suite di protocolli TCP/IP. Negli anni successivi, grazie ai fondi messi a disposizione dagli istituti scientifici e tecnologici del governo americano prima, dalle grandi aziende private poi, vennero sviluppate le grandi infrastrutture di Internet, cioè le dorsali (backbone) in grado di trasmette decine di Megabyte al secondo, rendendo possibili i grandi trasferimenti di dati. Le dorsali e gli altri elementi infrastrutturali si svilupparono prima negli Stati Uniti e poi, lentamente nel resto del mondo. Negli anni ’80, grazie alla diffusione di applicazioni di grande successo basate su Internet, come la posta elettronica (e-mail) e le reti civiche (BBS – Bulletin Board System = Sistema di bacheca per comunicati), la Rete contava già milioni di utenti. Ma il grande sviluppo di Internet avvenne dopo che, nel 1989, Tim Berners-Lee, un ricercatore al CERN di Ginevra, propose un sistema di pubblicazione di informazioni su Internet di tipo ipertestuale. L’idea era quella di consentire ad utenti della Rete in tutto il mondo di lavorare insieme alla costruzione di una base di conoscenza, combinando i contributi (documenti) di ciascuno in una sorta di rete. Il meccanismo è basato sull’inclusione nei documenti di link (legami) ad altri documenti, che fisicamente si possono trovare su altri computer della Rete, in una serie senza fine di rimandi, anche circolari, che realizzano di fatto un’unica immensa rete mondiale di conoscenza: il World Wide Web (WWW – Tela di ampiezza mondiale). Nel Web, ciascun ente che vuole contribuire alla rete mondiale di conoscenza collega ad Internet un proprio Server che contiene i documenti da condividere. Ciascun server di Internet che ospita documenti si chiama host (ospite) e i documenti che mette a disposizione, noti come pagine Web, si dicono pubblicati su Internet. Per utilizzare gli ipertesti ed attivare gli iperlink, Tim Berners-Lee realizzò il primo browser, un programma che visualizza i documenti ipertestuali e, tramite click sui link, naviga da un ipertesto all’altro e da un sito all’altro. I protocolli di Internet (la suite TCP/IP) La suite TCP/IP è in realtà un insieme di un centinaio di protocolli che soddisfano tutte le esigenze di Internet. I più importanti sono: • IP (Internet Protocol = Protocollo di Internet): gestisce l’instradamento dei pacchetti tramite l’identificazione univoca dei nodi della rete (PC ed apparecchiature di rete), con un indirizzo composto da 4 numeri decimali (ciascuno compreso tra 0 e 255) separati da un punto; ad esempio 168.64.26.108; si colloca sul livello 3 (Rete) dello stack ISO/OSI; • TCP (Transmission Control Protocol = Protocollo di controllo della trasmissione): gestisce la suddivisione in pacchetti del messaggio, la loro distribuzione sulla rete e la ricomposizione a destinazione; si colloca sul livello 4 (Trasporto) dello stack ISO/OSI; • HTTP (HyperText Transfer Protocol = Protocollo di trasferimento di ipertesti): gestisce il trasferimento dei file multimediali (testo, grafica, immagini, suono, video, etc...) al fine di consentirne la riproduzione sul dispositivo pertinente (monitor, casse, etc...); viene utilizzato dai browser ed implementa la navigazione ipertestuale tramite la gestione dei link; si colloca sul livello 6 (Presentazione) dello stack ISO/OSI; • FTP (File Transfer Protocol = Protocollo di trasferimento di file): gestisce lo scambio di file tra computer, limitandosi al loro trasferimento da una memoria di massa all’altra; a differenza di HTTP, i file non vengono riprodotti dal browser, ma immagazzinati in memoria; è quindi lo strumento ideale per fare il download (scarico) di grossi file che non interessa riprodurre immediatamente; può essere utilizzato anche tramite browser; si colloca sul livello 6 (Presentazione) dello stack ISO/OSI; • SMTP (Simple Mail Transfer Protocol = Protocollo di trasferimento di posta semplice): gestisce lo scambio di e-mail (electronic mail = posta elettronica); tuttavia, poiché è capace solo di accodare le e-mail presso il destinatario, viene comunemente utilizzato solo per l’invio delle e-mail, mentre per la ricezione viene utilizzato POP3; si colloca sul livello 6 (Presentazione) dello stack ISO/OSI; • POP3 (Post Office Protocol 3 = Protocollo di ufficio postale 3): gestisce la ricezione di e-mail; conserva i messaggi ricevuti da un utente in una mail-box (cassetta postale) residente su un Server e consente all’utente lo scarico dei singoli messaggi sul proprio computer su richiesta; si colloca sul livello 6 (Presentazione) dello stack ISO/OSI;

pag. 19 di 49

Il Browser, il protocollo HTTP ed il linguaggio HTML Il browser (browse = curiosare, sfogliare) è un programma in grado di visualizzare documenti ipertestuali, cioè documenti che contengono dei link (legami) ad altri documenti residenti in altri siti Internet che vengono collegati al documento principale in modo multidimensionale, creando una enorme base di conoscenza mondiale (il World Wide Web). I documenti visualizzati si chiamano pagine Web. Esempi di browser sono Microsoft Internet Explorer, Netscape Navigator, Opera. Il browser utilizza il protocollo HTTP per inviare su Internet le richieste di visualizzazione di una pagina Web e per acquisire le relative risposte (tra cui la pagina stessa). Quando l’utente clicca un link, il browser attiva HTTP per inviare la richiesta della pagina al sito che la pubblica; questo riceve la richiesta ed invia il file multimediale tramite HTTP. I documenti acquisiti vengono immediatamente riprodotti dal browser. Le pagine Web acquisite tramite browser sono composte da numerosi file (testo, immagini, video, audio, etc...) organizzati secondo un certo layout (impaginazione). Le specifiche del layout sono codificate nel documento Web con un apposito linguaggio: HTML (HyperText Mark-up Language = Linguaggio di contrassegni ipertestuale). HTML è un linguaggio basato su coppie di contrassegni (Mark-up), che contengono istruzioni (tag = etichette) che specificano il layout (come deve apparire) il testo ed i file contenuti entro i contrassegni. Il browser legge i tag HTML ed effettua il display delle informazioni contenute tra i simboli di mark-up secondo le istruzioni del tag. Il browser è quindi in sintesi un programma in grado di reperire su Internet documenti ipertestuali e visualizzarli in maniera multimediale. I domini Internet ed il DNS (Domain Name System) L’utente del browser può accedere direttamente ad una pagina Web di cui conosce l’indirizzo digitandolo nell’apposito campo del browser. Per le pagine Web, l’indirizzo che comincia sempre con http://, è composto dall’indirizzo IP dell’host che pubblica i documenti, seguito dalla catena gerarchica delle directory del file system dell’host, fino ad arrivare al documento che costituisce la pagina Web. La prima parte dell’indirizzo da digitare è quindi l’indirizzo IP dell’host, un numero come, ad esempio, 168.142.67.211, difficile da ricordare e da digitare senza errori. Per agevolare gli utenti di Internet, sono stati creati degli alias mnemonici degli indirizzi IP, chiamati “nomi di dominio” Internet. Un nome di dominio Internet è organizzato in livelli, separati da un punto (dot), come, ad esempio, www.unipa.it. Il livello più elevato (dominio di primo livello), che è il primo da destra (it nell’esempio), identifica la categoria dell’organizzazione o la nazione ospitante. Il motivo del doppio significato è legato alla storia della diffusione di Internet. Quando la Rete era diffusa solo negli Stati Uniti, apparve sensato assegnare i domini alle categorie di organizzazioni. Le più diffuse sono: • com = commercial (aziende private); • org = organization (organizzazioni costituite da numerosi membri); • gov = government (istituzioni governative U.S.A.); • edu = education (Università e simili); • net = network (reti di siti). Quando Internet si diffuse alle altre nazioni del mondo, sorse l’esigenza di creare domini nazionali ai quali associare appositi organismi che vigilassero sul corretto uso della Rete in ogni nazione. Nacquero così i domini di primo livello nazionali come it (Italia), uk (United Kingdom), fr (Francia), etc... Tutte le nazioni del mondo, ad eccezione degli U.S.A. hanno avuto assegnato un dominio di primo livello. La situazione attuale nell’utilizzo dei domini di primo livello è perciò confusa. I siti statunitensi utilizzano solo i domini organizzativi, mentre le altre nazioni usano sia quelli organizzativi che quelli nazionali. Inoltre, per aumentare la confusione, la maggior parte delle nazioni ha deciso di utilizzare come dominio di primo livello la combinazione del dominio nazionale con quello organizzativo (ad esempio com.uk), mentre altre nazioni, tra cui l’Italia, utilizzano solo il dominio nazionale. Il livello immediatamente sottostante è il dominio di secondo livello (nell’esempio unipa). Questo dominio corrisponde all’organizzazione che ha deciso di aprire il sito Internet (generalmente è il nome dell’azienda o dell’ente) ed è assegnato, dietro richiesta di quest’ultima, dall’organismo che gestisce il dominio di primo livello nell’ambito del quale si inserisce. Il livello ancora successivo (quello di sinistra) identifica infine l’host (il Server) che contiene le pagine Web. Viene scelto dall’organizzazione che detiene il sito ed è invalso l’uso di chiamarlo www (World Wide Web, come nell’esempio), ma lo si può chiamare come si vuole. Ve ne possono essere più di uno, corrispondenti a più Server che sono ospitati nello stesso dominio di secondo livello. Ad esempio, www.ingegneria.unipa.it, dove www.ingegneria (si sarebbe potuto chiamare anche solo ingegneria: www è una moda) è il nome del Server della Facoltà di Ingegneria all’interno del dominio di secondo livello unipa all’interno del dominio di primo livello it. Analogamente, in www.lettere.unipa.it, www.lettere è il nome del Server della Facoltà di Lettere e Filosofia all’interno dello stesso dominio. L’indirizzo simbolico completo (dominio di primo e secondo livello + host) corrisponde univocamente all’indirizzo IP del Server. Per consentire agli utenti del browser di digitare l’indirizzo simbolico (il nome di dominio) anziché l’indirizzo IP, è stato creato il DNS (Domain Name System = Sistema dei nomi di dominio). Il DNS è un sistema che traduce il nome di dominio completo in un indirizzo IP, grazie ad una lista di corrispondenze disponibile su Internet. Poiché la detenzione di un’unica lista aggiornata di tutti i domini mondiali sarebbe impraticabile, il sistema si basa su un numero molto alto di liste parziali distribuite su Internet secondo una gerarchia, ubicate su Server pag. 20 di 49

dedicati chiamati Server DNS. La risoluzione del nome simbolico avviene per gradi, cominciando dal Server DNS più vicino al richiedente e proseguendo, in base ai livelli di dominio, verso Server DNS più vicini alla destinazione. I siti Web e gli URL (Uniform Resource Locator) Un sito Web è un insieme organico di documenti multimediali (pagine Web) che include una pagina introduttiva detta home page (pagina base). Generalmente, gli utenti accedono al sito digitando l’indirizzo della home page (ad esempio, www.unipa.it) e poi navigando al suo interno tramite i link ipertestuali che puntano alle altre pagine del sito. Tuttavia, è possibile anche digitare l’indirizzo di una specifica pagina del sito, accedendo direttamente a questa. Un sito Web non è la stessa cosa di un host (Server che ospita i documenti). Un host può ospitare più siti Web ed un sito Web può essere ospitato presso diversi host. In ogni caso l’indirizzo completo che consente di accedere ad una pag. si chiama URL (Uniform Resource Locator = Localizzatore di risorse uniforme). L’URL completo è costituito da: • il nome del protocollo (in genere http:\\); • il nome del dominio e dell’host, equivalente all’indirizzo IP; • il percorso gerarchico nel file system dell’host fino al documento richiesto. I motori di ricerca ed i portali L’immensità del Web è tale che, in assenza di strumenti per trovare le informazioni che si cercano, questa grande risorsa dell’umanità potrebbe rivelarsi pressoché inutile. Se fosse possibile accedere solo alle informazioni per le quali qualcuno ci ha comunicato l’URL, il Web sarebbe rimasto una risorsa per specialisti e ricercatori universitari (come sostanzialmente era agli albori della sua storia). Esistono invece potenti strumenti per la ricerca sistematica in tutto il Web delle informazioni che si cercano: sono i motori di ricerca. Un motore di ricerca è un insieme coordinato di programmi che utilizza un processo in due fasi: • un programma chiamato spider (ragno) esplora incessantemente il Web (la tela) leggendo tutte le pagine rappresentative con i relativi link; le parole lette in queste pagine alimentano un enorme banca-dati che associa ogni parola agli URL delle pagine dove è stata riscontrata; • quando un utente cerca una o più parole sul Web tramite il motore di ricerca, questi cerca la/e parola/e nella banca-dati e restituisce tutti gli URL che la/e contengono secondo un ordine di aderenza alla richiesta. I motori di ricerca attuali sono molto sofisticati e permettono di cercare combinazioni booleane di parole (parole combinate con gli operatori dell’algebra di Boole: and, or, not), condizioni particolari, come quella che le parole cercate siano “vicine” nella pagina Web, criteri di esclusione, etc... I motori di ricerca più usati sono Yahoo, Google, AltaVista. Spesso ad un motore di ricerca è associato un Portale, cioè un sito Internet che accoglie gli utenti su Internet e fa da guida per la ricerca di risorse sulla Rete. I portali, oltre al motore di ricerca “bruta”, offrono anche un approccio alternativo, che consiste nel seguire una struttura gerarchica di categorie di contenuti che porta progressivamente a restringere il campo di ricerca. Esempi di portali sono Yahoo e, in Italia, Virgilio, il cui nome ben esplicita il suo ruolo di guida. Intranet ed Extranet Intranet è una rete privata che utilizza gli stessi standard di Internet (suite TCP/IP, browser, linguaggio HTML, etc...), ma limitata all’interno di un’azienda. Una Intranet può essere contenuta all’interno di una LAN, connettere più LAN e comprendere anche tratti di WAN, tutti però interni all’azienda. Generalmente è connessa ad Internet tramite un Gateway. Lo scopo di una Intranet è quello di consentire ai dipendenti dell’azienda la condivisione delle informazioni e delle risorse informatiche, la collaborazione ed il lavoro di gruppo in modo semplice ed economico, grazie all’utilizzo dei medesimi standard di Internet. Extranet è una rete privata che utilizza gli stessi standard di Internet, ma limitata ad un’azienda e ai suoi fornitori, partner, clienti ed altre aziende con le quali condivide rapporti di affari. Una Extranet generalmente connette più LAN attraverso tratti di WAN, sui quali deve essere garantita la sicurezza e la privacy. Questo risultato viene raggiunto tramite l’istituzione di VPN (Virtual Private Network = Rete privata virtuale). Una VPN è un modo per utilizzare l’infrastruttura di comunicazione pubblica (come Internet) per realizzare una rete privata nella quale i dati viaggiano sicuri. Utilizza tecniche di crittazione dei dati, i quali all’ingresso nella rete pubblica vengono criptati, entrando in una sorta di tunnel, dal quale escono, tramite decrittazione, quando giungono a destinazione. Per questo motivo le tecnologie alla base delle VPN sono chiamate anche tecniche di tunneling. Lo scopo di una Extranet è quello di consentire ad organizzazioni diverse, ma legate da rapporti di affari, di scambiarsi grandi volumi di dati, condividere informazioni (come cataloghi), collaborare a progetti comuni, condividere servizi informatici, etc... Firewall e Proxi Le reti Intranet ed Extranet devono essere collegate ad Internet per consentire lo scambio di informazioni con il resto del mondo. Tuttavia, data la natura riservata di queste reti, questo accesso deve essere protetto dagli attacchi provenienti dall’esterno. Inoltre, anche l’accesso ad Internet dei dipendenti delle aziende coinvolte deve essere regolamentato per evitare usi impropri delle risorse della Rete. Per il primo scopo (protezione dall’esterno) vengono utilizzati i Firewall (porta tagliafuoco). Il Firewall è un insieme di programmi su un Server (talvolta è un hardware dedicato) che protegge le risorse della rete privata dagli attacchi pag. 21 di 49

che possono provenire dall’esterno: accessi non autorizzati, errori non intenzionali, attacchi di hacker (to hack = prendere a fendenti), etc... Il Firewall, posto al confine tra rete privata e pubblica, esamina tutti i pacchetti in transito e decide, in base alle regole di sicurezza stabilite dagli amministratori di sistema, quali possano essere inoltrati e quali bloccati. Provvede anche a generare statistiche sui tentativi di accesso e ad emettere allarmi in situazioni di attacco. Per il secondo scopo (regolamentazione degli accessi all’esterno) vengono utilizzati i Proxi (computer prossimale). Il Proxi è un Server che agisce da intermediario tra l’utente aziendale e Internet. Quando un utente fa una richiesta di accesso ad Internet, il Proxi lo identifica (tramite utente e password), verifica che si autorizzato ad accedere al sito richiesto, effettua la richiesta su Internet per suo conto, acquisisce il risultato e lo invia all’utente, registrando contestualmente la storia dei suoi accessi. Dal punto di vista dell’utente, il Proxi è trasparente ed egli ha l’impressione di navigare direttamente su Internet. Dal punto di vista del sito Internet visitato, la richiesta proviene non dall’indirizzo IP dell’utente, ma da quello del Proxi, uguale per tutta la rete aziendale. Il Proxi assicura anche funzioni accessorie, come la cache (deposito segreto), una memoria dove vengono immagazzinate tutte le pagine visitate alla prima richiesta, in modo che se ulteriori utenti richiedono la stessa pagina non ci sia più bisogno di acquisirla da Internet, velocizzando la navigazione aziendale. Le applicazioni aziendali Abbiamo definito un Sistema Informativo Aziendale come: Insieme di persone, macchine, reti, applicazioni software e processi che permettono all’azienda di disporre delle informazioni giuste al momento giusto. Utilizzando alcuni dei termini tecnici che abbiamo trattato nei capitoli precedenti, possiamo dire, con un linguaggio più tecnico, che un Sistema Informativo Aziendale è: Insieme di hardware, software di sistema, software applicativo, reti, persone e processi che permettono all’azienda di disporre delle informazioni giuste al momento giusto. Abbiamo trattato in dettaglio i componenti hardware, software di sistema e reti. Adesso iniziamo a trattare il componente più complesso e articolato: il software applicativo, del quale le applicazioni aziendali costituiscono i mattoni costituenti. Continueremo trattando i sistemi di integrazione, le banche-dati e infine parleremo di persone e processi. Tratteremo le applicazioni aziendali per i settori industriale e dei servizi, anteponendo la descrizione di alcune delle applicazioni comuni ad entrambi. 4.4

Le applicazioni diffuse in tutti i settori

Alcune applicazioni sono di utilizzo così generale, da essere utilizzate in tutti i settori di attività, pubblici e privati. Si citano le più significative. Automazione d’ufficio E’ un insieme piuttosto lasco di strumenti e prodotti che supportano il lavoro del singolo in un ufficio. Vengono chiamati anche sistemi di produttività individuale. In genere comprendono i seguenti componenti: • un Word Processor (processore di testi), che supporta la redazione di documenti, anche lunghi ed articolati, composti da testo ed immagini; un esempio è Microsoft Word; • uno Spreadsheet (Foglio elettronico), che supporta la redazione di prospetti di calcolo, anche molto complessi, con una serie di automatismi di calcolo; un esempio è Microsoft Excel; • uno strumento per creare presentazioni multimediali, di livello professionale, che possono essere proiettate su schermo e stampate; un esempio è Microsoft PowerPoint; • un client di posta elettronica; un esempio è Microsoft Outlook; • un ambiente con gli strumenti del lavoro quotidiano (agenda, contatti, lista delle cose da fare, etc...); un esempio è Microsoft Outlook; • un database per uso personale con limitate capacità di programmazione; un esempio è Microsoft Access. Nonostante esistano diversi prodotti che supportano l’automazione d’ufficio, anche Open Source, la suite Microsoft Office, che comprende tutti i prodotti citati sopra ed altri, risulta di gran lunga la più diffusa e conosciuta. Gestione del personale La gestione del personale supporta le attività contrattuali, normative, disciplinari ed economiche relative al personale di un’azienda. Comprende la gestione anagrafica del dipendente, la storia del suo rapporto con l’azienda, la sua posizione contrattuale e normativa e supporta il calcolo degli stipendi e delle paghe. Spesso alla gestione del personale è associata la rilevazione delle presenze/assenze del personale, che fa uso di strumenti dedicati, come ad esempio i terminali-orologio, i lettori di badge, etc... La gestione delle presenze/assenze consente di introdurre in azienda sistemi anche complessi di orario flessibile, necessari per adattare gli impegni di lavoro alla vita sociale moderna. Contabilità La gestione della contabilità supporta la raccolta delle informazioni contabili (fatture attive e passive, note di spese, spese del personale, etc...) e la catalogazione delle stesse in un contesto organico secondo i principi contabili, con la produzione automatica dei documenti contabili. Alla gestione della contabilità è in genere associata anche la produzione del bilancio aziendale. pag. 22 di 49

Controllo di gestione E’ uno strumento di analisi costi-benefici dell’andamento economico dell’azienda. Il controllo di gestione suddivide la contabilità dell’azienda per commesse (linee di vendita, contratti, progetti, introiti in generale), che rappresentano i ricavi dell’azienda e per centri di costo, ossia settori organizzativi dell’azienda (linee di produzione, uffici, strutture di supporto, team progettuali, etc...), che rappresentano i costi dell’azienda. I dati contabili vengono quindi organizzati secondo una matrice che riporta nelle righe le commesse e nelle colonne i centri di costo. La cella della matrice rappresenta il costo sopportato da un dato centro di costo per contribuire ad una specifica commessa. Tale analisi consente di evidenziare i contributi dei centri di costo alle commesse e di valutare se i benefici derivanti da un’attività o struttura siano maggiori o minori dei costi sostenuti per mantenerla. Il controllo di gestione è in grado di produrre un insieme molto vasto di analisi incrociate di questo tipo, secondo le specifiche esigenze dell’azienda, ed è quindi un’applicazione che richiede complesse fasi di personalizzazione, effettuate in genere da personale altamente specializzato. Workflow Il Workflow (Flusso di lavoro) è un sistema di supporto ai processi strutturati di un’azienda. I processi strutturati sono procedure per stadi, che prevedono un insieme di percorsi prestabiliti e di scelte da effettuare in base a regole codificate, al fine di portare a termine un certo compito. Esempi di Workflow sono: • la diagnosi e riparazione di un componente tecnologico; • la pratica di rimborso di un’assicurazione; • l’assistenza di Help Desk; • lo sviluppo metodico di un progetto software. Un sistema di Workflow consente all’analista del procedimento di disegnare un grafo che lo rappresenta. Nel grafo, i nodi rappresentano gli stadi del procedimento ed i relativi prodotti, mentre le linee rappresentano i percorsi di avanzamento e le relative attività. Al grafo è associato un insieme di regole che specificano la scelta dei percorsi e le condizioni di avanzamento. Un componente del sistema di Workflow, il motore di Workflow, regola l’avanzamento degli utenti sul grafo, consentendo di accedere solo ai percorsi consentiti dalle regole e solo se si sono verificate le condizioni previste (produzione di un documento, raggiung.to di una scadenza, etc). I sistemi di Workflow sono ideali quando un processo può essere rappresentato come un grafo, le regole devono essere rispettate rigorosamente e le eccezioni sono rare. Negli altri casi (regole lasche, molte eccezioni), il sistema è in genere troppo rigido. Inoltre è molto difficile gestire i cambiamenti delle regole a procedimento già avviato. Workgroup Il Workgroup (Gruppo di lavoro) è un sistema di supporto ai processi non strutturati di un’azienda. I processi non strutturati sono attività, compiti e progetti portati avanti da gruppi di persone appartenenti a strutture organizzative diverse e non soggetti a regole categoriche. Esempi sono: • ricerca e sviluppo di nuovi prodotti; • marketing; • progetti di riorganizzazione; • task force interdisciplinari su specifici obiettivi; • progetti internazionali. Un sistema di Workgroup supporta la comunicazione, la collaborazione, la condivisione delle informazioni ed il coordinamento di un gruppo di lavoro, superando i vincoli di spazio e di tempo. E’ costituito da un insieme lasco di strumenti che supportano la delocalizzazione della sede di lavoro del gruppo (i componenti possono lavorare in sedi geograficamente diverse) e l’asincronicità del lavoro (i componenti possono interagire sullo stesso tema in momenti diversi). Gli strumenti tipici del Workgroup sono: • l’e-mail (posta elettronica) che supporta la delocalizzazione e l’asincronicità; • la videoconferenza, che supporta la delocalizzazione; • il desktop (scrivania) virtuale, che offre agli utenti un ambiente con gli strumenti del lavoro quotidiano (agenda, contatti, lista delle cose da fare, etc...), disponibile da qualunque postazione Internet (supporta la delocalizzazione); • l’agenda condivisa, che permette di sincronizzare gli impegni del gruppo di lavoro (supporta la delocalizzazione); • i forum di discussione che supportano la delocalizzazione e l’asincronicità; • la bacheca digitale, che permette di pubblicare avvisi di interesse per il gruppo di lavoro (supporta la delocalizzazione e l’asincronicità). I sistemi di Workgroup, insieme alle tecnologie Wireless, supportano il Virtual Workplace (Posto di lavoro virtuale), cioè la possibilità di svolgere il proprio lavoro indipendentemente dalla disponibilità di un ambiente fisico di lavoro.

pag. 23 di 49

DMS (Document Management System) I DMS (Document Management System = Sistema di gestione dei documenti) supportano l’archiviazione digitale dei documenti ed il loro recupero. I documenti vengono acquisiti sia in formato testo che in formato immagine, in quest’ultimo caso con l’utilizzo di scanner. Il sistema permette di ridurre enormemente la quantità di carta da conservare o, comunque, da tenere a portata di mano. IRS (Information Retrieval System) Gli IRS (Information Retrieval System = Sistema di recupero delle informazioni) sono strumenti di interrogazione e ricerca di banche dati destrutturate, dove cioè i dati non sono organizzati ed ordinati in campi specifici, ma sono ammassati senza alcuna vera struttura (testi, libri, articoli, etc...). Vengono in genere utilizzati in associazione con i DMS. I motori di ricerca disponibili su Internet sono degli immensi sistemi di Information Retrieval, associati ad uno sconfinato DMS chiamato World Wide Web. 4.5 Le applicazioni nel settore industriale Le applicazioni del settore industriale supportano i processi produttivi: • ricerca e sviluppo prodotti; • progettazione; • produzione; • approvvigionamento; • gestione magazzino; • spedizione; • marketing; • assistenza ai clienti, etc… Nel seguito vengono citate alcune delle applicazioni più significative, appartenenti alla famiglia delle applicazioni CAx (Computer Aided x – x assistito dal computer). CAD (Computer Aided Design) Il CAD (Computer Aided Design = Progetto assistito dal computer) supporta la progettazione del prodotto automatizzando il disegno complessivo e dei componenti. Un prodotto CAD mette a disposizione un tavolo da disegno virtuale con una ricca serie di strumenti di disegno di vario livello di automazione, che consentono al progettista di affrancarsi dalla fatica del disegno manuale e ripetitivo per concentrarsi sulla progettazione. CAE (Computer Aided Engineering) Il CAE (Computer Aided Engineering = Ingegnerizzazione assistita dal computer) supporta l’ingegnerizzazione del prodotto. Quando il settore di ricerca e sviluppo ha messo a punto il prototipo di un nuovo prodotto che l’azienda ha deciso di proporre sul mercato, occorre una nuova fase di progettazione che definisca le differenze del prodotto di mercato dal prototipo, le modalità di realizzazione sulla linea di produzione, di imballaggio, trasporto, assistenza tecnica, etc… Questa fase si chiama ingegnerizzazione del prodotto. Il CAE supporta questa fase grazie alla possibilità di generare dei modelli di processo produttivo, che, grazie a delle simulazioni, ne analizzano pregi e difetti senza dover realizzare modelli reali. CAM (Computer Aided Manufacturing) Il CAM (Computer Aided Manufacturing = Produzione assistita dal computer) supporta la realizzazione del prodotto automatizzando le linee di produzione, trasporto, immagazzinaggio, verifica, imballaggio. I sistemi CAM pilotano macchine di produzione, come ad esempio scaffali a scorrimento, macchine a controllo numerico per lavorazioni meccaniche di precisione, robot di assemblaggio, strumenti di misura per il controllo di qualità, bilance per l’imballaggio, etc… Essi controllano anche la sequenza delle operazioni di produzione. 4.6 Le applicazioni nel settore dei servizi Le applicazioni del settore dei servizi supportano la realizzazione ed erogazione del servizio nei confronti dell’utente: progettazione del servizio, preparazione e manutenzione del servizio, erogazione, misurazione dei livelli di servizio, assistenza ai clienti, Help Desk, etc… I principali servizi della Società dell’Informazione sono: • Credito; • Assicurazioni; • Turismo; • Informazione; • Consulenza (finanziaria, organizzativa, medica, tecnica); • Assistenza (quale servizio accessorio nell’erogazione di un servizio); • Commercio; • Pubblica Amministrazione (servizi statali, regionali, comunali, SSN). pag. 24 di 49

Front-Office e Back-Office Abbiamo visto che il servizio viene consumato nello stesso momento in cui viene erogato (Es.: trasporto in treno), a differenza del prodotto, che viene realizzato e consumato in momenti differenti (Es.: tessuto). Tuttavia, esiste una fase del ciclo produttivo del servizio che avviene in un momento precedente a quello dell’erogazione e, soprattutto, in un contesto differente: si tratta della preparazione e manutenzione del servizio. In questa fase vengono prodotti e/o messi a punto gli strumenti dell’erogazione del servizio, tra cui le infrastrutture, l’ambiente di erogazione, le procedure, le banche-dati, i moduli cartacei, l’addestramento del personale erogante, i macchinari coinvolti, i materiali di consumo, etc… e tutti questi mezzi vengono sottoposti a manutenzione continua per mantenerli in grado di erogare il servizio. Nel caso del trasporto in treno, un servizio tipico della Società Industriale, la preparazione del servizio comprende la realizzazione dell’infrastruttura ferroviaria (linee), delle stazioni, delle motrici e dei vagoni, del personale di stazione e viaggiante, delle procedure di prenotazione e acquisto dei biglietti, dei servizi accessori (pulizia, ristorante, vagoni letto). Nel caso dei servizi della Società dell’Informazione, sempre più dematerializzati e virtuali, la fase di preparazione/manutenzione del servizio assume un ruolo sempre più importante, perché è in essa che vengono realizzati i contenuti del servizio. Nei servizi virtuali, addirittura, la fase di erogazione è una conseguenza automatica di quella di preparazione/manutenzione, che non necessità né di ambienti né di personale dedicato (perché, ad esempio, avviene tramite Internet). Si distinguono pertanto due ambienti di produzione del servizio: •

Front-Office (Sportello): è l’ambiente di erogazione del servizio, dove si realizza il contatto tra il soggetto erogante e l’utente; nei servizi tradizionali (non ancora virtualizzati) è costituito da sportelli presidiati, cioè punti di contatto tra erogatore e utente dove personale specializzato media l’erogazione del servizio; i contenuti del servizio sono stati predisposti dal Back-Office (Retrosportello) e sono fruibili dagli operatori di sportello sotto forma di applicazioni e banche-dati informatiche (ad esempio, sportello bancario che effettua velocemente la transazione con procedure, software e banche-dati predisposte);



Back-Office (Retrosportello): è l’ambiente di preparazione e manutenzione del servizio, dove personale con una specializzazione ancora maggiore di quello del Front-Office predispone i contenuti del servizio (banche-dati, procedure organizzative), supervisiona le modalità ed i limiti di erogazione del servizio (orari, funzioni disponibili, autorizzazioni), sovrintende alle elaborazioni di massa, gestisce i rapporti asincroni con i clienti (produzione di rendiconti, messaggi, avvisi, etc…); nell’esempio bancario il Back-office gestisce, tra l’altro, l’andamento temporale dei tassi, la disponibilità dei prodotti bancari, le autorizzazioni di sportello, le procedure di elaborazione di massa come il calcolo delle cedole, l’invio degli estratti conto alla clientela, etc…

Le transazioni L’erogazione del servizio al Front-Office è in genere caratterizzata da procedure formali, strutturate e con alta frequenza di esecuzione (prenotazione aerea, certificato anagrafico, pagamento allo sportello, etc...). Queste caratteristiche richiedono uno strumento guidato e di rapida compilazione, l’analogo elettronico del modulo cartaceo. Questo strumento è la transazione, un programma realizzato per effettuare una singola operazione strutturata, che offre all’operatore di sportello un’interfaccia guidata per l’accesso e la modifica delle banche-dati che sono alla base del servizio e per l’eventuale rilascio di documenti attestanti la modifica effettuata. Per esempio, una transazione di sportello bancario, effettuata a seguito di un prelievo di contante dal c/c, modifica la situazione del c/c in archivio e produce una ricevuta del prelievo. Una transazione è l’unità minima di modifica dell’informazione all’interno di una banca dati. Al fine di operare correttamente, le transazioni devono possedere alcune caratteristiche che vengono riassunte nel termine ACID (acido), acronimo delle seguenti proprietà: •

Atomic (atomico): la transazione deve compiere tutta la variazione prevista nella base-dati o non compierla del tutto;



Coherent (coerente): la transazione deve mantenere la coerenza dei dati nella base-dati;



Isolated (isolata): la transazione deve essere indipendente da tutte le altre transazioni che vengono eseguite nel sistema nello stesso momento;



Duration (durata): la transazione deve avere una durata limitata; non deve essere never ending (senza fine).

Evoluzione del Front-Office: i canali di distribuzione (Delivery Channel) Lo sportello presidiato è tipico del Front-Office tradizionale, quello dei servizi non ancora virtualizzati. I suoi limiti risiedono nei suoi vincoli spaziali (l’utente deve recarsi in un luogo ben preciso) e temporali (ad un orario ben preciso), oltre che nella necessità di disporre di personale dedicato. pag. 25 di 49

Una delle tendenze della Società dell’Informatizzazione è la virtualizzazione del servizio, cioè la smaterializzazione del Front-Office, che viene sostituito da canali di accesso virtuali, detti Delivery Channel (letteralmente canale di consegna, generalmente tradotto con canale di distribuzione o canale di accesso). La virtualizzazione dei canali di accesso avviene per gradi, procedendo dai canali più “materiali”, a quelli più “immateriali”. Il processo tende via via a rimuovere i vincoli spaziali e temporali del Front-Office e ad abolire il personale dedicato. I principali stadi di questa evoluzione sono: • Sportello semi-presidiato: è ancora uno sportello fisico, mediato da personale, il quale però non è più specializzato nell’erogazione di quel servizio, ma grazie ad un veloce addestramento, è in grado di erogarlo insieme ad altri servizi diversi; è in genere ospitato presso strutture che hanno una diversa finalità principale; grazie alla distribuzione variegata degli sportelli semipresidiati, il vincolo temporale è meno stringente; un esempio sono le tabaccherie che consentono il pagamento del bollo auto, gli sportelli bancari che distribuiscono certificati anagrafici, le farmacie che erogano servizi di prenotazione di prestazioni sanitarie, etc… A volte questo personale è assistito, per le operazioni più difficili, da servizi di Help Desk, un “servizio di un servizio”; • Help Desk: sono ancora sportelli fisici mediati da personale, ma è stato abolito il contatto fisico con l’utente, il quale invece telefona ad un numero (eventualmente verde, cioè gratuito) per ottenere l’erogazione del servizio; consentono la concentrazione di un numero molto elevato di sportelli in un unico luogo, che può risiedere nel luogo più conveniente, anche economicamente, anche in un’altra nazione; sono utilizzati per prenotazioni, consulenze, assistenza, etc…; possono fornire un servizio di primo livello (direttamente agli utenti fruitori del servizio) o di secondo livello (a personale erogante di specializzazione più bassa); il vincolo spaziale è molto basso o assente (disponibilità di un telefono); • Call Center: concettualmente sono simili agli Help Desk, ma sono dotati di strumenti informatici (risponditori automatici) che permettono (teoricamente) di risolvere la maggior parte delle chiamate senza coinvolgere personale, riducendone drasticamente l’impiego; sono molto bassi sia il vincolo spaziale che temporale; • Totem (o chioschi): sono ancora sportelli fisici, ma è stata abolita la mediazione del personale; sono macchine ubicate in punti di grande affollamento (piazze, uffici pubblici, supermercati), che, grazie ad interfacce semplificate (in genere touch screen = schermo a contatto), consentono agli utenti di accedere direttamente al servizio erogato in modalità 24x7x365 (questa sigla significa 24 ore al giorno, 7 giorni la settimana, 365 giorni all’anno); il vincolo temporale è perciò scomparso; sono tipici dei servizi pubblici; • Internet: questo canale abolisce anche lo sportello fisico; chiunque abbia un collegamento ad Internet può accedere al servizio tramite un sistema di riconoscimento e autenticazione ed ottenerne l’erogazione in modalità 24x7x365; il vincolo temporale è assente e quello spaziale è ridottissimo (PC collegato ad Internet); un esempio è l’Home Banking (Servizi bancari a casa); • Wireless: è l’ultima frontiera dei canali di accesso; questo canale abolisce anche la fisicità del luogo ed è quindi il più virtuale, privo sia di vincolo spaziale che temporale; l’accesso al servizio avviene tramite terminale mobile (Cellulare, Smartphone, Palmare, PC portatile), con sistemi di riconoscimento e autenticazione simili a quelli di Internet, ma con un collegamento attraverso la rete GSM/GPRS o reti locali wireless (Wi-Fi); un esempio sono i servizi di news (notizie) personalizzate. La figura che segue riporta la classificazione dei canali di accesso nei confronti dei vincoli spaziale e temporale. Basso Totem Internet Wireless

Call Center Vincolo Temporale Sportello semipresidiato Help Desk Alto

Sportello presidiato Alto

Vincolo spaziale Figura 7 – Posizionamento dei canali di accesso rispetto ai vincoli

Basso

Esempio 1: l’Home Banking L’Home Banking (Servizi bancari a casa) è un servizio virtuale (detto anche banca virtuale) che consente di disporre di (quasi) tutti i servizi bancari da casa propria o da un qualunque punto collegato ad Internet (anche wireless). Come quasi tutti i servizi virtuali, il funzionamento è basato sull’esistenza di meccanismi di identificazione certa dell’utente che si collega e di protezione (riservatezza) dei dati scambiati. La fattibilità dei servizi di Home Banking è agevolata dall’utilizzo del Conto Corrente bancario associato all’utente per tutti gli spostamenti di denaro, pag. 26 di 49

rendendo non necessari sistemi di pagamento on-line. Naturalmente, non è possibile effettuare operazioni di versamento e prelievo di denaro contante. Esempio 2: prenotazione/biglietteria on-line E’ un servizio virtuale che consente di effettuare una prenotazione e/o acquistare il relativo biglietto (teatri, evento sportivi o musicali, mezzi di trasporto, alberghi, viaggi organizzati, etc…) tramite Internet e/o terminale mobile (wireless). In questo caso (in generale) non è necessaria un’identificazione certa, che può avvenire al momento in cui ci si presenta per usufruire della prenotazione o del biglietto acquistato. E’ invece indispensabile, se si procede all’acquisto del biglietto, ma anche per la prenotazione di alberghi, un sistema di pagam on-line. Esempio 3: e-Commerce (Commercio elettronico) L’e-Commerce (Commercio elettronico) è un servizio virtuale che consente di effettuare acquisti su Internet. Il servizio si compone in genere di tre elementi: •

Un catalogo elettronico della merce in vendita, composto da schede con immagine, descrizione e prezzo del prodotto; l’utente sceglie il prodotto desiderato e la quantità;



Un carrello della spesa (virtuale), dove vengono riposte le merci scelte dall’utente e riportato il totale da pagare;



Un sistema di pagamento on-line che consente di pagare il totale delle merci, le eventuali spese di spedizione e gli altri oneri.

Le merci acquistate vengono recapitate a casa dell’utente, in genere tramite vettori privati, veloci e affidabili, che consentono di minimizzare il disagio della non immediata disponibilità del bene. In questo servizio l’identificazione sicura dell’utente non è in genere necessaria, anche se, per prevenire frodi, in caso di grossi acquisti vengono richieste conferme telefoniche o pagamenti in contrassegno. Con il progredire delle tecnologie Wireless, l’e-Commerce sta lentamente evolvendo verso l’m-Commerce (mobile Commerce = Commercio mobile), che utilizza per l’accesso i terminali mobili (PDA, etc...). Esempio 4: e-Government L’e-Government (Pubblica Amministrazione elettronica ?) non è un singolo servizio, ma piuttosto l’applicazione delle tecnologie dell’ICT al rapporto tra cittadini e Pubblica Amministrazione (d’ora in poi P.A.). I servizi tradizionali erogati dalla P. A. Centrale e Locale e dalle Aziende Sanitarie vengono informatizzati e resi disponibili ai cittadini tramite diversi canali di accesso, tradizionali e virtuali. Lo scopo dell’e-Government è quello di cambiare il tradizionale, burocratico ed assolutistico rapporto tra cittadini e P.A. (dove il cittadino ha un ruolo di suddito) in un nuovo tipo di rapporto, dove le esigenze del cittadino sono al centro del sistema. A tal fine l’e-Government non si limita ad informatizzare i servizi, ma effettua un BPR (Business Process Reengineering = Riorganizzazione dei processi d’affari) dei processi, il cui fine è la transizione: •

da un modello a “silos verticali”, dove i processi sono forgiati sulla struttura organizzativa dell’Ente Pubblico (esempio: un imprenditore che vuole avviare una sola nuova attività deve richiedere permessi ed autorizzazioni fino a 40 uffici ed Enti diversi);



ad un modello ad “eventi della vita” orientato al punto di vista del cittadino, che percepisce il proprio rapporto con la P.A. in termini di eventi della propria vita: nascita, titolo di studio, impiego o avviamento attività, matrimonio, nascita figli, malattia, morte (esempio: un imprenditore che vuole avviare una sola nuova attività richiede un solo permesso ad un solo Ente).

L’obiettivo dell’ e-Government è quindi estremamente ambizioso, perché passa per la ristrutturazione profonda dei processi intra ed inter Ente e richiede un grosso commitment (impegno) del livello politico e di direzione degli Enti pubblici. Per lo stesso motivo, per l’erogazione dei servizi di e-Government occorre far ricorso alle più sofisticate tecnologie ICT (identificazione, pagamento, etc…) e, nonostante il settore pubblico sia tradizionalmente un settore di retroguardia, oggi i servizi di e-Government sono i servizi virtuali più avanzati e si collocano sulla frontiera tecnologica dell’ICT. La crittografia I servizi virtuali, cioè quelli che fanno uso di canali di distribuzione innovativi (come Internet) e quindi non sono mediati da personale dedicato pongono seri problemi di sicurezza. La mancanza di personale intermediario pone il problema dell’accertamento dell’identità dell’utente, indispensabile in molti servizi (ad esempio Home Banking), ma anche di quello dell’erogatore del servizio, che potrebbe aprire un sito con offerte allettanti e scomparire nel nulla dopo aver raccolto una cifra ingente. Ma anche dando per scontata la buona fede di entrambi gli attori del servizio, si pongono i seguenti problemi: • i messaggi inviati possono essere intercettati e letti da malintenzionati; • i messaggi inviati possono essere intercettati ed alterati da malintenzionati ad insaputa degli attori del servizio; • l’identità degli attori può essere identificata da malintenzionati e utilizzata per scopi illeciti; • l’identità degli attori può essere alterata da malintenzionati. pag. 27 di 49

Per prevenire queste attività illecite, i servizi erogati tramite Internet utilizzano tecniche di crittografia (dal greco: scrittura segreta). La crittografia è una tecnica che permette di mantenere segrete ed integre le informazioni scambiate. La crittografia assicura: • Riservatezza: preclude la visione non autorizzata dell’informazione; • Integrità: preclude l’alterazione non rilevata dell’informazione; • Autenticazione: previene la dissimulazione del mittente e del destinatario. • Non ripudio: previene il diniego della paternità del messaggio da parte del mittente. In linea di principio, i sistemi di crittografia seguono il seguente schema: • Il mittente cripta (ossia trasforma in un codice incomprensibile e senza senso apparente) le informazioni in chiaro, tramite un algoritmo matematico che utilizza una chiave; lo stesso algoritmo produce codici criptati completamente diversi a seconda della chiave utilizzata; • Il destinatario decripta (ossia ritrasforma in informazioni in chiaro) il codice ricevuto tramite un algoritmo matematico inverso a quello di criptazione, che utilizza la stessa chiave o una chiave ad essa matematicamente collegata. La crittografia è una tecnica molto antica, già utilizzata dagli Egizi con i geroglifici 2.000 anni prima di Cristo. I primi esempi ben documentati risalgono a Giulio Cesare che, durante la guerra contro i Galli, utilizzava una tecnica molto semplice per comunicare con i propri ufficiali in maniera che i nemici, anche intercettando il messaggio, non lo potessero comprendere. L’algoritmo matematico consisteva nel traslare in avanti ogni lettera dell’alfabeto di un numero fisso (la chiave), producendo un testo incomprensibile, che il destinatario rimetteva in chiaro traslando le lettere all’indietro. Naturalmente la tecnica era efficace grazie al primitivo livello culturale dei Galli. Per decrittare il messaggio sarebbe bastato provare tutte le possibili 20 chiavi (anzi, in media, la metà). Questo tipo di attacco ad un sistema di crittografia, che consiste nel provare sistematicamente tutte le combinazioni, era troppo evoluto per i Galli, ma risulta oggi ideale per un computer ed è l’attacco più comune: è noto come attacco per forza bruta. Per difendersi sia dagli attacchi per forza bruta che da quelli più avanzati (ad esempio, ricerca di configurazioni di lettere che hanno la stessa frequenza delle parole più comuni nella lingua in cui è scritto il messaggio), i sistemi di crittografia divennero sempre più sofisticati. Alcuni prevedevano chiavi sempre diverse e lunghe quanto il messaggio. Quando nel 1967 Che Guevara fu ucciso in Colombia, si scoprì che portava sotto la camicia una lunga benda con una stringa di lettere senza senso. Si trattava della chiave che utilizzava per criptare i messaggi che inviava a Fidel Castro. Ogni volta che inviava un messaggio, consumava un pezzo della benda-chiave avente lo stesso numero di lettere del messaggio. Fidel Castro conservava a Cuba una stringa eguale. Il sistema Enigma, utilizzato dai tedeschi durante la Seconda Guerra Mondiale per comunicare con i propri sottomarini e poi violato dagli Alleati grazie all’invenzione del computer, era costituito da una macchina da scrivere con tre rotori e un pannello di connessioni (la cui configurazione iniziale rappresentava la chiave), in grado di generare milioni di milioni di combinazioni. I rotori giravano (come un contachilometri) ogni volta che il mittente batteva un tasto, quindi l’algoritmo generava una lettera criptata sempre diversa, anche battendo la stessa lettera in chiaro. Il destinatario decrittava il messaggio configurando la propria macchina con la chiave iniziale con la quale era stato criptato. Da Enigma in poi, la sicurezza dei sistemi di crittografia è strettamente legata alla potenza dei computer. In linea di principio, qualunque sia l’algoritmo, il sistema può essere violato da un computer (se non altro per forza bruta), se questo dispone del tempo necessario. Questo tempo è tanto maggiore quanto più lunga è la chiave. Oggi si tende a trovare un compromesso tra sicurezza e usabilità dei sistemi di crittografia. Il sistema di Che Guevara è teoricamente inespugnabile (la chiave è lunga quanto il messaggio e sempre diversa), ma praticamente inusabile. Enigma è semplice da usare ma vulnerabile persino al più primitivo dei computer.

Figura 8 – La macchina Enigma Il compromesso oggi accettato è che la lunghezza della chiave sia tale che un computer contemporaneo impieghi, per violarlo, tempi paragonabili alla vita dell’universo (10-15 miliardi di anni). Questa strategia porta al continuo allungamento delle chiavi di crittografia man mano che aumenta la potenza dei computer. pag. 28 di 49

I sistemi a chiave simmetrica (o segreta) I sistemi a chiave simmetrica utilizzano la stessa chiave sia in fase di crittazione che di decrittazione (da cui il nome). La chiave consente quindi a chiunque ne venga in possesso decriptare il messaggio e deve pertanto essere mantenuta segreta (da cui il nome alternativo del sistema). Questi sistemi presuppongono perciò l’esistenza di un canale sicuro per l’interscambio della chiave tra mittente e destinatario. Lo schema in figura mostra il funzionamento tipico di un sistema a chiave simmetrica (o segreta). Per prima cosa, il mittente ed il destinatario concordano una chiave e se la scambiano tramite un canale sicuro (mediante un altro sistema di crittografia o, al limite, vedendosi di persona). Quindi il mittente utilizza l’algoritmo matematico e la chiave concordata per criptare il messaggio, che viene recapitato al destinatario tramite un canale non sicuro (ad esempio Internet). Il destinatario decripta quindi il messaggio usando lo stesso algoritmo e la stessa chiave del mittente. I sistemi a chiave simmetrica consentono di garantire riservatezza e integrità del messaggio, ma non l’autenticazione ed il non ripudio. Esempi di questi algoritmi sono il DES (Data Encryption Standard = Standard di crittazione dei dati), che utilizza una chiave lunga 56 bit, 3DES (Triplo DES), che applica il DES tre volte in successione, IDEA (International Data Encryption Algorithm = Algoritmo di crittazione dei dati internazionale), che utilizza una chiave lunga 128 bit, RC4, RC5 ed RC6, che utilizzano chiavi a lunghezza variabile, etc...

Figura 9 – Schema di funzionamento di un sistema a chiave simmetrica I sistemi a chiave asimmetrica (o pubblica) Nei sistemi a chiave asimmetrica, ideati negli anni ’70, ciascun utente utilizza una coppia di chiavi distinte, a lui/lei assegnate, che hanno scopi differenti. Una delle due chiavi, detta privata, viene conservata dall’utente in un luogo sicuro e deve categoricamente rimanere nota solo a lui/lei. L’altra chiave della coppia, detta pubblica, viene invece resa pubblica in associazione con l’identità del possessore. Le due chiavi sono legate da una relazione matematica, frutto dei progressi della Teoria dei Numeri, tale che è molto facile (per un computer) derivare la chiave pubblica da quella privata, ma è difficilissimo (quasi impossibile) derivare la chiave privata da quella pubblica. I sistemi a chiave asimmetrica non richiedono l’esistenza di un canale sicuro per l’interscambio della chiave, perché l’unica chiave che occorre scambiare è quella pubblica. Inoltre, oltre alla riservatezza ed integrità del messaggio, supportano anche l’autenticazione ed il non ripudio. Lo schema in figura mostra il funzionamento di un sistema a chiave asimmetrica (o pubblica) per ottenere la riservatezza ed integrità del messaggio. Per ottenere queste funzionalità, il solo destinatario deve generare (tramite l’algoritmo) una coppia di chiavi pubblica-privata, conservare la propria chiave privata in un luogo sicuro e pubblicare la chiave pubblica in associazione alla propria identità. Il mittente, che per queste funzioni non necessità di proprie chiavi, utilizza l’algoritmo matematico e la chiave pubblica del destinatario per criptare il messaggio, che viene recapitato al destinatario tramite un canale non sicuro (ad esempio Internet). Il destinatario decripta il messaggio usando la propria chiave privata. Chiunque può inviare un messaggio criptato al destinatario usando la chiave pubblica, ma solo quest’ultimo può decrittarlo con la sua chiave privata.

pag. 29 di 49

Figura 10 – Schema di funzionamento di un sistema a chiave asimmetrica L’algoritmo a chiave asimmetrica fu ideato nel 1977 da Ron Rivest, Adi Shamir e Leonard Adleman, tre matematici esperti di Teoria dei Numeri, dalle cui iniziali prende il nome di RSA. L’algoritmo RSA sfrutta le proprietà dei numeri primi per generare una coppia di numeri molto grandi (le chiavi pubblica e privata) legate da una relazione che consente di generare facilmente la chiave pubblica da quella privata, mentre l’operazione inversa richiede tempi lunghissimi. Il tempo che occorre per ricavare la chiave privata da quella pubblica (e quindi violare il sistema) dipende dalla lunghezza della chiave pubblica. Oggi, una lunghezza della chiave pubblica di 1024 bit viene generalmente considerata sufficiente per garantire la non violabilità del sistema (tempi di calcolo paragonabili alla vita dell’universo). RSA è normalmente incluso nei browser e in moltissimi altri programmi che trasmettono dati attraverso canali non sicuri.

Figura 11 – Esempio di chiave pubblica La firma digitale I sistemi a chiave asimmetrica supportano anche l’autenticazione ed il non ripudio del mittente. Per ottenere queste funzionalità, le chiavi pubbliche e private vengono usate in maniera duale rispetto al caso della riservatezza ed integrità del messaggio, con una procedura che è nota come firma digitale. Per ottenere queste funzionalità, il solo mittente deve generare (tramite l’algoritmo) una coppia di chiavi pubblicaprivata, conservare la propria chiave privata in un luogo sicuro e pubblicare la chiave pubblica in associazione alla propria identità. Il mittente utilizza quindi l’algoritmo matematico e la propria chiave privata per criptare il pag. 30 di 49

messaggio, che viene recapitato al destinatario tramite un canale non sicuro (ad esempio Internet). Il destinatario, che per queste funzioni non necessità di proprie chiavi, decripta il messaggio usando la chiave pubblica del mittente. Chiunque può verificare l’identità del mittente usando la sua chiave pubblica, ma solo quest’ultimo può firmarlo con la sua chiave privata. Nella pratica, il mittente cripta il messaggio sia con la sua chiave privata (per firmarlo) che con la chiave pubblica del destinatario (per garantire che solo lui possa leggerlo). Il destinatario, a sua volta, utilizza sia la propria chiave privata (per riprodurre il messaggio in chiaro) che la chiave pubblica del mittente (per accertarne l’autenticità). Il certificato digitale e la PKI (Public Key Infrastructure) I sistemi a chiave asimmetrica necessitano di un prerequisito fondamentale: la certificazione dell’accoppiamento tra chiave pubblica e identità dell’utente. In assenza di tale certificazione, un malintenzionato potrebbe pubblicare la sua chiave pubblica associandola con i dati anagrafici di un altro, con la conseguenza di poter leggere i messaggi inviati a questi e di poter addirittura firmare per suo conto, “rubandogli” di fatto l’identità. Per prevenire tali comportamenti illeciti, sono stati istituiti gli enti certificatori, organismi autorizzati ad emettere un documento che associa la chiave pubblica all’identità dell’utente, detto certificato digitale. L’utente si reca presso l’ente certificatore, dimostra la propria identità e chiede la generazione di una coppia di chiavi pubblica e privata. L’utente conserva la chiave privata in un luogo sicuro, mentre l’ente certificatore emette un certificato digitale. Il certificato digitale contiene i dati anagrafici dell’utente, un numero di serie, una data di scadenza, la chiave pubblica e la firma digitale dell’ente certificatore. L’ente certificatore svolge anche altre funzioni indispensabili: oltre all’emissione dei certificati digitali, è prevista la revoca e la sospensione, il rinnovo alla scadenza, la pubblicazione di black list (liste nere) di certificati associati a comportamenti illeciti, etc... L’insieme dei soggetti, delle procedure, dell’hardware, del software, dei materiali (ad esempio smart card), delle directory di certificati necessari a garantire il funzionamento di questo sistema è noto come PKI (Public Key Infrastructure = Infrastruttura a chiave pubblica). Sistemi di pagamento L’erogazione di servizi virtuali necessità di un sistema di pagamento su Internet. L’evoluzione di questi ha visto l’utilizzo di diversi mezzi, tra cui la carta di debito (Bancomat), la carta di credito ed il denaro elettronico. Per l’eCommerce è spesso utilizzato anche il pagamento alla consegna, che però non può essere considerato un sistema di pagamento on-line. Oggi sono utilizzati quasi esclusivamente due sistemi di pagamento on-line: • Carta di Credito: l’utente digita i dati identificativi della propria carta di credito (tipo, numero, intestazione, date di emissione e scadenza) attraverso un canale reso sicuro da un sistema di crittografia; l’erogatore del servizio verifica con l’istituto emittente la copertura della carta ed accetta il pagamento; • denaro elettronico (electronic cash): è uno strumento che consente di pagare attraverso una convenzione con uno o più Istituti di Credito, immettendo i necessari dati identificativi attraverso un canale reso sicuro da un sistema di crittografia; è un sistema che ha grande diffusione negli Stati Uniti, ma scarsissima in Europa. I sistemi di pagamento on-line sono resi possibili dall’utilizzo di sistemi di crittografia per la trasmissione sicura dei dati identificativi necessari. In assenza di tali sistemi un utente malintenzionato potrebbe impossessarsi dei dati identificativi del sistema di pagamento di un utente (ad esempio gli estremi della carta credito) ed utilizzarli per compiere acquisti a sue spese. Il sistema di crittografia di gran lunga più utilizzato è SSL (Secure Sockets Layer = Strato di prese sicure). SSL è un protocollo che gestisce la sicurezza nella trasmissione di un messaggio su Internet, garantendo riservatezza, integrità ed autenticazione. E’ basato sull’algoritmo RSA e include l’utilizzo di certificati digitali. SSL è incluso nei browser ed in molti dei programmi utilizzati su Internet. Quando il browser accede ad una pagina che supporta SSL, il protocollo di presentazione cambia da HTTP ad HTTPS (Hypertext Transfer Protocol over Secure Socket Layer, ossia HTTP su SSL). La transizione è segnalata da diversi messaggi grafici (su Microsoft Internet Explorer): • compare un avviso di protezione che recita: “Si stanno per visualizzare delle pagine su una connessione protetta. Le informazioni scambiate con questo sito non possono essere visualizzate da altri utenti del Web”; • compare un catenaccio chiuso nella barra di stato del browser (la barra orizzont. in basso); • il primo elemento dell’URL cambia da http ad https. Il protocollo HTTPS decripta le pagine a cui si accede e cripta i messaggi inviati, appoggiandosi al protocollo SSL. Tramite HTTPS gli estremi del pagamento viaggiano criptati, garantendo la sicurezza degli utenti. 5

L’integrazione delle applicazioni

Le applicazioni trattate nel capitolo precedente gestiscono singoli aspetti del bisogno informativo di un’azienda. Spesso queste applicazioni suddividono l’informazione aziendale in compartimenti stagni, con fenomeni di ridondanza, sovrapposizione e incongruenza dei dati, nonché di difficoltà a coglierne gli aspetti di sintesi. pag. 31 di 49

Per superare i limiti di questa frammentazione, esistono numerose tecniche ed applicazioni di integrazione, suddivise in orizzontali e verticali in base alle finalità dell’integrazione stessa. 5.1 L’integrazione orizzontale Le applicazioni trattate nel capitolo precedente vengono definite “verticali”, in quanto mirate a svolgere compiti specialistici o a risolvere specifiche problematiche (ad esclusioni di alcuni casi, come il Workgroup, la cui natura è più di supporto orizzontale che di specializzazione verticale). Le applicazioni verticali gestiscono le informazioni aziendali con punti di vista, approcci e standard diversi, legati alle specifiche esigenze funzionali dell’applicazione. Molti dati sono comuni a più applicazioni verticali, ma sono gestiti in maniera differente e, comunque, la ridondanza porta inevitabilmente ad incongruenze (lo stesso dato in applicazioni diverse assume valori differenti). Inoltre, a causa del sovrapporsi storico di acquisizioni di applicativi in periodi successivi, le applicazioni verticali rappresentano di solito una stratificazione di tecnologie molto diverse e spesso incompatibili. Per superare i limiti della frammentazione di standard e tecnologie tra le applicazioni verticali, si sono sviluppate diverse tecniche di integrazione orizzontale. EAI (Enterprise Application Integration) L’EAI (Enterprise Application Integration = Integrazione di applicazioni d’impresa) è l’insieme dei progetti, metodologie e strumenti per collegare e coordinare le applicazioni di un azienda ed i loro dati in modo da ottenerne un sistema integrato, consolidato e moderno. L’EAI prende in carico le applicazioni esistenti, comprese quelle che sono state “ereditate” da periodi aziendali e tecnologici precedenti (dette applicazioni legacy = eredità, retaggio) e le relative banche-dati e, grazie a metodologie e strumenti, le fa comunicare tra di loro e con le interfacce moderne (Web) superando le barriere dovute ai diversi approcci, formati e standard tecnologici. In questo modo, l’azienda può continuare ad usare applicazioni verticali su piattaforme tecnologiche differenti (ad esempio, Mainframe, Client/Server e Web), pur non rinunziando ad una visione integrata e moderna del proprio sistema informativo. L’EAI ha avuto un grande sviluppo dopo la diffusione del Web, perché le aziende, che avevano fatto grossi investimenti su applicazioni ormai legacy, si sono trovate di fronte alla necessità di aprire i loro dati e le loro funzioni al Web (e-Commerce, Extranet, servizi virtuali, etc...). L’EAI permette di evitare o rimandare gli enormi investimenti che sono necessari per sostituire queste applicazioni. L’EAI fa uso di numerose tecnologie per raggiungere il suo scopo. Il software utilizzato dai sistemi EAI prende generalmente il nome di middleware (letteralmente, roba di mezzo) ed è basato su servizi di messaging (scambio di messaggi) tra applicazioni e banche-dati. XML (Extensible Mark-up Language) XML (Extensible Mark-up Language = Linguaggio di contrassegno estensibile) è uno strumento per l’integrazione dei dati, che consente di creare formati standard e di scambiarli tra applicazioni attraverso sistemi Web. XML, come HTML, è un linguaggio di Mark-up, basato quindi su coppie di contrassegni che contengono istruzioni (tag) che specificano le informazioni. Ma mentre nel linguaggio HTML le istruzioni sono predefinite e servono a specificare come devono essere mostrate le informazioni contenute nel tag (layout), in XML le istruzioni vengono create dall’utente (da cui il nome estensibile) e servono a descrivere i dati contenuti nel tag. Dato che le istruzioni sono definite dall’utente, occorre associare al file XML un altro documento che descrive il significato di queste istruzioni, denominato DTD (Document Type Definition = definizione del tipo di documento). XML può essere considerato un’estensione di HTML ed HTML un caso particolare di XML, dove il DTD descrive le specifiche di layout associate ad ogni tag. ERP (Enterprise Resource Planning) Gli ERP (Enterprise Resource Planning = Pianificazione delle risorse d’impresa) sono macro-applicazioni composte da numerosi moduli, che sono in grado di supportare le attività più importanti di un’azienda: pianificazione, approvvigionamenti e fornitori, magazzino, ordini, fatturazione, assistenza al cliente, contabilità, personale, etc... Gli ERP risolvono alla radice il problema dell’integrazione orizzontale. Infatti, la base-dati è unica per tutti i moduli e quindi ciascun dato viene memorizzato una volta sola in un unico formato. Gli ERP consentono un approccio di crescita modulare. L’azienda può avviare un sistema ERP ridotto, con i moduli ritenuti più urgenti ed aggiungere nel tempo altri moduli che si integrano automaticamente con quelli esistenti. Inoltre, negli ERP attuali, la base-dati è i moduli sono progettati per l’integrazione con il Web. La realizzazione di un sistema ERP richiede generalmente un investimento molto grosso da parte dell’azienda, soprattutto per la fase di personalizzazione dei moduli, che essendo progettati per la generalità delle aziende, richiedono una lunga e complessa fase di adattamento in base all’analisi dei processi aziendali, con l’utilizzo di costose risorse specializzate. Occorre inoltre addestrare adeguatamente il personale al loro utilizzo. Sono perciò in genere utilizzati dalle grosse aziende, come le multinazionali (anche se il trend è verso il downsizing = ridimensionamento). pag. 32 di 49

Il sistema ERP più famoso e diffuso è il tedesco SAP. Data la crescente diffusione dei sistemi ERP, molti altri produttori di software (tra cui Oracle, PeopleSoft, Baan, etc...) hanno proposto sistemi analoghi. 5.2 L’integrazione verticale Oltre all’esigenza di disporre di un sistema informativo integrato, consolidato e moderno, l’azienda, ed in particolare il suo management, ha la necessità di monitorare continuamente l’andamento del business aziendale, ricavando dal sistema informativo le opportune informazioni di sintesi atte a fornire il quadro di insieme. Per ricavare queste informazioni di sintesi dalle grandi moli di dati gestiti dal sistema informativo occorrono strumenti appositi, in grado di estrarre, sintetizzare, riepilogare, illustrare, ma anche scovare le informazioni nascoste tra i dati. L’integrazione verticale è l’insieme degli strumenti software e di riorganizzazione dei dati che permettono di estrarre le informazioni dai dati e di fornirle quando e dove servono e nel giusto formato. Dati e informazioni I dati sono fatti grezzi che descrivono un particolare fenomeno (ad esempio, l’ordine di un prodotto). Le informazioni sono dati che assumono un particolare significato in un dato contesto, spesso grazie al fatto che risultano dalla elaborazione e sintesi di grosse moli di dati (ad esempio, l’andamento degli ordini in un dato periodo). Le informazioni raccontano di andamenti, tendenze, fenomeni che non appaiono guardando i dati. Le informazioni hanno tre “dimensioni”: • tempo: l’informazione deve essere accessibile quando serve e deve riguardare il giusto periodo di tempo; • luogo: l’informazione deve essere accessibile dove serve, dovunque l’utente sia; • formato: l’informaz. deve essere accessibile nel formato corretto (testo, audio, video, etc...). MIS (Management Information System) I MIS (Management Information System = Sistema di informazione della direzione) sono sistemi hardware e software dedicati a produrre informazioni di sintesi per il management aziendale, ricavandole dai dati presenti nei database aziendali e/o in banche dati esterne all’azienda. Nell’accezione odierna, i MIS comprendono spesso anche gli applicativi di Contabilità e Controllo di Gestione, gli EIS (Executive Information System = Sistema di informazione dell’alta direzione), che sono orientati ad estrarre dai database aziendali informazioni rilevanti per l’alta direzione, i DSS, il Project Management (strumenti che supportano la direzione dei progetti) e gli IRS (Information Retrieval System). DSS (Decision Support System) I DSS (Decision Support System = Sistema di supporto alle decisioni) sono sistemi interattivi che supportano il management aziendale nel prendere decisioni, soprattutto in situazioni complesse o di difficile interpretazione. I DSS analizzano i dati presenti nei data-base aziendali e, sulla base di questi, permettono di costruire dei modelli della realtà con i quali il manager può interagire mediante interfacce grafiche amichevoli, per effettuare delle simulazioni (analisi what-if = cosa-se). Tipicamente, i dati e le informazioni che un DSS analizza e modella sono, ad esempio: • dati delle vendite confrontate su settimane successive; • dati dei ricavi presunti per vendite di nuovi prodotti; • conseguenze di differenti decisioni alternative, sulla base dell’esperienza passata nel contesto assunto. Un DSS può includere un Sistema Esperto (o sistema basato sulla conoscenza), cioè un software tipico dell’Intelligenza Artificiale, in grado di eseguire ragionamenti inferenziali (cioè non basati su algoritmi, ma più simili al modo di ragionare del cervello umano), basandosi su set di regole preimpostate, che nei sistemi più sofisticati possono anche evolvere sulla base dell’esperienza maturata dal Sistema Esperto stesso. Cruscotti Sono strumenti di tipo EIS (Executive Information System = Sistema di informazione dell’alta direzione), orientati al top management aziendale, che effettuano un’estrema sintesi dell’andamento dell’azienda, visualizzandolo graficamente mediante pochi parametri. Il nome deriva dalla somiglianza (come aspetto e come principio) degli strumenti di questo tipo ad un cruscotto automobilistico, che, con pochi indicatori, permette il monitoraggio complessivo dell’autovettura. Datawarehouse I Datawarehouse (Magazzino di dati) sono immense banche-dati centralizzate che contengono le serie storiche dei dati aziendali, organizzati secondo logiche completamente diverse da quelle dei database di produzione. Le applicazioni verticali, e soprattutto le loro basi-dati, hanno un’impostazione che non è la più adatta a fornire informazioni di sintesi. Le basi-dati delle applicazioni verticali, infatti, sono strutturate in maniera da agevolare il compito delle transazioni, che in genere prendono in considerazione un gruppetto di dati relativi ad una singola occorrenza (un ordine, una fattura, un versamento in conto corrente, etc...), e lo inseriscono o modificano per svolgere la funzione assegnata (inserire un ordine, registrare una fattura, accreditare il versamento in conto corrente, etc...). Le basi-dati delle applicazioni verticali sono quindi organizzate per occorrenze. pag. 33 di 49

Il manager che vuole esaminare l’andamento del business aziendale (andamento degli ordini, della fatturazione, dei conti correnti) non è interessato alle singole occorrenze, ma al comportamento complessivo delle transazioni rispetto ad un parametro di riferimento (il periodo temporale, il settore aziendale, la regione geografica, etc...), che viene chiamato dimensione. Per consentire tali analisi, occorre riorganizzare i dati, astraendo dalle occorrenze e “ammassandoli” per dimensione. Occorrono quindi basi-dati specializzate per questo compito: sono i Datawarehouse. In un Datawarehouse vengono alimentati periodicamente dai DB aziendali, estraendo le informazioni dalle singole occorrenze e riorganizzandole secondo le dimensioni previste dal progetto di quel particolare Datwarehouse. Dimensioni tipiche sono: • il periodo temporale: la settimana, il mese, l’anno; • la categoria di prodotto: per un frigorifero potrebbe essere la classe di volume o la classe energetica; • l’area di vendita: nazione, regione, provincia; • la tipologia di clienti: ad esempio, privati, professionisti, aziende, etc... Ciascuna dimensione, inoltre, può essere organizzata su più livelli. Ad esempio la dimensione temporale potrebbe prevedere il livello annuale, mensile e settimanale. Per la loro organizzazione, i Datawarehouse sono chiamati anche banche-dati multidimensionali. OLAP (On-Line Analytical Processing) Gli OLAP (On-Line Analytical Processing = Elaborazione analitica in linea) sono strumenti software che eseguono analisi multidimensionali sui dati contenuti nei Datawarehouse. Essi sfruttano l’organizzazione multidimensionale dei Datawarehouse per presentare le informazioni secondo molteplici punti di vista, incrociando tra loro dimensioni. Ad esempio, l’analisi OLAP può evidenziare tutti i prodotti venduti in una regione in un dato periodo di tempo. L’analisi multidimensionale può essere pensata come la manipolazione di un ipercubo n-dimensionale, dove n è il numero di dimensioni supportate dal Datawarehouse. Le operazioni di manipolazione comprendono di solito: •

sezionamento dell’ipercubo con un iperpiano (un “piano” avente n-1 dimensioni) per fissare una dimensione ad un certo valore ed analizzare il fenomeno al variare delle altre (ad esempio, l’andamento delle vendite in una certa regione al variare del tempo e del tipo di prodotto);



rotazione dell’ipercubo, per scambiare la dimensione fissata ad un certo valore con un’altra (ad esempio, l’andamento delle vendite in un certo mese nelle varie regioni al variare del tipo di prodotto);



delimitazione dell’ipercubo con un ipercubo più piccolo, per limitare il range delle dimensioni ad una casistica più ridotta (ad esempio, l’andamento delle vendite in alcune regioni, in certi periodo di tempo per certi prodotti);



drill-down (trapanazione verso il basso): consiste nel suddividere una dimensione in sottodimensioni per approfondire l’analisi di un fenomeno che al livello superiore non appare risolto (ad es., passaggio dall’analisi per regione a quella per provincia per individuare l’area precisa dove le vendite hanno subito un andamento negativo).

Figura 12 – Esempi di analisi multidimensionale OLAP Gli strumenti OLAP offrono interfacce grafiche amichevoli per effettuare le operazioni citate, consentendone l’uso al management aziendale. Il temine OLAP si contrappone al termine OLTP (On-Line Transaction Processing = Elaborazione transazionale in linea), che identifica gli strumenti software che supportano elaborazioni orientate alle transazioni. pag. 34 di 49

Data Mining Il Data Mining (estrazione di dati) è una tecnica, supportata da appositi strumenti software, che consente di rovistare sistematicamente tra i dati per individuare informazioni nascoste. Il principio alla base del Data Mining è che nella massa di dati detenuti dai database aziendali siano nascosti legami, associazioni, configurazioni, tendenze e altre regole che consentono di dedurre informazioni su fenomeni che non sono apparenti nei dati stessi. Esempi di regole ricercate dai sistemi di Data Mining sono: • Configurazioni in cui un evento è sistematicamente connesso ad un altro evento (Associazione); • Configurazioni in cui un evento conduce sistematicamente ad un altro evento successivo (Path Analysis = Analisi di percorso o di sequenza); • Configurazioni di tipo nuovo (Classificazione); • Raggruppamenti sistematici di fatti (Clustering = Raggruppamenti) • Configurazioni di dati che portano a previsioni ragionevolmente affidabili sui comportamenti futuri (Previsioni). L’esempio classico di analisi effettuata con uno strumento di Data Mining è la Basket Analysis (Analisi del carrello della spesa). Questa analisi permette di scovare relazioni non apparenti tra gli acquisti di prodotti effettuati dai clienti di un supermercato. La scoperta che, ad esempio, i clienti che acquistano un dato prodotto ne acquistano sempre un altro, può aiutare la direzione del supermercato a disporre più razionalmente i due beni sui banconi o ad associarli in un’offerta speciale. 6 Le basi di dati Una componente fondamentale dei Sistemi Informativi Aziendali sono i dati. Le applicazioni possono esser pensate come l’insieme delle funzionalità e dei dati sui quali queste funzionalità agiscono. Le applicazioni si appoggiano perciò su strutture che immagazzinano i dati, chiamate basi di dati. Le basi di dati o banche-dati sono una raccolta strutturata dei dati che servono alle applicazioni, cioè una raccolta organizzata in modo che possa essere facilmente acceduta, gestita e aggiornata. La strutturazione dei dati consiste nella loro catalogazione ed etichettatura e nella memorizzazione secondo formati standard. Con l’evoluzione dell’informatica, le basi di dati sono diventate sempre più sofisticate, associando a strutturazioni sempre più complesse anche capacità autonome di lettura, scrittura, controllo dei dati, ricerca, produzione di resoconti, etc... Questa evoluzione ha portato al diffondersi di software specializzati nella gestione di basi di dati, che si collocano in posizione intermedia tra il software di sistema e quello applicativo, detti Database (base di dati). 6.1

File

Le basi di dati più semplici sono costituite da un insieme di file che vengono gestiti ed integrati dai programmi applicativi.

Figura 13 – La struttura di un file File E’ un insieme di registrazioni omogenee (cioè tutte dello stesso tipo) di dati, detti record. Il termine deriva dal nome inglese del cassetto dello schedario, in genere un cassetto lungo e scorrevole che contiene numerose schede cartacee dello stesso tipo, ciascuna riportante i dati di un’entità (ad esempio un articolo). La strutturazione nei file consiste nell’organizzazione delle singole registrazioni (record), che è la stessa per ciascuno, permettendo di associare ad uno spazio di memoria sempre lo stesso significato (campo). Record Il record (registrazione) è la singola registrazione di un file, corrispondente ad una scheda dell’archivio cartaceo (ad esempio, un cliente). Il record costituisce la singola occorrenza di un file ed è suddiviso in aree di memoria che contengono le singole informazioni, dette campi.

pag. 35 di 49

Campo Il campo è la più piccola componente dei dati ed è costituito da un insieme predefinito di Byte in un area di memoria (ad esempio il cognome, la data di nascita, l’importo della fattura, etc...). Al campo sono in genere associate alcune caratteristiche: • una posizione all’interno del record, espressa come numero del Byte dove il campo ha inizio; • una lunghezza espressa in Byte; • un formato, che prescrive la tipologia di dati che può contenere (ad esempio, dati alfabetici per un cognome, numerici per un importo); • talvolta un dominio, cioè un intervallo o una lista di valori ammissibili (ad esempio, un valore minimo e massimo per un importo, “M” o “F” per il campo sesso, etc...). Ciascun record di un file è suddiviso in un certo numero di campi, sempre nello stesso modo in tutto il file. Quindi un dato campo ha sempre le stesse caratteristiche in tutti i record di un file. Questa strutturazione rende i file facilmente gestibili dai computer. Chiave primaria Una chiave primaria è un campo o un insieme di campi che contengono l’insieme minimo di dati necessari ad identificare univocamente il record (ad esempio, per un record cliente la chiave potrebbe essere il codice fiscale, per una fattura l’insieme del campo anno e del campo numero fattura). La chiave primaria deve essere obbligatoriamente valorizzata in tutti i record. La chiave primaria è uno strumento di accesso diretto ai record del file. La sua unicità, infatti, permette di leggere direttamente il record corrispondente senza bisogno di scorrere tutto il file. Chiave secondaria Alcuni campi o gruppi di campi possono costituire un mezzo di accesso diretto ai record di un file alternativo alla chiave primaria. Sono i campi (o gruppi) che permettono anch’essi di individuare univocamente il record o, comunque, di restringere la ricerca a pochissimi record. Questi campi (o gruppi) prendono il nome di chiave secondaria. Ci possono essere più chiavi secondarie in un record e possono essere univoche o non univoche (cioè ci sono più record, in genere pochi, che condividono quella chiave secondaria). Inoltre la chiave secondaria non deve necessariamente essere valorizzata in tutti i record. Un esempio di chiave secondaria univoca è il codice fiscale in un record cliente in cui la chiave primaria è il codice cliente assegnato dall’azienda. Possono esserci clienti di cui non è noto il codice fiscale (la chiave secondaria non è valorizzata), ma in tutti i record il codice cliente deve essere valorizzato. Un esempio di chiave secondaria non univoca è il reparto di appartenenza di un dipendente, che è comune a un gruppo di dipendenti. Basi di dati costituite da file piatti Le basi di dati più semplici e primitive sono costituite da un insieme, anche molto grande, di files contenenti i dati relativi ad una particolare entità rilevante per l’applicazione: l’anagrafica del cliente, le caratteristiche di un prodotto, i dati di un ordine, quelli di una fattura, etc… In queste basi di dati, il file è in realtà un’allocazione di memoria di massa che il Sistema Operativo mette a disposizione e gestisce come un corpo unico. La descrizione della struttura interna del file, cioè la sua suddivisione in record e campi e le caratteristiche dei singoli campi (posizione, lunghezza, formato, dominio), è contenuta all’interno dei programmi applicativi. Inoltre, anche le relazioni che esistono tra file differenti (per esempio, la relazione che dice che una data fattura è correlata ad un dato prodotto e ad un dato cliente) sono gestite dai programmi applicativi, i quali costruiscono i collegamenti basandosi sul valore dei campi (ad esempio, nel record della fattura ci sarà un campo prodotto ed uno cliente che correlano la fattura al relativo prodotto e cliente). Questa organizzazione è denominata a file piatti, perché i file sono costituiti dalle due dimensioni record e campo, ma mancano della terza dimensione, quella del collegamento tra file, che deve essere creata dai programmi in fase esecutiva. L’organizzazione a file piatti, pur potendo funzionare egregiamente, ha diversi svantaggi. E’ a carico del programma applicativo, e quindi del programmatore, la corretta suddivisione dei file in record e di questi in campi, nonché il rispetto delle caratteristiche del singolo campo. Ciò non costituisce solo un aggravio del carico di lavoro dei programmatori, ma favorisce la possibilità di errori, specialmente sotto forma di incongruenze tra programmi scritti da programmatori diversi che accedono allo stesso file. Per limitare la possibilità di questi errori, i programmatori hanno sviluppato vari sistemi per mettere a fattor comune le strutture dei file, con meccanismi di incorporo automatico nei programmi, senza tuttavia risolvere completamente il problema. Un’altra tipologia di errori possibili da parte dei programmatori è il non rispetto del formato dei campi, che può portare a registrare lettere in campi numerici, valori non previsti dal dominio, date inesistenti (ad esempio 30 febbraio), etc... Ma la difficoltà più grande incontrata dai programmatori che utilizzano file piatti è la gestione a programma della corretta correlazione tra file diversi e della conseguente congruenza dei dati. Comportamenti anche solo leggermente diversi tra programmi diversi possono portare facilmente a disallineamenti, ridondanze e incongruenze. Infine, l’inclusione della struttura dei dati all’interno dei programmi fa sì che una modifica alla prima comporti la corrispondente modifica di tutti i programmi che vi accedono. pag. 36 di 49

6.2 Database I Database (Basi di dati) sono sistemi composti da una raccolta organizzata di file e da un DBMS (Data Base Management System = Sistema di gestione della base dati), un software in grado di gestire la raccolta di file e permetterne l’accesso agli utenti. I Database sono stati ideati per superare i problemi causati dalle strutture a file piatti. Il principio alla base dei Database è quello di incorporare sia la struttura interna, caratteristiche dei campi compresi, che le relazioni tra file in una struttura unica, associata ad un motore software con capacità autonome di controllo e di elaborazione dei dati. Il Database si fa carico della struttura interna dei file, delle caratteristiche dei campi e dei relativi controlli, della lettura e scrittura dei file, della ricerca dei dati e della generazione di report (rendiconti) anche complessi. Il DB comunica con i programmi applicativi e gli utenti con un’interfaccia che nasconde completamente i particolari della struttura, sgravando i programmatori dal compito di gestirla, limitando drasticamente la possibilità di errori e consentendo anche l’accesso diretto agli utenti finali. Struttura logica e fisica I Database conseguono la separazione tra accesso ai dati e dettagli della loro organizzazione tramite la separazione tra struttura logica e struttura fisica. I programmi applicativi accedono a file logici, strutturati secondo le esigenze dell’applicazione, quindi privi delle complessità generate dalla necessità di memorizzarli fisicamente, ma orientati al punto di vista applicativo. I dati vengono in realtà mappati sulla memoria di massa come tradizionali file fisici, ma il DBMS nasconde tale struttura fisica, traducendola in quella logica. Il DBMS può quindi considerarsi un’interfaccia tra il mondo applicativo e quello tecnico nel settore dei dati.

Figura 14 – Confronto tra l’organizzazione dei file piatti e dei Database Entità e relazioni La struttura logica dei dati, o modello logico, è organizzata per rispecchiare il punto di vista applicativo, il quale tende a descrivere la realtà che vuole informatizzare in termini di entità e relazioni. Le entità sono i soggetti e gli oggetti che popolano il mondo che si sta rappresentando nell’applicazione: clienti, prodotti, ordini, fatture sono esempi di entità. Le relazioni sono i collegamenti funzionali (espressi in genere sotto forma di predicati) tra le entità: cliente emette ordine, ordine comprende prodotti, fattura viene emessa a cliente per ordine sono esempi di relazioni. Le entità rappresentano l’evoluzione in senso logico dei file fisici, mentre le relazioni rappresentano la “terza dimensione” che manca nei file piatti. Occorrenze Nel modello logico, le entità, e in alcuni Database, le relazioni si ripetono in molteplici occorrenze, che rappresentano le singole valorizzazioni concrete: il cliente di codice xxxx, l’ordine n. yyy, la fattura n. zz del 2004. Le occorrenze rappresentano l’evoluzione in senso logico dei record dei file fisici. Attributi Nel modello logico, le entità e, in alcuni Database, le relazioni sono composte da attributi, che rappresentano i dati associati ad entità e relazioni. Nei Database gli attributi incorporano le caratteristiche fisiche (lunghezza, formato). Nei Database più avanzati, gli attributi incorporano anche le caratteristiche formali (dominio di valori, correttezza formale di una data) o addirittura i comportamenti (ad esempio, la data incorpora il calcolo dei giorni lavorativi dall’inizio dell’anno). Gli attributi rappresentano l’evoluzione in senso logico dei campi dei file fisici. Attributi identificativi Un insieme di uno o più attributi che definiscono in maniera univoca l’occorrenza viene chiamato attributo (o insieme) identificativo. Gli attributi identificativi rappresentano l’evoluzione in senso logico delle chiavi dei file fisici. pag. 37 di 49

Proprietà dei Database Grazie a questa separazione tra modello logico e fisico e alle capacità del DBMS, i Database garantiscono: • indipendenza dei dati dai programmi: a differenza dei file piatti, nei Database la struttura dei dati può essere modificata senza la necessità di modificare di conseguenza tutti i programmi (ma solo quelli che accedono ai dati variati); • controllo della ridondanza dei dati: solo le ridondanze previste dal progettista del dello specifico Database vengono consentite; • integrità dei dati: il Database previene all’origine le incongruenze dei dati; • sicurezza dei dati: il Database controlla il rispetto degli accessi ai dati secondo le abilitazioni previste dall’amministratore del sistema. Interrogazione dei Database L’interfaccia gestita da un Database astrae così tanto dalla struttura fisica dei dati che non solo i programmi applicativi, ma anche gli utenti con un minimo di addestramento possono accedervi direttamente. Gli utenti accedono al Database tramite linguaggi di interrogazione semplificati. A dispetto del nome, questi linguaggi permettono non solo di effettuare ricerche molto complesse e di leggere tutti i dati, ma anche di modificarli (se si ha l’autorizzazione). Le due categorie di linguaggi più diffuse sono: • SQL (Structured Query Language = Linguaggio di interrogazione strutturato): è un linguaggio interattivo che consente di ricercare, inserire, modificare i dati; • QbE (Query by Example = Interrogazione per esempi): è un linguaggio più intuitivo e semplice da utilizzare, ma meno potente, che formula le richieste tramite esempi; è stato ideato per diffonderne l’utilizzo presso gli utenti finali. Database gerarchici I Database gerarchici sono i primi tipi di Database apparsi, quindi i più semplici e primitivi, oggi utilizzati solo nelle applicazioni legacy. Nel modello gerarchico le entità sono dei file con chiave, organizzati secondo una struttura gerarchica ad albero. L’albero è costituito da un’entità radice (detta padre) dalla quale si ramificano altre entità figlie, dalle quali a loro volta si ramificano altre entità figlie, etc... Esiste quindi un solo tipo di relazione, quella padre-figlio (una relazione 1-m, cioè una a molti) che è priva di attributi.

Figura 15 – Esempio di Database gerarchico Il modello gerarchico è rigido e limitato, perché implementa un solo tipo di relazione, del genere più semplice (1m), mentre per descrivere la maggior parte delle realtà è in genere necessario prendere in considerazione relazioni più complesse, come le relazioni m-n (cioè relazioni uno a molti bidirezionali) o le relazioni tra più di due entità (ad esempio cliente emette un ordine che contiene più prodotti). Inoltre i database gerarchici in genere non incorporano controlli formali negli attributi, lasciando l’onere di assicurarli ai programmi applicativi. Database relazionali I Database relazionali supportano un modello di relazioni definito dall’analista e quindi in grado di rappresentare virtualmente qualunque realtà, per quanto complessa. I Database relazionali sono i Database di gran lunga più utilizzati oggi. La caratteristica distintiva dei Database relazionali è quindi la possibilità data all’analista di progettare e definire un Modello Entità-Relazioni (noto anche come ER o ERM = Entity Relationship Model). Il Modello Entità-Relazioni è un elaborato grafico che descrive entità, relazioni, le loro strutture e i loro rapporti. Le entità sono rappresentate graficamente da rettangoli e le relazioni da rombi. L’analista può definire tutte le relazioni che ritiene utile per descrivere la realtà che sta informatizzando. Le relazioni possono coinvolgere due o più entità, possono essere di tipo 1-1 (uno-a-uno) 1-m (uno-a-molti) o m-n (molti-a-molti). Nelle relazioni 1-1, ad ogni occorrenza della prima entità corrisponde una ed una sola occorrenza della seconda. Ad esempio, Impiegato Ha Matricola è una relazione di tipo 1-1, perché ad ogni impiegato corrisponde un sola matricola e viceversa. Nelle relazioni 1-m, ad un’occorrenza della prima entità possono corrispondere zero, una o più occorrenze della seconda, mentre ad una della seconda può corrispondere solo una della prima. Ad esempio, Categoria Comprende pag. 38 di 49

Articolo è una relazione di tipo 1-m, perché una categoria contiene m articoli ed un articolo appartiene ad una sola categoria. Nelle relazioni m-n ad una occorrenza della prima entità possono corrispondere zero, una o più occorrenze della seconda e ad un occorrenza della seconda possono corrispondere zero, una o più occorrenze della prima. Ad esempio, Cliente Ordina Articolo è una relazione di tipo m-n, perché un cliente può acquistare n articoli ed un articolo può essere acquistato da m clienti diversi.

Figura 16 – Relazioni 1:1, 1:m ed m:n

Matricola

Figura 17 – Esempi di relazioni 1:1, 1:m ed m:n Tabelle Nel modello relazionale entità e relazioni sono rappresentate come tabelle. In ciascuna tabella le righe rappresentano le occorrenze di entità e relazioni, mentre le colonne rappresentano gli attributi. Ciascuna cella contiene il valore di un dato attributo per una data occorrenza. Chiave esterna In una tabella l’attributo identificativo della tabella rappresenta la chiave primaria dell’entità o relazione. Per rappresentare le relazioni semplici tra due entità (quelle di tipo 1-m, come Categoria Comprende Articolo), la chiave primaria dell’entità più generale viene riportata come attributo dell’entità più specifica, con il nome di chiave esterna. Nell’esempio assunto, l’entità Articolo avrà tra i suoi attributi, come chiave esterna, la categoria dell’articolo, che è chiave primaria dell’entità Categoria. Tabella Articolo

Tabella Categoria

Figura 18 – Rappresentazione di una relazione 1:m

pag. 39 di 49

Per rappresentare le relazioni più complesse tra due entità (quelle di tipo m-n, che hanno a loro volta occorrenze, come Cliente Ordina Articolo), le chiavi primarie delle due entità relazionate, insieme ad eventuali altri attributi necessari a identificare univocamente l’occorrenza della relazione, si concatenano a formare la chiave primaria della relazione. Nell’esempio assunto, nel caso in cui il cliente possa ordinare l’articolo una volta sola (ad esempio, biglietto aereo per un dato volo), la chiave primaria della relazione Ordina sarà data dalla concatenazione delle chiavi primarie delle due entità Cliente e Articolo. Nel caso in cui il cliente possa ordinare l’articolo più volte (ad esempio, bullone), nella chiave primaria della relazione Ordina, oltre alle chiavi primarie delle due entità Cliente e Articolo, sarà necessario concatenare un attributo che identifica univocamente l’ordine (ad esempio data o numero o entrambi). Tabella Cliente

Tabella Articolo

Figura 19 – Rappresentazione di una relazione m:n Database ad oggetti I Database ad oggetti costituiscono un’ulteriore progresso nell’evoluzione dei Database. In questi Database entità e relazioni, definibili dall’analista, sono degli oggetti. Il modello a oggetti è un paradigma di programmazione che cerca di rappresentare la realtà da informatizzare in modo più naturale, descrivendola come un insieme di oggetti, che si relazionano tra loro. Un oggetto è un modulo software avente le seguenti caratteristiche: • è una scatola nera (black box), che comunica con l’esterno attraverso un’interfaccia; • è dotato di uno stato, che ha un valore iniziale e può essere modificato durante l’elaborazione tramite l’interfaccia; • è dotato di comportamenti, detti metodi, che possono essere invocati (attivati), tramite l’interfaccia; • interagisce con gli altri oggetti che compongono il software tramite lo scambio di messaggi, che contengono anche dati. Nei Database ad oggetti, le entità e le relazioni sono oggetti con un loro stato iniziale e modificabile (grossolanamente corrispondente ai dati) e diversi comportamenti associati. Ad esempio, una data può essere associata ad un metodo che calcola i giorni lavorativi dall’inizio dell’anno (utile in ambito bancario), oppure l’articolo può essere associato ad un metodo che gestisce il suo prelievo dal magazzino, etc…

pag. 40 di 49

Figura 20 – Confronto tra modello relazionale e modello ad oggetti I Database ad oggetti non hanno avuto la diffusione che ci si poteva aspettare dal parallelo grande sviluppo dei linguaggi di programmazione ad oggetti. Le motivazioni sono diverse, dalla grande affidabilità e dalla diffusa conoscenza dei Database relazionali, alla complessità di utilizzo dei Database ad oggetti. Oggi, comunque, tutti i produttori di Database relazionali hanno incorporato nei loro prodotti alcune delle caratteristiche dei Database ad oggetti, come la gestione di contenuti multimediali, l’estensione dei controlli formali a veri e propri comportamenti degli attributi, etc… 7 Pianificazione e realizzazione di un sistema informativo Tutti i componenti illustrati fino ad ora (Hardware, software , reti, etc...) costituiscono la materia prima o i semilavorati di un sistema informativo. Perché esso svolga i compiti per i quali è stato ideato occorre il contributo della componente umana, che è costituita da due elementi strettamente connessi: persone e processi. Le persone contribuiscono al Sistema Informativo in termini di know-how (competenza) sulle tecnologie, sui processi aziendali supportati e sulla progettazione del Sistema Informativo. I processi guidano le persone in possesso del necessario know-how nell’utilizzarlo al meglio e con sistematicità. Le persone ed i loro ruoli Nel ciclo di vita di un Sistema Informativo (Fattibilità tecnico-economica, Analisi, Progettazione, Realizzazione, Collaudo, Manutenzione e Utilizzo, vedi Cap. 1) le persone coinvolte svolgono ruoli differenti: • Utenti: sono in genere dipendenti dell’azienda, che apportano il know-how sull’azienda e sui suoi processi produttivi ed organizzativi; vengono intervistati dagli analisti per determinare le caratteristiche dei processi da supportare con l’ICT; • Analisti: sono professionisti dell’ICT, con particolare competenza ed attitudine nel costruire modelli dei processi aziendali, basandosi sulle informazioni acquisite dagli utenti tramite interviste; nel processo di analisi, utilizzano le metodologie come guida di riferimento e strumento operativo; • Progettisti: a partire dai risultati dell’analisi, effettuano la progettazione tecnica degli ambienti, dei singoli componenti, dei moduli software e delle basi dati necessari a supportare i processi modellati dagli analisti; anch’essi utilizzano le metodologie come guida di riferimento e strumento operativo; • Programmatori: codificano (scrivono) il codice sorgente dei moduli software a partire dalle specifiche dei progettisti; • Specialisti: si tratta di una categoria vasta e composita di professionisti altamente specializzati in specifiche tematiche, prodotti, tecnologie; ad esempio, si hanno specialisti di Database, di reti, di progettazione ad oggetti, di personalizzazione di sistemi ERP, etc....; • Amministratori: si tratta in genere di personale di fiducia dell’azienda, che governa gli accessi e gli utilizzi del Sistema Informativo, dispensando e monitorando codici di accesso, password, abilitazioni, etc.. a tutti gli utenti del sistema.

pag. 41 di 49

7.1

L’ingegneria del software

All’inizio dell’epoca dei computer la scrittura di programmi era riservata a tecnici esperti dei componenti elettronici o a matematici esperti di algoritmi. Con la diffusione del computer per utilizzi gestionali, la figura del programmatore diventò sempre più multidisciplinare, comprendendo conoscenze di informatica insieme a competenze dei processi da informatizzare. Il lavoro di questi primi programmatori era di tipo artigianale, cioè basato sulle capacità personali piuttosto che su metodi e processi produttivi. L’aumento delle dimensioni dei progetti, però, comportò l’aumento del numero di persone che vi lavoravano e la loro suddivisione specialistica: nacque così la distinzione tra analista, progettista, programmatore, etc... La crescita ed articolazione dei gruppi di sviluppo software comportò difficoltà di comunicazione tra i componenti, difformità di nomenclatura e standard, carenze di pianificazione e coordinamento. Inoltre, e ciò era anche peggio, la maggiore complessità dei progetti rendeva sempre più difficile interpretare correttamente le richieste degli utenti, che non sempre riuscivano ad esporre chiaramente le esigenze di processi sempre più articolati, e tradurle in funzionalità e basi-dati informatiche. La conseguenza di un approccio artigianale ad un problema sempre più ingegneristico fu, verso la metà degli anni ’60, il raggiungimento di percentuali preoccupanti di fallimenti nei progetti di Sistemi Informativi. Spesso il fallimento era di tipo budgetario: la mancata comprensione tra utenti e sviluppatori e la conduzione caotica del progetto portava in media a scrivere una singola linea di codice due volte, con conseguente lievitazione incontrollata dei costi. A volte, il progetto non riusciva nemmeno ad arrivare a conclusione e veniva abbandonato. La svolta avvenne nell’ottobre 1968, quando il problema dello sviluppo software era diventato così imponente che il Comitato Scientifico della NATO organizzò una conferenza a Garmisch, in Germania, per discutere l’argomento e trovare una soluzione. Fu in quell’occasione che venne coniato il nome di Ingegneria del Software, inteso come: •

l’insieme di discipline, metodi, tecniche e strumenti per applicare allo sviluppo del software lo stesso approccio industriale applicato alle altre branche dell’Ingegneria.

Le metodologie L’Ingegneria del Software si trovò subito ad affrontare le problematiche connesse con la produzione di un bene immateriale, come il software, nel quale, a differenza che nella produzione industriale tradizionale, sulle leggi della fisica, chimica, etc... e sulla loro corretta applicazione è prevalente la capacità, il know-how, l’esperienza e persino l’estro del singolo “lavoratore”. L’Ingegneria del Software, quindi, doveva agire innanzitutto sulla componente umana, regolamentandola senza tuttavia penalizzarne le qualità. Gli addetti ai lavori si concentrarono quindi sullo sviluppo di metodologie informatiche, modelli di riferimento in grado di guidare, coordinare ed uniformare il lavoro di un gruppo, stabilendo principi per decidere: • chi deve fare qualcosa (ruoli nel progetto); • quando la deve fare (fasi del progetto); • come la deve fare (tecniche e standard del progetto); • cosa deve utilizzare (input delle fasi del progetto); • cosa deve produrre (output delle fasi del progetto); • come deve esprimere i risultati raggiunti (formalismi delle fasi del progetto); • come deve interagire con gli utenti (metodi di intervista agli utenti); • come deve rappresentare il mondo descritto dagli utenti (tecniche di modellazione). Per raggiungere questi obiettivi le metodologie fanno uso di: • metodi di pianificazione (Gantt, PERT, etc...); • tecniche di modellazione dei processi (Diagrammi di flusso, pallogrammi, Use Case, etc...); • formalismi grafici per esprimere i risultati raggiunti (Diagramma ER, etc...); • tecniche di programmazione (strutturata, ad oggetti, etc...); • standard di nomenclatura e di programmazione; • tecniche di test (Unit Test, System Test, etc...); • best practice (pratiche migliori), collezioni di esperienze di successo da riutilizzare in nuovi progetti. Un importante vantaggio delle metodologie, quasi un sottoprodotto, è l’ampia mole di documentazione che viene prodotta durante il processo di sviluppo, che riporta i passi eseguiti, le scelte fatte e le loro motivazioni, i dettagli di ogni singolo componente, etc... Questa documentazione è preziosa per la successiva fase di manutenzione. Prima del diffondersi delle metodologie, la manutenzione di ogni singolo componente software veniva curata in modo quasi inderogabile dallo stesso sviluppatore che aveva realizzato il componente. La cessazione della disponibilità di quest’ultimo per qualunque motivo (passaggio ad altro incarico, dimissioni, etc...) poneva seri problemi di usabilità futura del componente. Gli strumenti CASE (Computer Aided Software Engineering) La complessità di fasi e tecniche utilizzate dalle metodologie, insieme alla necessità di produrre formalismi grafici onerosi da realizzare a mano, stimolò, a partire dagli anni ’70, il nascere di strumenti CASE (Computer Aided Software Engineering = Ingegneria del Software assistita da computer). Questi strumenti assistono i componenti di pag. 42 di 49

un gruppo di sviluppo software nell’utilizzo corretto di una metodologia, supportando la generazione automatica o semi-automatica dei formalismi previsti e, nei CASE più evoluti, persino del codice sorgente del software. Gli strumenti CASE comprendono: • una base dati comune a tutti i membri del progetto per assicurare la condivisione di informazioni corrette, aggiornate e congruenti; • un motore di Workflow che guidi i membri del progetto lungo le fasi previste, controllando il rispetto delle regole; • un insieme di strumenti atti a generare i formalismi grafici di una fase in maniera automatica o semi-automatica a partire da quelli della fase precedente. Le metodologie a cascata Uno dei principali problemi che le metodologie cercano di evitare è l’incomprensione tra utenti ed analisti durante le interviste, che porta ad evidenziare l’inadeguatezza del software sviluppato solo al termine dello sviluppo. Così le prime metodologie cercarono di superare il problema suddividendo il processo di sviluppo software in numerose fasi, al termine delle quali vi è un momento di verifica con gli utenti. L’obiettivo è quello di intercettare errori ed inadeguatezze nella fase più precoce possibile, quando è ancora possibile rimediare con costi limitati. Questo approccio ha portato alla definizione di una classe di metodologie dette a cascata (Waterfall), caratterizzate da: • suddivisione del processo di sviluppo in fasi sequenziali, che ha dato luogo al cosiddetto “Ciclo di vita del software” (vedi Ciclo di vita un Sistema Informativo Aziendale, Cap. 1); • concatenamento delle fasi, per cui l’output di una fase costituisce l’input della fase precedente; • verifica con l’utente al termine di ogni fase per validare i risultati raggiunti (facendo uso dei formalismi prodotti). L’approccio a cascata permette in molti di casi di anticipare notevolmente l’individuazione degli errori commessi durante il processo di sviluppo software, riducendo le conseguenze economiche. Inoltre, produce un’ampia e chiara documentazione delle fasi eseguite, in quanto la documentazione è l’unico strumento di dialogo tra analista ed utente. Tuttavia l’approccio a cascata richiede che l’utente abbia una chiara visione di quello che vuole sia realizzato, non sia troppo incline ai ripensamenti e, soprattutto, che sia in grado di capire i formalismi che l’analista gli propone per la verifica al termine di ogni fase. Le metodologie iterative L’esperienza fatta durante i decenni di utilizzo delle metodologie a cascata (anni ’70-’80) ha evidenziato però un loro grave limite: l’utente spesso non riesce a farsi un’idea del software che verrà sviluppato dai formalismi che l’analista gli propone. Accade spesso che l’utente approvi il formalismo dando lo sta bene alla prosecuzione del processo di sviluppo, salvo poi a rendersi conto di aver approvato la soluzione sbagliata solo quando è di fronte al software realizzato. Tale problema è aggravato dalla frequenza dei ripensamenti dell’utente che solo di fronte ad un sistema funzionante riesce a mettere a fuoco le sue reali esigenze. Per superare questi problemi, sono state ideate le metodologie iterative, caratterizzate da: • suddivisione del processo di sviluppo in iterazioni successive, la prima delle quali realizza un Sistema Informativo molto semplificato, e le successive lo integrano via via di funzionalità e dati aggiuntivi fino al termine dell’intero sviluppo previsto; • ciascuna iterazione è suddivisa nelle stesse fasi dell’approccio a cascata, ma quelle successive alla prima devono tenere conto di quanto già realizzato; • verifica con l’utente al termine di ogni iterazione (invece che di ogni fase), in un conteso in cui l’utente deve giudicare un software funzionante, se pur limitato, e non un formalismo eventualmente astruso. L’approccio iterativo supera il problema della verifica sui formalismi, sostituendola con quella su software funzionante. Tuttavia, i benefici derivanti da una più probabile intercettazione degli errori in una fase precoce sono parzialmente vanificati nei casi in cui, per le caratteristiche del sistema in via di sviluppo, le iterazioni successive non possano aggiungere funzionalità senza cambiare profondamente quelle già realizzate. Questo approccio è quindi ideale per lo sviluppo di Sist. Informativi che siano facilmente articolabili in segmenti sufficientemente indipendenti. Le metodologie evolutive o prototipali Per superare i limiti delle metodologie iterative, sono state sviluppate le metodologie evolutive o prototipali, che costituiscono una variante di quelle iterative, nelle quali il prodotto di ciascuna iterazione non è un Sistema Informativo finito ma limitato, ma piuttosto un prototipo dell’intero Sistema Informativo che costituisce l’obiettivo finale. Il primo prototipo, prodotto con la prima iterazione, contiene già tutte le funzionalità principali del Sistema Informativo definitivo, con i relativi dati, ma in una forma molto semplificata, senza gli algoritmi più complessi, la gestione delle eccezioni, le funzioni accessorie, etc... Spesso si tratta di software che implementa soprattutto l’interfaccia e la navigazione tra le funzionalità. La verifica con l’utente avviene sul prototipo. L’utente può valutare la validità della strada intrapresa operando direttamente su un software, come farà a sviluppo terminato, senza doversi addentrare nella comprensione di difficili formalismi. pag. 43 di 49

Una volta avuta l’approvazione dell’utente, il prototipo subisce una seconda iterazione che modifica le funzionalità già inserite, sofisticandole e ne aggiunge di nuove. Si ha quindi una nuova sessione di verifica pratica con l’utente e così via. Il software quindi evolve da un prototipo rozzo e semplificato verso il prodotto finale. Queste metodologie superano così sia i limiti dell’approccio a cascata (verifica su formalismi) che quelli dell’approccio iterativo (onerosa modifica delle funzionalità già realizzate nelle iterazioni precedenti). Il secondo obiettivo viene raggiunto grazie alla disponibilità, a partire dagli anni ’90, di ambienti di sviluppo prototipali, che permettono di sviluppare rapidamente un’interfaccia con un minimo di logica sottostante e di modificarla ed integrarla successivamente senza necessità di stravolgerla. Questi ambienti, detti di “programmazione visuale”, mettono a disposizione una serie di componenti software precostituite, che realizzano le funzioni più comuni in maniera semplificata. Il programmatore assembla queste componenti visuali come oggetti grafici sul video, ottenendo in breve tempo un prototipo funzionante. Successivamente, quando occorre rendere tali funzionalità primitive più sofisticate, l’ambiente consente di aggiungere alle componenti visuali dei piccoli programmi, detti script (breve scritto) che implementano tutta la complessità richiesta. Pertanto, il concetto di prototipo software è diverso da quello di prototipo industriale, in quanto quest’ultimo serve a sperimentare la fattibilità del prodotto finale e, terminato tale scopo, può essere distrutto (o conservato in un museo), mentre il prototipo software è riusabile per la confezione del prodotto finito. Questa differenza è una conseguenza della dematerializzazione del prodotto, tipica della Società dell’Informazione. 7.2 I paradigmi di programmazione Indipendentemente dalla metodologia utilizzata nel ciclo di vita del software, il progettista ed il programmatore si trovano di fronte al problema di tradurre un modello della realtà definito dall’analista, comprensivo di funzionalità e dati, in un insieme di moduli software e di banche-dati che devono essere codificati in un linguaggio comprensibile al computer, eventualmente dopo un fase di traduz. in linguaggio macchina effettuata da un compilatore o da un interprete. Per supportare progettisti e programmatori in queste fasi, sono stati sviluppati paradigmi di programmazione che rappresentano la realtà secondo modelli differenti e utilizzano tecnologie di programmazione differenti. Il paradigma procedurale Il primo paradigma utilizzato dai programmatori è molto vicino al modo di funzionare dei processori, che sono progettati per scorrere sequenzialmente una lista di istruzioni (detta programma), eseguirle ed eventualmente saltare ad un’istruzione diversa da quella che segue nell’ordine, qualora si verifichi una certa condizione. Il paradigma procedurale cerca di descrivere la realtà da informatizzare in termini di procedure, cioè di sequenza di brevi comandi che manipolano ed elaborano i dati contenuti nei file. Le procedure sono in genere indipendenti tra loro e non interagiscono. Tipici esempi di programmi procedurali sono le grandi elaborazioni bancarie periodiche (calcolo di interessi, cedole, etc...). Il vantaggio principale di questo approccio è la sua facilità di apprendimento da parte di progettisti e programmatori, dovuta alla semplicità concettuale. Molti processi aziendali, peraltro, sono normati da procedure definite dall’azienda per standardizzare metodi, comportamenti, esiti, etc... Tuttavia, l’approccio procedurale risulta fortemente penalizzante quando i processi e le procedure informatizzate non sono rigide e sequenziali, ma si basano piuttosto sull’interazione dell’utente con strumenti indipendenti, che vengono utilizzati con un ordine e delle modalità differenti a seconda delle esigenze (come nel Front-Office o nel lavoro di ufficio). Il paradigma strutturato Il paradigma strutturato è un’evoluzione di quello procedurale, del quale mantiene l’approccio sequenziale. Nel modello strutturato, però, le procedure sono strutturate in moduli software che svolgono ciascuno una specifica funzione e che vengono assemblati per formare una procedura. I moduli software vengono organizzati secondo una gerarchia, in cima alla quale vi sono le funzionalità principali, sotto quelle via via più di dettaglio ed in fondo i moduli che svolgono le funzioni più comuni (detti routine), come le verifiche formali (date, codici fiscali, etc...) o i calcoli e gli algoritmi più frequenti (calcolo interesse, determinazione di un rateo, etc...). Ciascun modulo software, al suo interno, è a sua volta strutturato in blocchi sequenziali. Attraverso costrutti logici (del tipo if-then-else = se-allora-altrimenti), il programma seleziona il blocco da eseguire e attraverso altri costrutti (del tipo repeat-until = ripeti-finché), il programma ripete l’esecuzione di un blocco finché non si verifica una determinata condizione.

pag. 44 di 49

Figura 21 – Esempio di un diagramma strutturale di un programma Il vantaggio del paradigma strutturato rispetto a quello procedurale tradizionale è la notevole riduzione della ridondanza sulle funzionalità più comuni, il riuso di moduli che assemblati diversamente possono dar vita a nuove funzionalità, la semplicità di manutenzione dovuta alla strutturazione (la modifica di una funzione comune comporta solo la modifica della routine utilizzata da tutti i programmi). I vantaggi sono quindi relativi ad una maggiore razionalizzazione del processo di progettazione e programmazione, ma i limiti relativi alla difficoltà di supportare modelli interattivi permangono pressoché identici al paradigma procedurale. In entrambi i casi, il software si compone di procedure (programmi) non comunicanti che operano con sequenze predeterminate sui dati, visti come un’entità a se stante. Il paradigma ad oggetti Il paradigma ad oggetti è radicalmente diverso. In questo modello, il software si compone di oggetti, ciascuno dei quali ha le seguenti caratteristiche: •

contiene una parte di programma che svolge uno o più semplici compiti e un insieme di dati;



incapsula programmi e dati in una black box (scatola nera), non visibile dagli altri programmi, che comunica con l’esterno attraverso un’interfaccia;



è dotato di uno stato, che ha un valore iniziale e può essere modificato durante l’elaborazione tramite l’interfaccia;



è dotato di comportamenti, detti metodi, che possono essere invocati (attivati), tramite l’interfaccia;



interagisce con gli altri oggetti che compongono il software tramite lo scambio di messaggi, che contengono anche dati.

Nel modello ad oggetti il software è un insieme di moduli interagenti che si scambiano messaggi e di conseguenza cambiano il loro stato ed eseguono dei compiti (metodi). L’utente interagisce con il software attivando gli oggetti, i quali, a seguito di questo evento, emettono dei messaggi che, a loro volta attivano altri oggetti. In questo modo la sequenza di avvenimenti non è predeterminata come nel modello procedurale, ma viene guidata dagli eventi di interazione con l’utente o con altri software. Questo modello di interazione tipico del paradigma ad oggetti viene chiamato modello guidato dagli eventi. Il modello ad oggetti è dotato di una serie di caratteristiche che ne incrementano notevolmente la potenza dal punto di vista dei programmatori. I più importanti sono: •

l’organizzazione degli oggetti in classi: una classe è la generalizzazione dell’oggetto e comprende tutti gli oggetti che hanno in comune certe caratteristiche (appartengono alla stessa categoria); un oggetto viene creato da una classe, come sua istanza, acquisendo lo stato iniziale da quello della classe;



l’ereditarietà delle classi: il programmatore può creare classi derivate da altre classi; queste ereditano tutti i metodi della classe di provenienza, che però possono essere modificati ed integrati; in questo modo il programmatore lavora per differenza;



il polimorfismo, che ha due facce: lo stesso oggetto può comportarsi diversamente a seconda del contesto in cui è inserito ed oggetti diversi possono comportarsi alla stessa maniera in un dato contesto; questa caratteristica consente adattare gli oggetti a contesti diversi senza modificarli o riscriverli;

pag. 45 di 49

Figura 22 – Esempio di classi ed ereditarietà Il modello ad oggetti è molto più adatto di quello procedurale a supportare processi interattivi tra utente e software o tra diversi software. Inoltre, le caratteristiche tecniche sopra descritte permettono ai programmatori il riuso dei componenti prodotti, con un notevole risparmio di impegno nello sviluppo e, soprattutto, nella manutenzione. Ad esempio, la modifica di un metodo in una classe comporta automaticamente la modifica del metodo ereditato nelle classi che discendono da questa e in quelle che discendono da quest’ultima, etc... Grazie a queste caratteristiche il paradigma ad oggetti si è ampiamente diffuso ed oggi la gran parte del software di nuova produzione viene realizzato in ambiente ad oggetti. Lo svantaggio principale di questo ambiente è la maggiore complessità concettuale, che richiede un periodo di addestramento di progettisti e programmatori molto più lungo rispetto agli ambienti tradizionali. 7.3 La misura del software Un processo estremamente delicato è quello della stima dei costi associati alla realizzazione di un Sistema Informativi Aziendale. Tale stima è necessaria in varie fasi del ciclo di vita del sistema: al momento dello studio di fattibilità, per prevedere i costi da sostenere; al momento dell’acquisto di componenti esterne (metodologia buy), per conoscerne il giusto valore; nella fase di manutenzione, che in genere viene valutata come percentuale del valore del software manutenuto, etc... Mentre per le parti fisiche del Sistema Informativo (Hardware, reti, etc...) esistono listini e stime precise e per le persone coinvolte in genere sono noti i costi, il problema della valutazione dei costi di sviluppo del software è sempre stato molto arduo da affrontare. Il motivo è legato all’immaterialità del prodotto software, che ne rende difficile persino la stima della quantità, prima ancora del valore. E’ nota l’espressione un pò interessata dei produttori di hardware: “il software non pesa”. In realtà, oggi il valore del software, che prolunga la sua vita utile anche per decenni, è molto superiore a quello dell’hardware, che spesso è obsoleto dopo un paio d’anni. Ciò rende ancora più pressante il problema della sua valutazione. Come è possibile valutare qualcosa che non può neanche essere stimato in quantità (kili, litri, Ampere, Watt, etc...) ? Il metodo delle LOC (Line Of Code) I primi sistemi di stima del software cercavano di stabilire dapprima un’unità di misura della quantità di software, per poi associarvi un costo unitario. Un’unità di misura della quantità di software utilizzata per decenni è la LOC (Line Of Code = Linea di codice). La LOC è la singola linea di codice sorgente scritta dal programmatore, con esclusione delle linee di commento (linee contrassegnate da un marker che le fa ignorare ai programmi che traducono in linguaggio macchina; servono a documentare il programma). In pratica corrisponde ad una riga del programma. Il metodo di stima associa quindi ad una LOC (più spesso ad una KLOC = Kilo LOC = 1.000 LOC) un costo, che dipende dal linguaggio di programmazione utilizzato: più il linguaggio è evoluto, e quindi più sono le istruzioni di linguaggio macchina corrispondenti alla linea di codice, più alto è il costo. pag. 46 di 49

I vantaggi del metodo delle LOC sono la semplicità, la praticità di calcolo (il numero di KLOC di un insieme di programmi può essere calcolato automaticamente da un programma apposito) e la sensazione psicologica di dare al software una stima in qualche modo proporzionale alla “quantità” di software. Lo svantaggio, che ne ha determinato l’abbandono, è l’estrema soggettività del metodo, per una serie di ragioni: • i linguaggi permettono di scrivere un’istruzione su un numero estremamente variabile di righe, in modo che ciascun programmatore possa incolonnare le istruzioni secondo l’impaginazione che più preferisce; ciò consente impaginazioni “interessate” che, con la scusa dell’ordine visivo, moltiplicano inutilmente il numero di LOC; • indipendentemente dall’impaginazione, il numero di istruzioni in un programma, e quindi di LOC, necessarie a svolgere un certo compito dipendono fortemente dalla bravura del programmatore; la struttura a blocchi di un programma consente ad un programmatore esperto di riutilizzare massicciamente blocchi di istruzioni per svolgere più microfunzioni; il metodo delle KLOC tende quindi a premiare i programmi scritti da programmatori inesperti, e quindi di peggiore qualità; • il numero di LOC non è necessariamente in corrispondenza biunivoca con il valore del software percepito dall’utente; la progettazione o la programmazione di un software potrebbero richiedere la codifica di grandi quantità di LOC per svolgere funzioni non visibili all’utente, a causa di scelte di metodo fatte dagli sviluppatori; il metodo delle LOC rischia di far pagare agli utenti le scelte fatte dai produttori. Con l’evolversi dei linguaggi di programmazione, inoltre lo stesso concetto di LOC è entrato in crisi. Infatti, negli ambienti di sviluppo prototipali le funzionalità principali vengono realizzate con la programmazione visuale, assemblando oggetti grafici, senza scrivere alcuna linea di codice, mentre queste vengono aggiunte per realizzare funzionalità particolari. Diventa molto difficile, pertanto, valutare il costo dell’intero software basandosi sulla misura dei soli script. Il metodo dei Function Point Per superare tutti questi limiti del metodo delle LOC, è stato sviluppato il metodo dei Function Point (Punti Funzione). Il metodo dei Function Point rinuncia a misurare la quantità di software, un parametro giudicato evanescente e comunque non utile alla sua valutazione economica, e si basa sulla misura dell’utilità che il software ha per l’utente. Il principio su cui si basa il metodo è che questo parametro, a differenza delle LOC, sia obiettivo, perché coerente con la percezione che l’utente ha dell’utilità del software. Perché questa misura sia veramente obiettiva, il metodo dei Function Point regola minuziosamente la procedura di stima. I passi sono i seguenti: • il software viene suddiviso in funzionalità tipo, chiaramente percepibili dall’utente, appartenenti a cinque categorie: o Input esterni; o Output esterni; o Interrogazioni esterne; o File logici interni; o File esterni di interfaccia; • ad ogni funzionalità viene assegnato un punteggio (da cui il nome di punti funzione), in relazione alla tipologia di appartenenza ed alla complessità della funzionalità, basata sul numero di dati elementari gestiti; • viene eseguita la somma per tutte le funzionalità, ottenendo i punti funzione grezzi; • i punti funzione grezzi vengono corretti con un peso che dipende dalle caratteristiche non funzionali dell’applicazione (performance, complessità, ambiente tecnologico, etc...), ottenendo i punti funzione netti; • i punti funzione netti vengono moltiplicati per un fattore di impegno (espresso in mesi.persona per function point), che dipende dall’ambiente di sviluppo e dagli skill (abilità) delle risorse del gruppo di sviluppo; • l’impegno in mesi.persona viene valorizzato in termini economici in base al costo delle risorse.

Figura 23 – Schema di applicazione del metodo dei Function Point pag. 47 di 49

I principali vantaggi del metodo dei Function Point, che ne hanno determinato l’odierna ampia diffusione, sono l’oggettività e la meccanicità di applicazione, che si basa su regole e tabelle di pesi pubblicate da un organismo autorevole, l’IFPUG (International Function Point User Group = Gruppo internazionale degli utenti dei punti funzione). Lo svantaggio tuttora avvertito, di natura soprattutto psicologica, è la rinuncia al tentativo di misurare la quantità di software, che spesso disorienta amministratori e manager abituati a valutare i beni anche in base alla quantità di bene fornito. 7.4

L’utilizzo dei Sistemi Informativi Aziendali

L’utilizzo dei Sistemi Informativi Aziendali pone alcune problematiche che sono tipiche della tecnologia utilizzata. Tra queste si citano quelle di sicurezza, quelle di privacy e quelle derivanti dalle conseguenze generate dagli errori operativi. La sicurezza nei Sistemi Informativi Aziendali I Sistemi Informativi Aziendali pongono seri problemi di sicurezza. I problemi sono generati dalla concomitanza delle esigenze di protezione dei dati gestiti dal sistema da accessi non autorizzati con quelle di connessione del sistema con i sistemi di altre aziende, con i clienti, i fornitori, i cittadini, Internet in generale. La connessione ad Internet ed i servizi ad essa correlati, come la posta elettronica, sono pericolosissimi canali di accesso al sistema per i malintenzionati e per i prodotti da essi escogitati. Mentre la protezione da accessi diretti di hacker è oggi in genere garantita dai sistemi di firewall, la diffusione dei virus e delle loro varianti è molto più difficile da intercettare, perché essi si diffondono attraverso canali che devono comunque restare aperti (come la posta elettronica), facendo spesso leva sull’ingenuità degli utenti. Un virus è un pezzo di codice, generalmente nascosto tra altro codice, progettato per diffondersi da un computer all’altro, attaccarsi ai programmi del computer ospite e causare qualche risultato inaspettato, buffo o dannoso. In genere un virus contiene troppo poco codice per potersi replicare autonomamente e sfrutta a questo scopo i programmi residenti sul computer ospite. Questo comportamento, analogo a quello dei virus biologici, incapaci di riprodursi autonomamente, ma in grado di farlo infettando una cellula ospite e sfruttandone, prendendone il controllo, il sistema di riproduzione, ne ha originato la denominazione. Oggi i virus si trasmettono principalmente attraverso la posta elettronica, nascosti negli allegati, sfruttando l’ingenuità o la sprovvedutezza degli utenti che spesso aprono un allegato senza accertarsi dell’affidabilità dell’origine del messaggio. Vi sono diverse varianti dei virus. Oggi le più importanti sono: • Macro virus: sono virus che si nascondono nelle macro dei documenti di tipo M. Word o similari, facendo eseguire al programma azioni strane, come l’inserimento automatico ed improvviso di testo comico all’interno del documento che si sta scrivendo; si diffondono negli allegati della posta elettronica, sono i più comuni, ma in genere i meno pericolosi; • Vermi: sono virus che non modificano i programmi, ma si istallano nella memoria centrale, utilizzando parti del Sistema Operativo, che generalmente l’utente non percepisce, per replicarsi a dismisura, fino a saturare tutta la memoria del sistema, centrale e/o di massa, provocando il blocco del sistema; sono pericolosi perché in grado di bloccare grandi quantità di computer in poco tempo; il nome deriva dal fatto che, come alcuni vermi parassiti, attaccano la loro testa al corpo dell’ospite e replicano la coda in grandi quantità; • Cavalli di Troia: sono virus che si nascondono all’interno di un programma o di dati apparentemente amici o innocui e quindi accettati dall’utente; il virus prende poi il controllo dell’ospite in cui si cela, distruggendo file, tabelle di sistema, etc...; sono i virus più pericolosi e più difficili da individuare a causa del loro travestimento, ma per fortuna sono i più rari; il nome deriva dall’analogia con la celebre storia di Ulisse e del cavallo di Troia; • Virus hoax (virus burla): sono virus nascosti in falsi messaggi di avviso sulla presenza e pericolosità di qualche nuovo virus, distribuiti per posta elettronica; si basano sull’ingenuità dell’utente che, aprendo il messaggio per leggerlo, attiva il virus; spesso il messaggio consiglia l’inoltro ad amici e colleghi, favorendo così la sua diffusione. Per difendersi dai virus, sono stati ideati e prodotti degli specifici programmi detti anti-virus. Questi programmi scansionano i messaggi di posta elettronica, i file e persino l’intero disco rigido, se richiesto, alla ricerca di specifiche corte sequenze di codice che identificano univocamente un virus (il DNA del virus). Quando il virus viene riconosciuto , l’antivirus chiede all’utente quali azioni intraprendere: distruzione del file che lo contiene, bonifica, ovvero rimozione del solo virus (quando possibile), messa in quarantena, ossia spostamento del programma che contiene un virus in un area di memoria dove non può nuocere, etc... Gli anti-virus basano il loro funzionamento sulla disponibilità di una banca-dati delle sequenze di codice che identificano tutti i virus esistenti. Poiché vengono continuamente creati nuovi virus, questa banca dati deve essere aggiornata frequentemente, pena il decadere dell’efficacia dell’anti-virus. L’aggiornamento in genere avviene tramite Internet, collegandosi al sito del produttore dell’anti-virus. La privacy nei Sistemi Informativi Aziendali I Sistemi Informativi Aziendali pongono seri problemi di privacy (riservatezza). I problemi sono generati dalla necessità di gestire e mettere a disposizione degli utenti, spesso in sedi geograficamente distanti, enormi banche-dati contenenti informazioni riservate su persone (dati anagrafici, bancari, sanitari, etc...). pag. 48 di 49

I diversi Paesi hanno varato negli anni legislazioni sulla privacy sempre più stringenti. I gestori delle banche-dati e gli amministratori di sistema, che governano gli accessi e le abilitazioni, sono ritenuti penalmente responsabili di eventuali accessi, o, peggio rilascio di dati, a soggetti non autorizzati. Le norme individuano particolari categorie di dati, detti sensibili, che, per la loro delicatezza e le conseguenze della loro eventuale diffusione non autorizzata, sono soggetti a regole ancora più restrittive rispetto agli altri dati. Tra questi, ad es., i dati sanitari che riportano, tra l’altro, la casistica di malattie ad alto impatto sociale, come quelle infettive più gravi. Per garantire la privacy dei dati, le aziende utilizzano tecnologie sempre più avanzate, come il controllo degli accessi tramite riconoscimento biometrico (impronta digitale, retina dell’occhio, voce, etc...), la crittografia, etc... Il problema però è anche di natura organizzativa. Per gestire la privacy occorre creare una gerarchia di personale di fiducia, addetto al rilascio degli accessi e delle autorizzazioni. Occorre inoltre varare delle politiche di privacy aziendale, che regolamentino anche l’eventuale rilascio a terzi di porzioni o di intere banche-dati, evento considerato dalle legislazioni sulla materia in assoluto il più delicato, perché consente a soggetti con pochi scrupoli l’utilizzo delle informazioni di massa per scopi di lucro. Il problema della privacy è destinato a diventare sempre più complesso a causa dell’interazione sempre più spinta tra le banche-dati mondiali. L’intrusione di malintenzionati in una banca-dati grazie a numerosi e fuorvianti passaggi intermedi attraverso altre banche-dati e sistemi è sempre più frequente. Gli errori umani nei Sistemi Informativi Aziendali Una delle caratteristiche negative più importanti dei Sistemi Informativi Aziendali è l’amplificazione dell’errore umano. Un Sistema Informativo può essere pensato come una grande macchina. Le macchine sono degli strumenti di amplificazione delle capacità umane: esempio tipico è la leva di Archimede. Un Sistema Informativo è uno strumento di amplificazione del lavoro intellettuale umano, basato sulla ripetizione automatica di attività e comportamenti sulla base di limitati input umani. Si generano quindi situazioni nelle quali un errore piccolo e marginale commesso da un soggetto del Sistema Informativo, che in un contesto di attività manuali avrebbe avuto conseguenze piccole e marginali, inserito in un canale di input del sistema (ad esempio, transazione) viene da questo amplificato enormemente, generando anomalie di grande portata o errori sistematici. Per contrastare questo fenomeno, le organizzazioni aziendali che utilizzano Sistemi Informativi devono predisporre sistemi di controllo più organici e meticolosi rispetto a quelli utilizzati quando il lavoro era manuale. Anche per approntare tali sistemi di controllo, sono state sviluppate metodologie di controllo di qualità come la ISO 9000 – Vision 2000. I sistemi di qualità si basano sul principio del controllo di processo piuttosto che su quello del controllo di prodotto. Il controllo non avviene quindi solo alla fine del processo, quando è spesso troppo tardi, ma è presente durante tutte le fasi del lavoro, normandole e tracciandole. Per ottenere questo scopo i sistemi di qualità impongono la stesura di procedure lavorative ed il loro rispetto, con la produzione di registrazioni di qualità che attestano il rispetto delle norme e/o giustificano la loro eventuale deroga.

pag. 49 di 49

Related Documents

Siapa Kita
June 2020 21
Siapa Bilang?
April 2020 29
Siapa Aku
June 2020 17
Siapa Dia
November 2019 22
Siapa Aku
November 2019 27
Siapa Yang Tidak
May 2020 18