見出し画像

2-2. 組込みソフトウェアの階層状態管理アーキテクチャ

この投稿では、組込みソフトウェアにおける状態遷移を階層化して管理するためのアーキテクチャ例を説明したいと思います。

この図は、組込みソフトウェアにおける状態遷移を階層化して管理するためのアーキテクチャ例を示しています。

組込みソフトウェアでは、電源状態、システム状態、機能状態が混在すると状態遷移が複雑化し、保守性や安全性の低下につながります。そこで、本アーキテクチャでは状態を「Hardware Layer」「Base Layer」「Application Layer」の3つのレイヤに分離し、それぞれの責務を明確化しています。


Hardware Layerは、電源投入から停止までのシステムの生存状態を管理します。Power OFF、Initializing、Operational、Shutdownなどの状態を持ち、上位レイヤはHardware LayerがOperational状態のときのみ動作可能です。


Base Layerは、システム全体の運用状態を管理します。Startup、Normal、Sleep、Diagnostic、System Fatal Errorなどの状態を持ち、電力管理、診断機能、安全状態への遷移を統括します。Application LayerはBase LayerのNormal状態の配下で動作し、システム状態に応じて起動・停止されます。


Application Layerは、各アプリケーション機能の状態を管理します。各アプリケーションは独立した状態遷移を持ち、初期化、制御実行、異常対応などを行います。


本アーキテクチャの特徴は、一時的な異常とシステム故障を明確に区別している点です。アプリケーションで一時的な異常を検知した場合は、Local Failsafeへ遷移して制御を継続します。異常が解消された場合は通常制御へ復帰します。一方、異常が継続し故障と判定された場合は、Base LayerのSystem Fatal Errorへ遷移し、安全状態への移行や再起動要求、停止要求などの処理を実施します。

また、本アーキテクチャでは下位レイヤの状態の下で上位レイヤの状態が存在する階層構造を採用しています。そのため、Hardware Layer → Base Layer → Application Layerの順で状態が成立し、上位レイヤは常に下位レイヤの状態に依存します。

このように状態管理を階層化することで、状態遷移の複雑化を防ぎ、ソフトウェアの保守性、拡張性、安全性を向上させることができます。また、A-SPICEやISO 26262などの品質・機能安全規格との親和性も高く、要求仕様からソフトウェア設計まで一貫した状態管理を実現できます。

いいなと思ったら応援しよう!