UML ダイアグラムにおけるメッセージ

メッセージは統一モデリング言語 (UML) 図における要素であり、ある相互作用におけるインスタンス間の特定の種類のコミュニケーションを定義します。 メッセージは、ライフラインによって表されるインスタンスから、 相互作用内にある別のインスタンスへ情報を送ります。

メッセージの種類

メッセージは送信側と受信側を指定し、 ライフライン間で発生するコミュニケーションの種類を定義します。 例えば、コミュニケーションにより、同期呼び出しメッセージまたは非同期呼び出しメッセージを使用した操作の起動または呼び出し、非同期シグナルを使用したシグナルの生成、および参加者の作成または廃棄が可能です。

以下の表にリストされている 5 種類のメッセージを使用して、相互作用におけるライフライン間のコミュニケーションを示すことができます。

メッセージ 説明 サンプル
生成メッセージ 生成メッセージは、相互作用内でのインスタンスの作成を表します。 生成メッセージは、キーワード «create» で表されます。 ターゲット・ライフラインは、生成メッセージの発生時点で開始します。 銀行のシナリオでは、銀行の管理者はサーバーに生成メッセージを送信することにより、顧客の信用調査を開始します。
消滅メッセージ 消滅メッセージは、相互作用内でのインスタンスの消滅を表します。 消滅メッセージは、キーワード «destroy» で表されます。 ターゲット・ライフラインは消滅メッセージの発生時点で終了し、X で表されます。 銀行の管理者は信用調査を開始した後、顧客のクレジット・プログラムの申込を閉じるかまたは破棄します。
同期呼び出しメッセージ 同期呼び出しは操作に関連付けられており、送信および受信のメッセージを有しています。 メッセージは、ソース・ライフラインからターゲット・ライフラインに送信されます。 ソース・ライフラインは、ターゲット・ライフラインからの応答を受信するまで、他の操作からブロックされます。 銀行の窓口係が承認のため銀行の管理者にクレジット要求を送信した場合、応答を待ってからその顧客へ対応を進める必要があります。
非同期呼び出しメッセージ 非同期呼び出しは操作に関連付けられており、通常、送信メッセージのみ持っていますが、応答メッセージがあることもあります。 同期メッセージとは異なり、ソース・ライフラインは別のメッセージの受信または送信によってブロックされません。 送信ポイントと受信ポイントを個々に移動して、送信イベントと受信イベント間の時間を遅らせることもできます。 この方法は、応答の時間または順序が重要ではない場合に選択できます。 ある顧客がクレジットを申請した場合、クレジット申請の結果を待つ間に、電話で銀行の情報を受け取ったり、ATM で現金を引き出したりできます。
非同期シグナル・メッセージ 非同期シグナル・メッセージは、シグナルに関連付けられています。 シグナルは、操作が関連付けられていないという点で、メッセージとは異なっています。 シグナルでは、割り込みまたはエラー状態を示すことができます。 シグナルを指定するには、非同期呼び出しメッセージを作成し、そのメッセージの「プロパティー」ビューでタイプを変更します。 信用調査所は、信用調査機関への接続に失敗したことを示すエラー・シグナル・メッセージを銀行の管理者に送信できます。

非同期メッセージは、 送信ポイントと受信ポイントを個別に移動可能な唯一のメッセージ・タイプです。 非同期メッセージのポイントを移動し、 送信イベントと受信イベントの間の時間遅延を操作できます。 この結果は、スキューされたメッセージと呼ばれます。 振る舞い実行を指定して、あるいは指定せずに非同期メッセージを作成できます。

自己宛先メッセージは、ソース・ライフラインからそれ自身に送信されるメッセージです。 自己宛先メッセージは、再帰呼び出しにも、または同一のオブジェクトに属する別の操作またはシグナルへの呼び出しにもなります。

ソースのライフラインがターゲットのライフラインに送信するメッセージは、 ターゲットのライフラインが実装する操作またはシグナルを表します。 メッセージに名前を付けて、順番を付けることができます。 線または矢印の外観は、メッセージのプロパティーを反映しています。 以下の表には、UML 図においてメッセージを表すグラフィックが示されています。

タイプ グラフィック 説明 表記
非同期 右向きの開いた矢印を持つ線。 開いた矢印を持つ線 このグラフィックは、非同期シグナルまたは非同期呼び出しを表しています。 これによって、ソース・オブジェクトがメッセージを送信し、 すぐに次のステップを続行します。
同期 右向きの塗りつぶし矢印を持つ線。 受信ライフライン方向に向かう、塗りつぶし矢印を持つ線 このグラフィックは、同期呼び出し操作を表しています。 この操作では、ソース・オブジェクトがメッセージを送信し、 ターゲット・オブジェクトからのリターン・メッセージを 待機してからソース・オブジェクトが処理を続行します。
同期リターン 左を指す塗りつぶし矢印がある破線。 発信ライフライン方向に向かう、塗りつぶし矢印を持つ破線 このグラフィックは、呼び出しからプロシージャーへのリターン・メッセージを表します。 同期メッセージを作成すると、リターン・メッセージがデフォルトで作成されます。 このデフォルトは、「設定」ウィンドウ内で変更することができます。

メッセージは、操作呼び出し、またはシグナルの送信および受信のうち、いずれかを表します。 メッセージが操作を表す場合、操作名によりメッセージが識別されます。 そのメッセージの引数は、ターゲットのソースに渡されます。 リターン・メッセージには、結果の操作呼び出しの引数が含まれています。 メッセージがシグナルを表す場合、そのメッセージの引数はシグナルそのものです。 メッセージが同期呼び出しである場合、 呼び出されたライフラインから呼び出し元ライフラインへのリターン・メッセージが発生した後、呼び出し元ライフラインが続行します。

名前または操作シグニチャーを使用して、メッセージを識別することができます。 名前は、操作に関連付けられていないメッセージの名前のみを識別します。 操作がメッセージに関連付けられている場合は、操作名によってその名前が置き換えられます。 操作シグニチャーが表示され、その操作の名前を識別します。 設計の段階でダイアグラムにおいてシグニチャーを使用し、その設計をコーディングする開発者に詳細を提供できます。

以下の図に示されるように、メッセージは、そのメッセージが送信される方向を指した矢印を持つ線 (送信メッセージの端からから受信メッセージの端) で示されます。 以下の例では、メッセージをシーケンス図に表示する方法を表しています。 この図では、銀行の顧客がこのプロセスに従ってローンを申請するという 銀行のシナリオが示されます。
  • 顧客は、銀行の窓口係にローンの申込書を提出します。
  • 銀行の窓口係はその申込書を銀行の管理者に送って処理してもらい、 管理者が処理を終了するまで待機します。
  • 銀行の管理者は信用調査プログラムを開始してデータを入力し、信用調査所が結果を送信するまで待機します。
  • 銀行の管理者は応答を受信し、決定を伝えるメッセージを銀行窓口係に送信します。
  • 銀行窓口係は、そのローンが承認されたかどうかのメッセージを顧客に送信します。
  • 銀行の管理者は信用調査プログラムを閉じ、顧客は取引を完了します。

さまざまな銀行ライフライン間でのメッセージの受け渡しを示す銀行トランザクションの例。


フィードバック