iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0

使用案例圖(Use Case Diagram)

📝 什麼是使用案例圖?

使用案例圖從使用者的角度描述系統的功能需求,展示「」可以做「什麼」。它是需求分析階段最重要的工具之一。

🎯 用途

  • 需求收集:與客戶溝通系統功能
  • 系統範圍界定:明確系統邊界
  • 使用者互動:識別使用者和系統的互動點
  • 功能規劃:作為開發的功能清單

🏗️ 使用案例圖的基本元素

1. 參與者(Actor)

定義:與系統互動的外部實體(人、其他系統、硬體等)

表示法:火柴人符號或方框(「方框」通常用於非人類/系統參與者)

 ┌─────┐
 │使用者│  ← 人類參與者
 └─────┘

 ┌─────────┐
 │外部系統 │  ← 系統參與者
 └─────────┘

類型

  • 主要參與者:主動發起使用案例的角色
  • 次要參與者:被動回應的角色(如外部系統)

2. 使用案例(Use Case)

定義:系統提供的一個功能或服務

表示法:橢圓形,內含功能名稱

╭─────────────────╮
│  使用案例名稱    │
╰─────────────────╯

命名原則

  • 使用動詞短語
  • 從使用者角度描述
  • 清晰明確

✅ 好的命名:「查詢訂單」、「更新個人資料」、「產生報表」
❌ 不好的命名:「訂單」、「資料」、「系統處理」


3. 系統邊界(System Boundary)

定義:界定系統的範圍

表示法:矩形框,框內是系統提供的功能

┌──────────────────────┐
│   系統名稱           │
│  ○ 功能1             │
│  ○ 功能2             │
│                      │
└──────────────────────┘

🔗 使用案例圖的關係類型

1. 關聯(Association)

符號:實線

意義:參與者與使用案例之間的互動

 ┌─────┐
 │使用者│────────>○ 登入系統
 └─────┘

2. 包含(Include)

符號:虛線 + <<include>>

意義:基礎使用案例必定會執行的子功能

使用時機

  • 提取共同的功能
  • 避免重複描述
  • 必定會執行的步驟
  ○ 結帳
     │
     │ <<include>>
     ▽
  ○ 驗證登入狀態

範例:結帳功能必定要先驗證使用者是否已登入。


3. 擴展(Extend)

符號:虛線 + <<extend>>

意義:基礎使用案例的可選額外功能

使用時機

  • 描述例外情況
  • 可選的流程
  • 條件性執行的功能
  ○ 結帳
     △
     │ <<extend>>
     │
  ○ 使用優惠券

範例:結帳時,使用者「可以選擇」使用優惠券,也可以不使用。


4. 一般化(Generalization)

符號:實線三角箭頭

意義:繼承關係,表示特殊化

用於參與者

     ┌─────┐
     │使用者│
     └─────┘
        △
   ┌────┴────┐
   │         │
┌─────┐  ┌─────┐
│會員 │  │訪客 │
└─────┘  └─────┘

用於使用案例

     ○ 付款
        △
   ┌────┴────┐
   │         │
○ 信用卡   ○ 行動支付
  付款       付款

🛒 實戰範例:線上購物系統

系統需求

設計一個線上購物平台,需要支援以下功能:

會員功能

  • 瀏覽商品
  • 加入購物車
  • 結帳(包含選擇配送、付款)
  • 使用優惠券(可選)
  • 查看訂單歷史

管理員功能

  • 管理商品(新增、修改、刪除)
  • 查看所有訂單
  • 管理會員

系統功能

  • 發送確認郵件(自動)
  • 通知庫存系統(自動)

UML 使用案例圖

                        ┌────────────────────────────────┐
                        │      線上購物系統               │
                        │                                │
     ┌─────┐            │  ○ 瀏覽商品                     │
     │顧客 │───────────>│                                │
     └─────┘            │  ○ 加入購物車                   │
        │               │                                │
        │               │  ○ 結帳                         │
        │               │       △                        │
        └──────────────>│       │ <<include>>            │
                        │       │                        │
                        │  ○ 選擇配送方式                 │
                        │       △                        │
                        │       │ <<include>>            │
                        │       │                        │
                        │  ○ 付款                        │
                        │       │                        │
                        │       │ <<extend>>             │
                        │       ▽                        │
                        │  ○ 使用優惠券                   │
                        │                                │
        ┌──────────────>│  ○ 查看訂單歷史                 │
        │               │                                │
        │               │  ○ 管理商品                     │
        │               │                                │
     ┌─────────┐        │  ○ 管理會員                     │
     │管理員   │        │                                 │
     └─────────┘        │  ○ 查看所有訂單                 │
        │               │                                │
        └──────────────>│                                │
                        │                                │
                        │  ○ 發送確認郵件 ─────────────────┤
                        │       △                        │
                        │       │ <<include>>            │
     ┌──────────┐       │       │                        │
     │郵件系統  │<──────┤  ○ 結帳                         │
     └──────────┘       │                                │
                        │                                │
     ┌──────────┐       │  ○ 更新庫存 ────────────────────┤
     │庫存系統  │<──────┤       △                        │
     └──────────┘       │       │ <<include>>            │
                        │       │                        │
                        │  ○ 結帳                        │
                        │                                │
                        └────────────────────────────────┘

📋 使用案例描述文件

使用案例圖只是視覺化的概覽,每個使用案例都應該有詳細的文字描述。

使用案例:結帳

項目 內容
使用案例名稱 結帳
使用案例 ID UC-003
參與者 顧客(主要)、郵件系統(次要)、庫存系統(次要)
簡述 顧客完成購物後,進行結帳流程,包含選擇配送方式和付款
前置條件 • 顧客已登入• 購物車中至少有一件商品
後置條件 • 訂單已建立• 庫存已更新• 顧客收到確認郵件

主要流程

  1. 顧客選擇「結帳」
  2. 系統顯示購物車內容和總金額
  3. 系統驗證顧客登入狀態(包含:驗證登入)
  4. 系統要求顧客選擇配送地址(包含:選擇配送方式)
  5. 系統要求顧客選擇付款方式(包含:付款)
  6. 顧客確認訂單
  7. 系統建立訂單
  8. 系統更新庫存(包含:通知庫存系統)
  9. 系統發送確認郵件(包含:發送確認郵件)
  10. 系統顯示訂單編號和感謝訊息

替代流程

  • 3a. 顧客未登入

    • 3a1. 系統導向登入頁面
    • 3a2. 顧客登入後回到結帳流程
  • 4a. 顧客沒有儲存的地址

    • 4a1. 系統要求輸入新地址
    • 4a2. 顧客輸入並儲存地址
    • 4a3. 繼續結帳流程
  • 5a. 顧客選擇使用優惠券(擴展:使用優惠券)

    • 5a1. 系統驗證優惠券有效性
    • 5a2. 系統更新總金額
    • 5a3. 繼續付款流程
  • 5b. 付款失敗

    • 5b1. 系統顯示錯誤訊息
    • 5b2. 顧客重新選擇付款方式

例外流程

  • E1. 商品庫存不足

    • 系統顯示庫存不足訊息
    • 系統要求顧客修改數量或移除商品
    • 結帳流程中止
  • E2. 系統錯誤

    • 系統記錄錯誤日誌
    • 系統顯示錯誤訊息給顧客
    • 結帳流程中止

特殊需求

  • 效能:結帳流程應在 3 秒內完成
  • 安全:付款資訊必須加密傳輸
  • 可用性:介面應符合無障礙網頁標準

🎓 最佳實踐

使用案例圖

好的做法

  1. 從使用者角度命名
  2. 一個使用案例代表一個完整的功能
  3. 適當使用 include 和 extend,避免過度複雜
  4. 為重要的使用案例撰寫詳細描述

避免的錯誤

  1. 使用案例太細(如「按下按鈕」)
  2. 使用案例太粗(如「使用系統」)
  3. 過度使用 include 和 extend
  4. 把實作細節放入使用案例圖

上一篇
Day 26: 認識 UML 與類別圖
下一篇
Day 28: 循序圖
系列文
《Gemini 擬人化 設計模式(Design Pattern)--學習之旅》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言