2006-09-10

組込みソフトの安全性

今 、組込みソフトを搭載した組込み機器は世の中にあふれている。携帯電話、FAX、エアコン、TV、リモコン、ミニコンポ、プリンタ、エレベータ、自動車、信号機、自動ドア、電子レジスタ、医療機器、鉄道、飛行機などなど。

そして、組込みソフトが原因となって社会問題に発展するような事故も少なからず起きている。

今回は、組込みソフトの安全性について、『組込みソフトエンジニアを極める』のプロローグの一節から考えてみたい。

【『組込みソフトエンジニアを極める』-プロローグ-より引用】

組込みソフトエンジニアがハードルや壁を乗り越えゴールに到達するまでには、高いモチベーション(動機付け)が必要です。では、組込みソフトエンジニアは試練を乗り越えて技術を高めるためのモチベーションをどこに求めればよいのでしょうか。

ひとつは、常に追いつめられながらギリギリの状態で仕事に取り組まなければならない悪循環から抜けだし、開発効率を高め余裕を持ってクリエイティブな気持ちで仕事に臨めるようになるため、そして、もう一つは魅力的な製品を開発し、ユーザーに信頼を持って快適に使ってもらい次回も自分たちの製品を選んでもらえる自信が持てるようになるため、この2つ理想が試練を乗り越えるためのモチベーションの源泉になります。

組込みソフトウェアは単に組込み機器の中で動くソフトウェアという意味ではありません。組込み機器は、さまざまな形状の外観を持ち、さまざまなユーザーインターフェースで人々の生活の中に入り込み、生活の表舞台に、あるいは、生活を支える裏方として役に立っています。組込みソフトウェアは、その心臓部であり、コントローラです。そして、組込みソフトエンジニアには自分たちが作ったソフトウェアが組込み製品の中で重要な役割を果たしているという喜びと満足感があります。

しかし、その喜びや満足感の後ろには大きな責任もあります。組込み機器が私たちの人間の身近にあって役に立っているということは、一歩間違えば組込み機器は人間を傷づける凶器にもなりかねないということです。特に組込みソフトウェアは中部の構造が見えにくいにも関わらず、設計の自由度が高いため、設計者の意図に反して社会的な問題を起こしてしまうことも残念ながらあります。

私たちは、ものつくりの喜びを感じながらも、自らの技術を磨き、組込み機器を使ってもらうエンドユーザーの満足を満たしつつ、安全で信頼性の高い組込みソフトウェアを世に送り出す義務を背負っています。

組込みソフトエンジニアは、目的を達成するための技術を磨き極めることで、仲間と創造の喜びを分かち合うことができ、便利なだけでなく安心して使える魅力的な組込み機器を世に送り出すことが可能となり、社会と組織への責任を果たすことができるのです。

日本の組込みソフトエンジニアを取り巻く環境を振り返ると、組込みソフトプロジェクトでは、技術者のぎりぎりのがんばりで増加した要求や計画された製品のリリース期限をこなしているという現状があります。場合によっては、プロジェクトに新しい人を投入することで解決しようとする組織もあるでしょう。

しかし、安直な増員はかえって技術者の負担を増加させることになり悪循環からなかなか抜け出すことはできません。組込みソフトエンジニアは技術を磨き極めることでのみ、悪循環を脱し、好循環の世界に突き抜けることができるのです。好循環の世界に入ることができれば、高い品質の組込みソフトウェアを効率よく開発することが可能となり、今リリースしている製品よりももっと顧客満足を高めることのできる商品を作り出すことができます。効率化によってできた余裕でオリジナリティの高いアイディアを考え、新しいキーデバイスの導入をハードウェア技術者と検討することも可能になります。

組込みソフトエンジニアを極める目的は、ものつくりの喜びを分かち合い、生活を豊かにし安心して使える商品を世に送り出し、商品をより競争力の高いものに引き上げ競合他社に打ち勝つことにあるのです。そこに至るまでの道のりは長く、途中にはハードルや壁が横たわっています。私たち組込みソフトエンジニアは、到達すべきゴールから目を離すことなく技術を極めることでハードルと壁を乗り越え、悪循環から好循環への境界を突破できるのです。

【引用終わり】

組込みソフトエンジニアは組込み機器を世に送りだし、自分が作った機器が社会の中で役立っているという喜びや満足感を得ることができる、しかし、その喜びや満足感の後ろには大きな責任もあると書いた。

組込み機器が私たちの人間の身近にあって役に立っているということは、一歩間違えば組込み機器は人間を 傷づける凶器にもなりかねない。

組込みソフトはハードウェアを制御することができるが、ハードウェアが扱うエネルギーの大きさを考慮せずに設計することもできてしまう。

CPUに接続されているポートを ON/OFF するだけで、巨大なクレーンのアームを動かしたり、エレベータを昇降させることができる。

組込み機器に搭載するソフトウェアの規模が小さいときは、組込みソフトエンジニアはプログラムを書きながら組込み機器の動きを想像することができた。しかし、ソフトウェアの規模が10万行を越えて100万行クラスになってくると、今作っているソフトウェアモジュールがシステム全体の中でどのような役割を担っているのか、どのような優先度で動いているのか分からなくなったりすることがある。

特に、システムの一部をオフショアに出したりすると、一部の機能を任されたプログラマ達は、システムがどのようなエネルギーを扱うのか分からないまま、現在ある情報だけでソフトウェアを作ることになる。

規模の大きいソフトウェアの信頼性を高め安全性を高める方法はあるが、唯一の解決策、ゴールドスタンダードはない。

ソフトウェア開発のプロセスを定義し、プロセスのインプットとアウトプットを Verification(検証)し、不整合なないことを確認する。また、設計の努力によって不具合の作り込みを減らし、テストやレビューなどによって、不具合を摘出する。そして、作り上げた組込みソフトウェアと組み込み機器がユーザーニーズに合致しているかどうかを Validation(妥当性確認)する。

また、想定されるリスクを防止、軽減するためにどんな対策をすればよいか考え、その対策を確実に実施したことを確認し、過去に起こした不具合の再発を防止するための対策を追加し、他の機器で起こった問題が自分たちの機器にも起こりえないかどうかを分析する。

不具合の発生件数をトレースしたり、継続的な技術者教育を行うことも大事だ。

いろいろなアクティビティはあるのだが、ひとつ言えることは、自分たちがリリースする機器が社会の中で安全に働いて欲しいという強い思いと、安全な作品をリリースしているという自覚と、裏付けのある自信がなければダメだ。

組込みソフトウェアの規模が小さいときは、製品の開発に関わるソフトウェアエンジニアのすべてが自分の作ったソフトウェアにそのような自覚を持っていた。

しかし、規模の大きくなってしまった現在では、組込み機器を組込みソフトを安全で信頼できるものにしたいという自覚を持った技術者がシステム全体の安全性や信頼性の実現を確認していかなければいけない。

組込みソフトの安全性の確保、妥当性の確認には終わりはないのだが、組込み製品が抱えるリスクの大きさによって、その努力はより慎重により深く実施されなければいけない。

組込みソフトエンジニアのモチベーションの源泉である “自分が作ったものがユーザー個人や社会に役立っているという喜び” が、その思いとは裏腹に人を傷つけ、社会問題を起こさないようにためには、自分たちが作るソフトウェアの安全性や信頼性を高めるための設計技術・検証技術を獲得し実践するしかないのである。

2 件のコメント:

匿名 さんのコメント...

こちらには始めてコメントします。

>社会問題を起こさないようにためには、自分たち
>が作るソフトウェアの安全性や信頼性を高めるための
>設計技術・検証技術を獲得し実践するしかないのである。

たしかにその通りだと思います。現実はほど遠いのですが。市販製品などでは特に、製品サイクルがどんどんと早まっていくなかで開発者ももっとしっかり設計したいし、検証したいし、テストもしたいと思ってはいるのですが、いかんせん時間が無いという現場は多いのではないかと思います。分かっているけれど、大きな流れには逆らえないというか…。商品戦略上、頻繁に仕様変更が入るような場合もありますし、設計・検証技術だけでは限界があるかもしれません。

組込系システムは業務アプリ系と比べて設計技法、検証技法、テスト技法についての話題が盛り上がっていないように感じます。それにもかかわらず、システムの複雑さは組込系のほうがはるかに急カーブで上がっていると思います。このままではいつか破綻するでしょう…そうなってからでは遅いのですが、みんな薄々気づきながらも手を打てずにいるというところだと思います。

もう一つはエントリの中でも触れられていましたが、規模が大きいシステムでは自分の担当部分がシステム全体にどのような影響を与えるのかがピンと来ないことです。テスト段階になってから、今まで聞いたことも無い割り込みと競合してしまい、誤動作してしまうということもあり得ます。

また、自分一人くらいきっちりとしたコードを書かなくてもなんとかなるだろう、という考えを持ってしまう可能性もあります。そのあたりは周りのメンバーがレビューなどで潰していかなくてはいけないのですが…。

どこからどう手を付けていけばいいのか、大きな問題です。

sakai さんのコメント...

ブログ管理者のさかいです

組込みソフトウェア工房へ初めて投稿していただいたにもかかわらず、コメントの承認の方法がわからず公開が半月も遅れてしまい申し訳ありませんでした。

組込みソフトの安全性や信頼性の話はこれからも本ブログで継続的に考えていきたいと思います。