The disintegration of the Ariane 5 rocket 37 seconds after launch on her maiden voyage (Flight 501) is commonly referred to as one of the most expensive software bugs in history1:
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.
What major changes did Flight's 501 failure and the subsequent investigations inspire to the research of safety critical systems and software testing?
I'm not looking for an explanation of the bug itself, but for an explanation of the historical impact of the bug, in terms of research that were inspired from or were directly related to the investigation(s) of the failure. For example this paper concludes:
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.
Similarly, this paper(pdf) notes:
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.
I would love a thorough explanation of the impact this single event had on software testing approaches and tools.
1 The $7 billion figure possibly refers to the total cost of the Ariane 5 project, Wikipedia reports that the failure resulted in a loss of more than $370 million. Still a quite expensive failure but nowhere near the $7 billion figure.