状態遷移
状態遷移
状態遷移図
さまざまなイベントによって、ある状態がどう移り変わるか(遷移するか)というのを、図面化し、一覧性を高めたもの。
意味:「そのソフトウェアができること」が見えやすくなる
状態遷移図の書き方
https://image.itmedia.co.jp/mn/articles/1207/11/ay_jtsiz03_fig13.jpg
状態遷移表
イベントと状態において、全ての組み合わせを表形式で表現したもの。
意味:そのソフトウェアができないこと/してはいけないこと」が見えやすくなる。
状態遷移表の書き方:
縦軸にイベント、横軸に状態を入れる。
想定される全ての状態と、イベントを項目に当てはめ、総当たりで、遷移した先を書き込む。
https://image.itmedia.co.jp/mn/articles/1207/11/ay_jtsiz03_fig14.jpg
https://image.itmedia.co.jp/mn/articles/1207/11/ay_jtsiz03_fig15.jpg
https://image.itmedia.co.jp/mn/articles/1207/11/ay_jtsiz03_fig16.jpg
https://image.itmedia.co.jp/mn/articles/1207/11/ay_jtsiz03_fig17.jpg
組み込みでの状態遷移図の有用性:
組み込みソフトウェアは、さまざまな事象(イベント)が常に発生しているシステムの上で動作している。
そのイベントに対し、その時の状態に応じた処理を設計することが要求されます。
状態の組み合わせの数が膨大であっても、それらを明確化、整理して設計できるモデル
それが状態遷移図/表などの状態遷移系のモデル
作成方法:
下記例の状態遷移図と状態遷移表を作成してみる。
基本仕様:
電源を電源スイッチでON/OFF
電源を入れるとLEDは、OFF
動作スイッチを押すと、下記3つのモードで動作する。
動作中に動作スイッチを押すと、動作を停止する。
例:
機能: 3つのモード
スイッチを押すと、LEDの点灯/消灯が切り替わる。
スイッチを押すと、LEDが5秒間に点滅する。
スイッチを押すと、LEDが点滅しながら、音が出る。
スイッチは、モード切り替えボタン、動作ボタンの2種類。
アクション:
動作OFF(LEDOFF)
LED点灯/消灯切り替え
LED5秒間点滅
LEDが点滅しながら、音が出る。
イベント:
動作ボタン押す。
動作ボタン離す。
モード切り替えボタン:LED点灯/消灯
モード切り替えボタン:LED5秒間点滅
モード切り替えボタン:LEDが点滅しながら、音が出る。もう一度押すと止まる。
状態の確認:
table:状態確認
アクション 状態
電源スイッチON 電源ON、動作OFF、LEDOFF
モード切り替えボタン選択 モード切替ボタン読み込み
モードの選択
動作スイッチを押す モード選択された動作ON
動作スイッチを押す モードで選択された動作OFF
縦軸:イベント
横軸:状態(前)
table:状態遷移表
イベント/アクション 電源OFF 初期状態 モード選択状態 モード動作
電源スイッチON 初期状態 - - -
電源スイッチOFF - 電源OFF 電源OFF 電源OFF
モード選択スイッチの選択 - モード選択 モード選択 モード選択
動作スイッチON/OFFスイッチを押す - - モード動作 モード選択状態
動作スイッチON/OFFスイッチを離す - - - -
https://gyazo.com/a732da34b9901e0e208543e9f22004db
仕様:
スイッチを押すとLEDのON/OFFが切り替わる。
USBでPCと接続
コマンド"A"を受け取ると、LEDのON/OFF切り替え
コマンド"B"を受け取ると、LEDが早く点滅、5秒たつとLEDが遅く点滅、5秒たつと早く点滅を繰り返し、1分たつと、OFFになる。
遷移図
遷移表