基本概念:組件圖即是用來描述組件與組件之間關系的一種UML圖。組件圖在宏觀層面上顯示了構成系統某一個特定方面的實現結構。
組件圖中主要包含三種元素,即組件、接口和關系。
組件圖通過這些元素描述了系統的各個組件及之間的依賴關系,還有組件的接口及調用關系。此外,組件圖還可以使用包來進行組織,使用注解與約束來進行解釋和限定。
組件圖在面向對象設計過程中起着非常重要的作用:它明確了系統設計,降低了溝通成本,而且按照面向對象方法進行設計的系統和子系統通常保證了低耦合度,提高了可重用性。
組件圖的組成元素:組件、接口、組件圖中的關系、組件的內部結構。
組件
組件,是系統設計的一個模塊化部分,它隱藏了內部的實現,對外提供了一組接口。
組件是一個封裝完好的物理實現單元,它具有自己的身份標示和定義明確的接口。並且由於它對接口的實現過程與外部元素獨立,所以組件具有可替換性。
組件在系統中一般存在三種類型,分別為部署組件、工作產品組件和執行組件。
a.配置組件是構成系統所必要的組件,是運行系統時需要配置的組件。
b.工作產品組件主要是開發過程的產物,是形成配置組件和可執行文件之前必要的工作產品,是部署組件的來源。工作產品組件並不直接參與到可執行系統中,而是用來產生系統的中間產品。
c.執行組件代表可運行的系統最終運行產生的運行結果,並不十分常見。
一個ATM機的組件:
系統設計的一個模塊化部分
顯示界面
讀卡機
業務操作----查詢、取款、轉賬、掛失
學校教務系統的組件:
系統設計的一個模塊化部分
登錄界面、業務動作、層業務實現層
學生管理、教師管理、成績維護、選課
接口
對於一個組件而言,它有兩類接口,提供接口與需求接口。
a.提供接口:又被稱為導出接口或供給接口,是組件為其他組件提供服務的操作的集合。
b.需求接口:又被稱為引入接口,是組件向其他組件請求相應服務時要遵循的接口。
端口
端口(port)是一個被封裝的組件的對外窗口。在封裝的組件中,所有出入組件的交互都要通過端口。組件對外可見的行為恰好是它端口的綜合。此外,端口是有標識的。別的組件可以通過一個特定端口與另一個組件通信。在實現時,組件的內部組件通過特定的外部端口來與外界交互,因此,組件的每個部件都獨立與其他部件的需求。端口允許把組件的接口划分為離散的並且可以獨立使用的幾部分。端口提供的封裝性和獨立性更大程度上保證了組件的封裝性和可替換性。
組件的內部結構
在UML 2規范中,組件允許通過嵌套結構來表現組件的內部結構。
子組件之間通過接口建立關系。圖中組件邊緣的小矩形被稱為端口,端口可以理解為組件的入口與出口,組件通過端口與外部元素相互協作。端口上可以添加提供接口或需求接口來使組件得以擴展。
組件圖中的關系
1.依賴關系
a.組件與需求接口之間建立依賴關系
b.組件與組件之間建立依賴關系:說明在運行過程中A在某些行為上依靠組件B的支持
2.實現關系
組件與提供接口之間建立實現關系
組件圖的建模技術
對源代碼結構建模
識別出感興趣的源代碼文件集合,並建模為組件。
如果系統規模較大,使用包對組件進行分組。
可以使用約束或注解來表示源代碼的作者、版本號等信息。
使用接口和依賴關系來表示這些源代碼文件之間的關系。
檢查組件圖的合理性,並識別源代碼文件的優先級以便進行開發工作。
對可執行程序結構建模
識別出相關的運行組件集合。
考慮集合中每個組件的類型。
如果系統規模較大,可以使用包對組件進行分組。這里包的使用可以對應於相應文件的文件存儲結構。
分析組件之間的關系,使用接口和依賴關系建模這些關系。
考量建模結果是否實現了組件的各個特性,對建模的結果進行細化。
案例(分析一個已經存在的系統)
畫出下列描述的網上商城組件圖:購物車、訂單、庫存、支付管理組件,使用組件圖進行完善。
識別組件:購物車、訂單、庫存、支付管理
識別組件之間的關系通過一個現實的例子。
在購買一件商品時,我們首先是瀏覽商品,了解商品詳情。在商品詳細頁面上,我們可以看到一個“加入購物車”
組件圖