プロフェッショナルなユースケース図を作成するための10のヒント

ユースケースモデリングに関して、よくある誤解が2つあります:

1つは、ユースケース図はあまりにも単純すぎて、重要なことを説明していないため、描く価値がないということです。

もう1つの誤解は、それとは正反対です。一部の人々は、ユースケース図は非常に強力であり、ソフトウェアのさまざまな側面を表現でき、システム要件の記述からシステムの内部動作のモデリングまでカバーできると考えています。

では、ユースケースとは何か?

ユースケース図とは何か

ユースケースモデリングは単純なものか、それとも強力なものか?

A ユースケースは、目的を達成するために、アクター(ユニファイドモデリング言語(UML)ではアクターと呼ばれる)とシステムとの間で行われる行動やイベントの手順を通常定義する一連のリストです。アクターは人間や他の外部システムである可能性があります。システム工学では、ソフトウェア工学よりも高いレベルでユースケースが使用され、通常はタスクやステークホルダーの目標を表します。

ユースケース図とは何か?

ユースケース図は通常、単純です。ユースケースの詳細は示しません:

  • それはただ、一部の関係性を要約するだけですユースケース、アクター、システムの間の
  • それは手順の順序を示しません各ユースケースの目的を達成するために実行される手順の順序を

Use Case Diagram Template | Use Case Diagram Template

前述したように、ユースケース図は単純で、少数の図形のみを含むべきです。もしあなたの図に20個以上のユースケースが含まれているなら、おそらくユースケース図を誤用している可能性があります。

ユースケースモデリングとは何か?

ユースケースモデリングは、「ユーザー(顧客)は何を望んでいるのか?」という問いに対するシンプルな答えです。ユーザーが最終製品(システム、ソフトウェア、プログラムなど)を使用して達成したいことを視覚的に表現できます。ユースケースモデリングは、顧客のニーズを満たすソフトウェアシステムを開発するための堅実な基盤をソフトウェア開発者に提供する有用な技術です。

ユースケース図で使用される記法は単純に見え、多くの詳細を伝えないかもしれませんが、ユースケースがどのように収集・整理・詳細化されるかが、ソフトウェア開発ライフサイクルの方向性に大きく影響し、結果として最終的なソフトウェア製品の品質にも影響します。

ユースケースモデリングのための10の実用的ヒント

本記事では、ユースケース図の描画効果を最大化するための10のヒントを紹介します。ユースケースの詳細な説明は行いませんが、UMLモデリング、ユースケース図、要件収集に関する重要な概念をカバーします。

1. 最終ユーザーの視点から考える

ソフトウェアシステムを正常に構築するためには、ユーザーの期待を把握する必要があることは明らかです。この原則はユースケースモデリングにおいて特に重要です。多くの人が、ユースケースモデリングをシステム機能をモデル化するプロセスだと誤解しており、これは誤りです。正確には、ユースケースモデリングはユーザーが何を望んでいるかをモデル化する方法です。ユースケース図内の各ユースケースは、ユーザーが最終的なソフトウェアやシステムと相互作用することで、観察可能な目標を達成すべきです。時として、ユーザーの目標とシステム機能は同じですが、必ずしもそうとは限りません。たとえば、「ログイン」はシステム機能ですが、ユーザーの目標とは明らかに異なります。誰もプログラムを起動してログインしてすぐに去るわけではありません!したがって、ユースケース図に描くシステム機能が多ければ多いほど、ユーザーの本当の期待をソフトウェア開発プロセス全体を通して表現するユースケースモデルの効果は低下します。そのため、ユースケースモデルを開発する際は、まず最終ユーザーの視点から考え、すべてを表現することを試みてください。

2. 長いユースケース名を避ける

ATMシステム用に作成されたユースケース図を読んでいると、以下のどちらのユースケースを図に見たいと思いますか?「現金を引き出す」と「現金を引き出し、口座残高を更新する」。後者のユースケースはより詳細に見えるかもしれませんね。しかし、このような長い名前を持つ50個以上の異なるユースケースがあるとどうでしょうか?おそらく図を読むのをやめたくなるでしょうし、目が痛くなるかもしれません。

Use cases with short names

短い名前のユースケース

モデリングが必要な理由の1つは、複雑なソフトウェアシステムを簡単でわかりやすい方法で理解したいからです。そのため、UMLは、完全なソフトウェアシステムを記述する際の特定の視点を表すさまざまな記法を提供しています。この「精神」は、ユースケースの命名にも適用されます。詳細な記述を含む名前をつけるのなら、なぜテキストファイルを使わないのか?ユースケース図をわかりやすくするために、ユースケースの名前は短く保ちつつ、説明的であることが重要です。名前は短く保ち、詳細な記述はユースケースの説明部分に任せましょう。

3. キャラクターは実在する人物ではなく、役割である

Actor is a role

キャラクターは役割である

一部の人々は、組織内の従業員をユースケース図におけるアクターとして表現しようとしますが、その結果、ピーター、メアリー、デイジーなど多くの人物が含まれる図になってしまいます。覚えておいてください。アクターは、人間、サブシステム、あるいは特徴が独自の何らかのエンティティから構成され、同じ目標や期待を持つ唯一の役割を表します。

4. 関係性を用いて共通のユースケースをモデル化する

The Include relationship

包含関係

ユースケースは、一連のステップを経て達成可能なユーザーの目標を表します。同じステップが複数のユースケースに共通して存在する場合、共通のステップ用に新しいユースケースを作成し、そのステップをトリガーするユースケースと接続することができます。包含されたユースケースを使用することで、包含するユースケースが包含されたユースケースが表す同一のステップセットを確実に共有していることが明確になります。

5. 異常な動作をモデル化する

The Extend relationship

拡張関係

拡張関係は、あるユースケースの動作が別のユースケースによっていつ、どのようにトリガーされるかを指定するために使用できます。拡張は、拡張対象のユースケースに定義された拡張ポイントで行われます。拡張するユースケースは、特定の条件下で拡張対象のユースケースが実行可能なステップを定義します。

6. イベントフローを用いてシナリオをモデル化する

ユースケースは、一連のステップを経て達成可能なユーザーの目標を表します。一部の人々は、アクターとユースケースを多数の関連で結びつけて、ステップを表しているように見せかけようとしていますが、これは明らかに誤りです。代わりに、ユースケースのステップは、ユースケースイベントフロー編集ツール.

Use case flow of events

ユースケースのイベントフロー

イベントフロー編集ツールは表形式であり、各行がユースケースの1ステップを表します。条件付きフローを含むか否かに関わらず、ステップを記述できます。また、重要なアイデアを強調するためにテキストのフォーマットを適用することもできます。

7. カテゴリ化のためにスタereotypeを適切に活用する

Use cases with stereotype applied

スタereotypeが適用されたユースケース

スタereotypeは、標準的な記法に加えて、ドメイン固有の記法を導入できるメカニズムです。スタereotypeは、適用された形状の名前の上に二重の角括弧(« »)で表示されます。スタereotypeの適切な使用により、読者はユースケースの違いをより簡単に理解できます。

8. シーケンス図を用いて詳細なシステムフローをモデル化する

シーケンス図オブジェクト間の時間経過に伴う通信やメッセージのやり取りを表すことで、システムの動作をモデル化できます。しかし、どこから始めればよいでしょうか?何をモデル化すべきかを推測するのではなく、ユーザーのニーズを参照することで始めることができます。これはまさにユースケースモデルが提示しようとしているものです。

すべてのユースケースがユニークなユーザーの目標を表していることはわかっています。ユースケースからシーケンス図を描くということは、ユーザーの要求を満たすためにコンピュータシステムが何をすべきかをモデル化することを意味します。理想的には、すべてのシーケンス図がユーザーの要望を表すユースケースから作成されるため、重複した設計が発生しません。

9. 必要に応じて、ユースケースに同じ幅を適用する

ユースケースの名前は長さが異なるため、幅が異なるのは当然です。図を美しく、読みやすくするために、すべてのユースケースを同じ幅に調整するとよいでしょう。

10. アクターとユースケースを意味のある方法で配置する

アクターとユースケースがランダムに配置されたユースケース図は、読者にとって確かに地獄のようなものです。散らばったアクターとユースケースから必要な情報を得るには、図を慎重に検討する必要があります。形状を体系的に配置するとよいでしょう。必要に応じて、パッケージ形状を使ってユースケースをグループ化することもできます。

参考文献:

コメントを残す