2014-02-16

フィールドでソフトウェアの不具合が発生したら粛々とリコールをするべし

トヨタが2月12日にプリウスを世界で約190万台、ハイブリッドシステムを制御するプログラムに不具合があるということでリコールを発表した。

【Tech On!  「プリウス約190万台をリコール、昇圧回路の素子に想定外の熱応力」より引用】
トヨタ自動車は、2009年5月から販売を始めた3代目プリウス(ZVW30)約190万台をリコールすることを明らかにした。2009年3月から2014年2月までに生産したもので、日本市場向けの約100万台、海外市場向けの約90万台が対象になるという。 
 トヨタ自動車の説明によれば、プリウスのハイブリッドシステムにおいて、制御ソフトが不適切なため、加速時などの高負荷走行時に昇圧回路の素子に想定外の熱応力が加わる恐れがあるという。このとき素子が損傷し、警告灯が点灯して「フェールセーフのモータ走行」になってしまう。加えて、素子損傷時にノイズが発生すると、ハイブリッドシステムが停止し、走行不能になる可能性もあるという。なお、損傷する恐れがある素子の具体的な内容については現時点で明らかにしていない。
 実際に前述の警告灯が点灯したことが市場から報告されたことがきっかけで、今回の不具合の発覚につながったという。トヨタ自動車によれば、事故などは起きていない。
 改善策として、全車両の制御ソフトを修正する予定。制御ソフト修正後に素子が損傷して警告灯が点灯した場合は、電力変換器(DC-ACインバーター)のモジュールを無償交換するとしている。
【引用終わり】

詳しい原因は発表されていないのでよく分からないが、ハイブリッドシステムの制御ソフトに問題があったようだ。制御ソフトを修正することで現象は発生しいなくなる。

リコールを起こさないソフトウェアのつくり方』というタイトルの本を執筆しておきながら、こんなことを言うのもなんだが、極度に複雑化したソフトウェアでリコールを完全に防ぐことはできない。

だから現代のソフトウェア製品では、まず、人の死に至るような不具合が発生しないようなリスクコントロール対策を施す。

そして、それでも発生してしまった不具合に対しては、粛々とリコールを行い、再発防止策を実施する。マスコミが騒ぎ立てるのはしようがないが、組織内部、関係部署が浮き足だってはいけない。

上記の記事によると、加速時などの高負荷走行時に昇圧回路の素子に想定外の熱応力が加わって素子が損傷したときに、警告灯が点灯して「フェールセーフのモータ走行」になると書いてある。

問題が起きたときにフェールセーフのリスクコントロール対策が働くことで、大きな事故につながらないような設計がされていた。これが重要なのだ。

ISO 26262 でソフトウェアの開発プロセスのことしか指摘できないコンサルタントやISO 26262の認証を取ることにしか価値を見いだせない認証会社には理解が難しいかもしれない。

大事なのは大事故にならないリスクコントロール対策として何をすればよいのかということだ。その対策はソフトでもメカでもエレキでもいい。方法は問わない。

ただし、ソフトウェアに特徴的な問題点はあるので、そこに配慮が必要だ。ソフトウェアは複雑になればなるほど、内在する不具合を見つけるのが難しくなる。

よく考えもせずに追加・修正を繰り返した10万行クラスのソフトウェアが完全であることなど証明できない。だから、安全を実現するためのアーキテクチャが重要であり、最初に考えたアーキテクチャが崩れていないことを確認しながらソフトウェアを修正していかなければいけない。

プリウスのハイブリッド制御システムは、これまでの公になっている情報から想像するに複雑過ぎるように感じる。燃費を極限まで高めるために、ソフトウェアアーキテクチャがが犠牲になったような気がする。

どこかの時点でアーキテクチャを綺麗にしないと、ソフトウェアの変更によってデグレードが発生する危険性が高まると思う。

このことは前々からこのブログで書いているように「フォールト アボイダンス」の個別最適を追求するのは無理であり、「フェールセーフ」「フォールトトレランス」「ユーザビリティエンジニアリング」などで全体最適によって安全を確保しなければいけないということだ。

この話は SESSAMEの e-Learning コンテンツ「ソフトウェア安全分析・設計」で詳しく解説しているのでそれを是非参考にして欲しい。

あと何年かすると自動車もネットワーク経由でファームウェアをアップデートするような日がくるのだろう。ただ、それが出来てしまうとソフトウェアはアップデートすればいいんだという考え方がはびこるのが怖い。付け足しによるソフトウェア改変が多くなればなるほど、安全アーキテクチャは崩れる危険性が高いからだ。また、セキュリティ面での対策を施さないと自動車をハッキングしてやろうという輩が出てくるだろう。

ソフトウェアエンジニアにとっては受難の時代だが、すっきりしたアーキテクチャを設計・維持できる技術者が高評価を得られる時代になってきたとも言える。