安全アーキテクチャの可視化
ソフトウェアの安全設計で一番大事なのは、「安全ソフトウェアが、ソフトウェアシステムの中で、どのようなメカニズムで機能を発揮するのか」を可視化することです。そして、ソフトウェアエンジニアが可視化した安全ソフトウェアの動きや他のソフトウェアとの独立性を説明し、「安全ソフトウェアが、設計コンセプトの通りに動作するか」「設計に漏れや抜けはないか」を検証する必要があります。このときに、アイソレーションやシンプルデザインができていない場合は、安全が確保できているかどうかが怪しいということになります。安全ソフトウェアのアイソレーションやシンプルデザインが説明できないために、独立したハードウェアの安全装置を設けたり、メインCPUとは別のサブCPUに安全ソフトウェアを組み込むことはできますが、全体としては安全を担うソフトウェアが複雑で多岐に分散することになるため、リスクがなくなったことを示す労力はそれまで以上にかかることになります。
一般的な組込み機器のように、安全確保のために使える時間やコストに限りがある場合では、中身がよく見えないソフトウェアシステムの外側に安易に安全装置を付け足すのではなく、安全ソフトウェアを他のソフトウェアからアイソレーションし、危険を制御するソフトウェアの構造、動作のメカニズムを極力シンプルにして、検証と妥当性確認をしやすくすることが大事です。
図1や図2を見れば分かるようにプログラムのソースコードレベルで安全ソフトウェアのアイソレーションとシンプルデザインを示すのは至難の業です。仮にこのプログラムを作った設計者から納得のいく説明があったとしても、その設計者以外では安全ソフトウェアのアイソレーションとシンプルデザインの根拠を説明できないでしょう。これは、ソースコードよりも上位層の設計図が安全ソフトウェアを実装した技術者の頭の中だけにしか存在しないからです。