次の方法で共有


UML ユース ケース図: ガイドライン

Visual Studio Ultimate では、アプリケーションまたはシステムを使用するユーザーや、ユーザーが実行できる操作を要約するユース ケース図を描画できます。UML ユース ケース図を生成するには、[アーキテクチャ] メニューの [新しい図] をクリックします。

ビデオ デモについては、「Organizing Features into Use Cases (機能をユース ケースにまとめる)」を参照してください。

ユース ケース図は、次の情報を検討および伝達するのに役立ちます。

  • システムまたはアプリケーションがユーザー、組織、または外部システムと対話するシナリオ。

  • これらのアクターが達成するゴール。

  • システムのスコープ。

ユース ケース図には、ユース ケースの詳細は示されません。ユース ケース図は、ユース ケース、アクター、およびシステムの間のいくつかの関係を要約したものにすぎません。 特に、各ユース ケースのゴールを実現するために実行されるステップの順序は図に示されません。 このような詳細については、他の図およびドキュメントに記述し、これらのファイルを各ユース ケースにリンクできます。 詳細については、このトピックの「ユース ケースの詳細な記述」を参照してください。

ユース ケースの記述では、システムが運用されるドメインに関連する用語 (たとえば、"セール"、"メニュー"、"顧客") を使用します。 その際、これらの用語とその関係を明確に定義することが重要になります。UML クラス図を使用することで、これが可能になります。 詳細については、「UML クラス図: ガイドライン」を参照してください。

ユース ケースは、システムの機能要求のみを扱います。 ビジネス ルール、サービス品質要求、実装の制約などの他の要求は、別個に表す必要があります。 同様に、アーキテクチャおよび内部の詳細も別個に記述する必要があります。 ユーザー要求を定義する方法の詳細については、「ユーザー要求のモデリング」を参照してください。

このトピックでは、顧客が近所のレストランに料理を注文できる Web サイトに関する例を使用しています。

ユース ケース ダイアグラムの要素

  • アクター (1) は、システムと対話するユーザー、組織、デバイス、または外部ソフトウェア コンポーネントを表すクラスです。 たとえば、Customer、Restaurant、Temperature Sensor、Credit Card Authorizer のようなアクターを設定します。

  • ユース ケース (2) は、特定のゴールに到達するために 1 つまたは複数のアクターによって実行されるアクションを表します。 たとえば、Order Meal、Update Menu、Process Payment のようなユース ケースを設定します。

    ユース ケース図では、ユース ケースを、ユース ケースを実行するアクターと関連付けます (3)。

  • システム (4) は、現在開発しているシステムを表します。 システムとして、小さなソフトウェア コンポーネントを定義できます。その場合のアクターは、他のソフトウェア コンポーネントです。また、完全なアプリケーションや、数多くのコンピューターおよびデバイスに配置される大規模な分散型のアプリケーション スイートをシステムとして定義する場合もあります。 たとえば、Meal Ordering Website、Meal Delivery Business、Website Version 2 のようなサブシステムを設定します。

    ユース ケース図では、システムまたはそのサブシステムでどのユース ケースがサポートされるかが示されます。

このトピックの内容

ユース ケース図を描画するための基本的な手順

アクターおよびユース ケースの描画

ユース ケースの詳細な記述

ユース ケースの構成

サブシステム境界の使用

ユース ケース図を描画するための基本的な手順

注意

モデル図を生成するための詳細な手順については、「方法: UML モデルおよび UML 図を編集する」を参照してください。

新しいユース ケース図を生成するには

  1. [アーキテクチャ] メニューの [新しいダイアグラム] をクリックします。

  2. [テンプレート][UML ユース ケース図] をクリックします。

  3. 図に名前を付けます。

  4. [モデリング プロジェクトへの追加] で、ソリューション内の既存のモデリング プロジェクトを選択します。または、[新しいモデリング プロジェクトを作成します] を選択し、[OK] をクリックします。

ユース ケース図を描画するには

  1. システム全体または主要なコンポーネントを表すために、サブシステム境界をツールボックスから図にドラッグします。

    • システムまたはそのコンポーネントでどのユース ケースがサポートされるかを記述しない場合は、システム境界を省略してユース ケース図を描画できます。

    • 必要に応じて、システムの角をドラッグしてサイズを拡大します。

    • 適切に名前を変更します。

  2. アクターをツールボックスから図にドラッグし、いずれかのシステム境界の外側に配置します。

    • アクターは、ユーザー、組織、および外部システムと対話するクラスを表します。

    • 適切に名前を変更します。 たとえば、Customer、Restaurant、Credit card agency のような名前を付けます。

  3. ユース ケースをツールボックスから適切なシステムにドラッグします。

    • ユース ケースは、アクターがシステムを使用して実行するアクティビティを表します。

    • アクターが理解できるタイトルに名前を変更します。 コードに関連付けられたタイトルは使用しないでください。 例: Order Meal、Pay for Meal、Deliver Meal

    • Order Meal のような主要なトランザクションから開始し、Select Menu Item のようなより小さな相互作用は後回しにします。

    • それぞれのユース ケースを、システムまたはそれをサポートする主要サブシステムに配置します (このとき、ユーザーへの接続のみに関連するファサードまたはコンポーネントは無視します)。

    • ユース ケースをシステム境界の外側に描画すると、(特定のバージョンまたはリリースの) システムでユース ケースがサポートされていないことを表すことができます。

  4. ツールボックスの [関連] をクリックします。ユース ケースをクリックし、次にそのユース ケースに参加するアクターをクリックします。 手順を繰り返して、それぞれのアクターをユース ケースにリンクします。

  5. 包含拡張、および汎化関係を使用して、ユース ケースを構成します。 これらのリンクを生成するには、目的のツールをクリックし、リンク元ユース ケース、リンク先ユース ケースの順にクリックします。 後の「ユース ケースの構成」を参照してください。

  6. ユース ケースの詳細を記述します。 後の「ユース ケースの詳細な記述」を参照してください。

  7. 別のサブシステムまたは関連付けられているユース ケースの別のグループにフォーカスした図を別個に描画します。 1 つのモデリング プロジェクトに含まれる図は、すべて同じモデルのビューを示しています。

アクターおよびユース ケースの描画

ユース ケース図の主な目的は、システムと対話するユーザーと、ユーザーがシステムを使用して実現する主要なゴールを示すことにあります。

  • アクターを生成すると、システムまたはサブシステムと対話するユーザー、組織、他のシステム、ソフトウェア、またはデバイスのクラスを表すことができます。

    • アクターおよびその他の要素を描画する方法の詳細については、「方法: UML モデルおよび UML 図を編集する」を参照してください。

    • それぞれのゴールのセットに対して、物理的なユーザーまたはエンティティが同一になることがある場合でも、型またはロールに基づいてアクターを識別します。 たとえば、レストランの従業員が顧客になるケースもありますが、Restaurant と Customer は別個のアクターです。

  • それぞれのアクターがシステムを使用して追求するそれぞれのゴールのユース ケースを生成します。

    • 実装の用語を使用する代わりに、アクターが理解できる表現でユース ケースを記述します。
  • 関連を使用して、アクターをユース ケースにリンクします。

アクター間での継承

継承を示すユース ケース ダイアグラム

アクター間に汎化リンクを描画できます。 例の Club Customer が示す特化されるアクターは、汎化されるアクター Customer のユース ケースを継承します。 より一般的なアクター (この例では Customer) は、矢じりによって指し示します。 リンクを生成するときは、特化されるアクターを最初にポイントします。

特化されるアクターは、他のアクターが利用することができない、追加のユース ケースを独自に持つことができます。

ヒント

アクターがアクター自体を汎化することになる汎化関係のループを作成しないでください。 ループによってエラーが生成される可能性があります。

代替アクター アイコン

標準のスティック図形の代わりにカスタム アイコンを使用して、アクターを表すことができます。 たとえば、デバイス、レストラン、銀行などを模した図形にアイコンを変更できます。

アクターの外観を変更するには

  1. アクターを右クリックし、[プロパティ] をクリックします。

    [プロパティ] ウィンドウが表示されます。

  2. Image Path プロパティをイメージ ファイルの位置に設定します。

    • 使用できるイメージの形式は、.gif、.jpg、および .bmp です。

    • ソリューションまたはプロジェクト ソース管理に含まれているファイルを使用します。これにより、ソリューションを移動またはコピーした場合でも、そのファイルを使用できます。

  3. この外観を他のユース ケース図に複製するには、アクターをコピーし、別の図に貼り付けます。

    • イメージに対する変更は、特定の図のビューにのみ適用されます。 基になるモデル要素には適用されません。 アクターを UML モデル エクスプローラーから別の図にドラッグした場合、アクターは標準のスティック図形として表示されます。

アクターとユース ケースの間の多重度

アクターとユース ケースの間の関連では、各端部に多重度を表示できます。

アクターと 1 対 1 対応のユース ケース

注意

ユース ケース図において関連の両端部の多重度が 1 の場合、多重度は非表示になります。

既定では、それぞれの多重度は 1 です。 モデルの厳密な解釈において、多重度が 1 であることは、たとえば、それぞれの料理の注文に関連付けられる顧客は 1 人だけで、かつそれぞれの顧客は一度に 1 つの料理しか注文しないことを表します。

これらの多重度は変更できます。

次に例を示します。

多対多の多重度を示すユース ケース

  • 同じクラスの複数のアクターがユース ケースの単一のオカレンスに参加できることを示すには、関連のアクター側の多重度を 1..* に設定します。

    この図では、1 つ以上のレストランが同じ料理の注文を受けることができます。

  • それぞれのアクターがユース ケースの複数のオカレンスに同時に参加できることを示すには、関連のユース ケース側の多重度を * に設定します。

    この図では、各レストランは複数の注文を同時に受けることができます。

関連に多重度を設定するには

  1. 関連を右クリックし、[プロパティ] をクリックします。

  2. [1 番目のロール] または [2 番目のロール] を展開します。

    ロールは、関連の端部の要素を表します。

  3. 多重度プロパティを一覧から選択して設定します。

    • 1 は、このロールの 1 つのインスタンスのみがそれぞれのリンクに参加することを示します。

    • 1..* は、このロールの 1 つ以上のインスタンスがそれぞれのリンクに参加することを示します。

    • 0..1 は、参加が任意であることを示します。

    • * は、このロールの 0 個以上のインスタンスがリンクに参加することを示します。

注意

多くのチームでは、多重度情報をユース ケース図に示さずに多重度を既定値の 1 のままにしています。 彼らは、代わりに情報をユース ケースの別の記述で提供しています。 その場合、ユース ケース図内ですべての多重度が非表示になります。

複数の図でのアクターまたはユース ケースの使用

複数の図に同じアクターおよびユース ケースを表示できます。 次に例を示します。

  • 1 つのアクターが関係している異なるユース ケースを異なる図に記述できます。

  • ユース ケースが関連付けられているアクターおよびサブシステムを 1 つの図に示し、このユース ケースを包含されるユース ケースと拡張されるユース ケースにどのように構成するかを別の図に示すことができます。

同じアクターまたはユース ケースを異なる図に表示するには

  1. アクターまたはユース ケースを 1 つの図に生成します。

  2. 別のユース ケース図を生成します。

  3. モデル エクスプローラーから新しい図にアクターまたはユース ケースをドラッグします。

    注意

    既に関連付けが行われているアクターとユース ケースを新しい図に配置すると、アクターとユース ケースの間の関連も自動的に新しい図に表示されます。

ユース ケースの詳細な記述

ユース ケースは、次の要素を表します。

  • システムを使用してアクターが実現するゴール (たとえば、"料理を買う"。

  • 1 つまたは複数のシナリオ。シナリオは、ゴールに到達するために実行される一連のステップ (たとえば、{Order Meal、Meal、Deliver}) です。 成功のシナリオだけでなく、Credit Card Rejected のような例外や失敗のシナリオもあります。

ユース ケースは、異なる詳細レベルで記述できます。 設計の早い段階では、ユース ケース図に名前を付けるだけで十分です。 後で、シナリオのより詳細な内容を記述できます。

Visual Studio Ultimate では、ユース ケースをさまざまな方法で記述して、別個に使用したり、組み合わせて使用したりできます。

  • ユース ケースをプロジェクトに含まれる 1 つまたは複数の別の図にリンクします。

    • アクティビティ図は、ループ、分岐、および並列スレッドが含まれるより複雑なプロセスを説明するのに便利です。 アクティビティ図には、プロセスのパート間のデータのフローを示すこともできます。 詳細については、「UML アクティビティ図: ガイドライン」を参照してください。

    • シーケンス図は、異なるアクター間で行われる一連の複雑な相互作用を説明するのに便利です。 シーケンス図を使用して、各ユース ケースに対してシステム内部で発生する処理を示すこともできます。 詳細については、「UML シーケンス図: ガイドライン」を参照してください。

  • ユース ケースの詳細が示されている OneNote ページ、セクション、またはパラグラフにユース ケースをリンクします。

  • テキストや画面ショットを使用してユース ケースのシナリオが記述されている Word 文書にユース ケースをリンクします。 詳細については、「ユーザー要求のモデリング」を参照してください。

ユース ケースを同じソリューションに含まれる図またはファイルにリンクするには

  1. ユース ケースのシナリオを示すために、シーケンス図やアクティビティ図などの図を描画します。

  2. ユース ケース図に戻ります。

  3. ソリューション エクスプローラーから図またはファイルをユース ケース図の空白部分にドラッグします。

  4. 依存関係を使用して、成果物からユース ケースへの接続を設定します。

Word 文書や PowerPoint プレゼンテーションなどのソリューション ファイルにリンクするには

  1. テキストや画面ショットを使用してユース ケースのシナリオが記述されているドキュメントを作成します。

  2. ソリューションにドキュメントを追加します。

    1. Word 文書をソリューションと同じ Windows フォルダーに移動します。

    2. ソリューション エクスプローラーで、ソリューションを右クリックします。次に、[追加] をポイントし、[既存の項目] をクリックします。

    3. Word 文書を参照し、[追加] をクリックします。

      Word 文書がソリューション エクスプローラーのソリューション フォルダーに表示されます。

  3. ソリューション エクスプローラーから Word 文書をユース ケース図の空白部分にドラッグします。

    新しい成果物が表示されます。

  4. 依存関係を使用して、成果物からユース ケースへの接続を設定します。

共有ドキュメント、OneNote 要素、または Web ページにリンクするには

  1. 共有要素の URL を取得します。 これは、たとえば、"\\" で始まるネットワーク ファイル パス、"http://" で始まる Web ページまたは Sharepoint URL、"onenote" で始まる OneNote セクション、ページ、パラグラフへのリンクなどです。

  2. ツールボックスの [成果物] をクリックし、ユース ケース図をクリックします。

  3. 新しい成果物を選択した状態で、"ハイパーリンク" プロパティに URL を入力するか貼り付けます。

注意

成果物をダブルクリックすると、リンク先の図またはドキュメントが開きます。

ユース ケースから作業項目へのリンクの設定

プロジェクトで Visual Studio Team Foundation Server 2010 を使用していて、チーム エクスプローラー を持っている場合、それぞれのユース ケースを Team Foundation の作業項目にリンクできます。 これらのリンクを設定する方法の詳細については、「方法: 作業項目をモデル要素にリンクする」を参照してください。

これにより、次の操作が可能になります。

  • リンクされた作業項目内でユース ケースを記述できます。 特に、プロジェクトで Visual Studio フォーマル プロセス テンプレートを使用する場合、ユース ケース作業項目へのリンクを設定できます。 この作業項目の種類は、ユース ケースのゴールおよびシナリオを記述するためのフィールドを提供します。

  • テスト ケースをユース ケースにリンクして、開発中のコードにどの程度ユース ケースが実装されているかのレポートを取得できます。

  • タスクをユース ケースにリンクして、開発作業の進捗状況を追跡できます。

ユース ケースの構成

いくつかの主要なユース ケースだけにシステムの振る舞いを記述することをお勧めします。 それぞれの主要なユース ケースでは、"製品を購入する"、"(ベンダーの視点から) 販売用の製品を提供する" など、アクターが実現する主要なゴールを定義します。

これらのゴールを明確にした後で、それぞれのゴールをどのように実現するかに関する詳細や、基本的なゴールのバリエーションを定義できます。

ユース ケースをあまりに細かく分解することは避けてください。 ユース ケースは、システムの内部動作ではなく、システムに関するユーザーのエクスペリエンスを表します。 また、一般的には、コードの初期動作バージョンを生成する方が、詳細なユース ケースを構成するために時間を費やすよりも生産的です。

主要なユース ケースと詳細なユース ケースの間の関係はユース ケース図に要約できます。 以下のセクションで、この方法について説明します。

  • 包含によるユース ケースの詳細の表示

  • 汎化によるゴールの共有

  • 拡張によるバリエーションの分離

包含によるユース ケースの詳細の表示

包含関係は、あるユース ケースが別のユース ケースの詳細を記述していることを示すために使用します。 この図の Order a Meal は、Pay、Choose Menu、および Choose Menu Item を包含しています。 包含されているより詳細なユース ケースのそれぞれは、包含するユース ケースの全体的なゴールを達成するために 1 つ以上のアクターが実行する必要があるステップを表します。 より詳細な包含されるユース ケースは、矢じりによって指し示します。

ヒント

ユース ケースがユース ケース自体を包含することになる包含関係のループを作成しないでください。 ループによってエラーが生成される可能性があります。

包含されるユース ケースは共有できます。 この例の Order a Meal ユース ケースと Subscribe to Reviews ユース ケースは、どちらも Pay を包含しています。

包含によって分解されたユース ケース

包含されるユース ケースのゴールとシナリオは、後で設計されたユース ケースで包含できるように、単独で意味を成している必要があります。

ユース ケースを包含するパートと包含されるパートに分離することで、次のゴールを達成するのが容易になります。

  • ユース ケースの記述を異なる詳細レイヤーに構成する。

  • 異なるユース ケースでの共有シナリオの繰り返しを回避する。

詳細なステップの順序の定義

ユース ケース図では、より詳細なステップを実行する順序や、各ステップを必ず実行する必要があるかどうかは示されません。

ステップの順序を明確にするには、成果物を使用して、包含するユース ケースに別のドキュメントをアタッチします。 下の例では、アクティビティ図が Order a Meal ユース ケースにアタッチされています。 ここでは、ステップのリストや一覧の画面ショットが記録されたテキスト ドキュメントを代わりに使用することもできます。 詳細については、「ユース ケースの詳細な記述」を参照してください。

アクティビティ図を使用する場合は、次の名前付け規則に注意してください。

  • アクティビティ全体の名前は、包含するユース ケースと同じです。

  • アクティビティ図のアクションは、包含されるユース ケースと同じ名前を持ちます。

詳細については、「UML アクティビティ図: ガイドライン」を参照してください。

リンクされたアクティビティ ダイアグラムに示されたユース ケースのステップ

汎化によるゴールの共有

汎化関係を使用すると、特化されるユース ケースが、別の一般的なユース ケースによって表されるゴールを実現するための特定の方法であることを示すことができます。 より一般的なユース ケースは、白抜きの矢印によって指し示します。

汎化関係を示すユース ケース

たとえば、Pay は、Pay by Credit Card と Pay by Cash を汎化したユース ケースです。

ヒント

アクターがアクター自体を汎化することになる汎化関係のループを作成しないでください。 ループによってエラーが生成される可能性があります。

特化されるユース ケースを使用すると、同じゴールを実現するためにシステムが実行できる異なる方法を示すことができます。

特化されるユース ケースは、一般的なユース ケースのゴールおよびアクターを継承すると見なされます。 一般的なユース ケースには、シナリオを設定する必要はありません。特化によって、ゴールを実現するための異なる方法が記述されます。

2 つ以上のユース ケースから共通のゴールをリファクタリングするには

  1. 新しい一般的なユース ケースを生成し、名前を付けます。

  2. 新しい一般的なユース ケースが大きい矢印で指し示される、汎化関係を生成します。

    1. ツールボックスの [汎化] をクリックします。

    2. 特化されるユース ケース (例の Pay by Credit Card) をクリックします。

    3. 一般的なユース ケース (例の Pay) をクリックします。

  3. 特化されるユース ケースのゴールを既に記述している場合は、共通のパートを一般的なユース ケースに移動します。

  4. 特化されるユース ケースの間で共有されるアクターは、一般的なユース ケースに移動できます。

拡張によるバリエーションの分離

特定の状況下においてあるユース ケースが別のユース ケースに機能を追加できることを示すには、拡張リンクを使用します。 メインの拡張されるユース ケースは、矢じりによって指し示します。

1 つのユース ケースが別のユース ケースを拡張

ヒント

アクターがアクター自体を汎化することになる拡張関係のループを作成しないでください。 ループによってエラーが生成される可能性があります。

たとえば、一般的な Web サイトの Login ユース ケースは、Register New User を包含することができますが、それはユーザーがまだアカウントを持っていない場合に限られます。

ユース ケースをメイン パートと拡張パートに分離するには

  1. 新しい拡張ユース ケースを生成し、名前を付けます。

  2. 拡張されるユース ケースが矢印で指し示される、拡張関係を生成します。

    1. ツールボックスの [拡張] をクリックします。

    2. 拡張するユース ケース (例の Register New User) をクリックします。

    3. 拡張されるユース ケース (例の Login) をクリックします。

      注意

      図に拡張関係ループを生成することは避けてください。 ユース ケースをそれ自体の拡張にすることはできません。

  3. 拡張されるユース ケースのシナリオを既に生成している場合は、該当するステップを拡張のシナリオに移動します。

  4. 拡張 (例の Register New User) の記述には、ユース ケースが、どのような状況で、メイン ユース ケース シナリオのどこで発生するかに関する詳細が含まれている必要があります。 メイン ケースの記述を変更する場合は、この点に注意してください。

拡張ユース ケースは、メイン ユース ケースのシナリオとなるようなシナリオ ステップを表します。 拡張のシナリオおよびゴールは、メイン ユース ケースのコンテキストで読み取られます。したがって、これらは単独で実用的である必要はありません。

拡張の分離は、次のような状況を記述するのに便利です。

  • 拡張ユース ケースにのみ関連する追加のアクターが存在する場合。 たとえば、Web サイトへの顧客の登録を承認するには、管理者が必要になります。

  • 拡張ユース ケースが別のサブシステムで処理される場合。

  • この拡張を利用できるのがシステムの特定のバージョンに限られる場合。 それぞれのバージョンを別個のサブシステムとしてユース ケース図に示すことができます。

サブシステム境界の使用

サブシステム境界は、システムのスコープ内にあるユース ケースを示すために使用します。

サブシステム境界を描画するには

  1. ツールボックスの [サブシステム] をクリックし、図をクリックします。

    サブシステムが図に表示されます。

  2. サブシステムの角をドラッグして、サイズを調整します。

  3. 既存のユース ケースをサブシステム内にドラッグするか、またはサブシステムの外部にユース ケースをドラッグして、その内容を調整します。

または

サブシステム内に新しいユース ケースを直接生成するには、ツールボックスの [ユース ケース] をクリックし、次にサブシステムの内部をクリックします。

注意

ユース ケースの Subjects プロパティは、そこに含まれているサブシステムを示します。

システムのスコープ外のユース ケース

ビジネスの一部に含まれているユース ケースであれば、開発中のシステムで処理されないものであっても、図に含めておくと便利です。 このような情報は、開発者が自分の作業のコンテキストを理解するのに役立ちます。 たとえば、Meal Ordering Web サイトの責任の範囲外になりますが、Restaurant と Customer というアクターが関連する Deliver Meal をユース ケースとして表示できます。

複数のサブシステム

複数のサブシステム境界を生成すると、システムの異なるコンポーネントで異なるユース ケースが処理されることを示すことができます。 たとえば、Add Restaurant Appraisal が別個のフォーラム Web サイトで処理されるケースです。 ユース ケース図では、ユーザーに表示するものを扱う必要があります。 システムの内部の作業区分を記述する場合は、コンポーネント図の使用を検討してください。

システム バージョン

異なるサブシステム境界を使用すると、システムの異なるバージョンを示すことができます。 たとえば、Website Version 2 には、Version 1 に含まれていない Pay ユース ケースが含まれているとします。これは、顧客が注文を行うのをシステムが手助けすることを暗示します。 しかし、顧客はレストランに直接代金を支払う必要があります。

異なるバージョンまたはバリアントを表すサブシステムどうしをリンクするには、依存関係を使用します。

サブシステムがシステムの異なるバージョンを示している

参照

概念

ユーザー要求のモデリング

UML シーケンス図: ガイドライン

方法: UML モデルおよび UML 図を編集する

UML ユース ケース図: リファレンス

UML クラス図: リファレンス

UML コンポーネント図: リファレンス

UML コンポーネント図: リファレンス

その他の技術情報

Video: Organizing Features into Use Cases (ビデオ: 機能をユース ケースにまとめる)