UML シーケンス図のフラグメントを使用した制御フローの記述
Visual Studio Ultimate の UML シーケンス図では、結合フラグメントを使用して、ループ、分岐、およびその他のオルタナティブを表示できます。
結合フラグメントは、1 つまたは複数の相互作用オペランドから構成されます。そのそれぞれには、1 つまたは複数のメッセージ、相互作用使用、または結合フラグメントが含まれます。
[!メモ]
このトピックでは、シーケンス図におけるフラグメントについて説明します。UML シーケンス図の見方の詳細については、「UML シーケンス図: リファレンス」を参照してください。UML シーケンス図の描画方法の詳細については、「UML シーケンス図: ガイドライン」を参照してください。
図に示されている要素は次のとおりです。
結合フラグメント。結合フラグメントには、いくつかの種類があります。この例に示されているのは、メッセージのオルタナティブ シーケンスを発生させることができることを示すオルタナティブ結合フラグメントです。
相互作用オペランド。すべての結合フラグメントには、メッセージ、相互作用使用、およびより小さな結合フラグメントを含むことができる 1 つ以上の相互作用オペランドが含まれています。この例のオルタナティブ結合フラグメントには、メッセージの 2 つのオルタナティブ シーケンスを示す 2 つの相互作用操作があります。
各相互作用オペランド。その内部をクリックすることで別個に選択できます。この例では、上部の相互作用オペランドが選択されているので、境界が表示されています。通常は、相互作用オペランド間の区切り線のみが表示されます。
[!メモ]
上部の相互作用オペランドを選択する場合、結合フラグメントの最上部に近い場所をクリックしないでください。
ガード。それぞれの相互作用オペランドにガードを設定できます。ガードは、相互作用オペランド内のメッセージが実行される条件を記述します。
結合フラグメントの生成
生成できるフラグメントの一覧については、「結合フラグメントの種類」を参照してください。
結合フラグメントを生成するには
1 つのメッセージを選択するか、またはすべて同じ生存線または実行のオカレンスで開始されるメッセージのシーケンスを選択します。
[!メモ]
複数のメッセージを選択する場合、メッセージは中断のないシーケンスを構成している必要があります。
いずれかのメッセージを右クリックし、[ブロックの挿入] をポイントします。次に、必要な種類の結合フラグメント (たとえば、オルタナティブ結合フラグメント) をクリックします。
新しい結合フラグメントが表示されます。見出しは、選択された結合フラグメントの種類 (たとえば、Alt) を示します。
結合フラグメントの内部には、選択されたメッセージを含むフラグメントがあります。
一部の種類の結合フラグメントには、さらに多くの相互作用オペランドを追加できます。
新しい相互作用オペランドを結合フラグメントに追加するには
相互作用オペランド (2) 内で、含まれているフラグメントの外側の、結合フラグメントの見出しの下の空白領域を右クリックします。
[追加] をポイントします。
[相互作用オペランドを前置] または [相互作用オペランドを後置] をクリックします。
メッセージ ツールを使用するか、または既存のメッセージをコピーして貼り付けることによって、新しい相互作用オペランド内にメッセージを追加できます。
相互作用オペランドの Guard プロパティを設定して、相互作用オペランド内のメッセージを実行する条件を記述できます。たとえば、Loop 結合フラグメント内では、ガードを使用して、ループが続行される条件を指定できます。Alt 結合フラグメントでは、それぞれの相互作用オペランドに対して別個の条件を指定できます。
相互作用オペランドのガードを設定するには
相互作用オペランド (2) 内で、含まれているフラグメントの外側の空白領域を右クリックします。
相互作用オペランドとガード条件の周囲に選択境界線が表示されます。
プロパティ ウィンドウの見出しに Interaction Operand と表示されます。
ガード条件を入力します。
条件がフラグメント (4) の最上部付近に表示されます。
一部の種類の結合フラグメントに対してプロパティを設定できます。
結合フラグメントのプロパティを設定または表示するには
結合フラグメントのタイトルを右クリックし、[プロパティ] をクリックします。
[!メモ]
結合フラグメントの種類が異なると、プロパティも異なります。
結合フラグメントの種類
制御フローを記述するフラグメント
単純なシーケンス図は、1 つの一般的なシーケンスのみを表示します。次の種類の結合フラグメントを使用すると、さまざまな状況で発生する可能性があるバリエーションを記述できます。
フラグメントの種類 |
Description |
---|---|
Opt |
省略可能です。場合によっては発生するシーケンスを含みます。ガード内に、このシーケンスが発生する条件を指定できます。 |
Alt |
メッセージのオルタナティブ シーケンスを含むフラグメントの一覧を含みます。どのような場合でも発生するシーケンスは 1 つのみです。 各フラグメントにガードを設定して、シーケンスが実行される条件を示すことができます。ガード else は、ほかに true のガードがない場合に実行する必要があるフラグメントを示します。すべてのガードが false で、かつ else がない場合、いずれのフラグメントも実行されません。 |
Loop |
フラグメントは複数回繰り返して実行されます。ガード内に、繰り返しが発生する条件を示すことができます。 ループ結合フラグメントには、フラグメントを実行する最小回数と最大回数を示す Min と Max のプロパティが用意されています。既定では、制限はありません。 |
Break |
このフラグメントを実行した場合、シーケンスの残りの部分は破棄されます。ガードを使用して、中断が発生する条件を示すことができます。 |
Par |
パラレル。フラグメントのイベントをインタリーブできます。 |
Critical |
パラレル フラグメントまたはシーケンス フラグメント内で使用します。このフラグメント内のメッセージを他のメッセージとインタリーブしないことを示します。 |
Seq |
複数のオペランド フラグメントがあります。同じ生存線が使用されるメッセージは、フラグメントの順に発生する必要があります。同じ生存線が使用されない場合、異なるフラグメントのメッセージをパラレルにインタリーブできます。 |
Strict |
複数のオペランド フラグメントがあります。フラグメントは、指定された順に発生する必要があります。 |
シーケンスの解釈方法に関するフラグメント
シーケンス図は、発生する一連のメッセージを既定で示します。実行中のシステムでは、図への表示を選択していない他のメッセージが発生することがあります。
次のフラグメントの種類を使用して、この解釈を変更できます。
フラグメントの種類 |
Description |
---|---|
Consider |
このフラグメントで記述するメッセージのリストを指定します。他のメッセージが実行中のシステムで発生することがありますが、この記述の目的にとっては重要ではありません。 Messages プロパティにリストを入力します。 |
[無視] |
このフラグメントで記述しないメッセージのリスト。これらのメッセージが実行中のシステムで発生することがありますが、この記述の目的にとっては重要ではありません。 Messages プロパティにリストを入力します。 |
Assert |
オペランド フラグメントは、有効なシーケンスのみを指定します。通常は、Consider フラグメントまたは Ignore フラグメント内で使用します。 |
Neg |
このフラグメントに示されたシーケンスが発生しないことを示します。通常は、Consider フラグメントまたは Ignore フラグメント内で使用します。 |