勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

「5億ドル?!を吹っ飛ばした、たった1つのバグ!」について調べた

久しぶりのブログ更新。書籍「ZERO BUGS シリコンバレープログラマの教え」を読み終えた。この本の中で紹介されている歴史的なソフトウェア障害が気になったのでいろいろ自分で調べてみたメモ。トラブル好きなもので。


アリアン5型ロケット爆発事故(1996年、European Space Agency)

失敗事例 > アリアン5型ロケットが制御不能で40秒後に爆発
失敗百選-アリアン5型ロケット爆発事故
アリアン5 - Wikipedia
https://wired.jp/2005/11/16/%E3%80%8C%E5%8F%B2%E4%B8%8A%E6%9C%80%E6%82%AA%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%90%E3%82%B0%E3%80%8D%E3%83%AF%E3%83%BC%E3%82%B9%E3%83%8810%E3%82%92%E7%B4%B9%E4%BB-2/

ZERO BUGS日本語版の表紙のアオリ文句「5億ドル?!を吹っ飛ばした、たった1つのバグ!」のトラブル事例である。被害額は訳者の調べであり原著者は文中で言及しているわけではない。5億ドルは吹っ飛んだロケット+ペイロードの総額であり、開発費用はっと大きかったという話もあるようだ。なお書籍には実際のコードも掲載されていて興味深い。

もちろんコードに問題があったことは確かなのだけど、調べてみるとこのトラブルはプロジェクトマネジメントと品質管理の問題のように見える。トラブルのアウトラインは以下の通り。

  • 飛行コンピューターでオーバーフローが発生し、最終的にロケットが発射直後に爆発した。
  • この飛行コンピューターのコードを一世代前のロケットから引き継いでおり、新規に開発したものではない。
  • 新型ロケットでは加速度が旧型より増加しており、結果として計算処理でオーバーフローとなった。要は前提が変わっていることが見過ごされた。
  • 飛行コンピューターは稼働実績ありという理由で詳細なテストは行われなかった。

合掌(チーン)。

ちなみにWikipediaの記事ではこの失敗が

1996年6月4日に行われたアリアン5の最初の飛行は、コンピュータプログラムの異常で打ち上げ37秒後に爆発し、失敗に終わった。これは歴史上でも最も高くついたバグの1つであり、後に64ビットの浮動小数点数を16ビットの整数に変換する過程でエラーが生じたと判明した。

と書かれているのだけど、この記載(下線部)はあやしい。英語版記事を元に書かれたものだと思うけど、
Cluster (spacecraft) - Wikipedia

The failure has become known as one of the most infamous and expensive software bugs in history.[1] The failure resulted in a loss of more than US$370 million.[2]

英語版記事の情報源[1]がそもそも1996年のエッセイなのである。

被害額も記事によってまちまちなので注意したほうがよさそう。