Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Stefano Russo » 17.Software Faults


Sommario

  • Introduzione
  • Concetti generali e definizioni
  • Classificazione dei software Faults
  • Software Aging
  • La metodologia ODC

Software Faults

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”.

Alcuni trend nell’industria del software

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.

Lo scenario attuale

Le industrie rilasciano sistemi software in cui sono presenti “bugs” ma…

  • Non si sa dove siano collocati;
  • La loro attivazione non è deterministica;
  • Non si conoscono le loro conseguenze (è in pratica impossibile formalizzare una “risk analysis”).

Lo scenario attuale

Luogo: Bancomat della Lloyds Bank, Baker Street, Londra.
Data: agosto 2003.
Fonte: theinquirer.net

Luogo: Bancomat della Lloyds Bank, Baker Street, Londra. Data: agosto 2003. Fonte: theinquirer.net


Lo scenario attuale

Fonte: Windowscrash.com
Luogo: l’aeroporto di San Francisco.

Fonte: Windowscrash.com Luogo: l'aeroporto di San Francisco.


Lo scenario attuale

Luogo: Melbourne, Australia, all’angolo fra Swanston Street e Bourke Street. Data: 13 febbraio 2000. Fonte: zem

Luogo: Melbourne, Australia, all'angolo fra Swanston Street e Bourke Street. Data: 13 febbraio 2000. Fonte: zem


Lo scenario attuale

Linux crash on Airbus A330.

Linux crash on Airbus A330.


Alcune statistiche….

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.

Cosa accade in scenari critici?

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.

La coscienza di un nuovo problema…

… software errors are the major contributors to failure [Gray'90, Kintala'94, Chillarege'96];
… but current software Practice uses

  • Unstructured, natural language documents
  • more and more external COTS Components
  • tools for “black box” testing without taking into account transient effects of software errors.

Software Faults…transienti?

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”)

Software Faults

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.

Software Faults

In accordo alla classificazione di Gray i guasti software si dividono in:

  • Bohrbugs
  • Heisenbugs

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.

Bohrbugs

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).

Heisenbugs

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:

  • Condizioni limite;
  • Race condition;
  • Altri programmi in esecuzione;
  • Risorse hardware o del Sistema Operativo.

Per questo motivo sono di difficile individuazione in fase di testing.
Un sistema software affetto da Heisenbugs è simile ad un automa non deterministico.

Heisenbugs

Alcuni studi  hanno messo in evidenza che circa il 70% dei fallimenti software sono di tipo transiente.

Le cause principali sono:

  • race conditions;
  • timing problems.

Software Aging

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:

  • Esaurimento delle risorse di sistema operativo
  • Corruzione dei dati
  • Accumulazione di errori numerici

Prodotte da:

  • memory bloating and leaking
  • unreleased filelocks
  • data corruption
  • storage space fragmentation
  • accumulation of round-off errors

Possono ridurre le performance dell’applicazione o provocarne un crash/hang.

Software Aging

Guasti provocati da fenomeni di Aging possono ricadere nelle categorie Bohrbugs o Heisenbugs.

Dipende dalla caratteristica di essere deterministici (ripetibili) o transienti.


Alcuni esempi

  • Nonaging Bohrbug
    • Fallimento prodotto da una determinata sequenza di input;
  • Nonaging Heisenbugs
    • Fallimento dipendente dall’arrivo fuori ordine di messaggi ad un processo;
  • Aging related Bohrbug
    • Fallimento prodotto da un esaurimento delle risorse provocato da una perdita graduale e sistematica dovuta ad un bug;
  • Aging related Heisenbugs
    • Esaurimento delle risorse legato ad una perdita non identificabile e che si verifica in situazioni rare.

Modello dei fallimenti di un modulo software


I materiali di supporto della lezione

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.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93