Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Università di Palermo
Facoltà di Ingegneria
Dispense di
SOMMARIO
1 Introduzione...............................................................................................................4
1.1 Oggetto della materia........................................................................................4
1.2 Contesto in cui si evolve l’informatica..............................................................5
2 L’Hardware................................................................................................................8
2.1 La scheda madre................................................................................................9
2.2 La schede che si inseriscono sulla scheda madre............................................11
2.3 Le memorie di massa.......................................................................................13
2.4 Le periferiche...................................................................................................17
3 Il Software...............................................................................................................20
3.1 Il software di sistema.......................................................................................20
3.2 Il software applicativo.....................................................................................27
4 Le reti.......................................................................................................................28
4.1 Tipologie di reti...............................................................................................28
4.2 Elementi costituenti una rete...........................................................................31
4.3 La rete Internet................................................................................................35
5 Le applicazioni aziendali.........................................................................................42
5.1 Le applicazioni diffuse in tutti i settori............................................................42
5.2 Le applicazioni nel settore industriale.............................................................45
5.3 Le applicazioni nel settore dei servizi.............................................................46
6 L’integrazione delle applicazioni............................................................................61
6.1 L’integrazione orizzontale...............................................................................61
6.2 L’integrazione verticale...................................................................................63
7 Le basi di dati..........................................................................................................68
7.1 File...................................................................................................................68
7.2 Database..........................................................................................................71
8 Pianificazione e realizzazione di un sistema informativo.......................................79
8.1 L’ingegneria del software................................................................................79
8.2 I paradigmi di programmazione......................................................................84
8.3 La misura del software....................................................................................87
8.4 L’utilizzo dei Sistemi Informativi Aziendali...................................................90
1 Introduzione
Sistemi di lavoro alienanti per gli operai, perché basati su piccoli compiti scialbi
ripetitivi (Taylorismo).
Separazione netta tra prodotto e servizio.
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).
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).
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:
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;
Schede di memoria centrale (RAM) e di espansione (video, audio,
comunicazione, etc…);
Dispositivi di memoria di massa (Floppy Disk, Hard Disk, dispositivi ottici,
memorie USB, etc…);
Periferiche di input (Tastiera, mouse, lettore ottico, scanner, etc…);
Periferiche di output (Monitor, stampante, casse, etc…).
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.
Le porte di comunicazione
Sulla scheda madre sono cablate numerose porte di comunicazione con dispositivi
esterni al computer. Le più comuni sono:
Porta tastiera: serve a connettere la tastiera;
Porta mouse: serve a connettere il mouse;
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;
Porta parallela: trasmette i dati 8 bit alla volta; serve a connettere la stampante;
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
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:
Interfaccia per il Floppy Disk; sta andando lentamente in disuso;
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.
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. La scheda trasforma i segnali del bus del computer in segnali coerenti
con la rete locale (oggi quasi esclusivamente di tipo Ethernet). La scheda 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.
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, che viene inserito in un drive presente nel case del PC per
la lettura e scrittura.
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, che si misura in decine o, tendenzialmente, centinaia di GB
(GigaByte, miliardi di Byte).
I dischi ottici registrabili (R), invece, vengono scritti da un dispositivo ottico con un
laser di potenza più elevata rispetto a quella del semplice lettore, chiamato
masterizzatore. Questi dischi 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 allo stato cristallino. La maggiore
complessità del processo spiega perché i tempi di masterizzazione 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.
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.
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
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.)
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:
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;
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;
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.
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 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.
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.
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.
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).
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
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.
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.
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.
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…
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…
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 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, ossia un
protocollo di comunicazione (dal greco protocollon, un foglietto accluso ai manoscritti
per descriverne il suo 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.
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.
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);
Cenni storici
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.
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.
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.
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
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.
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 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.
5 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.
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.
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.
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.
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.
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à).
Nel seguito vengono citate alcune delle applicazioni più significative, appartenenti alla
famiglia delle applicazioni CAx (Computer Aided x – x assistito dal computer).
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…);
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).
Call Center
Vincolo
Temporale
Sportello semipresidiato
Help Desk
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).
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.
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.
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à).
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.
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.
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.
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).
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
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à).
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.
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.
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.
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.
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’informazione deve essere accessibile nel formato corretto (testo,
audio, video, etc...).
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.
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.
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.
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.
7 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).
7.1 File
Le basi di dati più semplici sono costituite da un insieme di file che vengono gestiti ed
integrati dai programmi applicativi.
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.
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.
7.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 Database 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.
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 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.
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.
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 Articolo è una relazione di tipo 1-
Matricola
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.
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).
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…
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…
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);
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 Sistemi Informativi che siano
facilmente articolabili in segmenti sufficientemente indipendenti.
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 degli interessi, calcolo delle 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.
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;
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...) ?
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.
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
Microsoft 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
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.