UML 元件圖表:方針
在 Visual Studio Ultimate 中,可以繪製「元件圖表」(Component Diagram),以顯示軟體系統的結構。如需觀看示範影片,請參閱使用元件圖表設計實體結構 (英文)。
若要建立 UML 元件圖表,請按一下 [架構] 功能表上的 [新增圖表]。
元件是模組單位,可在其環境內進行取代。它的內部項目已隱藏,但具有一個或多個已妥善定義的「提供的介面」(Provided Interface),透過該介面可以存取其函式。元件也可以具有「需要的介面」(Required Interface)。需要的介面會定義其需要的其他元件的函式或服務。透過連接數個元件之提供的介面和需要的介面,可以建構較大型元件。完整軟體系統可以視為元件。
繪製元件圖表有數個優點:
根據主要區塊考慮您的設計,可協助開發小組了解現有設計並建立新設計。
透過將系統視為具有已妥善定義之提供的介面和需要的介面的元件集合,您可改進元件之間的分離。這反而能夠讓設計更易於理解,並在需求變更時更易於做出相應變更。
您可以使用元件圖表來代表設計,無論設計使用或將使用何種語言或平台。
本主題內容
與其他圖表的關聯性
繪製元件圖表的基本步驟
顯示元件的內部組件
設計元件
注意事項 |
---|
如需元件圖表上項目的詳細參考資訊,請參閱UML 元件圖表:參考。 |
與其他圖表的關聯性
您可以與其他圖表一起使用元件圖表。
其他圖表 |
協助您討論和溝通設計的以下方面 |
---|---|
UML 順序圖表 |
如需詳細資訊,請參閱UML 順序圖表:方針。 |
UML 類別圖表 |
如需詳細資訊,請參閱UML 類別圖表:方針。 |
活動圖表 |
如需詳細資訊,請參閱UML 活動圖表:方針。 |
圖層圖表 |
如需詳細資訊,請參閱圖層圖表:參考。 |
繪製元件圖表的基本步驟
如需元件圖表上項目的詳細參考資訊,請參閱UML 元件圖表:參考。
如需如何在設計流程中使用元件圖表的詳細資訊,請參閱模型化軟體系統的架構。
注意事項 |
---|
HOW TO:編輯 UML 模型和圖表中會說明建立任何模型圖表的詳細步驟。 |
若要建立元件圖表
按一下 [架構] 功能表上的 [新增圖表]。
在 [範本] 下,按一下 [UML 元件圖表]。
命名圖表。
在 [加入至模型專案] 中,選取方案中的現有模型專案,或按一下 [建立新模型專案],然後按一下 [確定]。
新的元件圖表隨即出現,並帶有 [UML 元件圖表] 工具箱。工具箱包含需要的項目和關聯。
繪製元件
針對系統或應用程式中每個主要功能單元,建立「元件」(Component) (1)。
範例包括應用程式、硬體裝置、Web 服務、.NET 組譯碼、程式類別或類別群組,或者程式的任何可分隔片段。
若要建立元件
按一下工具箱上的 [元件],然後按一下圖表的空白部分。
-或-
複製和貼上現有元件。
在圖表或 [UML 模型總管] 中尋找現有元件。
以滑鼠右鍵按一下元件,然後按一下 [複製]。
開啟要顯示複製元件的圖表。
以滑鼠右鍵按一下圖表的空白部分,然後按一下 [貼上]。
具有新名稱的元件複本隨即出現。
按一下元件的名稱以變更名稱。
如果只要查看元件的標頭,請按一下>形箭號 (5)。
顯示元件的連接埠
「連接埠」(Port) (2、3) 代表傳入或傳出元件的訊息或作業呼叫群組。該群組可在介面中進行說明,而介面會定義連接埠的型別。連接埠可以提供介面或要求介面。
具有「提供的介面」(Provided Interface) (2) 的連接埠可提供由該元件實作,且其他元件可以使用的作業。
範例包括使用者介面、Web 服務、.NET 介面或任何程式設計語言的函式集合。
具有「需要的介面」(Required Interface) (3) 的連接埠代表元件需要由其他元件或外部系統提供的作業或服務群組。
例如,Web 瀏覽器需要 Web 伺服器,應用程式增益集則需要應用程式的服務。
元件連接埠的數量沒有限制。
若要將連接埠加入至元件
在工具箱中,按一下 [提供的介面] 或 [需要的介面]。
按一下您要將連接埠加入至的元件。
連接埠隨即出現在元件的界限上。
如此即會建立新介面做為連接埠的型別。這個介面會出現在 [UML 模型總管] 中。
拖曳元件界限周圍的連接埠,將其放置在需要的位置。
拖曳連接埠的標籤,來調整其位置。
按一下標籤對其進行變更。標籤會顯示介面的名稱。如果變更名稱,則會變更介面的名稱。
元件之間的連結
使用相依性 (4) 顯示一個元件的需求可以由其他元件提供的作業或服務來滿足。
若要顯示提供的介面可以滿足需要的介面
按一下工具箱中的 [相依性]。
按一下需要的介面位於一個元件上的連接埠,然後按一下提供的介面位於其他元件的連接埠。
您應嘗試避免設計相依性迴圈,其中群組中的每個元件都與其他所有元件相依。
若要將現有介面的連接埠加入至元件
在 [UML 模型總管] 中尋找介面,然後將該介面拖曳至元件。
-或-
複製和貼上圖表中介面的參考。
在類別圖表或元件圖表上,以滑鼠右鍵按一下介面,然後按一下 [複製]。
在元件圖表上,以滑鼠右鍵按一下元件,然後按一下 [貼上參考]。
提供的介面隨即出現在元件上。旁邊顯示動作標籤。
注意事項 如果使用 [貼上] 而非 [貼上參考],則會建立具有新名稱的新介面。
如果想要建立需要的介面,請按一下動作標籤,然後按一下 [轉換成需要的介面]。
顯示元件的內部組件
您可以將組件 (3) 放置在元件 (1) 中,以顯示該元件是如何由彼此互動的較小型元件組成的。
示範中的圖表說明型別為「立即進餐」Web 服務的每個執行個體都包含一個「客戶伺服器」執行個體和一個「廚房伺服器」執行個體。
組件是其父元件的屬性 (Property),與屬性 (Attribute) 屬於一般類別非常類似。組件具有自己的型別,這通常也是一個元件。組件的標籤具有與一般屬性相同的格式:
+ partName : TypeName
在父元件內,每個組件都會顯示針對其型別 (4、5) 定義的提供的介面和需要的介面。一個組件需要的作業或服務可由其他組件提供。您可以使用 [組件組譯碼] 連接器來顯示組件之間如何互相連接 (6)。
您也可以顯示父元件的介面實際上是該介面其中一個組件所提供或需要的介面。您可以使用 [委派] 關聯 (9),將父項的連接埠連接至內部組件的連接埠。兩個連接埠必須是相同類型 (提供的或要求的),且介面型別應相容。
您可以使用新型別或從現有型別建立新組件。
若要將組件加入至元件
針對視為父元件一部分的每個主要功能單元,建立組件。
按一下工具箱上的 [元件],然後按一下父元件 (1) 的內部。
新組件 (3) 隨即出現在父元件內。
即會在 [UML 模型總管] 中建立新元件。這是新組件的型別。
-或-
從 [UML 模型總管] 中,將現有元件拖曳至父元件。
新組件 (3) 隨即出現在父元件內。它的型別是從 [UML 模型總管] 中拖曳的元件。
-或-
以滑鼠右鍵按一下圖表或 [UML 模型總管] 中的元件,然後按一下 [複製]。
以滑鼠右鍵按一下父元件,然後按一下 [貼上參考]。
新組件 (3) 隨即出現在父元件內。它的型別是複製的元件。
按一下新組件的名稱以變更名稱。您不能變更其型別。
您可以將提供的介面和需要的介面 (4、5) 加入至新組件。按一下 [提供的介面] 或 [需要的介面] 工具,然後按一下組件。
-或-
從 [UML 模型總管] 中,將現有介面拖曳至組件。
介面會加入至組件的型別,並出現在組件自身上。需要的話,父元件會調整其大小。
將組件連接至另一個組件。
- 使用 [相依性] 工具來連接不同組件 (6) 的連接埠。
將組件連接至父元件的連接埠:
在父元件上建立一個或多個連接埠 (7)。按一下工具箱上的 [需要的介面] 或 [提供的介面],然後按一下父元件。
將連接埠委派 (9) 至一個或多個組件。按一下 [委派] 工具,並按一下父元件上的連接埠,然後按一下組件上的連接埠。您可以使用相同的方式,來連接提供或需要介面的連接埠。
顯示組件的部分
在將元件分解為各個組件之後,您可以將每個組件型別分解為自己的內部組件。
在個別元件圖表中執行每個分解層是最容易的。您必須首先找到組件的型別。例如,在示範中,其中一個組件命名為 DNCustomerServer,而其型別是稱為 CustomerServer 的元件。您可以在 [UML 模型總管] 中找到該型別,然後將其放置在其他圖表中。然後,您可以建立其自己的內部組件。
若要將組件的型別放置在圖表上
決定組件型別的完整限定名稱。
以滑鼠右鍵按一下組件,然後按一下 [屬性]。
型別名稱隨即出現在 [屬性] 視窗的 [型別] 欄位中。
在 [UML 模型總管] 中找到組件的型別。
按一下 [檢視],指向 [其他視窗],然後按一下 [UML 模型總管]。
展開此型別屬於的專案和任何封裝 (必要的話)。
型別會做為 [元件] 列出。
必要時可以在這裡變更其名稱。
開啟或建立其他元件圖表。
從 [UML 模型總管],將型別拖曳至圖表。
型別的檢視會顯示為圖表中的元件。
它具有與您針對組件定義的相同介面。
現在您可以在其中加入組件。
設計元件
說明組件如何共同合作
您可以繪製順序圖表,以顯示組件如何共同合作,以回應到達父元件的訊息。
您可以使用這些圖表來說明現有元件,以及設計新元件。
如果仍在設計元件,則可以繪製順序圖表,然後決定該圖表要包含哪些組件。您可以使用順序圖表來實驗不同組件、需要的介面和訊息順序。針對最常見最重要的流入訊息繪製順序圖表。然後,您可以在元件中建立組件,對應至您已決定的各個生命線。
使用順序圖表評定系統的工作如何在不同元件之間分佈。
如果太多工作堆積在一個組件,則與平均分佈工作相比,應用程式可能更難更新。
如果工作分佈太廣泛,且具有許多互動,則系統效能可能會變慢,且難於掌握。
若要繪製順序圖表,以顯示組件之間的共同合作
建立新的順序圖表。
如需詳細資訊,請參閱UML 順序圖表:方針。
建立將訊息傳送至這個元件的外部元件、使用者、裝置或其他行動 (1) 的生命線。
您可以將這個生命線的 [行動] 屬性設定為 true,以指出它在要考慮的元件之外。生命線上隨即出現桿狀圖形。
針對這個元件之提供的介面 (2) 建立生命線,選擇的行動會將訊息傳送給該元件。
針對元件的每個組件 (3) 建立生命線。
針對元件的每個需要的介面 (4) 建立生命線。
從外部行動 (5) 繪製訊息。顯示訊息如何傳遞給組件,以及它們如何共同合作以回應訊息。
必要時,顯示傳送至需要的介面 (6) 的訊息。不要顯示訊息執行內的任何詳細資料。
元件多於組件嗎?
在某些情況下,元件只是指定給組合部分集合的名稱。所有工作都是組件執行的,且在執行階段沒有代表元件的程式碼或其他成品。
您可以在模型中指出此項,方法是設定元件的 [Is Indirectly Instantiated] 屬性。在此情況下,所有元件的介面都應在連接埠上,並委派至內部組件。
說明每個組件內的程序
您可以使用活動圖表來顯示元件如何處理每則流入訊息。如需詳細資訊,請參閱UML 活動圖表:方針。
使用 [接受事件動作] (1) 顯示流入訊息啟動新的執行緒。
使用物件節點和輸入/輸出連接來顯示資訊流程,以及顯示將資訊儲存在何處。在範例中,物件節點 (2) 用於顯示在執行緒之間緩衝的項目。
定義資料和類別
您可以使用 UML 類別圖表描述下列項目的詳細內容:
元件的介面。
介面中傳送之作業參數中的資料。
元件中儲存的資料,例如活動圖表中物件流程所示內容。
元件之間的一般相依性
您可以僅將元件圖表用於顯示設計的主要組件及其相依性。
使用 [相依性] 工具繪製相依性。這表示一個元件的設計依賴於另一個元件。
相依性的典型類型包括下列項目:
一個元件呼叫其他元件內的程式碼。
一個元件具現化在其他類別中定義的類別。
一個元件使用其他元件建立的資訊。
您可以使用相依性箭號的名稱,來表示特定類型的用法。若要設定名稱,請以滑鼠右鍵按一下箭號,然後按一下 [屬性],並設定屬性視窗中的 [名稱] 欄位。