Sei sulla pagina 1di 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 Introduzione
1.1 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), mini-
computer (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 Basso
Figura 7 – Posizionamento dei canali di accesso rispetto ai vincoli

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 pubblica-
privata, 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’e-
Commerce è 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 (1-
m), 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