2009-11-08

ソフトウェアが凶器となる日

しばらく前のクローズアップ現代で車が電気自動車になると小さい会社でも簡単に車を作れるようになると言っていた。(10月28日放送 “自動車”激変 現場で何が。スタジオゲスト :宮内 洋宜:日本総合研究所創発戦略センター研究員)

「簡単に」というのはどうかと思うが、少なくとも新規参入がまったく不可能、設計、製造の実績がなければ相当ハードルが高いという状況ではなくなるようである。

素人考えで想像するに、複雑なエンジン制御がいらなくなり、バッテリとモーター、制動機能とボディと、ソフトウェアがあれば取りあえず動くものが作れるような気がする。ようするに、個々の部品を部品メーカーから調達してつなげ、それらをコントロールするソフトウェアを作れば、車が作れる時代がくるのだ。

クリティカルソフトウェアの開発に携わっている自分としては、この予想される未来に大いなる危険を感じている。なぜなら、そのドメインに長く関わっていない組織が作る、もしくは機器がどんな使われ方をするのかよく知らない外部協力会社に発注したソフトウェアが凶器になる可能性があるからだ。

我々は日々ソフトウェアが制御する機器に囲まれて暮らしている。それらのソフトウェアがまともだからこそ安心して生活することができる。映画ではロボットが突然人間に反旗を翻すシーンがよくあるが、現実には潜在的に埋め込まれていたバグが複雑な条件がそろったことで発現して利用者を危険にさらすことはある。プログラマが悪意を持って不具合を埋め込んだのではなく、未熟な技術者が作ったソフトウェアが意図せずに暴走したか、もしくは熟達した技術者達のが作成したサブシステムを結合したときにシステム全体としては思いも寄らなかった問題が発生するのだ。

大きなエネルギーを扱う機器を作っている組織やエンジニアは、その機器が危ないことを知っており、仮にそこにバグが残留していたとしても、ユーザーリスクが許容できるレベルに抑えるようなソフトウェアのつくりかたをする。例えば、モーターの駆動制御が暴走してコントロールが効かなくなったときに、制動の命令が指示されたら、駆動系の制御を切り離して制動が最優先に動くようなシステムを作る。

モーターチームと制動チームがそれぞれ完璧な仕事をしても、それらを結合したときにどんなユーザーリスクがあるのかを考える分析者がいて、リスクをコントロールする手段を実装しないと、その車は危ない。

安全を確保するには、危険とその危険をコントロール手段の実装を組織が分析してシステマティックにやる方法と、一人一人のエンジニアがエンドユーザーの使用状況を思い浮かべながら品質を作り込む方法と両方がある。

電気自動車の製造に新規参入する人たちはそのどちらのノウハウも持っていない可能性がある。これは間違いなく危ない。ソフトウェアが凶器になる可能性がある。

しかも、事故が起こってもソフトウェアが原因だった場合、どこに問題があったのかを調査するのが難しいし再発防止策を立てるのが簡単ではない。

このような状況にならないようにするための教科書として最初に読むべきは、『セーフウェア 安全・安心なシステムとソフトウェアを目指して』である。この本には、過去にソフトウェアが原因で起こった事故がなぜ起こったのか、どうすれば再発防止できるのかについて書かれている。

この本については『組込みソフトウェアの安全設計』の記事を参照して欲しい。つい最近、原書である Safeware の邦訳本が翔泳社から出版された。本の内容についてはまた後日このブログで掘り下げていきたいと思う。

自分のソフトウェアが搭載されている機器の制御がおかしくなると利用者に危険がある場合、あなたが作ったソフトウェアはいずれ凶器になる日がくる。だから、そうならないための技術を身につける責務があなたにはあるのだ。
 

0 件のコメント: