La disintegrazione del razzo Ariane 5 37 secondi dopo il lancio nel suo viaggio inaugurale ( Volo 501 ) viene comunemente indicata come come uno dei bug software più costosi nella storia 1 :
It took the European Space Agency 10 years and $7 billion to produce Ariane 5, a giant rocket capable of hurling a pair of three-ton satellites into orbit with each launch and intended to give Europe overwhelming supremacy in the commercial space business.
All it took to explode that rocket less than a minute into its maiden voyage last June, scattering fiery rubble across the mangrove swamps of French Guiana, was a small computer program trying to stuff a 64-bit number into a 16-bit space.
One bug, one crash. Of all the careless lines of code recorded in the annals of computer science, this one may stand as the most devastatingly efficient. From interviews with rocketry experts and an analysis prepared for the space agency, a clear path from an arithmetic error to total destruction emerges.
Quali importanti cambiamenti hanno causato il fallimento 501 di Flight e le indagini successive alla ricerca di sistemi critici per la sicurezza e test del software?
Non sto cercando una spiegazione del bug stesso, ma per una spiegazione dell'impatto storico del bug, in termini di ricerca che sono stati ispirati o sono stati direttamente correlati alle indagini sull'insuccesso. Ad esempio questo articolo conclude:
We have used static analysis to:
- check the initialization of variables,
- provide the exhaustive list of potential data access conflicts for shared variables,
- exhaustively list the potential run time errors from the Ada semantics.
To our knowledge this is the first time boolean-based and non boolean-based static analysis techniques are used to validate industrial programs.
Allo stesso modo, questo documento (pdf) note:
Abstract interpretation based static program analyses have been used for the static analysis of the embedded ADA software of the Ariane 5 launcher and the ARD. The static program analyser aims at the automatic detection of the definiteness , potentiality, impossibility or inaccessibility of run-time errors such as scalar and floating-point overflows, array index errors, divisions by zero and related arithmetic exceptions, uninitialized variables, data races on shared data structures, etc. The analyzer was able to automatically discover the Ariane 501 flight error. The static analysis of embedded safety critical software (such as avionic software) is very promising.
Mi piacerebbe una spiegazione esauriente dell'impatto che questo singolo evento ha avuto sugli approcci e sugli strumenti di test del software.
1 La cifra di $ 7 miliardi si riferisce probabilmente al costo totale del progetto Ariane 5, Wikipedia riporta che l'errore ha comportato una perdita di oltre $ 370 milioni. Ancora un fallimento piuttosto costoso, ma da nessuna parte vicino alla cifra di $ 7 miliardi.