システムやオブジェクトの状態変化を表現するUML手法として、ステートマシン図(状態遷移図)があります。本記事では、ステートマシン図について詳しく解説します。
本記事では、ソフトウェアテストの重要性や7つの原則などに解説します。
ステートマシン図(状態遷移図)とは
ステートマシン図の概要
ステートマシン図(状態遷移図)は、システムやオブジェクトの状態変化を視覚的に表現する図です。特にソフトウェア設計や組み込みシステムの開発において、動的な振る舞いを明確にするために用いられます。
ステートマシン図を活用し、システムの振る舞いを直感的に理解することで、開発・テストを効率化したり、仕様を明確化したりすることに役立ちます。
ステートマシン図の例:プログラム実行時のタスク
ステートマシン図と状態遷移表の違い
ステートマシン図とよく比較されるのが状態遷移表です。どちらもシステムの状態変化を表しますが、表現方法に違いがあります。
「ステートマシン図」は、状態と遷移を図式化し、矢印を用いて視覚的に分かりやすく表現します。これはシステム全体の動きを直感的に理解しやすい特徴があります。
一方、「状態遷移表」は、行と列で状態とイベントを整理し、どのイベントがどの状態遷移を引き起こすかを詳細に記述します。
例えば、先ほどの例で示したタスク(プロセス)の状態遷移を状態遷移表で表すと、以下のようになります。状態遷移表は詳細な設計やプログラムへの落とし込みに適していることが分かります。
状態遷移図の例:プログラム実行時のタスク
|
ディスパッチ |
プリエンプション |
入出力の要求 |
入出力・待機の完了 |
実行可能状態 |
実行状態 |
ー |
ー |
ー |
実行状態 |
ー |
実行可能状態 |
待ち状態 |
ー |
待ち状態 |
ー |
ー |
ー |
実行可能状態 |
ステートマシン図の書き方
ここではステップごとにステートマシン図の書き方について解説します。
ステップ① 状態遷移表を作成する
ステートマシン図を描く前に、状態遷移表を作成し、システムの振る舞いを体系的に整理します。表の縦軸に現在の状態、横軸にイベントを配置し、各セルに遷移先の状態を記入していきます。
特に複雑なシステムの場合、状態遷移表を作成することで、論理的な矛盾や見落としを早期に発見できます。また、チーム内でのレビューも容易になり、仕様の確認や修正がスムーズに行えます。
ステップ② 状態および遷移を記載する
ステートマシン図は、以下の要素で構成されます。
- 開始状態: システムの初期状態を表します。通常は黒丸で表現されます。
- 終了状態: システムが終了する状態を表します。通常は二重丸で表現されます。
- 状態: システムの状態を表します。通常は丸や角丸四角形で表現されます。
- 遷移: 状態から状態への変化を表します。通常は矢印で表現され、矢印のラベルで遷移の原因となるイベントや条件を示します。
開始状態は黒丸(●)、終了状態は二重丸(◎)で表すのが一般的です。
状態の記載では、丸や角丸四角形で表現し、その状態が表す条件や性質を表現します。
ステップ③ イベントを記載する
イベントの記載は、遷移を引き起こすトリガーとなる出来事を示します。イベントは通常、遷移を表す矢印上に記述し、必要に応じてガード条件(遷移が発生する条件)やアクション(遷移時に実行される処理)も併記します。
また、タイムイベント(時間経過によるイベント)や信号イベント(システム間の通信によるイベント)なども必要に応じて表現します。
ステートマシン図の例
ここでは、ストップウォッチの動作をステートマシン図で記載した例を紹介します。
上図では「停止中」と「計測中」の2つの状態と、その状態遷移を矢印で表現しています。このように、ステートマシン図はシステムの状態を簡潔に表現することが可能です。
まとめ
本記事では、ステートマシン図について解説しました。ステートマシン図は、状態と遷移を図式化し、矢印を用いて視覚的に分かりやすく表現します。ステートマシン図を作成するには、以下の手順で作成します。
- 状態遷移表を作成する
- 状態および遷移を記載する
- イベントを記載する
UMLには、ステートマシン図以外にもアクティビティ図やシーケンス図などのシステムの設計・開発に役立つ表記法が多数あります。UMLを理解し、システム開発に役立てていきましょう。
- カテゴリ:
- キーワード: