UML 用例圖顯示系統提供什麼功能,以及誰(或什麼)與之互動。採用「圖即程式碼」的工作流程時,圖表的來源是純文字:編輯文字、渲染圖表,並將原始檔案與專案文件並列存放。

PlantUML 支援用例圖。Visual Paradigm 的 VPasCode 編輯器提供 PlantUML 編輯器與預覽功能,並包含由 AI 輔助的圖表生成與編輯功能。
1. 用例圖傳達的內容
用例圖著重於系統範圍與使用者目標而非工作流程的逐步機制。圖表通常包含:

-
系統邊界:一個標示被建模系統的矩形框。
-
參與者:系統外部與之互動的角色。參與者可以是人、組織、裝置或外部系統。
-
用例:系統提供的一項功能或目標,通常以橢圓形表示,並以動詞短語命名,例如「下訂單」。
-
關聯:一條顯示參與者參與某個用例的線條。
-
用例關係:包含、擴展與泛化。
參與者代表角色,而非特定個人。若外部付款服務與被建模的系統互動,它也可視為一個參與者。
用例圖有助於釐清系統範圍、與利害關係人討論需求、識別外部依賴關係,並為開發與測試提供共享概覽。當需要詳細資訊(如前置條件、主要步驟、替代流程與結果)時,請將用例圖與書面的用例描述搭配使用。
2. 關係一覽

-
參與者與用例的關聯:一條表示互動的普通線條。
-
<<包含>>:包含用例總是使用被包含的行為。虛線箭頭指向從包含用例指向被包含用例。例如,下訂單可能總是包含付款授權。 -
<<擴展>>:擴展用例在特定條件下為基礎用例新增行為。虛線箭頭指向從擴展用例到基本用例。例如,套用促銷活動可能會擴展下訂單的行為。 -
泛化: 專門的參與者或用例繼承自更一般的參與者或用例。帶有空心三角形的實線指向一般元素.
一個有用的區別:include 表示必要行為;extend 表示條件性新增行為。
3. PlantUML 基礎
PlantUML 圖表以@startuml 開始,並以@enduml 結尾。使用actor 宣告參與者,使用usecase 宣告用例,並使用rectangle 宣告系統邊界。別名可使元素在關聯中更易於引用。

@startuml
left to right direction
actor Customer
rectangle "Online Store" {
usecase "Browse products" as Browse
usecase "Place order" as Place
}
Customer --> Browse
Customer --> Place
@enduml
由左至右的方向 要求 PlantUML 以水平方式佈局圖表。當圖表變更時,PlantUML 可能會調整精確的佈局。
4. 範例:基本線上商店

@startuml
left to right direction
actor Customer
actor Administrator as Admin
rectangle "Online Store" {
usecase "Browse products" as Browse
usecase "Place order" as Place
usecase "Track shipment" as Track
usecase "Manage catalog" as Manage
}
Customer --> Browse
Customer --> Place
Customer --> Track
Admin --> Manage
@enduml
顧客瀏覽、下單並追蹤貨運。管理員負責管理商品目錄。此圖表刻意省略訂單處理的內部步驟。
5. 範例:include 與 extend
假設下單時必須進行付款授權,而套用促銷則是可選且具條件的。

@startuml
left to right direction
actor Customer
rectangle "Online Store" {
usecase "Place order" as Place
usecase "Authorize payment" as Payment
usecase "Apply promotion" as Promotion
}
Customer --> Place
Place ..> Payment : <<include>>
Promotion ..> Place : <<extend>>
@enduml
此Place ..> Payment箭頭表示「下單」包含必要的付款行為。此Promotion ..> Place箭頭表示當條件滿足時,「套用促銷」會延伸「下單」行為。
在用例描述或註記中記錄該條件,例如「顧客輸入有效的促銷代碼」。
6. 範例:角色泛化與外部系統
專業角色會從更通用的角色繼承互動。當外部服務與系統互動時,它們也可視為角色。

@startuml
left to right direction
actor "User" as User
actor "Registered customer" as Customer
actor "Payment gateway" as Gateway
Customer --|> User
rectangle "Online Store" {
usecase "Browse products" as Browse
usecase "Place order" as Place
usecase "Process payment" as Pay
}
User --> Browse
Customer --> Place
Place ..> Pay : <<include>>
Gateway --> Pay
@enduml
「已註冊客戶」專精於「使用者」並繼承一般使用者互動。金流閘道位於線上商店邊界之外,但參與付款使用案例。
7. 範例:使用案例泛化
泛化可用於表示較廣泛使用案例的專精版本。空心三角形指向一般使用案例。

@startuml
left to right direction
actor Customer
rectangle "Payment System" {
usecase "Make payment" as Payment
usecase "Pay by card" as Card
usecase "Pay by bank transfer" as Transfer
}
Customer --> Card
Customer --> Transfer
Card --|> Payment
Transfer --|> Payment
@enduml
當專精使用案例具有共同目標但存在實質差異時,請使用此方式。若差異僅為條件步驟,則「<<extend>>」關聯或書面使用案例描述可能更為清晰。
8. 在 VPasCode 中工作
實作工作流程:

-
定義範圍。識別系統邊界、參與者角色,以及各角色希望達成之目標。
-
建立草稿。直接撰寫 PlantUML,或要求 AI 助理生成使用案例圖。
-
檢視程式碼並預覽。確認參與者位於系統邊界之外,使用案例位於邊界之內,且箭頭指向正確方向。
-
精進模型。替換模糊名稱,移除實作細節,僅在關係反映真實需求時才新增關聯。
-
要求針對性的 AI 編輯。例如:「新增外部金流閘道參與者,並使用 include 關係顯示所需的付款互動。其餘部分保持不變。」
-
與利害關係人驗證。確認圖表反映系統的實際範圍與使用者目標。
-
儲存原始碼。保留「
.puml文字與專案文件一起存放,或置於版本控制系統中。在需要時(例如用於文件或簡報)再匯出為影像。
AI 協助的範例提示
為線上商店建立 PlantUML 格式的 UML 使用案例圖。包含系統邊界、顧客與管理員兩個參與者,以及瀏覽商品、下訂單、追蹤貨運、管理目錄等目標。將付款授權顯示為「下訂單」所需的包含行為。將套用促銷顯示為「下訂單」的條件式延伸。僅回傳有效的 PlantUML 原始碼。
將 AI 產生的程式碼視為初稿。在使用前,請檢視參與者、邊界、關係與業務假設。
9. 常見陷阱

-
將內部元件建模為參與者:參與者應為與主題互動的外部角色或系統。
-
將使用案例命名為實作任務:優先使用「追蹤貨運」而非「呼叫追蹤 API」。
-
使用「
<<include>>來表示可選行為:Include 代表基礎使用案例所需的行為。 -
反向關係箭頭:Include 指向被包含的使用案例;extend 指向基礎使用案例。
-
將過多細節擠在同一張圖中:使用高階圖表來界定範圍,再針對詳細情境使用獨立圖表或文字說明。
-
假設成功渲染即代表模型正確:PlantUML 可能渲染出仍誤解需求的圖表。
10. 檢視清單
在分享圖表前,請確認以下事項:

-
系統邊界清晰明確。
-
每個參與者均為外部角色並代表特定職責。
-
使用案例名稱描述有意義的目標。
-
參與者關聯反映實際互動。
-
Include 關係為必要;extend 關係應為條件式或有其他合理理由。
-
泛化箭頭應指向一般化的參與者或使用案例。
-
圖表在預期尺寸下仍保持可讀性。
-
由 AI 生成的假設已與熟悉需求的人士進行審查。











