引言
在軟體工程領域中,了解物件之間如何相互溝通,與了解這些物件本身同樣重要。雖然UML序列圖廣泛用於追蹤隨時間變化的互動,通訊圖則提供了補充性的觀點——著重於物件之間的結構性關係。本案例研究透過一個真實的飯店預訂情境,探討通訊圖的目的、符號表示與實際應用。最後,您將了解這些圖表如何協助模擬訊息傳遞、識別類別與操作,並驗證架構設計。

UML通訊圖顯示物件之間的互動方式,透過增加訊息與序列編號,擴展物件圖。
案例研究:飯店預訂系統
背景
一家飯店連鎖集團希望設計一個線上預訂系統。需求包括檢查房間可用性、進行預訂以及發送確認訊息。開發團隊需要模擬軟體物件之間的互動(例如,ReservationGUI, ReservationController, RoomDatabase)而不會忽略它們在靜態類別圖中的連結關係。
應用通訊圖
團隊選擇使用通訊圖,原因有二:
-
用以視覺化物件之間的關係(例如,哪個物件知道哪個物件)。
-
使用十進位編號來記錄訊息的傳遞順序。
第一步 – 識別物件與連結
-
物件:
顧客,ReservationGUI,ReservationController,RoomDatabase -
連結(物件之間的線條)代表類別圖中已存在的關聯。
步驟 2 – 使用序列號添加訊息
-
訊息
1: makeReservation()從顧客→ReservationGUI -
訊息
1.1: checkAvailability()從ReservationGUI→ReservationController -
訊息
1.1.1: queryRoom()從ReservationController→RoomDatabase -
訊息
1.2: confirmReservation()從ReservationController→ReservationGUI -
訊息
1.3: displayConfirmation()從ReservationGUI→客戶
小數編號顯示嵌套:訊息 1.1 發生在訊息處理過程中 1,以及 1.1.1 是 的一部分1.1。這取代了序列圖中所見的「控制焦點」矩形。
產生的通訊圖

每個箭頭都標有順序編號。最上層的訊息是 1。嵌套訊息使用小數,清楚顯示呼叫層次結構。
通訊圖與序列圖比較——圖書館逾期範例
為了進一步說明差異,考慮一個圖書館系統,其中一位 圖書館員 為一位 借閱者.
序列圖(時間導向)

垂直維度清楚顯示時間順序。控制焦點矩形表示每個物件何時處於活躍狀態。
自動產生的通訊圖(關係導向)

顯示相同的互動,但現在物件之間的連結(例如, 借閱者 連接到 借閱 連接到 書籍)變得可見。這使得更容易檢查類圖是否支援所有必要的協作。
關鍵要點:
-
序列圖 → 更適合用於詳細的時間和順序分析。
-
通訊圖 → 更適合用於理解物件之間的關係以及驗證靜態模型。
總結表格:序列圖對比通訊圖
以下是完整的 序列圖對比通訊圖 比較表格,基於文章內容與UML最佳實務。
| 功能 | 序列圖 | 通訊圖 |
|---|---|---|
| 主要維度 | 時間(垂直軸) | 空間(物件佈局) |
| 物件排列 | 沿著生命線自上而下 | 可自由置於圖表任何位置 |
| 訊息順序 | 自上而下閱讀(時間順序) | 序列編號(例如:1、1.1、2) |
| 控制焦點 | 明確顯示 – 高而窄的矩形(激活區) | 隱含顯示 – 以訊息嵌套的小數點表示 |
| 物件關係(連結) | 不可見(僅顯示生命線) | 明確以物件之間的連接線顯示 |
| 閱讀時間順序的容易程度 | 優異 – 立即呈現視覺時間軸 | 需追蹤序列編號 |
| 觀察物件連結的容易程度 | 不佳 – 關係必須推斷 | 優異 – 連結可直接看見 |
| 類圖驗證 | 困難 – 無法驗證關聯 | 容易 – 每個連結必須符合類圖關聯 |
| 自我訊息 | 生命線上的循環並帶有激活 | 自我連結上的循環圖示 |
| 條件訊息 | alt 和 opt 帶有守衛的片段 |
帶條件的編號(例如 1.1 [條件] 訊息()) |
| 平行訊息 | par 帶有平行方框的片段 |
相同小數前綴但不同後綴(例如 1.1a, 1.1b) |
| 空間效率 | 低 – 長的垂直圖表 | 高 – 緊湊,空間最佳化 |
| 複雜度處理 | 適合處理複雜的分支與循環 | 深度嵌套時可能變得混亂 |
| 普及度/使用情況 | 非常高(80%以上的互動圖) | 低至中等(20%或以下) |
| 最佳使用情境 | 記錄時間敏感的流程、即時系統、詳細的邏輯流程 | 驗證靜態模型、顯示物件關係、架構審查 |
| 可互相生成 | 是 – 可從序列圖生成通訊圖 | 是 – 可從通訊圖生成序列圖 |
| 語義等價 | 相同資訊 – 可互換 | 相同資訊 – 可互換 |
快速視覺比較
| 面向 | 序列圖 | 通訊圖 |
|---|---|---|
| 圖形形狀 | 高而窄 | 方形/緊湊 |
| 關鍵元素 | 生命線+激活條 | 物件+連結 |
| 訊息標籤 | message()僅有(時間順序為隱含) |
1: message()(需編號) |
| 巢狀訊息 | 激活條內嵌於另一個激活中 | 小數編號1.1 |
| 物件關係 | 未繪製 | 實線(連結) |
何時使用哪一種(決策指南)
| 情境 | 建議的圖表 | 原因 |
|---|---|---|
| 您需要向非技術利益相關者展示 | 序列 | 更容易從上到下閱讀 |
| 您希望確認您的類別圖表支援所有互動 | 溝通 | 連結會顯示遺漏的關聯 |
| 您空間有限(例如投影片或文件) | 溝通 | 更緊湊 |
您有複雜的分支(如果/否則,迴圈) |
序列 | 片段和框架更能處理複雜性 |
| 您需要識別哪些類別需要新增作業 | 兩者皆可 | 訊息在兩者中都變為方法名稱 |
| 您正在模擬即時限制 | 序列 | 時間維度是明確的 |
範例:相同互動在兩者中顯示
圖書館逾期檢查(來自文章):
| 順序圖 | 通訊圖 |
|---|---|
顯示生命線:圖書館員 → 借閱者 → 借貸 → 書籍 |
顯示透過連結相連的物件 |
| 激活條顯示每個物件忙碌的時刻 | 無激活條 – 嵌套數字顯示忙碌期間 |
| 容易看出:「首先發生這件事,然後發生那件事」 | 容易看出:「借閱者與借貸相連,而借貸又與書籍相連」 |
文章中的註解: 「如果你比較這兩張圖,會發現它們都包含物件和訊息。透過觀察順序圖,更容易判斷訊息的時間順序;而透過觀察通訊圖,則更容易看出物件之間的關係。」
摘要表 – 重點摘要
| 順序圖 | 通訊圖 | |
|---|---|---|
| 重點 | ⏱️ 何時訊息發生的時機 | 🔗 誰認識誰 |
| 優勢 | 時間順序清晰 | 結構驗證 |
| 弱點 | 隱藏物件關係 | 隱藏時間順序(需解碼數字) |
| 最適合應用於 | 詳細邏輯、即時運作、分支流程 | 架構審查、模型驗證、空間有限的文件 |
通訊圖元素詳述

1. 物件
-
客戶端 – 發送訊息(例如:
預訂GUI) -
供應商 – 接收並處理訊息(例如:
預訂控制器)
2. 連結
-
以物件之間的線條繪製。
-
每個連結都必須在類別圖中存在關聯。若連結遺漏,通訊圖會顯示靜態模型中的缺陷。
3. 訊息
-
從客戶端指向供應商的箭頭。
-
標籤格式:
序列編號:訊息名稱(參數) -
自我訊息以迴圈方式顯示。
4. 訊息編號規則
| 規則 | 範例 |
|---|---|
第一則訊息為 1 |
1: login() |
第二則頂層訊息為 2 |
2: logout() |
嵌套於 1 → 1.1 |
1.1:validateUser() |
進一步嵌套 →1.1.1 |
1.1.1:checkPassword() |

在此圖中,1:EnquireBorrower後面跟隨嵌套訊息1.1和1.2左側物件上的迴圈代表一個自我訊息。
從序列圖到通訊圖——控制焦點映射
序列圖使用高而窄的矩形(激活條)來顯示物件執行操作的時機。通訊圖沒有此類矩形——相反,訊息嵌套傳達相同資訊。

映射規則:
-
序列圖中的每個激活條在通訊圖中都轉化為一個十進位嵌套層級。
-
如果生命線有兩個嵌套的激活,你會看到類似於的序列號
1,1.1,1.1.1.
結論
UML通訊圖不僅僅是序列圖的替代方案——它們是驗證系統架構的強大工具。透過強調物件之間的連結,它們迫使設計者確保每則發送的訊息都對應於類圖中的實際關聯。十進位編號系統優雅地取代了控制焦點矩形,使嵌套呼叫變得明確。
實際上,使用序列圖當你需要向利益相關者呈現明確的事件時間軸時。使用通訊圖當您想要檢查靜態模型的準確性,或者物件的空間佈局比每個訊息的確切時刻更重要時。對於上述的飯店預訂和圖書館逾期範例,通訊圖精確地揭示了哪些類別必須提供哪些操作——將互動設計轉化為可執行的類別設計。
相關連結
- 什麼是統一建模語言?
- 專業的 UML 工具
- 什麼是通訊圖? – Visual Paradigm:UML 中通訊圖的入門介紹,說明其在物件之間傳遞訊息時,用於建模互動的目的。內容涵蓋基本元素,例如參與者、物件、連結和訊息序列。
- 合作圖(通訊圖) – Visual Paradigm 圖庫:視覺圖庫條目,展示合作圖(通訊圖)的範例,說明在軟體設計中如何建模物件互動的不同情境。
- 通訊圖 – Visual Paradigm Circle 文件:官方文件詳細說明在 Visual Paradigm 環境中通訊圖的定義與使用方式,包括其與系統建模語言(SysML)的關係。
- AI 生成 UML 通訊圖 – Visual Paradigm 探索:一篇文章探討如何利用人工智慧自動產生 UML 通訊圖,簡化開發者的繪圖流程。
- 通訊圖的限制 – Visual Paradigm 論壇:論壇上的社群討論,探討使用通訊圖與其他 UML 互動圖(如序列圖)相比所面臨的限制與挑戰。
- 通訊圖 – Visual Paradigm 使用者指南:Visual Paradigm 使用手冊中的詳細章節,說明工具介面中通訊圖的結構與組成元件。
- 如何繪製通訊圖 – Visual Paradigm 教學:逐步教學指南,說明如何在 Visual Paradigm 中建立通訊圖,包含新增參與者、物件、連結和訊息的指示。
- 繪製通訊圖 – Visual Paradigm 使用者指南:使用者指南中的另一個參考資料,專注於繪製通訊圖的技術細節,包括編輯工具和格式化選項











