ガイドライン: 包含関係
トピック
包含関係によって、基底ユース ケースが包含ユース ケースに接続されます。包含ユース ケースは、常に抽象的で、包含ユース ケースは、基底ユース ケースを実行するユース ケースのインスタンスに挿入される振る舞いのセグメントを表します。基底ユース ケースは包含ユース ケースとの関係を制御し、包含を実行した結果に依存しますが、どちらのユース ケースも互いの属性にアクセスすることはできません。このような意味において、包含ユース ケースはカプセル化されており、異なる基底ユース ケースで再利用できる振る舞いを表します。
包含関係は、次のように使用できます。
- ユース ケースの主な目的を理解するためには必要はなく結果のみが重要である振る舞いを、基底ユースから除外します。
- 2 つ以上のユース ケースに共通する振る舞いを除外します。
例:
現金自動預け払い機 (ATM) のシステムでは、ユース ケース「現金引き出し」、「現金預け入れ」、「口座振替」はすべて、顧客がシステムに確認される方法を包含する必要がありま す。この振る舞いを抽出して、3 つの基底ユース ケースに含まれる新しい包含ユース ケース「顧客の識別」に含めることができます。基底ユース ケースは識別に使用される方法からは独立しており、包含ユース ケースの中にカプセル化されます。基底ユース ケースの観点からは、識別方法が磁気キャッシュカードの読み取りであろうと網膜スキャンであろうと関係ありません。ただ単に顧客を識別する「顧客の識別」の結果に依存するだけです。逆に、「顧客の識別」ユース ケースの観点からは、基底ユース ケースで顧客の識別が使用される方法や、包含が実行される前に何が起きているのかは関係なく、識別方法はまったく変わりがありません。

ATM システムでは、ユース ケース「現金引き出し」、「現金預け入れ」、「口座振替」はすべて、ユース ケース「顧客の識別」を包含している必要があります。
基底ユース ケースには複数の包含が存在する可能性があります。また、1 つの包含ユース ケースは、複数の基底ユース ケースに含まれる場合があります。このことは、基底ユース ケース間の関係には関係ありません。同一の包含ユース ケースと基底ユース ケースの間で複数の包含関係が存在する場合もあり、包含が基底ユース ケースの異なる場所に挿入されていることもあります。包含関係により、場所が定義されます。追加されるものはすべてネストされ、1 つの包含ユース ケースが別の包含ユース ケースの基底ユース ケースとなることもあります。
包含ユース ケースは抽象的なため、アクターが関連付けられている必要はありません。包含ユース ケースの振る舞いが明確にアクターとやり取りがある場合にのみ、アクターへのコミュニケーション関連が必要となります。
包含の振る舞いは、基底ユース ケースの任意の場所に挿入されます。基底ユース ケースの説明に従って機能しているユース ケースのインスタンスが、包含関係が定義されている場所から基底ユース ケースの場所に移されると、包含ユース ケースの説明に従って機能するようになります。いったん包含が実行されると、ユース ケースのインスタンスは基底ユース ケースの中止された時点から再開されます。

基底ユース ケースの説明に従って機能しているユース ケースのインスタンスに包含が含まれている。
包含関係は条件ではありません。ユース ケースのインスタンスは、定義されている基底ユース ケースの場所に達すると必ず実行されます。条件を表すには、基底ユース ケースの一部として行う必要があります。ユース ケースのインスタンスが、包含関係が定義されている基底ユース ケースの場所に達することがない場合は、実行されません。

ユース ケースのインスタンス #1 は包含関係が定義されている基底ユース ケースの場所に到達し、包含が実行されます。ユース ケースのインスタンス #2 はその場所に到達せず、包含はそのインスタンスの一部として実行されません。
包含ユース ケースは 1 つの連続する振る舞いのセグメントであり、そのすべてが基底ユース ケースの 1 つの場所に包含されます。別の場所に挿入される独立した振る舞いのセグメントがある場合は、拡張関係 (「ガイドライン: 拡張関係}を参照) またはユース ケースの汎化 (「ガイドライン: ユース ケースの汎化」を参照) を検討する必要があります。
包含関係では、包含が挿入される基底ユース ケースの振る舞いのシーケンス内に場所を定義しなければなりません。場所は、特定の手順または基底ユース ケースのイベント フロー内にあるサブフローに従って定義できます。
例:
ATM システムでは、ユース ケース「現金支払い」によってユース ケース「顧客の識別」が包含されます。「現金支払い」から「顧客の識別」への包含関係は次のように表すことができます。
「顧客の識別」は「現金支払い」のイベント フローの項 1.1 「ユース ケースの開始」と、項 1.2 「金額の照会」の間に挿入されます。
基底ユース ケースのイベント フローを記述したテキストでも包含について記述し、明確さを保つ必要があります。
物事が処理される方法ではなく、機能の結果に依存するユース ケースの振る舞いのセグメントが存在する場合、この振る舞いを包含ユース ケースに抽出して、ユース ケースを簡略化できます。包含ユース ケースは複数の基底ユース ケースに包含される場合があります。つまり、モデルのユース ケースの間で振る舞いの再利用が可能だということです。次のような、簡単な電話システムのユース ケースの段階的な概要を検討します。
呼び出し
- 発信者が受話器をとる。
- システムが発信音を出す。
- 発信者が電話番号の 1 つ目を押す。
- システムが発信音を停止する。
- 発信者が電話番号の残りをすべて押す。
- システムが電話番号を分析し、受信者のネットワーク アドレスを決定する。
- システムが、発信者と受信者の間に仮想回線を確立できるかを決定する。
- システムが仮想回線にすべてのリソースを割り当て、接続を確立する。
- システムが受信者の電話のベルを鳴らす。
- その他。
システム開始
- オペレータがシステムを起動する。
- システムが全コンポーネントの診断テストを行う。
- システムが隣接するすべてのシステムの接続をテストする。隣接する各システムについて、システムが隣接するシステムとの間に仮想回線を確立できるかどうかを決定する。システムが、仮想回線にすべてのリソースを割り当てて、接続を確立する。
- システムが、操作が可能になったことを応答する。
- その他。
どちらのケースでも、青で示した記述部分は非常に類似しており、理由は異なりますが同じ振る舞いをします。この類似点を活用し、共通の振る舞いを新しいユース ケース「仮想回線の管理」に抽出できます。
共通の振る舞いが抽出されると、ユース ケースは次のようになります。
呼び出し
- 発信者が受話器をとる。
- システムが発信音を出す。
- 発信者が電話番号の 1 つ目を押す。
- システムが発信音を停止する。
- 発信者が電話番号の残りをすべて押す。
- システムが電話番号を分析し、受信者のネットワーク アドレスを決定する。
- ネットワーク上で接続を確立するために、「仮想回線の管理」ユース ケースが包含される。
- システムが受信者の電話のベルを鳴らす。
- その他。
システム開始
- オペレータがシステムを起動する。
- システムが全コンポーネントの診断テストを行う。
- システムが隣接するすべてのシステムの接続をテストする。隣接する各システムについて (ループ)、ネットワークでの接続を確立するために、「仮想回路の管理」ユース ケースが包含される。
- システムが、操作が可能になったことを応答する。
- その他。
ユース ケース図では、作成される包含関係は次のように表されます。

ユース ケース「電話をかける」と「システムの起動」双方に抽象的なユース ケース「仮想回路の管理」の振る舞いが包含される。
|