UML序列圖是理解系統動態行為的重要工具。它模擬物件之間如何互動以及這些互動發生的順序,強調訊息的時間順序流。它對於定義使用案例、記錄API呼叫以及追蹤複雜的交易流程至關重要。
本教程將引導您了解序列圖的基本元素與建模技巧。
核心結構與目的
序列圖沿著兩個軸進行組織:
- 水平軸:顯示參與的物件(或參與者、類別與組件)。
- 垂直軸(時間軸):代表時間的流動,方向向下。在圖中位置較低的訊息會在序列中較後發生。

其目的在於回答以下問題:「在此特定情境(使用案例)中,這些物件以何種順序交換資訊,以達成期望的結果?」
序列圖的基本元素
要模擬一個序列,您需要三個核心元素:生命線、訊息與激活條。
A. 生命線(參與者)
生命線代表互動中的單一參與者——物件、實例或類別。
- 符號表示:圖表頂部的矩形框,包含物件名稱,並向下延伸一條垂直虛線。
- 語法:
參與者名稱(若物件為實例,例如使用者)實例名稱:類別名稱(例如authService: AuthenticationService)
- 目的: 虛線表示參與者在序列範圍內隨時間的存續。

B. 消息(互動)
消息是畫在生命線之間的水平箭頭。它們代表物件之間的通訊,例如方法呼叫、訊號或 API 請求。

消息類型:
| 消息類型 | 符號 | 描述 |
|---|---|---|
| 同步呼叫 | 實線搭配實心箭頭 | 發送者會等待回應後才繼續。這會在接收者的生命線上啟動一個激活條在接收者的生命線上。 |
| 回應/返回 | 虛線搭配空心箭頭 | 同步呼叫的回應,表示控制權返回發送者。這通常會關閉激活條。 |
| 非同步訊息 | 實線搭配空心箭頭 | 發送者不會等待回應,並立即繼續自身的執行。常見於事件驅動架構中。 |
| 自我呼叫 | 箭頭迴圈回到同一條生命線 | 物件呼叫自身的一個方法。 |
| 發現訊息 | 從端點開始並觸及生命線的箭頭 | 訊息的發送者未知或超出圖表範圍(例如外部觸發)。 |
C. 激活條(執行規格)
激活條(亦稱為控制焦點)是畫在生命線上方的細長垂直矩形。
- 符號:生命線上的實心垂直矩形。
- 目的: 它表示物件正在執行操作(即其方法正在執行)或等待同步回應的期間。它從收到同步訊息時開始,到發送回應訊息時結束。
建模邏輯與控制流程
為了建模複雜的業務邏輯,您會使用片段(或方框)來包圍圖表的各個部分。
A. 組合片段
組合片段可讓您建模條件邏輯、重複與選擇性步驟。最常見的片段包括:
- 選擇性(alt):用於if-else邏輯。片段由虛線分隔,每個部分包含一個條件(「守衛」)於方括號內。僅能選擇一條路徑。
- 範例:
[如果使用者憑證有效]和[否則 / 憑證無效].
- 範例:
- 選擇性(opt):用於if陳述式。片段內的互動是選擇性的,僅當條件(守衛)為真時才會執行。
- 範例:
[如果使用者購物車中有商品].
- 範例:
- 迴圈(loop):用於重複。守衛指定迭代的條件(例如,
[針對每個項目]或[當(重試次數 < 3)]). - 參考(ref):透過引用另一個獨立的序列圖中定義的互動序列,來模組化圖表。這可防止圖表過於混亂。
- 關鍵(crit): 用於表示一個不能被中斷的區段,通常用於模擬並發流程。
逐步建模範例
讓我們來建模一個簡化的使用者結帳流程 使用核心元素:
| 步驟 | 動作 | 訊息類型 |
|---|---|---|
| 1. | 使用者點擊「結帳」。 | 同步呼叫 |
| 2. | 前端驗證購物車。 | 自我呼叫(在前端) |
| 3. | 前端請求付款處理。 | 同步呼叫 |
| 4. | 付款網關檢查資金。 | 同步呼叫 |
| 5. | 付款網關回傳「成功」。 | 回傳訊息 |
| 6. | 前端發送非同步訊息至庫存服務以減少庫存。 | 非同步訊息 |
| 7. | 前端發送同步訊息至訂單服務以完成訂單。 | 同步呼叫 |
| 8. | 訂單服務返回「訂單ID」。 | 返回訊息 |
| 9. | 前端顯示確認頁面。 | 返回訊息(給使用者) |
邏輯建模(替代片段)
為了處理失敗,我們使用一個替代片段:
- 將支付網關檢查(步驟4與5)放入一個
alt片段。 - 第一個區段由
[成功]。此區段包含步驟6、7、8和9。 - 第二個區段由虛線分隔,由
[失敗]。此區段包含一個新的同步訊息:paymentService -> frontend:返回「支付失敗」且前端顯示錯誤頁面。
序列圖最佳實務總結
- 保持聚焦:單一序列圖通常應僅模擬單一使用案例或單一原子操作(例如:「登入」、「將項目加入購物車」)。使用參考片段來表示子流程。
- 清楚標示訊息:對訊息使用動詞片語,反映方法名稱或API端點(例如:
processPayment(amount, token)). - 正確識別參與者: 区分 參與者(外部實體)與 物件(內部系統組件或實例)。
- 時間流向向下: 確保訊息從上到下一致排列。
- 使用片段進行控制: 避免在訊息流程中繪製複雜的決策節點或迴圈;使用
alt,opt,以及loop片段。
如需了解 UML 及其人工智慧驅動的視覺化方法的更多細節,請造訪我們的 UML 資源中心.












