La storia insegnaIl 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 ConcorrentiSpesso
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. 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 RicorsiveL '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 inevitabileRicordo 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 tabelleLa 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 Piccoli fastidi e grandi catastrofiSi 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 sistemiMolti dei peggiori bug si manifestano non
nei programmi in sé, ma nel comportamento Effettuare copie di sicurezza intelligentiSi 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 protezionePer 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 La licenza softwareLa 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: ProblemiLa
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 |