[WSJ] あわや墜落のケースも――航空機にもあるソフトのバグ (1/3)
http://www.itmedia.co.jp/news/articles/0606/09/news006.html
まあ、所詮は人のつくるものやからね~・・・ですまされないのが、こうした公共性の高い輸送機関でしょう。コンピュータを知らない人ほど「コンピュータは完全であり、かならず指示した通りに動作する」と思い込んでいるようです。その根拠はおそらく、コンピュータがあまりに理論的にであるからなんでしょうけどね。
しかし、中学ぐらいの数学でならうことのひとつに「1+1=2」はそれを満たす条件のなかでしか正確ではない。というのを習った人もおおいでしょう。複素数や、平方根、ベクトルなどをならうころに教わっているとおもいます。コンピュータも当然ながら正常に動作する条件が決まっており、その中では確かに正常に計算し動作するでしょう。ただあまりに精密になりすぎているため温度などの動作環境で実際には誤差がでるなど、多種多様な動作条件下においてということになるのが実際だとおもいます。
今回はプログラムのミスだということだどうですが、似た様な話しに某交通機関のブレーキシステムの下請けメーカーの人から聞いた話を思い出しました。そのブレーキシステムは正常動作を行うためには少なくとも現在の速度が一定時間内にきちんと正常に受信できなければ、ブレーキが正常に動作できないというのにもかかわらず、ブレーキシステムに信号を送るためのセンサー系部品がブレーキシステムに信号を規定時間内に送信せず、ブレーキシステムは予測値で動作するように設計しなければならなかったという話しです。さらにブレーキシステムのためのCPU自身かメモリーに発見されていない不具合があるらしく、アセンブラでくまれたソースなのですが、アセンブル後のアドレッシングの位置によって正常に割り込み処理が行われていない不具合まであったと聞きました。
確かに通常条件であれば予測値でもそれなりにきちんと動作するでしょう。最終的に人間が操作しているわけですから、乗客にそれとしれずにきちんと運行も通常はできるでしょう。しかし、なんらかの予想外のトラブルが複数重なった場合、大事故にもつながりかねないおおきなミスなわけです。
私もコンピュータ技術そのものに関わり、特にプログラミング領域は現在の専門ですが、自分自身のバグやプログラムテキニック上の条件は把握していても、他人の作成したプログラムやハードの仕様とバグまで完全に把握しきれるはずもないわけです。昨今、オープンソースなどと複数の人がみれて関われる環境がもてはやされていますが「オープンソース=安全」という「神話」は私ははじめから信じていませんでした。もちろん企業のプロプライエタリなものが安全といいきれないのもほぼ事実でしょう。セキュリティソフト系メーカーまでが不具合でセキュリティホールあけてしまうこともあるわけですから。
安全なプログラムは理論上も安全に動作するべく、厳格な規定の上に設計し、その規定が守られているか、入力されるデータや出力されるデータが確実に規格内におさまっているかなどしっかり調査したうえで・・・それでもまだ予想外のがでてくるのが、今の現実でしょう。
まあ家庭用のプログラムとかだと、24時間365日無停止なミッションクリティカルな仕事はまずない現在ですが、交通機関とか公共施設においては「ささいなミスが重大事故」につながる場合もあるわけで、そうしたところに従事している方は責任の重みで大変でしょうが、がんばってほしいものです(;´Д`)