1. 程式人生 > >UML構件圖

UML構件圖

元件圖(Component Diagram)又稱為構件圖,他描述的是在軟體系統中遵從並實現一組介面的物理的、可替換的軟體模組。

構件圖 = 構件(Component) + 介面(Interface) + 關係(Relationship) + 埠(Port) + 聯結器(Connector)

  • 在面向物件系統的物理方面進行建模要用到兩種圖:元件圖和配置圖。

二、包含的元素

1.元件(Component)->構件

  • 元件是定義了良好介面的物理實現單元,是系統中可替換的物理部件。
  • 元件代表系統的一個物理實現塊,代表邏輯模型元素如類、介面、協同等的物理打包。
  • 構件通過它的提供介面和請求介面展現行為。
  • 由於在UML2.0中,構件是一種類,因此構件具有屬性、操作和可見性。這些概念的含義與在類圖中定義的是一樣的,只是在這裡把這些概念應用在構件上。

元件的命名:

  元件的名稱有兩種:簡單名和路徑名。並依據目標作業系統可以新增相應的副檔名,例如javadll

表示方式:元件用一個左側帶有突出兩個小矩形的矩形來表示。

UML2.0中表示方式:構件用加構造型《component》的矩形框來表示,左上角新增以前的構件符號,如果沒有構件細節可在中央直接寫上名字。

(構造型和左上角的圖示可以二選一)

UML2.0把構件分為基本構件和包裝構件

  • 基本構件
    注重於把構件定義為在系統中可執行的元素。
  • 包裝構件
    擴充套件了基本構件的概念,它注重於把構件定義為一組相關的元素,這組元素為開發過程的一部分。也即, 包裝構件定義了構件的名稱空間方面。在構件的名稱空間中,可以包括類、介面、構件、包、用況、依賴(如對映)和製品。按照這種擴充套件,構件也具有如下的含義:可以用構件來裝配大粒度的構件,方法為把所複用的構件作為大粒度構件的成分,並把它們的請求和提供介面連線在一起(簡單理解:元件包含元件,組拼大元件)。

元件的種類

  1. 配置元件(Deployment Component):執行系統需要配置的元件,是形成可執行檔案的基礎—作業系統、JAVA虛擬機器、DBMS;
  2. 工作產品元件(Work Product Component):包括模型、原始碼和用於建立配置元件的資料檔案,它們是配置元件的來源—UML圖、java類和資料庫表;
  3. 執行元件(Execution Component):在執行時建立的元件,是最終可執行的系統產生的允許結果—.net元件

2.介面(Interface)

  • 介面(interface)介面由一組操作組成,它指定了一個契約,這個契約必須由實現和使用這個介面的構件的所遵循。

介面分提供介面和請求介面

  • 把構件實現的介面稱為提供介面(供介面),這意味著構件的提供介面是給其它構件提供服務的。實現介面的構件支援由該介面所擁有的特徵,包括介面擁有的約束。
  • 構件使用的介面被稱為請求介面(需介面),即構件向其它構件請求服務時要遵循的介面

表示方式:

  • 供介面用“棒棒糖”式的圖形表示,即由一個封閉的圓形與一條直線組成。
  • 需介面用“插座”式的圖形表示,即由一個半圓與一條直線組成。

java語言中供介面通過關鍵字implements來顯式地表示,需介面被類所使用的任何介面型別隱式地定義。

3.外部介面——埠

  • 埠是UML2.0引入的概念
  • 埠描述了在構件與它的環境之間以及在構件與它的內部構件之間的一個顯示地互動點
  • 埠是一個封裝構件的顯示的對外視窗,所有進出構件的互動都要通過埠。
  • 使用埠能在更大的程度上增加構件的封裝性和可替代性。
  • 埠是構件的一部分,埠的例項隨著它們所屬的構件的例項一起被建立和撤消。

<1>介面與埠的關係

  提供介面說明了通過埠來提供服務,請求介面說明了通過埠需要從其它構件獲得服務。

  一個構件可以通過一個特定埠同另一個構件通訊,而且通訊完全是通過由埠支援的介面來描述的。

<2>表示方式

  尾部加小方框的正常介面表示,小方框就被稱為埠。

4.聯結器(Connector)——連線件

UML2.0提供兩種型別的聯結器:

  1. 代理聯結器(Delegation Connector)——委託連線件:連線外部介面的埠和內部介面。
  2. 組裝聯結器(Assembly Connector)——組裝連線件:元件聯結器表示構件之間的關係,它連線構件內部的類,將一個構件的供介面和一個構件的需介面捆綁在一起
  • 連線埠意味著請求埠要呼叫提供埠中的操作,以得到服務。
  • 立埠和介面的優點在於在設計時,兩個構件彼此不需要了解對方的內部,只要它們的介面是相互相容的即可。
  • 如果一個埠提供一個特定的介面而另一個埠需要這個介面,且介面是相容的,那麼這兩個埠-便是可連線的。

<1>組裝連線件

有兩種表示裝配連線件的方法:

  1. 如果要顯式地把兩個構件例項銜接在一起,在它們的埠之間畫一條線即可。
  2. 如果兩個構件例項相連是由於它們有相容的介面,則可以使用一個“球-穴”標記來表示構件例項之間的連線關係。

  裝配連線件是兩個構件例項間的連線件,它定義一個構件例項提供服務,另一個構件例項使用這些服務。裝配連線件用於把一個請求介面或埠與一個提供介面或埠的連線起來。在執行時,訊息起源於一個請求埠,沿著連線件傳遞,被交付到一個提供埠

<2>委託連線件

  委託有這樣的含義:具體的訊息流將發生在所連線的埠之間,可能要跨越多個層次,最終到達要對訊息進行處理的最終部件例項。這樣,使用委託連線件可對構件行為的層次分解建模。

  委託連線件把外部對構件埠的請求分發到構件內部的部件例項進行處理,或者通過構件埠把構件內部部件例項向構件外部的請求分發出去。

  構件內部的一個部件可以是另一個構件或是一個類。注意,必須在兩個提供埠間或兩個請求埠間定義委託連線件。

注意事項:因為構件是可以巢狀的,所以內部構件之間的連線(球-穴)是組裝連線件,內部構件與埠之間的連線(實線箭頭)是委託連線件。

4..依賴關係(Dependency)

元件圖用依賴關係表示各元件之間存在的關係型別。

  在UML中,元件圖中依賴關係的表示方法與類圖中依賴關係相同,都是一個由客戶指向提供者的虛線箭頭。

三、相關概念比較

1.元件與類

2.元件與包

二者均為分組組織機制,但也有許多不同之處:

  • 一個元件代表一個物理的程式碼模組,而包可以包含成組的邏輯模型元素,也可以包含物理的元件;可以用包來組織用例(use case),不可以用元件來組織用例。
  • 一個類可以出現在多個元件中,卻只能在一個包中定義。
  • 配置圖(deployment diagram)中,節點(node)中可以放元件,但不可以放包。
  • 包只是型別(type),元件可以是例項也可以是型別。
  • 包可以作為開發檢視(development view),用於管理。元件可作為物理檢視(physical view),用於部署。但反之不然。

四、元件圖建模技術

  1. 對系統中的元件建模—分解系統,考慮有關係統的組成管理、軟體的重用和物理節點的配置等因素,把關係密切的可執行程式和物件分別歸入元件,找出相應的類、介面等模型元素。
  2. 對相應元件提供的介面建模。
  3. 對元件之間的依賴關係建模。
  4. 將邏輯設計對映成物理實現。
  5. 對建模的結果進行精化和細化。