con la collaborazione di Oriana Pizzo

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.

Inizio
Home