在 UML 中,圖表可大致分為兩大類:結構圖與行為圖。以下是 14 種圖表類型及其分類的簡要說明:
結構圖(靜態建模):
- 類圖(結構):
- 表示系統的靜態結構,包括類別、屬性與關係。
- 物件圖(結構):
- 顯示特定時間點的實例快照,呈現物件及其關係。
- 套件圖(結構):
- 將元素組織成套件,提供系統組織的高階視圖。
- 元件圖(結構):
- 著重於系統元件及其互動,對系統架構非常有用。
- 組合結構圖(結構):
- 表示類別的內部結構,包括部分、埠與連接器。
- 部署圖(結構):
- 描述系統中元件與節點的實際部署情況。
行為圖(動態建模):
- 用例圖(行為):
- 從使用者的觀點展示系統功能,顯示參與者與用例。
- 活動圖(行為):
- 模擬系統內活動與動作的流程,包括平行與條件行為。
- 狀態機圖 (行為):
- 以有限狀態機的狀態與轉移來表示物件或系統的行為。
- 順序圖 (行為):
- 顯示物件之間在時間上的互動,強調訊息的順序。
- 通訊圖 (行為):
- 強調物件之間的關係以及它們如何協作以完成任務。
- 互動概觀圖 (行為):
- 結合活動圖與順序圖,以提供複雜互動的概觀。
- 時序圖 (行為):
- 著重於互動的時序限制,包括生命線與事件。
- 外觀圖 (結構)
- 一種特殊的UML圖,用於透過定義自訂的樣式、標籤值與約束來擴展UML元模型。外觀圖是UML擴展機制的一部分,可讓您根據特定的建模需求或領域客製化UML。
這些UML圖在建模軟體系統時具有不同的用途,結構圖著重於靜態面向,而行為圖則處理動態面向。選擇適當的圖形類型,取決於您希望呈現或溝通系統的特定面向。
區分結構圖與行為圖
結構圖提供系統的靜態視圖,強調其元件、關係與組織,而行為圖則提供動態視圖,著重於系統內的執行時期行為、互動與流程。這兩類圖形各有不同的用途,對於全面建模與文件化軟體系統至關重要,能同時涵蓋其靜態與動態面向。
以下表格將14種UML圖形分類於這兩大類別,並為每一種提供簡要範例:
結構圖(靜態建模):
| 圖形類型 | 描述 | 範例 |
|---|---|---|
| 類別圖 | 表示靜態類別結構與關係。 | 範例:以類別如書籍, 作者,以及圖書館. |
| 物件圖 | 顯示特定時刻的實例及其關係。 | 範例:顯示特定的書籍以及會員物件在圖書館系統中。 |
| 套件圖 | 將元素組織成套件或命名空間。 | 範例:將相關類別分組至一個圖書館管理套件。 |
| 元件圖 | 描述系統的實體或邏輯元件及其連接。 | 範例:說明網頁系統中的軟體元件,例如資料庫、網頁伺服器和客戶端應用程式。 |
| 組合結構圖 | 詳細說明類別的內部結構,包含零件、埠與連接器。 | 範例:顯示電腦系統的內部結構,包含 CPU、記憶體與主機板等元件。 |
| 部署圖 | 顯示元件在節點或伺服器上的實體部署。 | 範例:表示網頁伺服器軟體元件如何部署在實體伺服器上。 |
行為圖(動態建模):
| 圖表類型 | 描述 | 範例 |
|---|---|---|
| 用例圖 | 定義參與者及其透過用例與系統的互動。 | 範例:模擬客戶如何與自動櫃員機系統互動以提領現金。 |
| 活動圖 | 描述系統中的工作流程、程序和動作,包括分支與平行處理。 | 範例:說明處理線上訂單所涉及的步驟。 |
| 狀態機圖 | 將物件或系統的行為表示為具有狀態與轉移的有限狀態機。 | 範例:模擬交通信號系統的狀態與轉移。 |
| 序列圖 | 透過訊息在時間軸上顯示物件或元件之間的互動。 | 範例:顯示使用者與資料庫系統在登入過程中訊息傳遞的順序。 |
| 通訊圖 | 著重於系統中物件之間的互動與協作。 | 範例:呈現聊天應用程式中物件如何交換訊息。 |
| 互動概觀圖 | 結合活動圖與序列圖的元素,以提供複雜互動的整體概觀。 | 範例:簡化零售系統中複雜的訂單處理工作流程。 |
| 時序圖 | 指定互動的時序限制,包括生命線與事件。 | 範例:顯示網路中設備之間資料傳輸的時序。 |
這些表格將每個UML圖表分類為「結構圖」(靜態建模)或「行為圖」(動態建模)類別,並附上每種類型的簡要描述與範例情境。
UML圖表在軟體設計中的多面向角色
軟體設計中的不同類型圖表具有特定用途,並提供對軟體系統的多種觀點。以下是我們需要不同類型圖表的主要原因:
- 清晰度與溝通:軟體專案中的不同利害關係人,包括開發人員、架構師、測試人員與業務分析師,對系統的理解需求各不相同。使用不同類型的圖表有助於針對其特定角色調整資訊,使溝通更有效。
- 抽象層級:軟體系統相當複雜,不同面向需在不同抽象層級上考量。某些圖表(如類別圖)提供高階的結構視圖,而其他圖表(如序列圖)則提供詳細的行為洞察。
- 問題解決:軟體設計與開發中的不同問題需要不同的解決方法。例如,在模擬系統的靜態結構時,類別圖較為合適,而序列圖則適合用來理解動態行為。
- 系統理解:不同的圖表提供了觀察系統的不同視角。這有助於全面理解系統,包括其架構、行為、互動以及部署。
- 文件:全面的文件對於軟體專案至關重要。使用各種類型的圖表可以建立結構良好且易於參考的視覺化文件,讓開發團隊在不同開發階段都能輕鬆查閱。
- 需求分析:用例圖和活動圖對於捕捉和分析系統需求與工作流程非常有價值。它們有助於確保軟體符合使用者需求。
- 架構設計:組件圖和部署圖對於架構設計至關重要。它們有助於規劃系統的結構以及其在現實環境中的部署方式。
- 測試與驗證:序列圖和狀態機圖有助於設計測試案例,並根據需求驗證系統的行為。
- 決策:不同類型的圖表提供不同的洞察。在決策過程中,架構師和專案經理可以利用這些圖表來評估取捨,做出明智的選擇。
- 維護便利性:圖表有助於維護和演進軟體。當開發人員需要修改或擴展系統時,這些視覺化表示可作為理解現有結構與行為的寶貴參考。
總結
軟體設計中UML圖表的多樣性迎合了軟體系統的多面向特性。每種圖表類型都有其特定用途,並提供獨特的視角,使其成為軟體開發各個階段——從初步設計到實作、測試與維護——不可或缺的工具。











