1.8.2. ユースケース

1. 概要

 ユースケースは、システム開発プロセスにおいて非常に重要な役割を果たす手法です。この手法は、システムの利用者(アクター)とシステムの間のやり取りを明確に定義し、一つの目標を達成するための流れを示すために用いられます。ユースケースを適切に活用することで、システムの要件をより正確に把握し、開発チームと顧客の間で共通理解を促進することができます。

 ユースケースは、プロジェクトの進行中に仕様変更が発生しても、システムの根本的な要件を見失わないための有効なツールです。

flowchart TD
    A["要件定義
ユースケース作成"] --> B["設計・開発
ユースケース参照"] B --> C["テスト・リリース
ユースケース基準"] A --> D["仕様変更発生"] D --> E["ユースケース更新"] E --> F["プロジェクト成功"] classDef default fill:#f0f0f0,stroke:#333,stroke-width:2px,color:#000; classDef change fill:#e6e6e6,stroke:#333,stroke-width:2px,color:#000; class A,B,C,F default; class D,E change;

図1:ユースケース導入によるプロジェクト成功事例のフロー図

 この図は、ユースケースを導入することでプロジェクトが成功に導かれる流れを示しています。要件定義段階でユースケースを作成し、設計・開発段階で参照することで、プロジェクトの方向性を維持します。仕様変更が発生した場合でも、ユースケースを更新することで、プロジェクトの本質的な目標を見失わずに対応できることを表現しています。

2. 詳細説明

2.1. ユースケースの定義と目的

 ユースケースとは、システムが特定の目標を達成するために、アクターとどのようにやり取りするかを記述したものです。その主な目的は以下の通りです:

  1. システムの振舞いを明確に定義する
  2. 利用者の視点からシステムの機能を捉える
  3. 開発チームと顧客間のコミュニケーションを円滑にする
  4. システム要件を漏れなく抽出する  これにより、ユースケースはシステム開発における要件定義を支える基礎資料となります。

2.2. ユースケースの特徴

 ユースケースには以下の特徴があります:

  1. アクター中心:システムを利用する人物や外部システムをアクターとして定義し、その視点からシステムの機能を記述する
  2. 目標指向:各ユースケースは特定の目標達成に焦点を当て、そのためのシナリオを示す
  3. 段階的詳細化:高レベルの概要から詳細なシナリオまで、段階的に詳細化できる
  4. 非機能要件の考慮:性能、信頼性、ユーザビリティなどの非機能要件を考慮してシナリオを作成することも可能  このようにユースケースは、システムの要件を段階的に詳細化する柔軟な手法です。初期段階では、シンプルなユーザーの行動を把握し、それを基に詳細なフローに分解していきます(表1:段階的詳細化のプロセス)。
classDiagram
    class 段階的詳細化のプロセス {
        レベル1: 概要レベル
        レベル2: 主要フローレベル
        レベル3: 詳細フローレベル
    }
    class 概要レベル {
        説明: ユースケースの目的と主要なアクターを特定
        例: 「顧客が商品を購入する」
    }
    class 主要フローレベル {
        説明: 基本的な成功シナリオを記述
        例: 1. 顧客が商品を選択
             2. 顧客が購入を決定
             3. システムが注文を処理
             4. 顧客が支払いを完了
    }
    class 詳細フローレベル {
        説明: 例外や代替フローを含む詳細なシナリオを記述
        例: 2a. 在庫がない場合
             2a1. システムが在庫不足を通知
             2a2. 顧客が別の商品を選択するか購入をキャンセル
    }

    段階的詳細化のプロセス --> 概要レベル
    段階的詳細化のプロセス --> 主要フローレベル
    段階的詳細化のプロセス --> 詳細フローレベル

 この図は、ユースケースの段階的詳細化プロセスを3つのレベルで示しています:

  1. 概要レベル:ユースケースの目的と主要なアクターを特定します。
  2. 主要フローレベル:基本的な成功シナリオを記述します。
  3. 詳細フローレベル:例外や代替フローを含む詳細なシナリオを記述します。

 各レベルには説明と具体例が含まれており、読者がユースケースの詳細化プロセスを段階的に理解できるようになっています。この図を通じて、ユースケースがどのように徐々に詳細化されていくかが明確に示されています。

2.3. ユースケース図

 ユースケース図は、システムにおけるアクターとユースケースの関係を視覚的に表現する図法で、UML(Unified Modeling Language)を使用して標準化されています。ユースケース図には以下の要素が含まれます:

  1. アクター:システムの利用者や外部システム
  2. ユースケース:システムが提供する機能や振舞い
  3. 関連:アクターとユースケースの関係を示す線
  4. システム境界:ユースケースが属するシステムの範囲を示す枠  ユースケース図を作成することで、システムの機能とそれを利用するアクターの関係が視覚的にわかりやすくなります。
flowchart TB
    subgraph オンラインショッピングシステム
        UC1((商品検索))
        UC2((商品購入))
        UC3((在庫管理))
        UC4((注文処理))
    end
    
    Customer((顧客))
    Admin((管理者))
    PaymentSystem[支払いシステム]
    
    Customer -->|利用| UC1
    Customer -->|利用| UC2
    Admin -->|管理| UC3
    Admin -->|管理| UC4
    UC2 -.->|利用| PaymentSystem
    
    classDef actor fill:#f9f,stroke:#333,stroke-width:2px;
    classDef usecase fill:#ccf,stroke:#333,stroke-width:2px;
    classDef system fill:#fff,stroke:#333,stroke-width:2px;
    
    class Customer,Admin actor;
    class UC1,UC2,UC3,UC4 usecase;
    class PaymentSystem system;

図2:ユースケース図のサンプル

 この図は、オンラインショッピングシステムのユースケース図のサンプルを示しています。主な要素は以下の通りです:

  1. アクター
    • 顧客:システムを利用して商品を検索・購入する人
    • 管理者:システムの在庫や注文を管理する人
    • 支払いシステム:外部システムとして表現
  2. ユースケース
    • 商品検索
    • 商品購入
    • 在庫管理
    • 注文処理
  3. 関連
    • 実線矢印:アクターがユースケースを利用する関係
    • 点線矢印:ユースケース間の依存関係(商品購入が支払いシステムを利用)
  4. システム境界
    • 「オンラインショッピングシステム」というラベルの付いた枠で表現

 この図を通じて、以下のような情報が視覚的に理解できます:

  • 顧客は商品検索と商品購入を行える
  • 管理者は在庫管理と注文処理を担当する
  • 商品購入には外部の支払いシステムが関与している
  • システムの境界が明確に示されており、どの機能が内部で処理されるかがわかる

 ユースケース図を使用することで、システムの主要な機能とそれを利用するアクターの関係が一目で把握でき、システム設計やステークホルダーとのコミュニケーションに役立ちます。

3. 応用例

 ユースケースは、多種多様な業界やプロジェクトで広く活用されています。以下に代表的な応用例を示します:

3.1. 銀行システムの開発

 ATMシステムの開発において、「預金引き出し」「残高照会」「振込」などのユースケースを定義しました。これにより、各操作の具体的な手順や例外処理が明確化され、セキュリティ要件の強化にも貢献しました。

3.2. ECサイトの設計

 オンラインショッピングサイトの設計では、「商品検索」「カート追加」「注文処理」などのユースケースを作成しました。これにより、ユーザーの操作フローを可視化し、ユーザビリティ向上のための機能改善が可能となりました。

3.3. 医療情報システムの構築

 病院の電子カルテシステムの開発において、「患者登録」「診察記録」「処方箋発行」などのユースケースを用いて、医療従事者の業務フローを最適化しました。これにより、診療プロセスが効率化され、作業ミスの削減にもつながりました。

4. 例題

例題1

問題:図書館管理システムのユースケース図を作成してください。アクターとして「利用者」と「図書館員」を考慮し、主要なユースケースを3つ以上含めてください。

回答例:

解説:

  1. システム境界:図書館管理システムを表す長方形
  2. アクター:左に「利用者」、右に「図書館員」を配置
  3. ユースケース
  • 図書検索:利用者が行う主要な操作
  • 貸出・返却:利用者と図書館員が関与する操作
  • 予約管理:利用者と図書館員が関与する操作
  • 蔵書管理:図書館員が主に行う操作
  1. 関連:アクターとユースケースを結ぶ線で関係を示す

例題2

問題:オンラインショッピングサイトの「商品購入」ユースケースについて、基本フローを5つのステップで記述してください。

回答例:

  1. ユーザーがショッピングカートの中身を確認する
  2. ユーザーが配送先住所を入力または選択する
  3. ユーザーが支払い方法を選択する
  4. システムが注文内容と合計金額を表示する
  5. ユーザーが注文を確定し、システムが注文処理を完了する

解説:
このユースケースの基本フローは、オンラインショッピングの典型的な購入プロセスを示しています。例外処理や代替フロー(例:在庫切れ、支払い失敗など)も考慮することで、より詳細なユースケース記述が可能です。

5. まとめ

 ユースケースは、システム開発における要件定義の重要なツールであり、以下の点に注目することが重要です:

  1. ユースケースは、アクターとシステムの相互作用を通じて特定の目標を達成するプロセスを表現する
  2. ユースケース図は、システムの機能とそれを利用するアクターの関係を視覚的に表現する
  3. ユースケースには、基本フロー、代替フロー、例外フローなどが含まれる
  4. ユースケースを通じて、システムの機能要件を明確化し、開発チームと顧客の間での共通理解を促進できる