この投稿では、状態遷移設計について説明します。
状態遷移設計は、下表の要素を定義する設計でアーキテクチャ設計の一部として行うことが多いです。
要素 | 概要 |
---|---|
状態 | 実行する機能の定義=実行コンポーネントの定義 |
遷移条件(イベント) | 状態遷移の条件の定義 |
状態間インタフェース | 状態間インタフェース変数の定義 |
状態遷移設計は、具体的なプロセスとしては、次のステップのように行います。
ステップ1 状態遷移図の作成
状態遷移図は、状態とイベントの関係を定義する図です。図として視覚化することで思考がしやすくなり、状態の全体像や流れをひと目で把握できるようになります。また、複雑な状態は階層的に整理することで、より理解しやすくなります。
ステップ2 状態遷移表の作成
状態遷移表は、状態遷移図の内容を表形式で整理したもので、状態とイベントの関係を明確にし、網羅性の検証を容易にします。また、状態遷移図に比べてコードに近い形式で記述されるため、ソフトウェアの仕様としてそのまま利用しやすいという利点があります。
ステップ3 各状態の静的変数表の作成 → 設計で見落とされることが多いポイント
各状態の静的変数表は、各状態で使用する静的変数を表形式で整理します。状態間で共有される変数がある場合は、その変数が状態遷移時に前の状態から値を引き継ぐのか、あるいは初期値にリセットするのかを明確に定義する必要があります。
ご参考:静的変数について
私は、静的変数を次のように分類しています。
コンポーネント間インタフェースに用いる静的変数:グローバル変数
コンポーネント内のみで用いる静的変数:スタティック変数
また、状態遷移時にハードウェア(マイコンや回路、IC等)設定や通信に変更がある場合は、ステップ3のように表を作って設計することをお勧めします。
