ソフトウェアの安全性を考える

日経ものづくり2010年8月号に、プリウスのブレーキ制御の問題を取り上げた「ソフトが揺さぶる製品安全」という記事が載っていた。プリウスの問題については既に様々な媒体で取り上げられているけれど、原因を簡単に言ってしまえば仕様と検証の漏れという点だろう。記事では、システム構成の変更をソフトウェアの改変で対応させたものの、その時に安全性が損なわれてしまった状況が説明されている。決してメジャーとは言えない機能において、不具合の種が残ったままになってしまったのだ。

プリウスで不具合が起きるのは、主に滑りやすい路面上で機能するアンチロック・ブレーキ・システム(ABS)が動作した場合だ。こうした使用頻度の低い機能では制御に関する仕様の詰めや検証が甘くなりがちで、不具合が残りやすい。ソフトで実現する機能が大幅に増えたために、それぞれの機能について安全を作り込むのが難しくなってきており、そのしわ寄せがABSのような機能に向いているのだ。

ソフトが揺さぶる製品安全 | 日経 xTECH(クロステック)

もちろん、このような指摘は結果論だから言えることであって、作り手の開発者としては「まさか、そんな問題が起こるなんて」というのが本音のところだろう。ソフトウェアのバグというものは、実際のところそんなところで起こるものなのだ。誰も気がつかないところに潜んでいる問題に対してどのように対処したらよいのか?バグを無くすという取り組みは確かに重要だが、ソフトウェア開発に少しでも関わる人なら明らかなように「バグの無いソフトは存在しない」のが現実だ。

記事では、製品に占めるソフトの割合が増えるにつれて、日本のモノ作りの「アキレス腱」になってきている現状を指摘した上で、個別最適化から全体最適化への発想の転換を促している。すなわち、個々の構成要素の信頼性を高めることで安全性を確保する(フォールト・アボイダンス)の考え方から、構成要素が故障しても必ず安全側に落ち着く設計(フェイルセーフ)や、冗長化や多重化等の別手段によって機能を維持する設計(フォールト・トレランス)への変換が必要になってくるのだ。人海戦術でバグを潰して満足するような日本型開発の限界が見えてきている以上、開発の方向性も変えていく必要がある。実際、欧米では既にそのような考え方が広まっているようだ。

「日本では、各構成要素で最善を尽くしていいものを造るという考え方が強い。一方、欧米では構成要素の優劣は気にせず、システム全体で最良になることを目指す。システムを設計する『システム・エンジニアリング』の発想が浸透している」

ソフトが揺さぶる製品安全 | 日経 xTECH(クロステック)

そのような開発体制に持って行くにしても、現実には全体を見られる適切な人材がいないとか問題は山積み状態だけど、記事では「システム的な思考を身に付けるカギ」としてシステム内の粒度に対応して視点を変える考え方が紹介されている。開発経験の少ない人だとどうしても視野の狭い対応しかできないことが多いけど、そんなところへ本質的には直接関係しない周辺技術の知識を持っているベテランが出てくると、意外に上手く解決出来ることがある。システム全体の最適化には、そんな「すきまを埋める技術者」が必要になってくるのだ。

100点か0点という視点でしか問題を分析出来ない新聞等の論評とは一線を画す内容で、今回の記事は貴重な存在だ。ブレーキ・システムは作っていなくても、ソフトウェア開発者なら読んでおいた方が良いと思う。これからはソフトウェアの安全性が一層深刻な問題になってくる時代だ。プリウスの事例は、まだその序章に過ぎないと思っている。



関連