
La storia insegna
Il
rilascio di Windows 95 ha segnato l'inizio di un periodo in cui le applicazioni
Dos hanno avuto vita dura. L'ambiente grafico a 32 bit supportava i nomi
lunghi, mentre nella Shell Dos si usavano quasi esclusivamente rogrammi
concepiti per il vecchio ambiente a 16 bit, ai quali era consentita solo
la visibilità dei nomi corti, otto caratteri più tre di estensione. Le
primissime versioni di antivirus per Windows 95 sono incappate in questa
differenza nel modo peggiore: eseguendo la scansione da Dos si potevano
ottenere numerose segnalazioni di file infetti da virus "rari ".
In realtà si trattava di un errore nell'interpretazione dei nuovi eseguibili
a 32 bit; errore che venne corretto molto rapidamente. Qualche tempo fa
su un Pentium 133 i sistemi di accesso a Internet hanno smesso improvvisamente
di funzionare. La telefonata aveva successo, ma al primo tentativo di
accesso la connessione veniva interrotta da un blocco del sistema. Risultò
che il bios aveva avanzato di 100 anni e quando il client e- mail e il
lettore delle news cercavano di stabilire la differenza di data tra i
messaggi già letti e quelli da acquisire, andavano in blocco, incapaci
di credere che un messaggio già letto potesse essere più recente di uno
ancora da scaricare
Cause Concorrenti
Spesso
un problema grave si manifesta quando più eventi si verificano in successione,
creando insieme condizioni che da sole, una per volta, non provocherebbero
danni. In questi casi si parla di concause,cioè di cause che, verificandosi
contemporaneamente provocano il disastro.
Qualche anno fa un razzo Ariane si autodistrusse in volo pochi secondi
dopo il lancio. Fu un errore di software, abbastanza banale: 36 secondi
dopo il lancio il sistema tentò di registrare un dato cercando di registrare
un numero lungo ( un valore a 64 bit ) in una variabile di memoria ampia
soltanto 16 bit. Il sistema di guida automatico si spense al verificarsi
dell'errore, passando il controllo a un sistema di backup del tutto identico
che ovviamente commise lo stesso errore e dopo pochi secondi il sistema
principale ordinò l'autodistruzione del costosissimo razzo, ormai fuori
controllo e di conseguenza dell'ancora più costoso satellite che il razzo
aveva a bordo come carico da mettere in orbita.
La storia ha dell'incredibile per una serie di considerazioni: innanzitutto
quel dato serviva solo a terra durante il lancio la misura poteva essere
evitata. Fino ad Ariane 4 il problema non si era posto perchè il
vettore più piccolo e quel valore non superava mai la soglia dei 16 bit
significativi.
I programmatori avevano previsto di spegnere quella misura, ma poi venne
deciso di lasciarla attiva per evitare di perdere tempo a riattivarla
in caso di sospensione del count down all'ultimo momento. Una serie di
concause hanno mascherato un bug che si è poi puntualmente presentato
causando un danno " astronomico".
Perchè con l'hardware siamo meno tolleranti?
Ricordate
il Pentium Bug? Un errore molto piccolo in una operazione matematica,
scoperto da un professore, scatenò un putiferio: migliaia di processori
sostituiti e un pesante danno di immagine per Intel. Per anni ho continuato
a lavorare con un Pentium "difettoso" avendo valutato che per
il tipo di attività che svolgo la probabilità di incorrere in un errore
anche vagamente significativo era talmente piccola da non giustificare
il disagio di dovere riportare il Pc per la sostituzione. L'errore in
realtà non fu hardware,ma software: una tabella di costanti con una cella
trascritta in modo sbagliato. Il fatto però che quelle costanti fossero
cablate all 'interno del microprocessore, ha scatenato le ire e la voglia
di sostituzione in milioni di persone che ogni giorno accettano serenamente
dai loro software errori ben peggiori.
Directory Ricorsive
L
'installazione di alcuni programmi ( spesso copie non regolari ) su Windows
95 e Windows 3.1 creava un problema caratteristico: la directory di installazione
veniva riempita con un directory con lo stesso nome che a sua volta ne
conteneva uno con lo stesso nome e così via fino all 'esaurimento dello
spazio su disco. Raro era il caso in cui fosse possibile cancellare solo
tale directory,perché non era vero che le directory si contenevano,era
la prima che conteneva un riferimento incrociato a se stessa,quindi entrando
nella prima la si trovava con il medesimo contenuto. Di solito la soluzione
richiedeva la cancellazione del disco fisso.
Doppio o non doppio?
La
prima versione di DoubleSpace in Dos 6.0 non funzionava a dovere. Questa
utility, pensata per offrire più spazio sul disco fisso creando una unità
virtuale compressa, a volte spariva, mostrando un disco C: vuoto. Il sistema
poteva essere ripristinato con la versione successiva di Dos , che recuperava
il file nascosto di DoubleSpace. Anche Windows 95 conteneva una versione
aggiornata di questa utility, superata dalla disponibilità di dischi capienti
al punto che un suggerimento noto per rendere più veloce l'avvio di Windows
95 era spostare i file di DoubleSpace in una cartella di servizio, sempre
che non fosse ancora in uso.
|
Software
quanti bachi!
Come convivere
con una realtà apparentemente inevitabile
Ricordo
che mio nonno, che aveva vissuto il primissimo periodo della diffusione
delle automobili, quando viaggiavamo insieme in automobile per almeno
un centinaio di chilometri, all'arrivo con stupore commentava che non
avevamo visto nemmeno una macchina in panne sul ciglio della strada, con
il motore fumante e l'autista perplesso. Effettivamente, esclusi i casi
di manutenzione insufficiente e gli incidenti indipendenti dall'automobile
stessa, se ci capita di rimanere a piedi, ormai si ta di una sfortunata
e rara occasione e non della regola quotidiana. Nel mondo delle macchine
(hardware) l'affidabilità dei sistemi ha raggiunto livelli più che soddisfacenti.
Ben diverso il mondo del software, dove chiunque abbia una frequentazione
appena più che sporadica con i computer si è imbattuto in qualche malfunzionamento,
più o meno grave nelle conseguenze.
Ammiragli
e tabelle
La
giovane guardiamarina della marina militare statunitense "Grace
Hopper" poco più che trentenne, negli anni Cinquanta venne
assegnata al progetto che preparava le tabelle di tiro dei cannoni utilizzando
uno dei primissimi calcolatori realizzati al mondo,il Mark1. Chissà
se entrando nella sala dove operava una complessa ed elefantiaca macchina
ha pensato alla possibilità di fare di quella nuovissima attività la sua
principale ragione di vita? Grace è morta nel 1992, è sepolta nel cimitero
degli eroi di Arlington e in suo onore venne varato nel 1997 nientemeno
che un incrociatore lanciamissili. Lasciò la marina con il grado di ammiraglio
ed è famosa per due cose: ha coniato il termine "bug" per indicare
un errore nel software e ha ideato e in gran parte realizzato il Cobol,
primo linguaggio di programmazione per applicazioni gestionali, ancora
oggi il linguaggio più usato al mondo Si racconta che un giorno il sistema
non funzionasse a dovere e venne aperto per un controllo: una cimice (in
inglese appunto bug)era stata schiacciata tra due contatti e impediva
il funzionamento della macchina.Grace pulì i contatti e annotò accuratamente
l 'evento sul proprio quaderno. Un difetto in un sistema di calcolo fu
per la prima volta chiamato bug. Da allora il termine si è diffuso
fino a diventare di uso assolutamente comune: i sistemisti dei grandi
centri di calcolo parlavano di "bachi" software (impropria,
ma diffusa traduzione italiana del termine) esattamente come i ragazzini
che evidenziano i problemi dell 'ultimo videogioco. Sull 'argomento sono
nate persino delle barzellette. Una racconta di tre amici: un ingegnere
meccanico, un chimico e uno sviluppatore software; la macchina su cui
viaggiano perde potenza , il motore singhiozza. Il meccanico incolpa le
candele, per il chimico la benzina è sporca, lo sviluppatore non ha dubbi:"E'
il solito bug, spegni e riaccendi e andrà tutto a posto".

L
'ammiraglio Grace Hopper ,una delle più importanti figure nella storia
dell 'informatica
coniò il termine "bug dopo aver identificato una cimice schiacciata
nel contatto di un relais
di Mark 1 la causa di un malfunzionamento. Oggi purtroppo i bug sono molto
più
nascosti e difficili da trovare
Piccoli fastidi e grandi catastrofi
Si
sa che le versioni preliminari dei pacchetti contengono un numero di difetti
elevato, e ciò è del tutto normale, se così non fosse non sarebbero chiamate
appunto "preliminari".Credo però che l'incidente occorso qualche
tempo fa a Bill Gates, che dal palco di un'affollata conferenza stampa
a New York presentava una nuova versione del suo sistema operativo abbia
impressionato un poco tutti... " Ed ora vedremo com'è facile ed immediato
collegare uno scanner Usb al sistema..."Detto, fatto e ... schermo
blu, la solita pagina dove il sistema ci informa che un evento (di solito
descritto in modo totalmente incomprensibile), ne ha provocato il blocco.
Lo stesso accadeva qualche mese prima in un'altra dimostrazione degli
avversari di Microsoft, che presentavano la loro proposta di Network computer
. Alla domanda "Cosa accade se cade la rete? " veniva
risposto, in buona sostanza, che si ferma tutto, ma si tratta
di un evento altamente improbabile. In quel momento cadeva la connessione
di rete, lasciando i nostri amici in un giustificabile e comprensibile
imbarazzo. Si dirà che era prevedibile perchè il software che si presenta
alla stampa è spesso una versione preliminare, ma cosa direste se il Senatore
Agnelli presentasse una nuova automobile e nel bel mezzo della presentazione
si staccasse una ruota? Ricordate il rumore causato dal problema di stabilità
della Mercedes Classe A . Nel software la presenza di piccoli problemi
viene data quasi per garantita, ma nella storia ci sono anche stati casi
di problemi dalle conseguenze costose e qualche volta dolorose legati
a errori di programmazione.
Davvero inevitabili?
In
previsione della preparazione di questo articolo ho consultato i speciali
newsgroup italiani che si occupano inqualche modo di software,e ho inoltrato
un messaggio nel quale chiedevo come mai accettiamodal software la presenza
di malfunzionamenti che non accetteremmo da una lavatrice o da un'automobile.
Le risposte non sono state moltissime ma abbastanza istruttive e indicative
di una mentalità che appare diffusa tra chi si occupa di software. La
maggioranza evidenzia un atteggiamento autoassolutorio,si citano teoremi
sull'impossibilità della dimostrazione della correttezza formale di un
programma (è sostanzialmente vero che quest'ultima non sia dimostrabile
in modo esaustivo) e di conseguenza si tende a dire che la presenza dei
bug è una realtà di fatto,con la quale non possiamo fare a meno di convivere.
In un certo senso questo è vero,ogni manufatto contiene difetti più o
meno grandi o evidenti,e dagli effetti più o meno fastidiosi: Resta però
il problema della loro natura e numerosità: quanti di voi hanno vissuto
l'esperienza di premere il pedale del freno e sentire che la macchina
non rallentava? Spero pochissimi, come pochi sono coloro la cui auto è
stata richiamata in concessionaria per correggerne un difetto.Chi invece
non ha mai visto un bag,uno schermo blu su PC o una bella bomba su Mac?
Qualcuno obietta poi che i sistemi software sono straordinariamente più
complessi di ogni cosa sia stata costruita dall'uomo. Costoro hanno sostanzialmente
ragione,ma anche i moderni aeroplani sono macchine altrettanto complesse
contengono un software sofisticato che però non si blocca anche in condizion
abbastanza critiche.Questo porterebbe a pensare che le tecniche per realizzare
software sicuro e con pochissimi errori ci sono,il vero problema sono
i costi,che diventerebbero troppo alti,e i tempi di realizzazione,che
nell'ormai velocissimo mercato del software non sarebbero sopportabili.
Il mio parere è che il software potrebbe e dovrebbe essere provato meglio
prima di essere messo nelle nostre mani,anche a costo di tempi più lunghi
e di costi maggiori. Questo in parte sta succedendo e dovrebbe essere
sempre più evidente con il maturare del mercato .Chi ha vissuto l'avvento
di prodotti come Os/2 e dB IV,sa bene quali danni di immagine e di diffusione
possano subire prodotti molto validi,per il solofatto di essere messi
in vendita prima della fine delle necessarie fasi di test. Dunque dobbiamo
aspettarci per il futuro software non solo meglio collaudato,ma anche
scritto meglio, perchè la qualità vera è quella che si produce ,non quella
che si controlla. Alcune tecniche promettenti, come la Fault injection
ci fanno sperare di poter disporre di sistemi che incaso di errore si
comportino almeno in modo ripetibile e prevedibile. La risposta più eclatante
è quella di un simpatico signore che, a fronte delle mie richieste e argomentazioni,
mi ha infine apostrofato: " Dici così perchè non hai mai scritto
un programma" passando dall'assoluzione di tutta la categoria alla
chiamata in correo di tutti gli altri programmatori insieme a me, che
della categoria faccio parte Concentriamo quindi la nostra attenzione
sull'utente tradizionale di personal computer colui che per motivi professionali
o per diletto utilizza ogni giorno un calcolatore per archiviare ed elaborare
dati e documenti. Ecco un breve vademecum delle principali cautele.
Curare la
pulizia dei propri sistemi
Molti dei peggiori bug si manifestano non
nei programmi in sé, ma nel comportamento
dei sistemi a fronte di situazioni non ipotizzate da chi li ha progettati
e sviluppati. I programmatori danno sempre per scontato che i loro sistemi
lavorino su macchine con
il sistema operativo installato di fresco e funzionante con tutte le componenti
perfettamente allineate. Questo non succede quasi mai, dal momento che
ogni installazione tende ad andare in qualche modo a toccare parti comuni.
E' importante non esagerare, non installare troppo software inutile, non
interrompere mai le installazioni a metà e soprattutto eseguire le disinstallazioni
secondo le procedure previste. Più standard è il sistema, meno probabili
saranno i blocchi o le reazioni anomale. L'evento calamitoso più temuto
è il blocco del sistema a fronte per esempio di uno sconfinamento in aree
di memoria non permesse. Esistono in commercio molti prodotti che a fronte
di questa eventualità cercano di permettere una uscita soffice
senza doverspegnere la macchina: ecco le videate di configurazione del
prodotto di casa Norton.
Effettuare
copie di sicurezza intelligenti
Si sa che per non
perdere i propri dati ognuno dovrebbe farne copie di sicurezza. I problemi
software e hardware sono sempre in agguato, e solo le copie di sicurezza
possono salvare il vostro lavoro. Quando però si parla di bug software
bisogna stare attenti: si sono già verificati casi di corruzione di dati
progressiva, non evidenziata in fase di salvataggio; quando ci si è accorti
della cosa i dati erano irrimediabilmente perduti. Non dunque solo pedisseque
copie di sicurezza, ma analisi periodiche di quello che si salva per essere
sicuri di non propagare invece errori su errori. Sono particolarmente
efficaci i salvataggi periodici che alcuni programmi effettuano per voi:
io per esempio salvo tutto ogni cinque minuti, soprattutto se lavoro con
un portatile o con una copia beta( preliminare ) di un programma, dove
gli errori sono più probabili e potenzialmente più disastrosi. Tutti prima
o poi ci siamo trovati in quella stupida situazione nella quale il frutto
del nostro lavoro è nella memoria del computer, sappiamo che c'è, ma il
sistema si rifiuta di rispondere a qualsiasi comando. Subrenta la legge
di Murphy,che afferma tra l 'altro che quando una cosa va storta, questo
succede nella situazione in cui procurerà il maggior danno. Se il PC si
blocca all 'ultima revisione di un documento, dopo qualche ora di lavoro,
potrete solo riavviarlo e confidare nella bontà della più recente copia
di sicurezza. Come detto, se più programmi stanno lavorando insieme è
più probabile che si verifichino errori. Se state una cosa importante,
magari urgente, evitate di aprire troppe applicazioni insieme e di lavorare
mentre il sistema è occupato in modo pesante. Scrivere mentre si scarica
un grosso file da Internet ed è in corso la stampa di cinquanta pagine
è possibile, ma crea le premesse per ottenere che il blocco di una sola
operazione fermi l'intero sistema impedendovi il salvataggio.
Utilizzare i sistemi di protezione
Per
evitare il più volte citato blocco del sistema a fronte di un bug del
sistema operativo,o della sua cattiva reazione a un problema di un 'applicazione
,sono stati messi a punto una serie di meccanismi oggi offerti in molti
programmi di utilità. Uno di questi è il Norton Crash Guard
delle Northon Utilities: si tratta diun programma che sorveglia il sistema
fornendovi un tentativo di analisi del problema e qualche possibilità
di ripristino in caso di blocco della macchina o di qualche applicazione.
Windows da tempo offre un tool che a fronte di un incidente vi
permette almeno di sapere cosa è successo per riferire l 'accaduto a chi
deve fornirvi assistenza: Dr Watson non evita i bug, non limita
i danni, ma fornisce una serie di informazioni purtroppo non di facilissima
lettura ,ma almeno saprete cosa dire all'help desk!
Cautela nell'aderire all'innovazione?
Il
mondo del software ci ha abituato a continui rilasci e aggiornamenti e
ci pone spesso il
problema se adottarli subito o aspettare con cautela. Mio nonno consigliava
di lasciare che altri facessero da cavia, e nel caso di prodotti veramente
"nuovi "la cosa ha qualche senso anche nel software: le prime
versioni di NT avevano molti più problemi di quelle successive, quindi
qualche cautela nella loro adozione per le applicazioni più critiche è
consigliabile. Molto diverse invece le considerazioni sugli aggiornamenti
periodici, che spesso hanno come seconda motivazione la correzione di
errori. Questi vanno presi in seria considerazione ed è assolutamente
consigliabile aderire alla proposta di installazione che ormai per moltissimi
sistemi viene periodicamente fatta via Internet. D'altra parte non bisogna
esagerare con le cautele. Invece, bisogna valutare l' aggiornamento software
in relazione all' adozione di nuovi Pc, per evitare i problemi che derivano
dall' usare un software troppo vecchio rispetto all' hardware attuale,
problemi legati alla cattiva gestione di macchine o di periferiche che
al momento della loro realizzazione non erano nemmeno lontanamente pensabili.
Qundi useremo le nuove versioni con giudizio, e gli adeguamenti ogni volta
che saranno disponibili. Nel passaggio a una versione di un prodotto completamente
nuova, una ulteriore cautela andrebbe usata per preservare i dati molto
importanti: salvateli in un formato standard e più semplice possibile,
compatibilmente con la natura dei dati. Mi spiego: quando cambio agenda
salvo i miei preziosissimi indirizzi anche in formato Ascii comma delimited,
il formato più semplice possibile che ha due grandi vantaggi: è standard
e di conseguenza in caso di problemi sono sicuro di potere rileggere i
dati ed è intelleggibile dall' uomo e di conseguenza sempre in caso di
problemi sono sicuro di potere rileggere i dati ed è intelleggibile dall'
uomo e di conseguenza sempre in caso di problemi posso fare una bella
stampa e disporre ancora dei miei numeri di telefono fino a che il problema
non si saràrisolto. Inutile dire che le versioni preliminari dei programmi
sono da evitare quando i dati sono importanti e che accettare caramelle
dagli sconosciuti è comunque e sempre pericoloso: scaricate pure l'
ultima copia di Paint Shop Pro da un sito pirata, ma se si tratta della
versione alfa forzata da un ragazzino di Seattle non lamentatevi poi se
vi dà problemi!
La licenza
software
La licenza è il mezzo tramite il quale i
produttori di programmi per elaboratore (software) concedono l' uso dello
stesso a chi l' acquista dietro il pagamento di una somma di denaro. A
chi paga, non viene ceduta però la proprietà del programma, ma soltanto
il diritto ad utilizzarlo a determinate condizioni e dietro una garanzia
di funzionamento limitata. Per meglio comprendere come funziona una licenza
software, accenniamo brevemente alla protezione giuridica accordata dalla
legge italiana. Il programma per elaboratore è protetto quale opera dell'
ingegno dalla legge sul diritto d'autore, la n.633 del 1941, che all'
articolo 1 recita:
"Sono altresì protetti i programmi per elaboratore come opere letterarie
ai sensi della Convenzione di Berna sulla protezione delle opere letterarie
ed artistiche ratificata e resa esecutiva con legge 20 giugno 1978, n.399"
.E all'articolo 2, punto 8:
"I programmi per elaboratore, in qualsiasi forma espressi purchè
originali quale risultato di creazione intellettuale dell' autore. Restano
esclusi dalla tutela accordata dalla presente legge le idee e i principi
che stanno alla base di qualsiasi elemento di un programma, compresi quelli
alla base delle sue interfacce. Il termine programma comprende anche il
materiale preparatorio per la progettazione del programma stesso.
All' autore, al quale chi sviluppa software è equiparato, sono riconosciuti
al momento della creazione dell' opera alcuni diritti divisi in due categorie:
diritti di utilizzazione economica e diritti morali. I primi garantiscono
il diritto di riprodurre, di commercializzare, di noleggiare l'opera,
i secondi riconoscono il diritto alla paternità dell'opera, a non vederla
modificata contro il proprio volere ecc. I primi sono trasmissibili, agli
eredi o a terzi; posso cedere a un' azienda il diritto di riprodurre e
commercializzare il software che io ho sviluppato. I diritti morali non
sono invece trasmissibili: la paternità dell' opera è di chi l'ha creata,
che non può trasmetterla a qualcun altro. Attraverso il contratto di ricerca,
l'autore del programma per elaboratore,o il cessionario dei diritti (colui
al quale sono stati ceduti i diritti di utilizzo) concede a chi acquista
il software, il diritto di utilizzo dello stesso, mantenendone la proprietà.
In una licenza software sono precisati, generalmente, i seguenti punti:
1 Copyright: l'autore/produttore afferma la proprietà intellettuale
e di tutti i diritti che ne conseguono del software e di tutto ciò che
è collegato a esso: immagini, suoni, fotografie, animazioni ,video, testi,
applet, ecc.
2 Condizioni di utilizzo: generalmente il pacchetto software può
essere installato solo su un singolo Pc, per ogni ulteriore installazione
deve essere acquistata una nuova licenza. In altri tipi di licenze è possibile
installare un software su più computer, ma lo stesso non può essere utilizzato
contemporaneamente da più utenti.
3 Limiti di utilizzo: il software non può essere separato nelle
sue componenti per essere utilizzato su più computer, non può essere concesso
in prestito, in affitto, in leasing.
E' permessa la copia di backup. E' inoltre stabilito il divieto di decompilazione
o simili.
4 Garanzia: le licenze contengono limitazioni di responsabilità
per il malfunzionamento del programma.Non è perciò possibile chiedere
il risarcimento in caso di perdita di dati, profitti e informazioni commerciali,
o qualsiasi altro genere di danno causato direttamente o indirettamente
dal programma.
Problemi
La
licenza software così impostata si presta a moltissime critiche,che accenniamo
brevemente.Per esempio: acquistare un software senza avere la certezza
del suo corretto funzionamento equivale idealmente ad acquistare un'automobile
senza che si abbia la garanzia che questa cammini per strada. Se acquisto
un'auto che non funziona, posso sempre rivolgermi al produttore per chiedere
gli eventuali danni o la restituzione di quanto
pagato; nel caso di un programma per elaboratore, invece, non è possibile.
Questo può sembrare strano in un mercato competitivo come quello informatico,
ma in realtà non lo è. Infatti è noto che in questo mondo, "chi primo
arriva meglio alloggia, "percui molti produttori pur di essere "i
primi" rilasciano versionidi software non ancora in grado di funzionare
stabilmente, in modo da "accapparrars "il mercato. Gli errori
si possono correggere in seguito in modo tecnicamente più semplice rispetto
ad un prodotto hardware. E' più facile distribuire un service pack che
richiamare in concessionaria diverse migliaia di autovetture.Inoltre i
termini della licenza non sono mai concordati tra utente e proprietario,
ma imposti da quest 'ultimo. Esiste anche un tipo di licenza software
aperta chiamata open license, che permette di copiare, distribuire
e/o modificare legalmente il software pur mantenendone il copyright. In
questo caso non viene fornita alcuna garanzia (no warranty) sul
corretto funzionamento del programma ,ma spesso chiunque ha la possibilità
di esaminare (o di far esaminare da un analista) il codice del programma.
La più rappresentativa tra queste è la Gnu Gpl (General Public License),
licenza standard acquisibile da chiunque su Internet. All' indirizzo www.fsf.org/home.html
è possibile acquisire una copia della licenza e tutte le informazioni
per il suo utilizzo.
|