ステートマシン図は、オブジェクトがその存続期間中にイベントに応答してアクセスする状態のシーケンスと、それらのイベントへの応答を指定する動作です。
州
状態とは、オブジェクトが存続している間、ある条件を満たしたり、何らかのアクティビティを実行したり、何らかの外部イベントを待機したりする状態です。
例:
国家の特徴
- 状態は、特定の時点でのオブジェクトの状態を表します。
- オブジェクト(またはシステム)は、状態から状態へと移動していると見なすことができます
- ある特定のアクションが実行されている、またはあるイベントが待機している、ある条件を満たすモデル要素のライフサイクル内のポイント
次の図は、状態の詳細な説明を示しています。状態は内部アクション(do、help)で拡張されます。他のアクションとは対照的に、これらのアクションは中断できます。「キャンセル」が発生した場合、実行またはヘルプアクションは中断されます。内部アクションは「エントリ」セクションの後に実行され、状態が終了すると中止されます。
初期状態と最終状態
- 初期疑似状態と呼ばれるステートマシン図の 初期状態 は、黒丸で示されます。この状態からの遷移により、最初の実際の状態が表示されます
- ステートマシン図の 最終状態 は、同心円で示されています。開ループステートマシンは、システムが終了する前に終了する可能性のあるオブジェクトを表しますが、閉ループステートマシン図には最終状態がありません。その場合、オブジェクトはシステム全体が終了するまで存続します。
例:
イベント
イベントは、重要な発生の仕様です。ステートマシンの場合、イベントは、状態遷移をトリガーできる刺激の発生です。
遷移
遷移は、2つの状態間の関係であり、最初の状態のオブジェクトは、指定された一連のイベントと条件が満たされると、特定のアクションを実行して2番目の状態に入るということを示します。
遷移には次のものがあります。(1)ソース状態(2)イベントトリガー(3)アクション(4)ターゲット状態を含む遷移コンポーネント
自己移行
自己遷移は、ソースとターゲットの状態が同じである遷移です。
アクション
アクションは、実行可能なアトミック(ステートマシンを参照)計算です。アクションには、操作、他のオブジェクトの作成または破棄、または他のオブジェクトへのシグナルの送信(イベント)が含まれる場合があります。
ライブラリの例
次の図は、単純なステートマシン図を示しています。このような図の主なコンポーネントは次のとおりです。
- 状態:この例には、「貸し出し中」と「棚に置いて」の2つの状態があります。
- 初期状態:これは、システムが起動する状態です。
- 遷移:遷移は、可能な状態変化を表します。この図には、「ローン中」から「棚に」へ、またはその逆の2つの遷移があります。
- イベント:イベントはトランジションでラベル付けされます。これらは、トランジションで実行されるイベントを表します。状態「貸出中」から状態「棚に」に移行すると、イベント「returned()」が実行されます。
アクションは、状態変数の変更です。以下の例では、遷移でアクションが指定されています。「棚にある」から「貸し出し中」に移行すると、状態変数の帳簿が減少します。
アクションは、遷移で指定できますが、状態でも指定できます。その場合、状態に入るとき、または状態を出るときにアクションを実行する必要があるかどうかを指定できます。次の図は、これらのオプションを示しています。
- 最初のオプションは、遷移が行われたときのアクションの仕様を示しています。アクションは、状態の変化に対して実行されます。
- 2番目のオプションは、状態でのアクションの指定を示します。「entry」キーワードは、状態に入ったときにアクションを実行する必要があることを示します。
- 最後に、3番目のオプションは、状態を終了するときにアクションが実行されるように指定する方法を示しています。「exit」キーワードに注意してください。
単純なステートマシン図の表記
ステートマシン図—高度な概念
制約
遷移に制約を追加することが可能です。下の図を検討してください。制約「[最後のコピーではない]」と「[最後のコピー]」は、イベント「copyBorrowed()」で2つの遷移を区別するために使用されます。セマンティクスは、制約が真の場合に遷移が有効になることです。
サブステート
単純な状態とは、下部構造を持たない状態です。サブステート(ネストされた状態)を持つ状態は、複合状態と呼ばれます。サブステートは、任意のレベルにネストできます。ネストされたステートマシンは、最大で1つの初期状態と1つの最終状態を持つことができます。サブステートは、一部の状態が特定のコンテキスト(囲んでいる状態)内でのみ可能であることを示すことにより、複雑なフラットステートマシンを単純化するために使用されます。
サブステートの例—ヒーター
ステートマシン図は、テストケースを導き出すためによく使用されます。可能なテストのアイデアのリストは、次のとおりです。
- アイドル状態がTooHotイベントを受信
- アイドル状態がTooCoolイベントを受信します
- 冷却/起動状態がCompressorRunningイベントを受信します
- 冷却/準備完了状態がファン実行イベントを受信
- 冷却/実行状態はOKイベントを受け取ります
- 冷却/実行状態は失敗イベントを受け取ります
- 失敗状態はFailureClearedイベントを受け取ります
- 加熱状態はOKイベントを受け取ります
- 加熱状態は失敗イベントを受け取ります
歴史の州
特に指定がない限り、遷移が複合状態に入ると 、ネストされたステートマシンのアクションは、初期状態で最初からやり直します (遷移がサブ状態を直接対象としている場合を除く)。履歴状態により、ステートマシンは 、複合状態を終了する前にアクティブだった最後のサブ状態に再び入ることができます。履歴状態の使用例を次の図に示します。
並行状態
上記のように、ステートマシン図の状態はネストできます。関連する状態は、単一の複合状態にグループ化できます。アクティビティに同時サブアクティビティが含まれる場合は、他の内部に状態をネストする必要があります。次のステートマシン図は、入札の処理と支払い制限の承認という2つのサブステートが同時に存在するオークションをモデル化したものです。
並行状態マシン図の例—オークションプロセス
この例では、最初にオークションに参加するステートマシンは、開始時に2つの別々の開始スレッドへのフォークを必要とします。各サブ状態には、スレッドの終わりを示す終了状態があります。異常な終了(キャンセルまたは拒否)がない限り、複合状態からの終了は、両方のサブ状態が終了したときに発生します。
関連リンク
ビジュアルパラダイムオンラインでの状態図の例
- オンラインのステートマシンダイアグラムソフトウェアで編集可能な無料のステートマシンダイアグラムの例とテンプレート: Visual ParadigmOnline。
- テンプレートを開始点として使用して、独自のステートマシン図を作成します。
無料のUMLソフトウェアツール
ステートマシン図とは何か、およびステートマシン図を描画する方法を学習しました。独自のステートマシン図を描く時が来ました。無料のUMLソフトウェアであるVisualParadigm Community Editionを入手し、無料のステートマシン図ツールを使用して独自のステートマシン図を作成します。使いやすく直感的です。