B1 題型分析:使用案例塑模 (Use Case Modeling) 詳解
歷屆 B1 試題的考核核心完全固定為「使用案例塑模(Use Case Modeling)」。題型主要要求學生根據系統情境描述,繪製出完整的使用案例圖,並常伴隨關於 Base / Abstract Use Case 定義的簡答題。
一、標準解題 5 步驟 (文本分析與萃取)
Step 1: 界定系統與尋找參與者 (Identify Actors)
閱讀題目,圈出所有「與系統互動的外部實體(名詞)」。這包含操作系統的人(如:Customer, Manager)以及外部系統(如:Payment gateway, SMS gateway)。
Step 2: 尋找主要使用案例 (Identify Base Use Cases)
尋找參與者執行的「動作」。命名規範必須是 動詞 + 名詞(如:Make booking, Browse course),這些動作必須能為參與者帶來具體價值。
Step 3: 梳理 <<include>> (包含關係)
尋找情境中「必須先執行」或「多個功能都會用到」的共用步驟。例如:「在進行動作A之前,必須先登入」,此時需抽出獨立的 "Login" 使用案例,並用 <<include>> 關聯。
Step 4: 梳理 <<extend>> (擴充關係)
尋找情境中的「選擇性動作」或「特定條件下才觸發的動作」。例如:「如果課程是特定類型,則要求選擇評估員」,這代表 "Select assessor" 是 "Make booking" 的擴充。
Step 5: 繪製與檢查圖表
畫出系統邊界(大方框),將參與者放在框外,使用案例(橢圓形)放在框內,並畫上正確的通訊連結(實線)與關係箭頭(虛線)。
二、使用案例圖核心元素與隱藏考點
🚶
Customer
(Primary Actor)
─────
Booking System
Make Booking
(Base Use Case)
<<include>>
- - - - - - - - ▷
Login
(Abstract Use Case)
─────
🖥️
Payment Gateway
(Secondary Actor)
★ 必背名詞定義 (歷年簡答題常客) ★
- 基礎使用案例 (Base Use Case): 能夠獨立存在,由參與者直接觸發以達成一個完整目標的使用案例。
- 抽象使用案例 (Abstract Use Case): 無法獨立存在,專門用來被其他使用案例呼叫(透過 include 或 extend),從使用者角度來看它不是一個完整的目標(如 Login)。
- 主要參與者 (Primary Actor): 為了達成自身目標而主動使用系統功能的參與者。
- 次要參與者 (Secondary Actor): 扮演支援角色,協助系統達成目標的外部實體(常為外部系統如 SMS Gateway)。
- 致命錯誤警告: 系統邊界(大矩形)內部絕對不能畫入 Actor!Actor 永遠在框外。
三、關係線條的精確語法 (最容易失分區)
B1 畫圖題的生死關鍵在於箭頭方向,請將下表的箭頭方向當作數學公式死背:
| 關係名稱 |
UML 符號與方向 (必背) |
考核點與解說 |
通訊連結 (Communication Link) |
Actor ───────── Use Case |
連接 Actor 與 Use Case 的實線(通常不帶箭頭)。 |
包含關係 (<<include>>) |
Base - - <<include>> - - ▷ Included |
虛線 + 開口箭頭。方向是由主要動作(Base)指向被包含的共用動作(Included)。代表「必定執行」。 |
擴充關係 (<<extend>>) |
Extending - - <<extend>> - - ▷ Base |
虛線 + 開口箭頭。方向是由擴充動作(Extending)指向主要動作(Base)。代表「特定條件下才附加執行」。 注意:箭頭方向與 include 是相反的邏輯! |
參與者/使用案例 一般化 (Generalization) |
Child ─────────▷ Parent |
實線 + 空心三角箭頭。子參與者/使用案例指向父層。代表「是一種(is-a)」或繼承權限/流程。 |
四、高階理論與擴充考點 (觸類旁通)
- 替代流程 (Alternative flow) vs <<extend>>: 替代流程執行完後不會返回原始基礎流程(例如:選擇用現金或信用卡付,付完就結束了);而
<<extend>> 執行完畢後,必須回到基礎使用案例繼續執行後續動作。
- 例外流程 (Exception flow) vs <<extend>>: 例外流程是錯誤處理(如密碼連續錯誤吞卡),它不一定會回到主流程;
<<extend>> 不是用來處理錯誤或例外的。
- Actor 的本質: Actor 代表的是一個「角色(Role)」,而不是特定的人。例如 John 和 Mary 都可以扮演 Customer 這個 Actor。