組み込みソフト開発に求められる品質と信頼性
(長時間の運用・高い信頼性・安全性)
組み込みソフトは、自動車のブレーキや電子レンジの温度制御、医療機器の動作管理などを常時コントロールしています。
そのためスマートフォンアプリやパソコンソフトとは異なり、調子が悪くなったからといって安易に再起動できません。なぜなら機器の一部として稼働している組み込みソフトが止まったりすれば、機器そのものが停止して大きな問題を引き起こしかねないからです。
したがって組み込みソフトの開発に際しては、多機能性や処理速度以上に品質と信頼性が重視されます。
特に重要なのが「長時間の運用」「高い信頼性」「安全性」の3点です。
- 組み込みソフトウェアの最重要要件|なぜ「長時間の連続稼働」が求められるのか?
- 組み込みソフトウェアの「高い信頼性」とは?|故障を前提とした設計思想
- 組み込みソフトウェアの安全性とは|故障しても安全な「フェイルセーフ」思想
- 組み込みソフトに妥協は許されない
組み込みソフトウェアの最重要要件|なぜ「長時間の連続稼働」が求められるのか?
組み込みソフトに求められる第一の要件が「長時間にわたり連続運用できる」ことです。組み込みソフトは数年から長い場合には10年以上にわたって、再起動などせずに動き続ける前提で設計されています。水道・電力設備などのインフラはもとより、工場の生産ラインや医療機器などでは「止めて直す」こと自体が、基本的に許されないからです。動作がおかしくなったからといって、PCソフトのように再起動するわけにはいかないのが組み込みソフトです。
そのため、作動中にはほんのわずかなムダやズレも基本的には許されません。なぜなら、たとえわずかなムダとはいえ、それらが長い時間の中で積み重なっていくと、致命的な障害につながるリスクを避けられないからです。その一例が、プログラムにおけるメモリリークと言われる現象です。1日程度では何の問題もなくとも、数年単位でシステムを動かし続けているうちにメモリがいっぱいになり、ある日突然停止する原因となります。
したがって、現時点で正しく動いているだけでは、合格とはいえないのが組み込みソフト開発の難しさです。開発時に求められるのは、何年経っても同じように正しく動き続けられるかを設計およびテストにより見極める視点です。長時間動作させて異常がないか確認したり、問題になりやすい点を見極めてテストする必要があります。たとえるなら短距離走ではなく、ウルトラマラソンを走り切るレベルの持久力が欠かせません。
組み込みソフトウェアの「高い信頼性」とは?|故障を前提とした設計思想
長期間の連続運用を支えるためには「高い信頼性」が欠かせません。ただし組み込みソフトにおける高い信頼性とは、いわゆる高機能や高性能とは異なる概念です。求められるのは、想定された条件のもとで、予測不能な振る舞いを一切起こさず、安定して動き続ける能力です。
とはいえ実際に使われる環境においては、電圧変動などさまざまなノイズの発生や部品の劣化、あるいは想定外の操作によるトラブルなどが避けられません。仮にそのような環境変化が起きた場合でも、組み込みソフトには常に安定した正しい動作が求められます。環境変化などへの対策のため組み込みソフトには、仮にセンサから異常な入力があった場合や、あり得ない計算結果が出たなどの異常事態を事前に考え得る限り想定し、それらに適切に対処する仕組みが組み込まれています。
さらにプログラムが何らかの理由で停止した場合に備えて、「ウォッチドッグタイマー(番犬)」と呼ばれる監視機構も備えられています。これはソフトウェアの作動状況を常にチェックし、何らかの異常が起きた場合に自動的に復旧もしくは再起動する仕組みです。その際に重要なのは、復旧には人が一切かかわらなくとも、システムが自律的に立て直す仕組みです。
大切なのは、故障を完全にゼロに抑えようとするのではなく、故障が起きたときに制御不能とならないための備えです。現実問題として、何らかの不具合は必ず発生します。その際に最悪の事態に発展しないよう抑える仕組みが、高い信頼性の支えとなります。
組み込みソフトウェアの安全性とは|故障しても安全な「フェイルセーフ」思想
信頼性の延長線上に位置づけられるのが「安全性」です。信頼性が目指すのが壊れにくさであるのに対して、安全性が目指すのは、万が一壊れたとしても人や設備に危害を与えない「フェイルセーフ(Fail Safe)」すなわち「故障しても安全であること」です。
フェイルセーフ(fail safe)
設備の故障や操作ミスが起きた時、危険な状態になる前に安全を優先し、設備やシステムを停止する考え方
例:運転中に作業者がゲート(ガード)を開いたので設備が停止
踏切の遮断機や自動車のブレーキ制御に関わる組み込みソフトに何らかの異常が起きた場合、絶対に避けなければならないのが危険な状態のまま放置することです。したがって異常を検知したらただちに動作を制限したり、安全な状態で停止させたりするように設計されます。遮断器の場合なら異常を検知した時点で、重力により遮断機を降ろしてしまうよう設計されます。
補助的な機能で何らかのトラブルが起きた場合でも、重要な制御部分には影響を及ぼさないようにする仕組みを組み込んでおくのです。
組み込みソフトに妥協は許されない
組み込みソフトに何らかの問題が発生すると、深刻な問題につながるリスクがあります。社会インフラの停止は最悪の場合、人命に危害を及ぼす恐れがあり、企業の信用も失墜してしまいます。そのような問題を避けるために、設計においては細心の注意が払われるのはもとより、開発段階では徹底的なテストと検証を繰り返して、高い品質基準を保つよう努められるのです。
電子レンジを使うときに火事を心配する必要がなく、クルマを運転しているときにはブレーキを踏むと必ず停止できると安心できるのは、組み込みソフトのおかげです。長時間の運用、高い信頼性、最悪の場合でも人を守ってくれる安全性を満たすように組み込みソフトは作り込まれています。
組み込みソフトにおける品質とは、決して便利さや新しさだけを追究するものではありません。信頼性を支えるため何よりも重視されるのが「長時間、当たり前に動き続ける」確かな品質です。

