Sunday 10 February 2008

ソフトウェアの信頼性が低いのは...



先週のNHKのクローズアップ現代とかでもそういうのをやってました。



    2月5日(火)放送

    ソフトウエア危機

    〜誤作動相次ぐハイテク製品〜

    http://www.nhk.or.jp/gendai/kiroku2008/0802fs.html



例の日本信号の自動改札機のトラブルの話(http://www.itmedia.co.jp/news/articles/0710/12/news117.html)を詳しくやってました。memcpyでデータを書き込む時のoffsetを一ヶ所書き忘れたので、データが境界に来た時に停止信号を出してしまうってなバグだったらしい。いわゆる Segmentation Fault だね。どうも、個々の自動改札機は発売された定期券の無効情報を個別に覚えているらしい。プログラム言語はCでした。その後の検証に100人2ヵ月かけて10億円以上かかったそうです。



と思ったら、富士通/東証が相変わらずとらぶってるし。



    http://itpro.nikkeibp.co.jp/article/NEWS/20080208/293321/



クローズアップ現代では、NHKとゲストの西康晴氏の意向なんだろうけど、ソフトウェア技術者の労働環境とか雇用関係とかにスポットを当てていたけど、そういう問題なのかな。ソフトウェアは巨大で複雑だからトラブルは仕方がないという逃げ方もあるけどさ。少なくとも、もっとテスト/検証に金を出すべきなんじゃないの? トラブルが起きる前にさ。



検証関係だと、メモリアクセスに関する検証技術は最近のホットトピックで、実用的な技術も結構あります。まぁ、それが数十万行の実際のソースに適用できるかどうかは別なんだが。この手の技術は、NECの研究所は良くやっていて、実際の携帯電話とかに適用しているらしい。



    http://www.nec.co.jp/techrep/ja/journal/g07/n02/070214.html



ただ、だからNECの携帯の信頼性が高いかっていうと、そうでもないんだが...



offset計算しながらmemcpyじゃぁ、そういうバグも出るだろって感じもあって、ソフトウェアの設計段階から、テストと検証を意識したものを作らないとダメだと思う。ってことは、大学でそういうものを中心に教育するべきだろってことでもあるね。



番組では紙に印刷したソースを机の上に積み上げるみたいなことしてましたが、印刷してチェックなんてしないです。日本信号がそれをしてたら、それがバグの原因の一つだと思う。

No comments: