譯者說
一直以來,對UML部署圖并沒有仔細研究其設計理念,直接按照自己的理解畫出能表達內容的樣子就完事了。實際上,UML也在不斷發展和完善,許多UML工具也都提供了良好的支持,有必要了解其設計理念,以達到事半功倍的效果。
概述
部署圖是結構圖的一種,它展示了系統的架構。例如:一個軟件系統的眾多實體(Artifacts)是如何構成部署目標(Node,節點)的。
實體(Artifact)表示在現實世界中具體的元素。實體通常是開發過程的結果,例如:可執行文件、庫、存檔、數據庫schema、配置文件等等。
部署目標(Deployment target):通常用節點(Node)來表示,代表一個硬件設備或某些軟件運行環境。節點可以通過communication paths構成任意復雜度的、網絡連接的系統。
注意:在UML1.x部署圖規范中,組件可以直接部署到節點中。但是在UML2.x規范中,實體可以部署到節點,實體也可以實現組件。組件則可以通過實體間接部署到節點。
譯者說:在UML2.x規范中,組件不能直接部署到節點。
部署圖可以用于描述規范級別的架構,也可以描述實例級別的架構。這與類圖和對象圖有點類似。
規范級別:展示從實體到節點的部署情況。不涉及具體的實體實例或節點實例。
實例級別:展示實體實例到具體的節點實例的部署情況。它可以用于展示不同部署之間的差異。例如,開發和生產環境的部署可以通過具體的名字或ID(這里指的是具體的構建、部署服務器、或設備)加以區分。
譯者說:上文中已經提到,規范級別和實例級別其實就像類圖和對象圖之間的關系。規范級別是抽象的、統一的、不具體的、具有指導性;實例級別是具體的、特殊的、與實際緊密相關的,具有直觀的現實意義。同樣,類是抽象的、只是一種行為和屬性的描述;而對象(也叫實例)是類的實例化結果,是具體的,對應一個有現實意義的事物。
常用的部署圖有如下幾種:
- 通過實體實現(展現)組件;
- 規范級別的部署圖;
- 實例級別的部署圖;
- 系統網絡架構圖;
譯者說:以下就是逐一介紹四種用法。
通過實體實現組件
組件圖展示了組件及組件之間的關系(包括分類器),而部署圖則展示了實體到節點的部署情況。這里遺失了一個清單圖(manifestation diagram),用于表示如何通過實體實現組件,也可以表示實體的內部結構。
然而,在UML2.4規范中,并未定義清單圖。可以通過組件圖或部署圖來展示清單圖。
樣圖如下:
規范級別的部署圖
部署Web應用到Tomcat JSP服務器以及部署數據庫schema到數據庫系統的樣圖如下:
實例級別的部署圖
部署應用到應用服務器以及部署若干schema到數據庫服務器的樣圖如下:
系統網絡架構圖
部署圖可以用于顯示系統的邏輯或物理網絡架構。它可能不需要實體和部署,也可能只有主要角色。樣圖如下: