河野真治 @ 琉球大学情報工学です。

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

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

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科