統一建模語言是一種標準化的通用建模語言,現在由對像管理組 (OMG)作為事實上的行業標准進行 管理。UML 包括一組圖形符號技術,用於為軟件密集型系統創建可視化模型。
在 UML 2.2 中有 14 種類型的 UML 圖,分為兩類:
- 7種圖表類型代表結構信息
- 另外 7 個代表行為建模的通用 UML 圖類型,包括代表交互的不同方面的四個。
這些圖表可以按層次分類,如下面的 UML 圖表所示:
問題:UML 龐大而復雜?
UML 確實是一個巨大的話題。UML 提供了大量圖表符號,分為 14 種不同的 UML 圖類型,每種都有不同的 UML 模型,服務於不同的目的並解決開發需求的不同方面。
- 14 種 UML 圖類型的每個 UML 圖都提供了大量的結構和符號,涵蓋了大多數軟件開發項目的不同需求。
- UML 規範有 700 多頁,顯然被認為過於復雜,對 UML 的感知和採用有負面影響。
- 通常,用戶傾向於只考慮和使用其 UML 圖表/結構的一部分。
答案:學習最基本的 UML 圖和符號
Grady Booch 是最重要的統一建模語言開發人員之一,他表示“80% 的軟件只需要 20% 的 UML”。
什麼是 UML 調查* 狀態?
我們可以通過假設來解釋 UML 調查的結果,如果圖表是
- 廣泛使用,如果它≥60%的來源
- 如果它是 ≤ 40% 的來源,則幾乎不使用
在本文中,我按照上面提到的使用頻率的順序介紹了所有 14 種 UML 圖:
例如,類圖是使用最廣泛的一種,因此將在本節中首先討論,以此類推……
類圖
在軟件工程中, 統一建模語言 (UML) 中的類圖是 一種靜態結構圖 ,它通過顯示系統的類、它們的屬性、操作(或方法)以及對象之間的關係來描述系統的結構。
類圖的目的
- 顯示系統中分類器的靜態結構
- 圖為 UML 規定的其他結構圖提供了基本的符號
- 對開發人員和其他團隊成員也有幫助
- 業務分析師可以使用類圖從業務角度對系統進行建模
UML 類圖由以下部分組成:
- 一組類和
- 一組類之間的關係
類圖——圖表工具示例
類圖也可能附有類或關係的註釋。註釋以灰色顯示。
在上面的例子中:
我們可以通過閱讀以下幾點來解釋上述類圖的含義。
- 形狀是一個抽像類。它以斜體顯示。
- 形狀是一個超類。Circle、Rectangle 和 Polygon 是從 Shape 派生的。換句話說,圓就是形狀。這是一種泛化/繼承關係。
- DialogBox 和 DataController 之間存在關聯。
- 形狀是窗口的一部分。這是一種聚合關係。形狀可以在沒有窗口的情況下存在。
- 點是圓的一部分。這是一種組合關係。沒有圓,點就不能存在。
- 窗口依賴於事件。但是,Event 不依賴於 Window。
- Circle 的屬性是半徑和中心。這是一個實體類。
- Circle 的方法名稱是 area()、circ()、setCenter() 和 setRadius()。
- Circle 中的參數 radius 是 float 類型的 in 參數。
- Circle 類的方法 area() 返回一個 double 類型的值。
- Rectangle 的屬性和方法名是隱藏的。圖中的其他一些類也隱藏了它們的屬性和方法名稱。
UML 中第二種最流行的圖表類型是活動圖:
活動圖
活動圖是 UML 圖中另一個重要的行為圖,用於描述系統的動態方面。活動圖本質上是流程圖的高級版本,它對從一個活動到另一個活動的流程進行建模。
何時使用活動圖
活動圖描述瞭如何協調活動以提供可以處於不同抽象級別的服務。通常,一個事件需要通過一些操作來實現,特別是在操作旨在實現需要協調的許多不同事物的情況下,或者單個用例中的事件如何相互關聯時,特別是活動的用例可能重疊並需要協調。它還適用於建模用例集合如何協調以表示業務工作流
- 通過檢查業務工作流程確定候選用例
- 識別用例的前置條件和後置條件(上下文)
- 用例之間/內部的工作流建模
- 對對像操作中的複雜工作流進行建模
- 在高級活動圖中詳細建模複雜活動
活動圖——通過例子學習
一個基本的活動圖——流程圖
活動圖示例 – 流程訂單
給定與處理訂單的工作流相關的問題描述,讓我們使用活動圖對描述進行可視化建模:
流程訂單 – 問題描述
一旦收到訂單,活動就會分成兩組平行的活動。一方填寫並發送訂單,另一方處理賬單。
在填寫訂單方面,交貨方式是有條件地決定的。根據情況執行隔夜交割活動或定期交割活動。
最後,並行活動結合起來關閉訂單。
下面的活動圖示例以圖形形式可視化流程。
第三個最廣泛使用的 UML 圖類型是序列圖:
序列圖
UML 序列圖是詳細說明如何執行操作的交互圖。它們捕獲協作上下文中對象之間的交互。序列圖是時間焦點,它們通過使用圖表的垂直軸來表示時間,什麼消息被發送以及何時發送,從而直觀地顯示交互的順序。
序列圖示例:酒店系統
序列圖是一個交互圖,詳細說明了操作是如何執行的——發送什麼消息以及何時發送。序列圖是按時間組織的。隨著您向下瀏覽頁面,時間會逐漸增加。操作中涉及的對象按照它們參與消息序列的時間從左到右列出。
下面是進行酒店預訂的序列圖。啟動消息序列的對像是一個預約窗口。
注意:類和對像圖是靜態模型視圖。交互圖是動態的。它們描述了對像如何協作。
第四大使用最廣泛的 UML 圖類型(96%)是:
- 用例圖
- 狀態機圖
用例圖
UML用例 圖是未開發的新軟件程序的系統/軟件需求的主要形式。用例指定了預期的行為(什麼),而不是實現它的確切方法(如何)。
用例一旦指定,就可以用文本和視覺表示(即用例圖)表示。用例建模的一個關鍵概念是它幫助我們從最終用戶的角度設計系統。它是一種通過指定所有外部可見的系統行為來以用戶的方式傳達系統行為的有效技術。
用例圖一覽
用統一建模語言定義了標準形式的用例圖,如下面的用例圖示例所示:
用例圖——車輛銷售系統
下圖顯示了車輛系統的用例圖示例。如您所見,即使是像汽車銷售系統一樣大的系統也包含不超過 10 個用例!這就是用例建模的美妙之處。
用例模型還展示了extend 和include 的使用。此外,參與者和用例之間存在關聯。
狀態圖
實體的行為不僅是其輸入的直接結果,而且還取決於其先前的狀態。實體的過去歷史最好用有限狀態機圖或傳統上稱為自動機的方式建模。
UML 狀態機圖(或有時稱為狀態圖、狀態機或狀態圖)顯示實體的不同狀態。狀態機圖還可以顯示實體如何通過從一種狀態更改為另一種狀態來響應各種事件。狀態機圖是用於對系統的動態性質進行建模的 UML 圖。
簡單狀態機圖符號
簡單狀態是沒有子結構的狀態。具有子狀態(嵌套狀態)的狀態稱為複合狀態。子狀態可以嵌套到任何級別。嵌套狀態機最多可以有一個初始狀態和一個最終狀態。子狀態用於通過顯示某些狀態僅在特定上下文(封閉狀態)內才可能來簡化複雜的平面狀態機。
子狀態示例 – 加熱器
歷史狀態
除非另有說明,否則當轉換進入複合狀態時, 嵌套狀態機的操作會從初始狀態重新開始 (除非轉換直接針對子狀態)。歷史狀態允許狀態機 重新進入在離開 復合狀態之前處於活動狀態的最後一個子狀態。下圖展示了一個歷史狀態使用的例子。
根據調查,通信圖的使用率為 82%:
通訊圖
UML 通信圖與 序列圖 (一種交互圖)一樣,顯示對像如何交互。通信圖是對像圖的擴展,它顯示了對像以及從一個到另一個傳輸的消息。除了對象之間的關聯之外,通信圖還顯示了對象相互發送的消息。
通訊圖一覽
在通信圖的符號示例中,對象(用例中的參與者)由矩形表示。在示例中(通用通信圖):
- 對像是 Object1、Object2、Object…、ObjectN-1…和 ObjectN。
- 對象之間傳遞的消息由帶標籤的箭頭表示,箭頭以發送對象(參與者)開始,以接收對象結束。
- 對象之間傳遞的示例消息標記為 1:message1、2:message2、3:message3 等,其中消息名稱的數字前綴表示其在序列中的順序。
- Object1 首先向 Object2 發送消息 message1,Object2 依次向 ObjectN-1 發送消息 message2,以此類推。
- 對象發送給自己的消息被表示為循環(例如,消息 message5)。
通信圖與序列圖
通信圖和時序圖類似。它們在語義上是等價的,即呈現相同的信息,您可以將通信轉換為序列圖,反之亦然。它們之間的主要區別在於,通信圖是按空間排列元素,順序圖是按時間排列。
在這兩種類型的交互圖中,序列圖的使用似乎遠遠超過通信圖。那麼,為什麼要使用通信圖呢?首先,它們對於可視化協作執行特定任務的對象之間的關係非常有用。這很難從序列圖中確定。此外,通信圖還可以幫助您確定靜態模型(即類圖)的準確性。
組件圖和部署圖的使用率都是 80%:
組件圖
UML 組件圖用於建模面向對象系統的物理方面,這些系統用於可視化、指定和記錄基於組件的系統,也用於通過正向和反向工程構建可執行系統。
組件圖本質上是關注系統組件的類圖,這些組件通常用於對系統的靜態實現視圖進行建模。
組件圖一覽
組件圖將正在開發的實際系統分解為各種高級功能。每個組件在整個系統中負責一個明確的目標,並且僅在需要知道的基礎上與其他基本元素交互。
部署圖
UML 部署圖是顯示運行時處理節點的配置以及在它們上的組件的圖。 部署圖是一種結構圖,用於對面向對象系統的物理方面進行建模。它們通常用於對系統的靜態部署視圖(硬件拓撲)進行建模。
部署圖一覽
部署圖對於可視化、指定和記錄嵌入式、客戶端/服務器和分佈式系統以及通過正向和反向工程管理可執行系統非常重要。
部署圖只是一種特殊的類圖,它關注系統的節點。從圖形上看,部署圖是頂點和弧的集合。部署圖通常包含:
節點
- 3-D 框代表一個節點,無論是軟件還是硬件
- 硬件節點可以用 <<stereotype>> 表示
- 節點之間的連接用一條線表示,可選<<stereotype>>
- 節點可以駐留在節點內
其他符號
- 依賴
- 關聯關係。
- 也可能包含註釋和約束。
根據調查,UML 對像圖的使用率為 71%:
對像圖
對像是運行時特定時刻的實例,包括對象和數據值。靜態 UML對像圖是類圖 的一個實例 ;它顯示了系統在某個時間點的詳細狀態的快照,因此對像圖包含了某個時間點的對象及其關係。
對像圖一覽
對像圖顯示了實例化類和定義類之間的這種關係,以及系統中這些對象之間的關係。當您的系統類圖非常複雜時,它們對於解釋系統的較小部分很有用,有時還可以在圖中建模遞歸關係。
說明對像圖的最佳方式是顯示從相應類圖派生的對像圖。
以下訂單管理系統顯示了它們的關係。這個小類圖顯示了一個大學部門可以包含許多其他部門,下面的對像圖實例化了類圖,並用一個具體的例子代替了它。
類到對像圖示例 – 訂單系統
封裝圖的使用率為70%:
封裝圖
包圖是結構圖的一種,顯示了大中型項目中模型元素的排列和組織。包圖可以顯示子系統或模塊之間的結構和依賴關係,顯示系統的不同視圖,例如,作為多層(也稱為多層)應用程序 – 多層應用程序模型。
封裝圖一覽
包圖用於簡化複雜的類圖,可以將類分組到包中。包是邏輯相關的 UML 元素的集合。
下圖是一個業務模型,其中類被分組到包中:
- 包顯示為頂部帶有小標籤的矩形。
- 包名稱位於選項卡上或矩形內。
- 虛線箭頭是依賴項。
- 如果另一個包的變化可能會迫使第一個包發生變化,那麼一個包依賴於另一個包。
複合結構圖的使用率為52%:
複合結構圖
複合結構圖是添加到 UML 2.0 的新工件之一。複合結構圖是一個 UML 結構圖,它包含類、接口、包和它們的關係,並提供所有或部分軟件系統的邏輯視圖。它顯示了結構化分類器或協作的內部結構(包括部件和連接器)。
複合結構圖的作用與類圖相似,但允許您更詳細地描述多個類的內部結構並顯示它們之間的交互。您可以以圖形方式表示內部類和部件,並顯示類之間和類內的關聯。
複合結構圖一覽
- 複合結構圖顯示了類的內部部分。
- 零件命名:partName:partType[multiplicity]
- 聚合類是類的一部分,但部分不一定是類,一部分是用於構成包含類的任何元素。
Timing Diagram 的使用率只有 40%,一般用戶很少使用
時序圖
時序圖是 UML 交互圖,用於顯示當圖的主要目的是推理時間時的交互。他們關注沿線性時間軸在生命線內和生命線之間變化的條件。時序圖描述了單個分類器的行為和分類器的交互,重點關注導致生命線建模條件變化的事件發生時間。
時間圖一覽
狀態時間線表示
從一種 狀態 到另 一種狀態的變化由生命線級別的變化表示。對於對象處於給定狀態的時間段,時間線與該狀態平行運行。狀態變化表現為從一個水平到另一個水平的垂直變化。與狀態或序列圖中的情況一樣,更改的原因是收到消息、導致更改的事件、系統內的條件,甚至只是時間的流逝。
價值生命線代表
下圖顯示了 UML 時序圖的另一種表示法。每次狀態變化時,它都會在相互交叉的兩條水平線之間顯示對象的狀態。
交互式概覽圖是 UML 2.0 中添加的新圖表:
交互式概覽圖
UML 交互概述圖提供了交互模型的高級抽象。它是活動圖的變體,其中節點是交互或交互發生。
交互概述圖側重於交互控制流的概述,它還可以顯示圖表之間的活動流。換句話說,您可以鏈接“真實”圖表並在交互概覽圖中實現圖表之間的高度可導航性。
交互概覽圖一覽
交互概覽圖是統一建模語言 (UML) 的 14 種圖表類型之一,它可以描繪帶有節點的控制流,這些節點可以包含交互圖,顯示在各種場景中如何啟動一組片段。交互概述圖側重於節點是 交互 (sd) 或 交互使用 (ref) 的控制流的概述。
交互概覽圖的其他符號元素與活動圖和序列圖相同。這些包括初始、最終、決策、合併、分叉和連接節點。
使用最少的 UML 圖是 Profile Diagram,它只有 11%:
剖面圖
作為一種通用建模語言,UML 為各種需求提供了穩定的基礎。它沒有為特定的應用領域或任何特定的技術定義。然而,在某些情況下,UML 過於籠統,使用它需要付出相當大的努力。在這種情況下,使用針對給定領域優化的語言並因此提供特殊概念是有利的。
概要圖是統一建模語言 (UML) 中的一種結構圖,它提供了一種通用擴展機制,用於為特定領域和平台定制 UML 模型。擴展機制允許以嚴格附加的方式細化標準語義,防止它們與標準語義相矛盾。配置文件是使用 構造型、 標記值定義和 應用於特定模型元素(如類、屬性、操作和活動)的約束來定義的。Profile 是這樣的擴展集合,它們共同為特定領域(例如,航空航天、醫療保健、金融)或平台(J2EE、.NET)定制 UML。
配置文件圖示例 – IT 管理
配置文件應用於另一個包,以便使配置文件中的構造型可用於該包。下圖顯示了應用於 ITManagement 包的網絡、電信和軟件配置文件。
尋找免費的在線軟件設計工具?
這是用於軟件設計示例的 Visual Paradigm Online 存儲庫,它是:
- 免費(個人和非商業目的)
- 在線(零安裝和配置)
- 支持 Google Drive 和免費云存儲
- 很多例子
- 隨時隨地使用它!只需要一個網絡瀏覽器