UML組合結構圖是一種強大的結構圖,用於探索內部架構一個結構化分類器(如類、組件或系統)的內部架構。它著重於一個實體如何由相互連接的組件組成,以及它如何透過其埠.

此圖對於定義系統組件的黑箱與白箱視圖至關重要,確保清晰的界線,並促進組件的重用。
核心結構與上下文
此圖繪製於一個分類器(邊界框)的上下文中,用以定義正在分析的整體系統或組件。
A. 分類器角色(邊界)
- 符號:一個大型矩形框。
- 目的:代表正在定義內部結構的整體類別、組件或系統。圖中所有其他元素均包含在此邊界內。
內部視圖的基本元素
內部結構由三個關鍵元素定義:組件、埠與連接器。
B. 組件
組件代表分類器(如類別或組件)實例在整體組合結構中所扮演的角色。基本上,組件是一種內部構建模塊。
- 符號:位於邊界內的一個矩形框,標示其名稱與類型。
- 語法:
組件名稱:組件類型(例如,資料快取:快取模組). - 關鍵區別: 一個零件並不是物件本身,而是角色 該物件在包含分類器的上下文中所扮演的角色。一個零件本身也可以是一個複合結構,允許深度嵌套。
C. 介面
介面是複合結構(邊界)與其環境之間,或其內部零件之間的明確互動點。介面明確定義了元件所使用或提供的介面。
- 符號: 一個小方塊附著在邊界邊緣或內部零件的邊緣上。
- 介面的類型:
- 公開介面: 附著於外側邊界;對環境開放。
- 封裝介面: 附著於內部零件;僅與其他內部零件或系統邊界連接。
- 目的: 介面明確定義所需的與提供的介面,使得內部結構可以隱藏(黑箱觀點),同時仍定義其合約式互動點。
D. 連接器
連接器模擬兩個元件之間的通訊連結或資訊/訊號的傳遞(可以是兩個介面、兩個零件,或一個介面與一個零件之間)。
- 符號: 一條連接兩個連結元件的線。
- 目的: 代表通訊連結的實作,顯示資料或訊息如何在內部傳遞。
介面建模:提供與需求
介面定義了介面的合約義務,對於架構清晰度至關重要。
A. 提供介面(棒棒糖符號)
- 符號: 一個圓形(或「棒棒糖」)連接到一個介面。
- 目的: 顯示分類器(或零件)提供給其環境或內部元件的服務或操作。
B. 所需介面(插座符號)
- 符號: 一個半圓形(或「插座」)連接到一個介面。
- 目的: 顯示分類器(或零件)為正確運作,需要來自環境或其他內部組件的服務或操作。
組裝連接器: 連接線通常將一個所需介面(插座) 零件連接到另一個零件的提供介面(棒棒糖),說明內部組件如何連接以實現系統的功能。
建模協作:角色與協作
組合結構圖也可以建模動態協作——特定的角色與連接組合,共同執行一項任務。
A. 協作使用
- 符號: 包含協作角色名稱的虛線橢圓。
- 目的: 代表在較大組件內使用的協作模式實例(例如,特定的觀察者模式實作)。
逐步建模範例:智慧家庭控制器
讓我們建模一個家庭自動化系統組件的內部結構。
- 分類器邊界: 將外框定義為
家庭自動化系統. - 外部埠: 加入一個標記為
apiPort的埠到邊界。附加一個提供介面 (棒棒糖)對ICommandReceiver(外部世界可以發送的內容)以及一個 必要介面 (插座)對IExternalWeatherService(系統所需的內容)。 - 內部零件:
排程器:TaskScheduler(處理定時事件)。裝置管理器:DeviceCoordinator(與硬體通訊)。
- 內部連接:
- 將
apiPort連接到裝置管理器零件,使用連接器。 - 將
排程器零件的輸出埠連接到裝置管理器零件的輸入埠,顯示排程器會告知裝置管理器何時採取行動。
- 將
- 巢狀結構(可選): 顯示
裝置管理器本身包含像zigbeeAdapter和wifiAdapter.
此圖表清楚地顯示了家庭自動化系統由兩個主要內部組件組成,使用特定的 API,並需要外部天氣服務才能運作。
總結
這個UML 組合結構圖超越了類別或組件的黑箱觀點,揭示其白箱架構。透過使用組件來定義角色,介面來定義互動點,以及連接器來定義內部通訊,使架構師和開發人員能夠精確地理解並設計複雜、可重用且明確封裝的組件。
您可以在我們的UML 資源中心.












