iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0

循序圖(Sequence Diagram)

📝 什麼是循序圖?

循序圖展示物件之間如何互動,以及訊息傳遞的時間順序。它是動態行為圖中最常用的類型。

🎯 用途

  • 展示互動流程:物件之間如何協作完成功能
  • 時間順序:清楚表達訊息傳遞的先後順序
  • 詳細設計:從使用案例到實際實作的橋樑
  • 除錯分析:理解系統執行流程

🏗️ 循序圖的基本元素

1. 生命線(Lifeline)

定義:代表參與互動的物件或參與者

表示法

 物件名稱
    │
    │  ← 垂直虛線(生命線)
    │
    ▼

命名格式

  • 物件名稱 : 類別名稱
  • :類別名稱 (匿名物件)
  • 物件名稱 (只顯示名稱)

2. 啟動框(Activation Box)

定義:表示物件處於活躍狀態(正在執行操作)

表示法:生命線上的細長矩形

物件A
    │
    ├──┐  ← 啟動框
    │  │
    │<-- 內部方法
    └──┤
       │

3. 訊息(Message)

定義:物件之間的通訊

類型

類型 符號 說明
同步訊息 ───> 發送者等待回應
非同步訊息 ----> 發送者不等待回應
回傳訊息 <- - - 回傳結果
自我呼叫 物件呼叫自己的方法
建立訊息 ----> + <<create>> 建立新物件
銷毀訊息 ----> ✕ 銷毀物件

4. 組合片段(Combined Fragments)

用於表達條件、迴圈等控制結構。

類型

  • alt:選擇(if-else)
  • opt:可選(if)
  • loop:迴圈
  • par:平行執行
  • ref:引用其他循序圖

表示法

┌─ alt ──────────────┐
│ [條件1]            │
│   執行流程1        │
├────────────────────┤
│ [else]             │
│   執行流程2        │
└────────────────────┘

範例 1:使用者登入系統

系統需求

實作一個使用者登入功能:

  1. 使用者輸入帳號密碼
  2. 系統驗證身分
  3. 從資料庫查詢使用者資料
  4. 驗證密碼
  5. 回傳登入結果

UML 循序圖

使用者    LoginUI    AuthService    UserRepository    Database
  │          │           │                │              │
  │─輸入帳密─>│           │                │              │
  │          │           │                │              │
  │          │─驗證請求─>│                │              │
  │          │           │                │              │
  │          │           │─查詢使用者────>│              │
  │          │           │                │              │
  │          │           │                │─SQL查詢────>│
  │          │           │                │              │
  │          │           │                │<─User物件───│
  │          │           │                │              │
  │          │           │<─User物件──────│              │
  │          │           │                │              │
  │          │           │─────┐          │              │
  │          │           │     │驗證密碼  │              │
  │          │           │<────┘          │              │
  │          │           │                │              │
  │          │<─登入成功─│                │              │
  │          │           │                │              │
  │          │─────┐     │                │              │
  │          │     │顯示首頁              │              │
  │          │<────┘     │                │              │
  │          │           │                │              │
  │<─顯示首頁─│           │                │              │
  │          │           │                │              │

🎓 最佳實踐

循序圖

好的做法

  1. 由左至右排列物件,按照呼叫順序
  2. 使用啟動框清楚標示物件的活躍期
  3. 適當使用組合片段表達條件和迴圈
  4. 訊息名稱要清晰,最好對應實際方法名

避免的錯誤

  1. 一張圖包含太多物件(超過 7-8 個)
  2. 過於複雜的巢狀結構
  3. 缺少回傳訊息
  4. 忽略異常情況的處理

🎯 使用案例圖 vs 循序圖

對比分析

特性 使用案例圖 循序圖
視角 外部使用者視角 內部系統視角
關注點 做什麼(What) 怎麼做(How)
抽象層級 高層次、概覽 詳細、具體
時間順序 不強調 強調時間先後
適用階段 需求分析 設計階段
目標受眾 客戶、產品經理 開發團隊

如何搭配使用?

  1. 需求分析階段:繪製使用案例圖,識別系統功能
  2. 詳細設計階段:為每個使用案例繪製循序圖,設計實作細節
  3. 開發階段:根據循序圖實作程式碼
  4. 測試階段:根據使用案例圖和循序圖設計測試案例

上一篇
Day 27: 使用案例圖
下一篇
Day 29: 不同設計模式--擬人化角色設定集
系列文
《Gemini 擬人化 設計模式(Design Pattern)--學習之旅》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言