de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

UML序列圖:視覺化時間與互動

UML序列圖是理解系統動態行為的重要工具。它模擬物件之間如何互動以及這些互動發生的順序,強調訊息的時間順序流。它對於定義使用案例、記錄API呼叫以及追蹤複雜的交易流程至關重要。

本教程將引導您了解序列圖的基本元素與建模技巧。

核心結構與目的

序列圖沿著兩個軸進行組織:

  1. 水平軸:顯示參與的物件(或參與者、類別與組件)。
  2. 垂直軸(時間軸):代表時間的流動,方向向下。在圖中位置較低的訊息會在序列中較後發生。

Axis-of-sequence-diagram

其目的在於回答以下問題:「在此特定情境(使用案例)中,這些物件以何種順序交換資訊,以達成期望的結果?」

序列圖的基本元素

要模擬一個序列,您需要三個核心元素:生命線、訊息與激活條。

A. 生命線(參與者)

生命線代表互動中的單一參與者——物件、實例或類別。

  • 符號表示:圖表頂部的矩形框,包含物件名稱,並向下延伸一條垂直虛線。
  • 語法:
    • 參與者名稱(若物件為實例,例如使用者)
    • 實例名稱:類別名稱(例如authService: AuthenticationService)
  • 目的: 虛線表示參與者在序列範圍內隨時間的存續。

lifeline

B. 消息(互動)

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

Messages-(Interaction)

消息類型:

消息類型 符號 描述
同步呼叫 實線搭配實心箭頭 發送者會等待回應後才繼續。這會在接收者的生命線上啟動一個激活條在接收者的生命線上。
回應/返回 虛線搭配空心箭頭 同步呼叫的回應,表示控制權返回發送者。這通常會關閉激活條。
非同步訊息 實線搭配空心箭頭 發送者不會等待回應,並立即繼續自身的執行。常見於事件驅動架構中。
自我呼叫 箭頭迴圈回到同一條生命線 物件呼叫自身的一個方法。
發現訊息 從端點開始並觸及生命線的箭頭 訊息的發送者未知或超出圖表範圍(例如外部觸發)。

C. 激活條(執行規格)

激活條(亦稱為控制焦點)是畫在生命線上方的細長垂直矩形。

  • 符號:生命線上的實心垂直矩形。
  • 目的: 它表示物件正在執行操作(即其方法正在執行)或等待同步回應的期間。它從收到同步訊息時開始,到發送回應訊息時結束。

建模邏輯與控制流程

為了建模複雜的業務邏輯,您會使用片段(或方框)來包圍圖表的各個部分。

A. 組合片段

組合片段可讓您建模條件邏輯、重複與選擇性步驟。最常見的片段包括:

  1. 選擇性(alt):用於if-else邏輯。片段由虛線分隔,每個部分包含一個條件(「守衛」)於方括號內。僅能選擇一條路徑。
    • 範例: [如果使用者憑證有效][否則 / 憑證無效].
  2. 選擇性(opt):用於if陳述式。片段內的互動是選擇性的,僅當條件(守衛)為真時才會執行。
    • 範例: [如果使用者購物車中有商品].
  3. 迴圈(loop):用於重複。守衛指定迭代的條件(例如,[針對每個項目][當(重試次數 < 3)]).
  4. 參考(ref):透過引用另一個獨立的序列圖中定義的互動序列,來模組化圖表。這可防止圖表過於混亂。
  5. 關鍵(crit): 用於表示一個不能被中斷的區段,通常用於模擬並發流程。

逐步建模範例

讓我們來建模一個簡化的使用者結帳流程 使用核心元素:

步驟 動作 訊息類型
1. 使用者點擊「結帳」。 同步呼叫
2. 前端驗證購物車。 自我呼叫(在前端)
3. 前端請求付款處理。 同步呼叫
4. 付款網關檢查資金。 同步呼叫
5. 付款網關回傳「成功」。 回傳訊息
6. 前端發送非同步訊息至庫存服務以減少庫存。 非同步訊息
7. 前端發送同步訊息至訂單服務以完成訂單。 同步呼叫
8. 訂單服務返回「訂單ID」。 返回訊息
9. 前端顯示確認頁面。 返回訊息(給使用者)

邏輯建模(替代片段)

為了處理失敗,我們使用一個替代片段:

  1. 支付網關檢查(步驟4與5)放入一個alt片段。
  2. 第一個區段由[成功]。此區段包含步驟6、7、8和9。
  3. 第二個區段由虛線分隔,由[失敗]。此區段包含一個新的同步訊息:paymentService -> frontend:返回「支付失敗」且前端顯示錯誤頁面。

序列圖最佳實務總結

  • 保持聚焦:單一序列圖通常應僅模擬單一使用案例或單一原子操作(例如:「登入」、「將項目加入購物車」)。使用參考片段來表示子流程。
  • 清楚標示訊息:對訊息使用動詞片語,反映方法名稱或API端點(例如:processPayment(amount, token)).
  • 正確識別參與者: 区分 參與者(外部實體)與 物件(內部系統組件或實例)。
  • 時間流向向下: 確保訊息從上到下一致排列。
  • 使用片段進行控制: 避免在訊息流程中繪製複雜的決策節點或迴圈;使用 alt, opt,以及 loop片段。

如需了解 UML 及其人工智慧驅動的視覺化方法的更多細節,請造訪我們的 UML 資源中心.