ソフトウェアの信頼性が低いのは...
河野真治 @ 琉球大学情報工学です。
先週の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
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735