UML序列圖入門
UML(統一建模語言)序列圖是一種互動圖,用於展示軟體系統中特定情境下物件之間的互動方式。它們對於視覺化物件之間隨時間交換訊息的順序至關重要,因此在設計和記錄複雜系統時極具價值。本指南將涵蓋UML序列圖的關鍵概念,並提供使用Visual Paradigm等工具創建和管理序列圖的全面概述。
關鍵概念
物件與生命線
在序列圖中,物件以生命線表示。每條生命線顯示物件在時間上的存在,物件之間的互動(訊息)則以生命線之間的箭頭呈現。參與互動的物件列於圖表上方,其生命線向下延伸。
訊息
訊息代表物件之間的通訊。它們以從發送者生命線指向接收者生命線的箭頭表示。訊息可以是同步的(實線搭配實心箭頭)或非同步的(實線搭配空心箭頭)。訊息的順序由其垂直位置表示,最早發出的訊息位於上方。
組合片段
組合片段用於呈現複雜的互動,例如迴圈、分支和替代流程。它們可將互動分組為單一單位,使圖表更易讀且更具條理。例如,迴圈片段可用來表示重複的互動,而替代片段則可根據條件顯示不同路徑。
建立序列圖
基本步驟
- 識別物件:確定情境中涉及的物件。這些物件將在圖中以生命線表示。
- 定義訊息:識別物件之間交換的訊息。每則訊息都應有明確的發送者與接收者。
- 繪製生命線:將每個物件的生命線放置於圖表上方,並向下延伸以表示時間的流逝。
- 新增訊息:在生命線之間繪製箭頭以表示訊息。確保訊息按時間順序從上至下排列。
- 使用組合片段:若互動涉及迴圈、分支或替代情況,請使用組合片段將相關訊息分組。
範例情境
考慮一個簡單的情境:顧客下訂單:
- 顧客建立訂單.
- 顧客將商品加入訂單.
- 每項商品都會被檢查庫存是否充足.
- 如果產品有庫存,就會被加入訂單.
在序列圖中,這會以客戶、訂單和庫存物件的生命線來表示。訊息會顯示這些物件之間的互動,例如「建立訂單」、「新增項目」和「檢查庫存」。
Visual Paradigm 中的進階功能
自動編號
Visual Paradigm 為序列圖提供自動編號功能,可自動為訊息分配編號。此功能在大型圖表中特別實用,能提供互動順序的視覺指引。使用者可透過右鍵點擊圖表背景並從浮出式選單中選擇所需選項,來自訂編號樣式。6.
分割大型圖表
對於複雜情境,序列圖可能變得龐大且難以處理。Visual Paradigm 允許使用者將序列圖分割成多個較小的圖表。可透過選取整個圖表或特定部分,並使用複製貼上功能來建立獨立的圖表。此方法有助於維持圖表的清晰度與可管理性。3.
線上工具
Visual Paradigm Online (VP Online) 提供免費的基於網頁的 UML 繪圖工具,簡化序列圖的建立。該工具包含所有必要的 UML 符號和連接器,讓您輕鬆創建專業圖表。VP Online 還提供多種格式選項,例如形狀與線條格式、字型樣式和對齊工具,以提升圖表的視覺吸引力。7.
最佳實務
- 保持簡單:從互動的高階視圖開始,逐步加入細節。避免因物件或訊息過多而使圖表過於複雜。
- 使用描述性名稱:確保物件名稱和訊息標籤清晰且具描述性。這能讓任何審閱圖表的人都更容易理解。
- 善用合併片段:使用合併片段來處理複雜互動。這有助於保持圖表的整齊與易讀性。
- 審查與迭代:定期與利害關係人一起審查序列圖,並根據回饋進行迭代。這可確保圖表準確反映預期的互動。
案例研究:飯店預訂系統序列圖
本案例研究探討使用 UML 序列圖來模擬飯店預訂系統內的互動。序列圖提供了系統中不同組件如何溝通以達成飯店預訂目標的視覺化呈現。透過分析此圖,我們可以理解訊息的傳遞流程、物件的生命線,以及合併片段在處理複雜互動時的應用。

序列圖概觀
飯店預訂系統的序列圖展示了三個主要組件之間的互動:使用者介面(UI)、飯店連鎖系統和飯店。圖中包含每個組件的生命線、彼此之間交換的訊息,以及用來表示迴圈和替代流程的合併片段。
關鍵組件
- UI(使用者介面):代表使用者與系統互動以進行預訂的介面。
- 飯店連鎖:作為中介,負責管理 UI 與各別飯店之間的通訊。
- 飯店:代表正在進行預訂的特定飯店。
解讀序號圖
生命線與激活
- 生命線:垂直的虛線代表 UI、飯店連鎖與飯店物件的生命線。這些生命線表示物件在時間上的存在。
- 激活:生命線上的矩形方框代表物件的激活。例如,當使用者啟動預訂流程時,UI 會被激活。
訊息
- 1:makeReservation:UI 發送一個
makeReservation訊息給飯店連鎖,以啟動預訂流程。 - 1.1:makeReservation:飯店連鎖將
makeReservation訊息轉發給飯店。 - 1.1.1:available(roomId, date):isRoom:飯店檢查指定日期的房間是否可預訂。這是一個自我訊息,由迴圈片段標示。
- 1.1.2:aReservation:Reservation:如果房間可預訂,飯店會建立預訂,並發送一個
Reservation訊息給飯店連鎖。 - aNotice:確認:飯店連鎖將確認通知發送給 UI。
合併片段
- 迴圈片段:迴圈片段(
loop [每天])表示在預訂期間的每一天都會執行可用性檢查。 - 替代合併片段(alt):替代合併片段(
alt [isRoom = true])根據房間的可用性表示條件流程。如果房間可用,就會建立預訂;否則,流程可能會遵循不同的路徑(本圖中未顯示)。
停止的生命線
- UI 的生命線在最後標記為「停止」,表示 UI 在預訂流程中的參與已結束。
詳細互動流程
- 啟動預訂:使用者與 UI 互動以啟動預訂流程。UI 發送一個
makeReservation訊息給 HotelChain。 - 轉發請求:HotelChain 將
makeReservation訊息轉發給 Hotel。 - 檢查可用性:Hotel 會檢查預訂期間每一天的房間可用性。這由迴圈片段和自我訊息
available(roomId, date): isRoom. - 建立預訂:如果房間可用,Hotel 將建立預訂並發送一個
Reservation訊息給 HotelChain。 - 發送確認:HotelChain 將確認通知發送給 UI,完成預訂流程。
結論
UML序列圖是用於在軟體系統中視覺化和設計物件互動的強大工具。透過理解關鍵概念並使用如 Visual Paradigm 之類的工具,開發人員可以創建清晰且有效的序列圖。無論您是序列圖的新手,還是希望提升技能,遵循本指南中列出的指南和最佳實踐,將有助於您掌握序列圖創建的藝術。
酒店預訂系統的序列圖提供了 UI、HotelChain 和 Hotel 模組之間互動的清晰且簡明的視覺化。透過使用生命線、訊息和合併片段,該圖表有效傳達了從啟動到確認的預訂流程。此案例研究展示了 UML 序列圖在模擬複雜互動以及協助軟體系統設計與文件編寫方面的強大功能。












