UML シーケンス図は、操作がどのように実行されるかを詳細に示す相互作用図です。それらは、コラボレーションのコンテキストでオブジェクト間の相互作用をキャプチャします。シーケンス図は時間に焦点を当てており、図の縦軸を使用してどのメッセージがいつ送信されるかを表すことで、対話の順序を視覚的に示します。
シーケンス図とは
シーケンス図、シーケンス図、またはシーケンス図とも呼ばれるシーケンス図は、UML 相互作用図です。複数のオブジェクト間でメッセージが送信される時間的な順序を記述することにより、複数のオブジェクト間の動的なコラボレーションを示します。
UML では、シーケンス図のオブジェクトは、下線が引かれたオブジェクトの名前を含む長方形として描かれます。オブジェクトには、オブジェクト名、オブジェクト名とそのクラス、またはクラス名のみ (匿名オブジェクト) の 3 つの方法のいずれかで名前を付けることができます。オブジェクトに名前を付ける 3 つの方法を下の図に示します。
シーケンス図のオブジェクト
- オブジェクト間の相互作用の順序を表示します。相互作用の動作をメッセージ パッシングとしてモデル化し、オブジェクト間でメッセージがどのように送受信されるかを記述することで、オブジェクト間の相互作用を動的に示します。
- 他の UML ダイアグラムと比較して、時系列ダイアグラムは、対話動作の時系列順により重点を置きます。
- 同時実行のプロセスを視覚的に説明できます。
シーケンス図の要素
1. アクター – システム アクター。人、機械、その他のシステム、サブシステムなどがあります。時系列図で表すために使用されます。
2. オブジェクト – オブジェクトの命名には 3 つの方法があります。
- オブジェクト名とクラス名を含めます。例: live class: class、時系列図に「object: class」を付けます。
- クラス名のみを表示します。つまり、匿名オブジェクトです。例: :course; タイミング図では、「:class」を使用します。
- オブジェクト名のみを表示し、クラス名は表示しません。タイミング図では、「オブジェクト」で表されます。
3つの命名方法がすべて利用可能で、年表を読む人にとって最も理解しやすいものを選択してください。
3. オブジェクトの順序
- オブジェクトの左右の順序は重要ではありませんが、明確できちんとした図を作成するには、次の 2 つの原則に従う必要があります。頻繁に相互作用するオブジェクトをできるだけ近くに配置します。
- インタラクション アクティビティ全体を初期化するオブジェクトを左端に配置します。
ライフライン
タイミング図のオブジェクト アイコンから下に伸びる破線で、オブジェクトが存在していた期間を示します。
- フォーカス オブ コントロール(アクティベーション期間とも呼ばれます) は、オブジェクトが対応する操作を実行する期間のシンボルです。これは、C のセマンティクスでは一対の大括弧 { } として解釈できます。小さな長方形で表されます。要素が操作を実行している期間を表します。長方形の上部と下部は、それぞれ開始時間と完了時間に合わせて配置されています。
- メッセージは一般に、同期メッセージ、非同期メッセージ、およびリターン メッセージに分類されます。
ご了承ください
- メッセージの送信者は、メッセージの受信者に制御を渡し、アクティビティを停止し、メッセージの受信者が同期を示すために使用される制御を放棄または返すのを待ちます。
- メッセージの送信者は、メッセージを介してメッセージの受信者に信号を渡し、受信者がメッセージまたは制御を返すのを待たずにアクティビティを続行します。非同期メッセージの受信者と送信者は同時に作業しています。
- リターン メッセージは、プロシージャ コールからのリターンを示します。
作成と破棄のメッセージ
参加者は、シーケンス図の相互作用の全期間にわたって生きているとは限りません。参加者は、渡されるメッセージに従って作成および破棄できます。
コンストラクター メッセージは、その レシーバーを作成します。インタラクションの開始時にすでに存在する送信者は、図の上部に配置されます。コンストラクター呼び出しによる対話中に作成されたターゲットは、ダイアグラムのさらに下に自動的に配置されます。
デストラクタ メッセージは、その レシーバを破棄します。インタラクション中にターゲットが破壊されたことを示す方法は他にもあります。ターゲットの破壊が「デストラクタの後」に設定されている場合にのみ、デストラクタを使用する必要があります。
非即時メッセージ
多くの場合、メッセージは瞬間的であると見なされるため、受信者に到着するまでの時間はごくわずかです。メッセージは水平方向の矢印として描かれます。受信者が実際にメッセージを受信するまでに一定の時間がかかることを示すために、 斜めの矢印が使用されます。
組み合わせフラグメント
シーケンス フラグメントは、シーケンス グラフ内の相互作用の一部を囲む結合フラグメントと呼ばれるボックスとして表されます。フラグメント演算子 (左上隅) は、フラグメントのタイプを示します。インタラクティブ フラグメントを使用すると、関連するメッセージをシーケンス図にグループ化できます。さまざまな事前定義されたフラグメント タイプが利用可能で、別の結果、並列メッセージ、またはループを指定できます。
シーケンス図のフラグメントは、図の一部に描かれた長方形のフレームです。これらは、メッセージの流れに影響を与える条件付き構造を表します。これらのフレームは、UML 仕様では結合フラグメントと呼ばれ、コンテナーは相互作用オペランドと呼ばれます。フレームは左上隅にラベル付けされています。このラベルは、UML では対話演算子と呼ばれます。
例 – 発注シナリオ
オンラインで注文したい船員。ご注文いただいた商品は、会員ステータス(VIP会員、一般会員)に応じて、宅配便または普通郵便にて発送いたします。メンバーが注文で通知オプションを選択した場合、ストアは確認通知をメンバーに送信します。
別の例: 注文する
シーケンス図は、横軸がオブジェクトを表し、縦軸が時間を表す 2 次元の図であり、メッセージはオブジェクト間で横方向に渡され、縦方向に時系列で配置されます。この例は、Customer、Order、および Stock という 3 つの参加オブジェクトを含むシーケンス図を示しています。表記法を正式に知らなくても、何が起こっているのかかなりよくわかるでしょう。
- ステップ 1 および 2: 顧客が注文を作成します。
- ステップ 3: お客様が商品を注文に追加します。
- ステップ 4、5: 各アイテムの在庫状況がチェックされます。
- ステップ 6、7、8 : 商品が入手可能な場合は、注文に追加されます。
- ステップ9 戻る
- ステップ 10、11: 注文を保存して破棄する
一般的に使用される組み合わせフラグメント
フラグメント タイプには、ref、assert、loop、break、alt、opt および neg、ref、sd が含まれます。
オペレーター | 意味 |
代替 | 代替複数フラグメント: 条件が true のフラグメントのみが実行されます。 |
選ぶ | オプション: フラグメントは、指定された条件が true の場合にのみ実行されます。トレースが 1 つだけの alt に相当します。 |
パー | Parallel : 各フラグメントは並行して実行されます。 |
ループ | ループ: フラグメントは複数回実行される可能性があり、ガードは反復の基礎を示します。 |
致命的 | クリティカル領域: フラグメントは、一度に 1 つのスレッドしか実行できません。 |
否定 | Negative : フラグメントは無効なインタラクションを示しています。 |
参照 | 参照: 別の図で定義された相互作用を参照します。フレームは、相互作用に関係するライフラインをカバーするように描画されます。パラメータと戻り値を定義できます。 |
SD | シーケンス図: シーケンス図全体を囲むために使用されます。 |
ご了承ください:
- ループや分岐などをキャプチャするために、フレームを結合することができます。
- 結合されたフラグメント キーワード: alt、opt、break、par、seq、strict、neg、critical、ignore、consider、assert、および loop。
- 制約は通常、メッセージのタイミング制約を示すために使用されます。これらは、1 つのメッセージのタイミングまたはメッセージ間の間隔に適用できます。
結合フラグメントの例
(1) Choice (Alt) – 代替フラグメントは、いくつかの保護された代替フラグメント (相互作用オペランドで区切られている) を提供します。つまり、従来の if..else… と同等の、2 つ以上のメッセージ シーケンス間で相互に排他的な選択肢を指定するために使用されます。
(2) オプション (Opt) – 可能性のある発生または非発生のシーケンスを含みます。これは、ガード条件が真の場合にのみオプションのフラグメントが実行されることを意味します。
(3) ループ (ループ) – ループでは、ガード条件が偽になるまでフラグメントを繰り返すことができます。
壊す
ブレークを使用すると、一部のガードが true になったときに、囲んでいるループをエスケープできます。
ブレークは、例外処理をモデル化するために最も一般的に使用されます。このシーケンス図の例では、残高 < 金額の条件を代替フローとしてではなく例外として扱うため、ブレーク コンビネーション フラグメントを使用しています。この例を読むには、シーケンスの左上隅から読み始めます。シーケンスが戻り値「balance」に達すると、残高が金額よりも少ないかどうかを確認します。残高が金額以上の場合、送信される次のメッセージは addDebitTransaction メッセージであり、シーケンスは通常どおり続行されます。
平行
並列フラグメントを使用すると、複数の対話を並行して実行できます。
フレーム
フレームは、シーケンス図をカプセル化する方法を提供します。
参照 (Ref)
フレームは、別のシーケンス図で参照できます。
プロトコル
コラボレーション
シナリオ
信号と受信
競売人が商品の提案価格を不安な入札者の密集した部屋にブロードキャストします。入札者は提案を聞いて、価格を受け入れるかどうかを決定します。
自動オークションでは、競売人はどのように提案をブロードキャストしますか? オブジェクトには、特定のタイプのブロードキャスト信号が受信された場合に自動的に呼び出される操作が指定されている場合があります。これらの方法は受付と呼ばれます。シグナルは特別な種類のクラスです。通常、受信の名前は信号の名前と一致します。レセプションは別のコンパートメントに表示されます。
シーケンス図では、シグナルを非同期シグナルとして、受信を受信呼び出しとして表すことができます。
致命的
その他のフラグメント タイプ
- 厳しい
- 主張する
- 検討
- 無視
- 領域
- 否定
シーケンス図表記のまとめ
表記 説明 | 視覚表現 |
---|---|
俳優
ご了承ください:
|
|
ライフライン
|
|
アクティベーション
|
|
通話メッセージ
|
|
返信メッセージ
|
|
セルフメッセージ
|
|
再帰メッセージ
|
|
メッセージを作成
|
|
メッセージを破壊する
|
|
期間メッセージ
|
|
ノートメモ (コメント) を使用すると、要素にさまざまな注釈を付けることができます。コメントには意味的な力はありませんが、モデラーにとって役立つ情報が含まれている場合があります。 |