B3 題型分析:動態行為塑模與 MVC 架構設計詳解

歷屆 B3 試題的考核核心固定為「將系統的需求(What)轉換為實作(How)」的關鍵橋樑。考題通常要求從文字描述推演到高階設計,最後建立低階 MVC 框架互動模型。

一、標準解題 3 步驟 (逐步精煉 Refinement)

Step 1: 撰寫事件流程 (Flow of Events) 將情境拆解為「參與者輸入 (Actor Input)」「系統回應 (System Response)」交替的對話式敘述。
解題關鍵:只描述系統「做什麼(What)」,絕對不要寫出系統「如何做(How)」(如存入資料庫、呼叫某函數),必須保持外部使用者的黑箱視角。
Step 2: 繪製系統層級循序圖 (System-level Sequence Diagram) 左側畫上 Actor 的生命線,右側畫上單一個代表系統的方塊 :System。將 Step 1 的事件流程一條一條轉化為兩者之間的訊息傳遞 (Messages) 箭頭。
Step 3: 繪製三層式/MVC 循序圖 (3-Tier Sequence Diagram) 將系統黑箱打開,在頂部畫出 Actor<<Boundary>><<Control>><<Entity>> 物件。
解題關鍵:Actor 絕對不能直接連線到 Control 或 Entity,必須透過 Boundary 傳遞;Boundary 通常也不會直接連線到 Entity,必須透過 Control 來協調。

二、MVC 四大物件圖示與定義 (Object Stereotypes)

考試若不使用 <<stereotype>> 文字標籤,必須畫出或認得以下專屬符號:

🚶
Actor (參與者)
獨立於系統之外,啟動使用案例的外部實體。
Boundary (邊界/View)
負責處理使用者互動、接收 Actor 輸入並顯示系統回應給 Actor。
Control (控制/Controller)
作為大腦,接收邊界物件的請求,指揮實體物件,管理控制流與交易。
Entity (實體/Model)
代表問題領域中的資料,儲存系統核心資料,接受控制物件的更新。
⚠️ 擴充考點警告: 設計 Controller 時,切忌創造「巨大的控制物件(Giant control objects)」包辦所有事情,這會降低系統的內聚力(Cohesion)。

三、循序圖進階語法與控制結構 (Advanced Syntax)

B3 常考直線互動,但必須準備好處理「分支」、「迴圈」與「物件生死」的進階語法:

★ 物件的創建與銷毀 (Object Lifecycle)

★ 邏輯框架 (Fragments / Frames)

alt
[enoughQty = true]
   ─── 執行庫存扣除與交易 ───▶
[else]
   ─── 顯示「庫存不足」訊息 ───▶
loop
[more item]
   ─── 掃描商品並加入購物車 ───▶

四、完整使用案例描述格式 (Use Case Description)

歷年通常只考寫 Flow of events,但若考題要求撰寫「完整描述」,必須背出以下欄位:

欄位名稱意義與擴充考點
Use case name & ID使用案例的名稱(動詞+名詞)與編號。
Actor(s)參與此案例的外部實體。
Brief description簡介此案例如何為組織帶來價值。
Pre-Conditions觸發此案例前「必須滿足」的狀態(例如:使用者必須已登入)。
Post-Conditions案例完成後系統的狀態變化。
Flow of events正常的互動步驟(B3a 必考題)。
Alternative flows & exceptions觸類旁通必背:處理錯誤或不同選擇的流程。記住,替代流程執行完通常不返回原流程,例外流程可能直接結束,這與 <<extend>> 不同。

五、終極擴充:溝通圖 (Communication Diagrams)

溝通圖與循序圖在 UML 中完全對等(循序圖看重時間,溝通圖看重結構連結)。若要求將 B3 情境畫成溝通圖,需知道: