コラボレーションに最適なワークスペース、Lucidchart UMLツール を使えば、システム全体のダイナミックな動作をビジュアルで分かりやすく表すカスタムの UML 相互作用図が作成できます。
以下では、使用方法や作成方法を始め、相互作用図の基本を説明しています。
この記事を読むのに必要な時間 : 4 分
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
相互作用図とは?
その名が示すとおり、相互作用図とはシステムの相互作用を表すもので、UML 図の一種です。システム内のメッセージのフローを記述することを重視した図で、システム内の1つまたは複数のライフラインにつきコンテキストを提供します。また、システム内の順序付けられたシーケンスを表すためにも使用でき、UML を使ってリアルタイムデータを視覚化するための手段としても機能します。
相互作用図を使用する利点
相互作用図は、多彩なシナリオでユニークな情報のセットを表すために活用できます。具体的には以下のような用途があります。
- 時系列のイベントのシーケンスとしてシステムをモデル化する。
- システムやプロセスをリバースエンジニアリングまたはフォワードエンジニアリングする。
- 相互に作用するさまざまなイベントの構造を整理する。
- システム内のメッセージやライフラインの動作を分かりやすく伝える。
- ライフライン要素間の接続を識 別する。
UML 相互作用図の種類
相互作用図は、以下の4つの主要図に分類されます。
- コミュニケーション図
- シーケンス図
- タイミング図
- 相互作用概要図
これらの図は、システムの動作や構造のそれぞれ異なる側面に焦点を当てたものです。以下では、各図の基本と活用方法を紹介しています。
コミュニケーション図 (コラボレーション図)
UML では、コミュニケーション図を使ってさまざまなソフトウェアオブジェクト間の関連や相互作用を図示します。メッセージのフローではなく、オブジェクトアーキテクチャに焦点を当てることで、相互作用図の構造的側面を強調した図です。
コミュニケーション図には以下のような利点があります。
- ライフラインの接続方法を強調する。
- メッセージのフローでなくシステム内の要素に焦点を当てる。
- タ イミングよりも組織に重点を置いて確認する。
コミュニケーション図には以下のような欠点もあります。
- 非常に複雑になりやすい。
- システム内の特定のオブジェクトが見つけにくい。
- 作成に時間がかかる。
シーケンス図
相互作用を示すためにはシーケンス図も利用できます。以下の図は5つの主要なイベントを中心に展開しています。
- 発注
- 支払い
- 注文の確認
- 注文品の準備
- 注文品の提供
イベントのシーケンスが変更されると、遅延が発生したり、システムがクラッシュする可能性があります。図に含まれる特定のシーケンスに一致する表記法を選択することが重要です。
シーケンス図には以下のような利点があります。
- メンテナンスと生成が簡単。
- システムの変更に応じて簡単に更新できる。
- リバースエンジニアリングやフォワードエンジニアリングに役立つ。
シーケンス図には以下のような欠点もあります。
- ライフラインや各種の記法が多すぎ、複雑になる傾向がある。
- 作成時にミスが発生しやすく、シーケンスを確実に正確に入力しないと適切な図が完成しな い。
タイミング図
別のオプションとしては、タイミング図も利用できます。オブジェクトのある形式から別の形式への変化を示し、任意の時点でのライフラインの状態を表す図で、さまざまな時点におけるソフトウェアプログラム内のフローを図内で視覚化するために波形を使用します。
タイミング図には以下のような利点があります。
- リバースエンジニアリングやフォワードエンジニアリングに役立つ。
- 特定の時点におけるオブジェクトの状態を適時に示すことができる。
- システム内のすべての変更を追跡できる。
タイミング図には以下のような欠点もあります。
- 分かりにくい。
- 時間の経過とともにメンテナンスが難しくなる場合もある。
相互作用概要図
相互作用概要図は、相互作用モデルの概要を示す図で、相互作用から相互作用への制御のフローと図から図へのアクティビティのフローを概略で表します。
タイミング図には以下のような利点があります。
- モデル内のアクティビティを簡潔に示すことができる。
- 複数の図にまたがるナビゲーションがしやすい。
- 他の要素に加えてアクティ ビティ図内の注釈の大半が使用でき、明確な図を作りやすい。
相互作用図はかなり直感的なものですが、特定の動作を表現するには分岐や相互作用を追加する必要があり、やや難しい点もあります。
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
UML図 を作成相互作用図の記号と用語
相互作用図では一般的に以下の用語と記号を使用します。
ライフライン : 所与の相互作用内の単一の参加者を示し、特定の分類子のインスタンスが相互作用に参加する方法を表します。
ライフラインの属性には以下のようなものがあります。
- 名前 : 特定の相互作用でライフラインを参照するために使用します。ライフライン名はオプションです。
- タイプ : ライフラインがインスタンスを表す分類子に名前を付けます。
- セレクタ : 要件を満たす特定のインスタンスを選択するためのブール条件として使用されます。
メッセージ : メッセージとは、相互作用における2つのライフライン間の特定の通信タイプを指し、オペレーションの呼び出し、インスタンスの作成や破棄、シグナルの送信に使用できます。ライフラインがメッセージを受信してやり取りする際に、ライフラインからライフラインへ移動する制御のフォーカスが作成されます。これは制御のフローと呼ばれます。
相互作用図では以下のようなメッセージを使用します。
- 同期メッセージ : メッセージの送信者は、受信者がメッセージの実行から制御を返すまで待機し続けます。
- 非同期メッセージ : メッセージの送信者は、メッセージ受信者からのリターンを待たずに、次のメッセージの実行を続けます。
- リターンメッセージ : 前のメッセージの受信者は送信者に制御フォーカスを返します。
- オブジェクトの生成 : メッセージの送信者は分類子のインスタンスを作成します。
- オブジェクトの消滅:メッセージ送信者は生成されたインスタンスを破棄します。
- 検出メッセージ : メッセージの送信者が相互作用の範囲外です。
- 逸失メッセージ : 相互作用内でメッセージが失われ、宛先に到達することはありません。
演算子: 演算子は、被演算子が操作内で実行される方法を指定します。UML において、演算子は、データに対する分岐と反復をサポートしています。
相互作用図では以下のような演算子を使用します。
- Opt (option) : 条件が真である場合に被演算子が実行されます。
- Alt (alternative) : 条件が真である被演算子が実行されます。
- Loop (loop) : 特定の期間につき、命令をループします。
- Break (break) : 条件が真または偽の場合はループが壊れ、次の命令が実行されます。
- Ref (reference) : 別の相互作用を参照します。
- Par (parallel) : すべての被演算子が互いに並列に実行されます。
分岐 : 相互作用図で最も重要な用語のひとつです。相互作用図内で分岐を表すため、個々のメッセージにメッセージの転送可否を検証するガード条件が追加されます。メッセージのガード条件が真である場合にのみ、メッセージを転送できます。メッセージは複数のガード条件をもつことができ、複数のメッセージに同一のガード条件を含めることもできます。
反復 : 相互作用式は相互作用指定子と反復句で構成されます。反復式は、相互作用図で反復式を示すためにも使用でき、特定の構文を含みません。
並列反復指定子は、メッセージが並列に送信されていることを示すために使用され、「*//」で示されます。UML において、反復はループ演算子を使用して達成されます。
状態の不変と制約 : 相互作用図において、状態とはオブジェクトの存続期間中の状況または条件を指します。制約を充足し、さまざまな操作を実行し、イベントを待機するものです。状態はインスタンスまたはライフラインがメッセージを受信した際に変更できますが、すべてのメッセージが状態の変更をトリガーするわけではありません。
相互作用図を作成する方法
以下の手順に従い、相互作用図の作成の開始に必要な情報が揃っていることを確認します。
- 相互作用図で表したいシナリオを決定します。
- 相互作用に関与するライフラインを特定します。
- 各ライフラインを調べ、潜在的な接続や関連を特定し、ライフラインを分類します。
- 相互作用内のメッセージフローのシーケンスを特定します。
- 相互作用内のさまざまなタイプのメッセージ、順序付けられたイベントのシーケンス、各オブジェクトの時間制約を特定します。
- UML 図ソフトウェアで適切な図形、ノードや線を選択して図内のアクティビティのフローを作成します。テンプレートを選択してカスタマイズすることもできます。
- 図形、ノードと線に、システム内のイベント、インタラクションやメッセージを表すラベルをそれぞれ付けます。
シーケンス図、タイミング図、コミュニケーション図など、図の種類によって中心となるシステムの動作は違いますので、図のデザインも異なります。
相互作用図の例
以下では、基本的なウェブアプリのさまざまな要素間の相互作用のモデル化に使用できる相互作用図テンプレートの簡単な例を紹介しています。このテンプレートを変更してシステムの制御フローを視覚化し、システム内のオブジェクト間の相互作用を記述できます。