簡單介紹: 統一建模語言 (UML)

統一建模語言 (UML)是一種通用建模語言。UML 的主要目標是定義一種標準方法來可視化系統的設計方式。它與其他工程領域中使用的藍圖非常相似。

UML不是一種編程語言,而是一種可視化語言。我們使用 UML 圖來描繪系統的行為和結構。UML 幫助軟件工程師、商人和系統架構師進行建模、設計和分析。對像管理組 (OMG) 在 1997 年採用統一建模語言作為標準。此後一直由 OMG 管理。國際標準化組織 (ISO) 於 2005 年發布了 UML 作為批准的標準。 UML 多年來一直在修訂並定期進行審查。

我們真的需要UML嗎?

  • 複雜的應用程序需要多個團隊的協作和規劃,因此需要一種清晰簡潔的方式在它們之間進行通信。
  • 商人不懂代碼。因此,UML 對於與系統的非程序員基本要求、功能和流程進行通信變得必不可少。
  • 當團隊能夠可視化流程、用戶交互和系統的靜態結構時,可以節省大量時間。

UML 與面向對象的設計和分析相聯繫。UML 使用元素並在它們之間形成關聯以形成圖表。UML 中的圖可以大致分類為:

  1. 結構圖 (Structure Diagram) ——捕捉系統的靜態方面或結構。結構圖包括:組件圖、對像圖、類圖和部署圖。
  2. 行為圖 (Behavioral Diagram) ——捕捉系統的動態方面或行為。行為圖包括:用例圖、狀態圖、活動圖和交互圖。

下圖顯示了根據 UML 2.2 的圖表層次結構

UML 中使用的面向對象概念 –

  1. 類 (Class Diagram) ——類定義了藍圖,即對象的結構和功能。
  2. 對象 (Object Diagram) ——對象幫助我們分解大型系統並幫助我們模塊化我們的系統。模塊化有助於將我們的系統劃分為可理解的組件,以便我們可以一塊一塊地構建我們的系統。對像是用於描述實體的系統的基本單元(構建塊)。
  3. 繼承 (Inheritance) ——繼承是一種機制,子類通過它繼承父類的屬性。
  4. 抽象 (Abstract) ——對用戶隱藏實現細節的機制。
  5. 封裝 (Encapsulation) – 將數據綁定在一起並保護它免受外部世界的影響稱為封裝。
  6. 多態性 (Polymorphism) ——功能或實體能夠以不同形式存在的機制。

UML 2.0 中的添加 –

  • 軟件開發方法如敏捷已經被納入,原始 UML 規範的範圍已經擴大。
  • 最初 UML 指定了 9 個圖。UML 2.x 將圖的數量從 9 個增加到 13 個,新增的四個圖分別是:時序圖、通信圖、交互概覽圖和復合結構圖。UML 2.x 將狀態圖重命名為狀態機圖。
  • UML 2.x 添加了將軟件系統分解為組件和子組件的能力。

UML 結構圖 (Structure Diagram)

  1. 類圖 (Class Diagram)  –使用最廣泛的 UML 圖是類圖。它是所有面向對象軟件系統的構建塊。我們使用類圖通過顯示系統的類、它們的方法和屬性來描述系統的靜態結構。類圖還幫助我們識別不同類或對象之間的關係。
  2. 複合結構圖 (Composite Structure Diagram) ——我們使用複合結構圖來表示類的內部結構及其與系統其他部分的交互點。複合結構圖表示部件及其配置之間的關係,這些關係決定了分類器(類、組件或部署節點)的行為方式。它們代表使用部件、端口和連接器的結構化分類器的內部結構。我們還可以使用複合結構圖為協作建模。它們類似於類圖,除了它們詳細地表示與整個類相比的各個部分。
  3. 對像圖 (Object Diagram) –對像圖可以稱為系統中實例以及它們之間存在的關係的屏幕截圖。由於對像圖描繪了對像被實例化時的行為,我們能夠研究系統在特定時刻的行為。對像圖類似於類圖,只是它顯示了系統中類的實例。我們使用類圖描繪了實際的分類器及其關係。另一方面,對像圖表示某個時間點類的特定實例以及它們之間的關係。
  4. 組件圖 (Component Diagram) ——組件圖用於表示系統中物理組件的組織方式。我們使用它們來對實現細節進行建模。組件圖描繪了軟件系統元素之間的結構關係,並幫助我們了解計劃開發是否涵蓋了功能需求。當我們設計和構建複雜系統時,組件圖變得必不可少。系統組件使用接口來相互通信。
  5. 部署圖 (Deployment Diagram)-部署圖用於表示系統硬件及其軟件。它告訴我們存在哪些硬件組件以及在其上運行哪些軟件組件。我們將系統架構描述為軟件工件在分佈式目標上的分佈。工件是由系統軟件生成的信息。它們主要用於在具有不同配置的多台機器上使用、分發或部署軟件時。
  6. 包圖 (Package Diagram) ——我們使用包圖來描述包及其元素的組織方式。包圖簡單地向我們展示了不同包之間的依賴關係以及包的內部組成。包幫助我們將 UML 圖組織成有意義的組並使圖易於理解。它們主要用於組織類和用例圖。
  7. 剖面圖 (Profile Diagram) —— 概要圖基本上是一種可擴展性機制,它允許您通過添加新構建塊、創建新屬性和指定新語義來擴展和自定義 UML,以使語言適合您的特定問題域。

UML 行為圖 (Behavioral Diagram) 

  1. 狀態機圖 (State Machine Diagram) -狀態圖用於表示系統或系統部分在有限時間實例中的狀況。這是一個行為圖,它使用有限狀態轉換來表示行為。狀態圖也稱為狀態機狀態圖圖。這些術語通常可以互換使用。所以簡單地說,狀態圖用於對類的動態行為進行建模,以響應時間和不斷變化的外部刺激。
  2. 活動圖 (Activity Diagram) ——我們使用活動圖來說明系統中的控制流。我們還可以使用活動圖來指代執行用例所涉及的步驟。我們使用活動圖對順序和並發活動進行建模。因此,我們基本上使用活動圖直觀地描述工作流。活動圖側重於流程的條件及其發生的順序。我們使用活動圖來描述或描繪導致特定事件的原因。
  3. 用例圖 (Use Case Diagram) ——用例圖用於描述系統或系統的一部分的功能。它們被廣泛用於說明系統的功能需求及其與外部代理(參與者)的交互。用例基本上是一個圖表,表示可以使用系統的不同場景。用例圖為我們提供了系統或系統的一部分做什麼的高級視圖,而無需深入了解實現細節。
  4. 序列圖 (Sequence Diagram) –序列圖只是按順序描述對象之間的交互,即這些交互發生的順序。我們也可以使用術語事件圖或事件場景來指代序列圖。序列圖描述了系統中的對像如何以及以何種順序運行。這些圖表被商人和軟件開發人員廣泛用於記錄和理解新系統和現有系統的需求。
  5. 通信圖 (Communication Diagram)——通信圖(在 UML 1.x 中稱為協作圖)用於顯示對象之間交換的有序消息。通信圖主要關注對象及其關係。我們可以使用序列圖來表示類似的信息,但是,通信圖以自由形式表示對象和鏈接。
  6. 時序圖 (Timing Diagram)——時序圖是序列圖的一種特殊形式,用於描述對像在一個時間範圍內的行為。我們使用它們來顯示控制對象狀態和行為變化的時間和持續時間約束。
  7. 交互概述圖 (Interaction Overview Diagram) ——交互概述圖對一系列動作進行建模,並幫助我們將復雜的交互簡化為更簡單的事件。它是活動圖和序列圖的混合體。

問題:UML 龐大而復雜?

UML 確實是一個巨大的話題。UML 提供了大量的圖表符號,分為 14 種不同的 UML 圖類型,每一種都有不同的 UML 模型,服務於不同的目的並滿足開發需求的不同方面。

  • 14 種 UML 圖類型的每個 UML 圖都提供了大量的結構和符號,涵蓋了大多數軟件開發項目的不同需求。
  • UML 規範有 700 多頁,顯然被認為過於復雜並且對 UML 的感知和採用產生了負面影響。
  • 通常,用戶傾向於僅考慮和使用其 UML 圖表/結構的一部分。

答案:學習最基本的 UML 圖和符號

Grady Booch 是統一建模語言最重要的開發者之一,他說“對於 80% 的軟件,只需要 20% 的 UML”。

什麼是 UML 調查狀態?

我們可以通過假設來解釋 UML 調查的結果,如果圖表是

  • 廣泛使用,如果它≥ 60% 的來源
  • 如果 ≤ 40% 的來源,則很少使用
活動圖示例 - 文字處理器

制定您的 UML 學習計劃

根據調查中收集的數據,您可以通過制定有意義的 UML 學習計劃來更好地了解如何開始您的 UML 學習之旅。本文還為您提供了一個圖像映射,用於快速訪問“什麼是UML圖”系列論文(只需單擊上面圖像映射中的UML圖框即可)。享受!

 

 

參考 –
統一建模語言 – 維基百科

Visual Paradigm International