実体の振る舞いはそのインプットの直接的な帰結だけではなく、それ以前の状態にも依存します。実体の過去の歴史は、有限状態機械図または伝統的にオートマトンと呼ばれることによって最もよくモデル化することができます。UMLステートマシン図(またはステート図、ステートマシン、ステートチャートとも呼ばれる)は、エンティティのさまざまな状態を示します。ステートマシン図は、ある状態から別の状態に変化することによって、エンティティがさまざまなイベントにどのように応答するかを示すこともできます。ステートマシン図は、システムの動的な性質をモデル化するために使用されるUML図です。

ステートマシン図の階層

より早く、より簡単にUMLを学ぶ

あなたはより早く、より簡単にそしてより早くUMLを学ぶための無料のUMLツールを探していますか?Visual Paradigm Community Editionは、すべてのUML図タイプをサポートするUMLソフトウェアです。それは国際的に受賞歴のあるUMLモデラーですが、それでも使いやすく、直感的にそして完全に無料です。

なぜステートマシン図を使うのか

ステートマシン図は通常、オブジェクトの状態依存動作を記述するために使用されます。オブジェクトは、それがどのような状態にあるかに応じて、同じイベントに対して異なる方法で応答します。ステートマシン図は通常オブジェクトに適用されますが、アクター、ユースケース、メソッド、サブシステムシステムなどの他のエンティティに振る舞いを持つ任意の要素に適用でき、それらは通常相互作用図(通常シーケンス図)と共に使用されます)

例えば:

銀行口座に$ 100,000があるとします。撤回機能の動作は次のようになります。balance:= balance - withdrawAmount; ただし**、引出し後の残高が0ドル以上であること。**これは、あなたが銀行から何度お金を引き出したかにかかわらず当てはまります。このような状況では、撤回は属性値の抽象化に影響を与えず、したがってオブジェクトの全体的な振る舞いは変わりません。

ただし、引き出し後に口座残高がマイナスになる場合、引き出し機能の動作はまったく異なります。これは、銀行口座の状態がプラスからマイナスに変わるためです。技術用語では、ポジティブ状態からネガティブ状態への移行が行われます。

属性値の抽象化は、グローバルに適用可能な規則ではなく、システムの特性です。たとえば、銀行の残高を2000ドル引き落とすことができるように銀行がビジネスルールを変更した場合、引き落とし後の残高が2000ドルを下回ってはならないという条件で銀行口座の状態が再定義されます。

ご了承ください:

  • ステートマシン図には、すべてのイベント(および単一オブジェクトの状態と遷移)が記述されています
  • シーケンス図は、関係するすべてのオブジェクトにわたる単一の対話のイベントを記述します

ステートマシン図の基本概念

国家とは何ですか?

Rumbaughは次のように定義しています。

「状態は、オブジェクトの属性値とリンクを抽象化したものです。値のセットは、オブジェクトの全体的な振る舞いに影響するプロパティに従って、状態にまとめられます。」

州表記

州表記

ステートマシン表記の特徴

状態に関係なく、一般に状態にはいくつかの特徴があります。

  • 状態は時間間隔を占めます。
  • 状態は、何らかの条件を満たすエンティティの属性値の抽象化と関連付けられることがよくあります。
  • 企業は、現在のインプットの直接的な結果としてだけでなく、そのインプットの過去の歴史にも依存してその状態を変化させます。

状態

状態は、制約またはオブジェクトのライフサイクルにおける状況であり、制約が成立すると、オブジェクトはアクティビティを実行するか、またはイベントを待ちます。

ステートマシン図は、次のものからなるグラフです。

  • 状態(単純状態または複合状態)
  • 状態を結ぶ状態遷移

例:

州表記

状態の特徴

  • 状態は、特定の時点におけるオブジェクトの状態を表します。
  • オブジェクト(またはシステム)は、状態から状態へと移行していると見なすことができます。
  • モデル要素のライフサイクルの中で、何らかの条件を満たす、特定のアクションが実行されている、または何らかのイベントが待っている場所。

初期状態と最終状態

  • 初期疑似状態として知られる状態機械図の初期状態は、黒丸で示されている。この状態からの遷移は最初の実際の状態を示します
  • ステートマシン図の最終状態は、同心円として表示されます。開ループ状態機械は、システムが終了する前に終了する可能性があるオブジェクトを表しますが、閉ループ状態機械図は最終状態を持ちません。その場合、オブジェクトはシステム全体が終了するまで存続します。

例:

開始状態と最終状態の例

イベント

イベントシグネチャは、イベント名(カンマ区切りパラメータリスト)として記述されます。イベントは、状態の内部遷移コンパートメントまたは状態間の遷移に表示されます。イベントは4つのタイプのうちの1つであるかもしれません:

  1. シグナルイベント - 非同期メッセージまたはシグナルの到着に対応
  2. 呼び出しイベント - 操作への手続き呼び出しの到着に対応
  3. タイムイベント - 指定された時間が経過した後に発生するタイムイベント
  4. 変更イベント - 指定された条件が満たされると必ず変更イベントが発生します。

イベントの特徴

  • オブジェクトをある状態から別の状態に移行させるインシデントを表します。
  • 内部イベントまたは外部イベントは、システムおよびその一部の状態を変更する何らかのアクティビティを引き起こします。
  • イベントは情報を渡します。これは、オブジェクトの操作によって詳しく説明されています。オブジェクトがイベントを実現
  • 設計には、ステートマシン図のイベントを調べ、それらのイベントがシステムオブジェクトによってどのようにサポートされるかを検討することが含まれます。

遷移

遷移線は、ある状態から別の状態への移行を表します。各トランジションラインには、トランジションを発生させるイベントが表示されます。

  • システムを一連の状態および状態間の遷移として表示することは、複雑な動作を記述するのに非常に役立ちます。

  • 状態遷移を理解することはシステム分析と設計の一部です

  • 遷移は、ある状態から別の状態への移行です。

  • 状態間の遷移は次のように発生します。

    1. 要素はソース状態にあります
    2. イベントが発生
    3. アクションが実行されます
    4. 要素はターゲット状態になります
  • 複数の遷移は、異なるイベントによって状態が終了するか、遷移にガード条件がある場合に発生します。

  • イベントやアクションのない遷移は自動遷移として知られています

行動

アクションは実行可能なアトミック計算であり、これには操作呼び出し、別のオブジェクトの作成または破壊、あるいはオブジェクトへのシグナルの送信が含まれます。アクションは遷移に関連付けられており、その間はアクションは中断できません(例:entry、exit)。

アクティビティ

アクティビティは状態に関連付けられています。これは、非アトミックまたは継続的な計算です。活動は完了するか、無期限に続くことがあります。アクティビティは、アクティビティが定義されている状態からの遷移を引き起こすイベントによって終了します。

行動の特徴と活動

  • 州は行動を引き起こすことができる
  • 州は、エンティティが特定の州にある間に実行されたアクションまたはアクティビティーを含む2番目のコンパートメントを持つことができます。
  • アクションはアトミック実行であるため、中断することなく完了します。
  • アクションの5つのトリガー:入力時、実行時、イベント時、終了時、および組み込み
  • アクティビティは、長期間にわたって実行される可能性がある複雑な動作をキャプチャします。アクティビティがイベントによって中断されることがあります。その場合、オブジェクトが状態に到着したときに完了しません。

単純状態機械図表記法

単純状態機械図

入り口および出口アクション

状態で指定された入り口アクションおよび出口アクション。すべての出入り口の出現に対して真実でなければなりません。そうでなければ、それからあなたは個々のトランジションアークでアクションを使わなければなりません

  • 記法で状態に入ったときに実行されるEntry Action :Entry / action
  • 「終了**/アクション」という表記で状態からの終了時に実行される終了アクション**

例 - 入退室アクション(ブックステータスの確認)

この例は、Class - "BookCopy"から派生したステートマシン図を示しています。

入り口および出口アクション

注意:

  1. このステートマシン図は、BookCopyクラスのオブジェクトmyBkCopyの状態を示しています。
  2. エントリアクション:エントリアクションにリンクされているとマークされているアクションは、指定された状態に遷移を介して入るたびに実行されます。
  3. 終了アクション:終了アクションにリンクされているとマークされているアクションは、遷移によって状態が終了するたびに実行されます。

基質

単純状態は、下部構造を持たない状態です。サブステートを持つステート(ネストステート)はコンポジットステートと呼ばれます。サブストレートは任意のレベルにネストできます。入れ子状態機械は、最大1つの初期状態および1つの最終状態を有することができる。いくつかの状態は特定のコンテキスト(包含状態)内でのみ可能であることを示すことで、サブストレートを使用して複雑なフラットステートマシンを単純化します。

サブステートの例 - ヒーター

サブマシンの例

ステートマシン図は、テストケースを導き出すためによく使用されます。以下は可能なテストのアイデアのリストです。

  • アイドル状態がToo Hotイベントを受信
  • アイドル状態がクールすぎるイベントを受信
  • 冷却/起動状態はCompressor Runningイベントを受け取ります
  • 冷却/準備完了状態はFan Runningイベントを受信します
  • 冷却/運転中状態はOKイベントを受信
  • 冷却/運転状態が失敗イベントを受信
  • 障害状態はFailure Clearedイベントを受け取ります
  • 暖房状態がOKイベントを受信
  • 加熱状態がFailureイベントを受け取る

歴史の状態

特に指定しない限り、遷移が複合状態に入ると**、入れ子になったステートマシンのアクションは初期状態から再開します**(遷移が直接サブステートをターゲットにしている場合を除く)。履歴状態により、ステートマシンは、コンポジット状態を終了する前にアクティブだった最後のサブステート再入力できます。履歴状態の使用方法の例を下の図に示します。

ステートマシンの歴史の例

並行状態

前述のように、ステートマシン図の状態はネストできます。関連状態は、単一の複合状態にまとめることができます。アクティビティが同時サブアクティビティを含む場合、他の内部に状態をネストすることが必要です。次のステートマシン図は、入札の処理と支払い限度の承認という2つの同時サブステートを持つオークションをモデル化しています。

並行状態マシン図の例 - オークションプロセス

この例では、最初にオークションに参加するステートマシンは、開始時に2つの別々の開始スレッドへのフォークを必要とします。各サブステートには、スレッドの終わりを示す終了状態があります。異常終了(キャンセルまたは拒否)がない限り、複合状態からの終了は、両方のサブステートが終了したときに発生します。

並行ステートマシンの例

UMLステートマシン図を今すぐ作ろう

ステートマシン図とは何か、そしてステートマシン図の書き方を学びました。あなた自身のステートマシン図を描く時が来ました。無料のUMLソフトウェアであるVisual Paradigm Community Editionを入手し、無料のState Machine Diagramツールを使用して独自のState Machine Diagramを作成してください。それは使いやすく直感的です。

関連リンク

視覚的パラダイムオンライン

コメント

コメントフォーム
記事の評価
  • リセット
  • リセット