Ariane 5ロケットの処女航海(Flight 501)での打ち上げから37秒後の分解は、歴史上、最も高価なソフトウェアバグの 1つと呼ばれています1:
欧州宇宙機関が10年間と70億ドルを費やして、3トンの衛星のペアを打ち上げるたびに軌道に打ち込むことができる巨大なロケットであるアリアン5を生産しました。
昨年6月にロケットがその初飛行に1分もかからず爆発し、フランス領ギアナのマングローブの沼地に燃えるような瓦礫を散布したのは、64ビットの数値を16ビットの空間に詰め込もうとする小さなコンピュータプログラムだけでした。
1つのバグ、1つのクラッシュ。コンピュータサイエンスの記録に記録されているすべての不注意なコード行の中で、これは最も壊滅的に効率が良いものであると言えます。ロケット工学の専門家へのインタビューと宇宙機関のために準備された分析から、算術エラーから完全な破壊への明確な道が現れます。
Flightの501の失敗とその後の調査は、安全上重要なシステムとソフトウェアテストの研究に影響を与えた大きな変化は何ですか?
私はバグ自体の説明を探しているのではなく、失敗の調査に触発された、または直接関連した調査という点での、バグの歴史的な影響の説明を探しています。たとえば、このペーパーでは次のように結論しています。
静的分析を使用して、次のことを行いました。
- 変数の初期化を確認し、
- シェア変数の潜在的なデータアクセス競合の完全なリストを提供します。
- Adaセマンティクスから潜在的な実行時エラーを徹底的にリストします。
私たちの知る限り、これはブールベースおよび非ブールベースの静的解析手法を使用して産業用プログラムを検証するのは初めてです。
同様に、この論文(pdf)は次のように述べています
Ariane 5ランチャーとARDの組み込みADAソフトウェアの静的分析には、抽象解釈ベースの静的プログラム分析が使用されています。静的プログラムアナライザーは、スカラーや浮動小数点のオーバーフロー、配列のインデックスエラー、ゼロによる除算や関連する算術例外、初期化されていない変数、データ競合などのランタイムエラーの確定性、可能性、不可能性またはアクセス不能性の自動検出を目的としていますアナライザーは、Ariane 501フライトエラーを自動的に検出できました。組み込みの安全性クリティカルソフトウェア(航空電子工学ソフトウェアなど)の静的分析は非常に有望です。
この単一のイベントがソフトウェアテストのアプローチとツールに与えた影響を徹底的に説明したいと思います。
1 70億ドルという数字は、おそらくAriane 5プロジェクトの総コストを参照していると、ウィキペディアは、失敗により3億7000万ドル以上の損失が発生したと報告しています。それでもかなり高価な失敗ですが、70億ドルという数字にはほど遠いものです。