Alcuni studi passati sostenevano che il software, non essendo una entità fisica, non possa essere soggetto a fenomeni transienti.
I guasti software sono per loro natura permanenti.
Spesso definiti dai software engineers “Design faults”.
L’utilizzo dei sistemi COTS (Commercial Off the Shelf), come ad esempio Sistemi Operativi, supporti a runtime, librerie….
I Tempi di Testing sempre più ridotti;
La crescente complessità del sw stesso;
Utilizzo di piattaforme middleware.
Le industrie rilasciano sistemi software in cui sono presenti “bugs” ma…
Luogo: Bancomat della Lloyds Bank, Baker Street, Londra. Data: agosto 2003. Fonte: theinquirer.net
Luogo: Melbourne, Australia, all'angolo fra Swanston Street e Bourke Street. Data: 13 febbraio 2000. Fonte: zem
24.5 Million XP Crashes A Day
John Dvorak has done the math on Gates’ recent statistic regarding Windows crashes, and estimates about 24.5 Million XP crashes a day.
5% of Windows computers crash more than twice a day.
In a statement at Microsoft’s annual meeting for financial analysts, Bill Gates acknowledged that 5% of all Windows-based computers crash more than twice a day. Read the whole article at the NY Times.
It has been estimated that Linux kernel has at least 25000 bugs (ca. 10 bugs per 1000LOC)…Windows has at least double that [Tanembaum-EDCC-6].
70 % of OS failures are due to “untrusted, third-party code, such as device drivers or other extensions.
1985-1987: il software di radioterapia fa quattro morti
Un errore nel software di una macchina per radioterapia Therac-25, fabbricata dalla Atomic Energy of Canada Limited (AECL), sottopone pazienti malati di cancro a sovradosaggi letali di radiazioni, mietendo quattro vittime.
1997: nave da guerra USA va in crash grazie a Windows
Nel settembre del 1997, l’incrociatore lanciamissili USS Yorktown, comandato da un avanzatissimo sistema di gestione computerizzata basato su Windows NT, va in crisi per un buffer overflow che costringe la nave a restare paralizzata in mare per due ore.
… software errors are the major contributors to failure [Gray'90, Kintala'94, Chillarege'96];
… but current software Practice uses
Eppure i guasti software sono quindi per loro natura permanenti.
Tutti abbiamo però esperienza del contrario:
Riavviando una applicazione e ritentando una operazione fallita, spesso questa non fallirà una seconda volta… (in napoletano “STUT’ E APPICCIA”)
Risulta evidente che i guasti software mostrano dunque un comportamento transiente.
Ciò accade perché i “bugs sistematici” sono tipicamente identificati e risolti durante le fasi di debugging e testing e del software.
In accordo alla classificazione di Gray i guasti software si dividono in:
I Bohrbugs, come l’atomo di Bohr, sono solidi, facili da identificare tramite tecniche standard.
Gli Heisenbugs possono invece eludere sistemi di testing per anni. La stessa operazione di testing potrebbe perturbare la situazione al punto da far sparire l’Heisenbug.
Questo comportamento è analogo al “Principio di Indeterminazione” di Heisenberg.
I Bohrbugs sono errori di design permanenti.
Di natura deterministica.
Possono essere facilmente riprodotti.
Possono essere identificati e risolti nelle fasi di debugging e testing (talvolta anche nell’early deployment) di un software.
Un sistema software, affetto da Bohrbugs è analogo ad un automa deterministico a stati finiti (guasto).
Anche gli Heisenbugs sono errori di design.
Di natura transitoria.
Le condizioni di attivazione sono rare e difficili da riprodurre.
Sono fortemente dipendenti dall’ambente di esecuzione:
Per questo motivo sono di difficile individuazione in fase di testing.
Un sistema software affetto da Heisenbugs è simile ad un automa non deterministico.
Alcuni studi hanno messo in evidenza che circa il 70% dei fallimenti software sono di tipo transiente.
Le cause principali sono:
Un altro fenomeno che riduce l’affidabilità del software è l’Aging.
Lo stato del software o del suo ambiente di esecuzione degrada con il passare del tempo.
La cause principali di questa degradazione sono:
Prodotte da:
Possono ridurre le performance dell’applicazione o provocarne un crash/hang.
Guasti provocati da fenomeni di Aging possono ricadere nelle categorie Bohrbugs o Heisenbugs.
Dipende dalla caratteristica di essere deterministici (ripetibili) o transienti.
1. Caratterizzazione dei sistemi distribuiti
2. Modelli di sistemi distribuiti
3. Tempo e sincronizzazione nei Sistemi Distribuiti
4. Stato globale nei Sistemi Distribuiti
5. Problemi di consenso nei sistemi distribuiti
7. Algoritmi di mutua esclusione nei sistemi distribuiti
8. Algoritmi di elezione nei sistemi distribuiti
10. Il Network File System di SUN Microsystems
11. AFS (Andrew File System) e GFS (Google File System)
12. Transazioni e controllo di concorrenza
13. Transazioni
15. Affidabilità (dependability) dei sistemi software distribuiti
16. Affidabilità dei sistemi software distribuiti
17. Software Faults
18. Classificazione e analisi dei difetti software
A. Avizienis, J.-C. Laprie, and B. Randell, “Fundamental Concepts of Dependability,” LAAS Technical Report No. 01-145, LAAS, France, Apr. 2001.
J. Gray, “Why Do Computers Stop and What Can Be Done About It?” Proc. Fifth Symp. Reliability in Distributed Software and Database Systems, pp. 3-12, Jan. 1986.
I. Lee and R.K. Iyer, “Software Dependability in the Tandem GUARDIAN System,” IEEE Trans. Software Eng., vol. 21, no. 5, pp. 455-467, May 1995.
J. Gray, "A census of tandem system availability between 1985 and 1990,“ IEEE Trans. Reliability, vol. 39, pp. 409418, Oct. 1990.
A.L. Goel, "Software reliability models: Assumptions, limitations, and measurement of coverage applicability,"IEEETrans. SofrwareEng., vol. 11, pp. 1411-1423, 1985.