19.機能安全と組込み制御ソフトウェア

シミュレーション

 機能安全に対応する「組込み制御ソフトウェア」には、高い品質が求められます。その「組込み制御ソフトウェア」の品質を高める工夫については、既にこれまでの章で説明してきましたが、それらは、機能安全を目的とした機能の実現においても、十分活かせるものです。

「組込み制御ソフトウェア」を、要求仕様と、それを実現するための設計とコード化されたプログラム部分に分けると、後ろの部分については、作成したプログラムが、機能安全のための要求仕様通りに動作することを、確認すれば良いことになります。大規模で複雑な「組込み制御ソフトウェア」については、必ずしも簡単では無いでしょうが、これまでの章で取り上げた工夫により、実現することは可能でしょう。一方で、前の部分である、機能安全を実現するための、要求仕様の定義は、一筋縄ではいかないでしょう。

 まず、そもそもどのような要求仕様が、機能安全を満たすのか、について検討する必要あります。そのために、机上検討だけでは足りずに、システムを試作することもあるでしょう。また、試作の回数を減らすために、シミュレーションも活用した方が良いかもしれません。高いコンピュータの性能を活かして、リアルな3Dグラフィックスを使い、システムの動きを可視化する工夫も有効です。また、コンピュータの演算負荷を削減し、かつ、評価項目へ着目しやすくするために、直方体などの抽象化した、リアルでない簡易的な3D表現を利用して、シミュレーションを高速で回るようにし工夫して、できるだけ多くの想定されるシナリオを、比較的短時間で確認する運用もあるでしょう。

 また、機能安全を満たすシステムには、フェイルセーフと呼ばれる、故障が発生した際に、安全な挙動をすることや、フォールトトレラントと呼ばれる、故障しても継続運用を可能にする工夫を、ハードウェアの仕組みだけでなく、「組込み制御ソフトウェア」の機能として、実装することがあります。その場合は、それら機能の要求仕様を考える必要も出てきます。システムの故障を検出する仕組み、故障したものを切り離す仕組み、残りの正常に動作しているものを使って、制御処理を継続したり、安全モードの制御処理に移るなどの仕組みが必要になります。システムが正常な場合の処理に加えて、各種部品の故障の状況に応じた処理が必要となり、「組込み制御ソフトウェア」の規模がさらに大きく、複雑になってきます。そこでは、作成した要求仕様が適切に機能することを、シミュレーションを使って確認することが、とても重要になってきます。航空機や自動車向けの機能安全規格に、モデルベース開発を活用することを想定した記述が追加されてきていますが、それは、モデルベース開発が、安全で品質の高い「組込み制御ソフトウェア」の現実的な開発手法として、認知されているためでしょう。

 モデルベース開発を導入するということで、制御設計ツールを活用した場合の、追加のメリットについて、言及しておきます。機能安全への規格に対応していることを示すためには、適切に開発されたものであること示す情報を、ドキュメントとして残す必要があります。その中で最も負荷のかかる作業としては、テスト結果をドキュメントとして残すことです。一人あたり数百ページのドキュメントを作成することは、珍しくないでしょう。モデルベース開発を実現するための、制御設計ツールを上手く使うことで、テストの自動化、テスト結果のドキュメント作成の自動化を実現できます。一人あたり、数百ページのドキュメントなので、例えば十人で開発する規模の場合は、数千ページのドキュメントをミスなく手作業で作成する必要があります。その膨大な作業を、自動化により削減できるメリットは、相当大きくなります。

 補足ですが、大規模で複雑な「組込み制御ソフトウェア」に対して、機能安全対策を行うことは、要求仕様設定の複雑さや、さらにソフトウエアの規模や複雑さの増加につながるため、開発工数の大幅な増加につながります。モデルベース開発手法の採用で、ある程度は軽減されるでしょうが、それでも、大変です。一方で、機能安全のための仕組みを、大規模で複雑な「組込み制御ソフトウェア」で実現するシステムとは、独立して動作する、別のシンプルなシステムで構築する工夫もあります。シンプルなシステムで、機能安全のための機能を実現することで、その開発の負荷を軽減できるでしょう。このように、「組込み制御ソフトウェア」だけに頼らず、切り離された別系統のシステムを使うなどの工夫も、重要です。