標籤:種類 訪問 互動 .com 程式碼 運行 代理 執行 建圖
簡介
元件圖表又稱構建圖,用於顯示系統各組件及各組件關係的物理視圖。
元件圖表通常包括組件、介面、關係、連接埠和連接器,用來顯示程式碼中相應的模組、源檔案或源檔案集合之間的依賴和泛化關係。
元件圖表中的組件通常由類圖中的一個或多個類(對象)實現為系統中的模組、源檔案、過程檔案或可執行檔,最終構成系統的絕大部分功能單元。
元件圖表建模步驟
- 確定系統有哪些對外介面或連接埠
- 確定系統要用到哪些組件,識別出系統中的重要模組、庫檔案、原始碼檔案、資料表或檔案、可執行檔或文檔等,將其建模為一個個組件
- 確定系統中各組件的類型、規格、約束和內部介面
- 確定系統中各組件之間、介面之間、組件與介面之間的關係
元件圖表的元素
元件圖表中的元素包括組件、介面、關係、連接埠和連接器,其中組件與組件之間有依賴關係,組件與介面之間有實現關係。
- 組件: 承擔具體功能單元的實際檔案,一般為lib, jar, dll, exe等格式,遵循介面定義並提供具體的介面實現
- 組件標記法
- 表徵圖標記法
表徵圖標記法 小表徵圖標記法
- 構造標記法
- 組件分類:
- 配置組件:系統中各組件執行時的環境設定檔
- 產品組件:系統運行前的靜態源檔案,包括模組、原始碼檔案、來源資料檔案、連結庫檔案、可執行檔等
- 過程組件:系統運行時產生的組件,包括動態產生類檔案,新增資料檔案、記錄檔、動態網頁等
- 介面:一組操作的集合,聲明了組件提供或請求的服務契約,這個契約由實現和使用這個介面的組件共同遵守
從調用從屬角度可以把介面分為需求介面和提供介面。
- 需求介面: 也叫需介面,是指組件像其他組件請求服務時要遵循的介面
- 提供介面:也叫供介面,是指組件給其他組件提供服務時實現的特性和約束
- 關係:實現,依賴, 泛化(具體見元件圖表的關係部分)
- 連接埠:屬於外部介面,是被封裝組件與外界的互動點。實現介面的組件使用連接埠來收發訊息,與外界互動
- 標記法:在UML2.0中表示為小方框
- 與介面關係:需求介面通過連接埠從外部請求服務,提供介面通過連接埠向外部提供服務
- 與組件關係:組件之間可以通過連接埠進行互動,如收發訊息
- 連接器:兩個組件或兩個連接埠之間的通訊關係。UML2.0提供兩種類型的連接器
- 代理連接器:外部連接埠(連接埠)和內部介面之間的連接器
- 組裝連接器:組件之間的連接器。連接器在一個組件的需求介面和另一個組件的提供介面之間建立串連,使得前一個組件能夠調用後一個組件提供的服務
元件圖表的關係
元件圖表中的關係有實現、依賴和泛化,主要涉及組件與組件之間、組件與介面之間、介面與介面之間。
如果兩個組件中的兩個類存在依賴關係,那麼這兩個組件之間的關係就可以表示為依賴關係
如果兩個組件中的兩個類之間或兩個介面之間存在泛化關係,那麼這兩個組件之間的關係就可以表示為泛化關係
元件圖表樣本
以銀行簡訊客服系統為例
元件圖表與相近UML圖的區別
- 元件圖表與類圖區別:元件圖表與類圖在以下幾個方面上有顯著區別
- 抽象層次:類圖側重對單個實體和細節邏輯的抽象;元件圖表側重對模組化和部署實現的抽象
- 抽象粒度:類圖中以類、介面及它們之間關係為粒度;元件圖表中以功能單元為粒度,通常是若干個類或介面組成
- 外部調用:外部調用類圖中的類時可以根據其可見度直接調用其屬性和操作;外部調用元件圖表中的組件則只能通過介面訪問其操作
- 可部署性:類圖與單個實體和邏輯相對應,組織圖較為分散,不具有可部署性;元件圖表中的組件本身就是模組化、接近最終實現的功能單元,具有可部署性
- 元件圖表與包圖區別:元件圖表與包圖在以下幾個方面上有顯著區別
- 抽象層次:包圖側重對類、介面及包等元素的容器性抽象;元件圖表側重對庫檔案、原始碼檔案、可執行檔等的模組化抽象
- 組織圖:包圖側重靜態、不再改變的檔案結構;元件圖表側重動態、隨編譯/連結/執行過程改變的檔案結構
- 可部署性:包圖側重源檔案間的組織關係和層次,不具有可部署性;元件圖表中的組件本身具有動態可執行性,所以可部署
- 元素關係:包圖元素之間的關係大多是靜態包含或關聯;元件圖表元素之間的關係大多是動態調用或實現
元件圖表的注意事項
- 組件粒度適中,既易於分析又不至於數目太龐大
- 元件圖表中的元素關係需要與類圖及包圖中元素關係相對照,避免不一致產生歧義
- 元件圖表中的元素名詞與來源檔案一直,與部署圖中的元素一致
- 元件圖表如果太過繁雜又不得不標全組件,可以適當拆分成總元件圖表和幾個組件子圖
Python設計模式 - UML - 元件圖表(Component Diagram)