Home >> Blog >> 什麼是統一塑模語言 (UML)?

什麼是統一塑模語言 (UML)?

UML是統一塑模語言的縮寫,是一種標準化塑模語言,由一組集成圖組成,旨在幫助系統和軟體開發人員指定、可視化、構建和記錄軟體系統的工件,以及用於業務塑模和其他非軟體系統。UML 代表了一組最佳工程實踐,這些實踐已在大型複雜系統的塑模中證明是成功的。UML是開發麵向對象軟體和軟體開發過程中非常重要的一部分。UML 主要使用圖形符號來表達軟體項目的設計。使用 UML 有助於項目團隊進行交流、探索潛在的設計並驗證軟體的架構設計。在本文中,我們將為您詳細介紹什麼是 UML,

UML 的起源

UML 的目標是提供一個標準符號,可以被所有面向對象的方法使用,並選擇和集成前體符號的最佳元素。UML 被設計用於廣泛的應用程序。因此,它為廣泛的系統和活動(例如,分佈式系統、分析、系統設計和部署)提供了結構。

UML 是一種由 OMT 統一產生的符號

  1. 對象塑模技術 OMT [ James Rumbaugh 1991] - 最適合分析和數據密集型信息系統。
  2. Booch [ Grady Booch 1994] - 非常適合設計和實施。Grady Booch 與Ada語言進行了廣泛的合作,並且是該語言的面向對象技術開發的主要參與者。雖然 Booch 方法很強大,但符號不太受歡迎(很多雲形狀主導了他的模型 - 不是很整齊)
  3. OOSE(面向對象的軟體工程 [ Ivar Jacobson 1992]) - 以一個稱為用例的模型為特色。用例是一種強大的技術,可用於理解整個系統(OO 傳統上薄弱的領域)的行為。

1994 年,OMT 的創建者 Jim Rumbaugh 離開通用電氣並加入 Rational 公司的 Grady Booch 時震驚了軟體界。合作的目的是將他們的想法合併為一個單一的、統一的方法(該方法的暫定名稱)。方法確實是“統一方法”)。

到 1995 年,OOSE 的創建者 Ivar Jacobson 也加入了 Rational,他的想法(尤其是“用例”的概念)被納入新的統一方法 - 現在稱為統一塑模語言 1。Rumbaugh、Booch 和 Jacobson 的團隊被親切地稱為“三人組”

UML 也受到其他面向對象表示法的影響:

  • 梅勒和施萊爾 [1998]
  • 科德和尤登 [1995]
  • Wirfs-Brock [1990]
  • 馬丁和奧德爾 [1992]

UML 還包括當時其他主要方法中不存在的新概念,例如擴展機制和約束語言。

UML 的歷史

1.1996 年期間,對像管理組 (OMG)發布的第一個提案請求 (RFP)為這些組織聯合起來製定聯合 RFP 響應提供了催化劑。

Rational 與幾個願意投入資源致力於強大的 UML 1.0 定義的組織建立了 UML 合作夥伴聯盟。那些對 UML 1.0 定義貢獻最大的人包括:

  • 數位設備公司
  • 生命值
  • i-Logix
  • 智能公司
  • IBM
  • 圖標計算
  • MCI系統屋
  • 微軟
  • 甲骨文
  • 理性軟體
  • 德州儀器
  • 優利系統

3. 這種合作產生了 UML 1.0,這是一種定義良好、表達能力強、功能強大且普遍適用的塑模語言。這在 1997 年 1 月作為初始 RFP 響應提交給 OMG。1

4. 1997 年 1 月,IBM、ObjecTime、Platinum Technology、Ptech、Taskon、Reich Technologies 和 Softeam 也分別向 OMG 提交了 RFP 響應。這些公司與 UML 合作夥伴一起貢獻了他們的想法,並且合作夥伴共同產生了修訂後的 UML 1.1 響應。UML 1.1 版本的重點是提高 UML 1.0 語義的清晰度並吸收新合作夥伴的貢獻。它在 1997.1 秋季提交給 OMG 供他們考慮並通過,並將 1.1 增強到 1.5,隨後從 01 到 06 到 UML 2.1(現在 UML 當前版本是 2.5)

xcode-tutorial

為什麼選擇 UML

隨著軟體對許多公司的戰略價值的增加,該行業正在尋找自動化軟體生產和提高質量、降低成本和縮短上市時間的技術。這些技術包括組件技術、可視化編程、模式和框架。隨著範圍和規模的增加,企業還尋求管理系統複雜性的技術。特別是,他們認識到需要解決重複出現的架構問題,例如物理分佈、並發性、複製、安全性、負載平衡和容錯。此外,萬維網的發展雖然使一些事情變得更簡單,但也加劇了這些架構問題。統一塑模語言 (UML) 旨在響應這些需求。

  1. 為用戶提供即用型、富有表現力的可視化塑模語言,以便他們開發和交換有意義的模型。
  2. 提供可擴展性和專業化機制來擴展核心概念。
  3. 獨立於特定的編程語言和開發過程。
  4. 為理解塑模語言提供正式的基礎。
  5. 鼓勵 OO 工具市場的增長。
  6. 支持更高級別的開發概念,例如協作、框架、模式和組件。
  7. 整合最佳實踐。

UML - 概述

在我們開始研究 UML 理論之前,我們將簡要介紹一下 UML 的一些主要概念。

關於 UML,首先要注意的是有很多不同的圖表(模型)需要習慣。這樣做的原因是可以從許多不同的角度看待一個系統。軟體開發將有許多利益相關者參與。

例如:

  • 分析師
  • 設計師
  • 編碼員
  • 測試人員
  • 質量保證
  • 客戶
  • SEO優化技術操作者

所有這些人都對系統的不同方面感興趣,每個人都需要不同程度的細節。例如,編碼人員需要了解系統的設計並能夠將設計轉換為低級程式碼。相比之下,技術作家對整個系統的行為感興趣,需要了解產品的功能。UML 試圖提供一種表達能力很強的語言,以使所有利益相關者都可以從至少一個 UML 圖中受益。

下面快速瀏覽一下這 13 個圖表中的每一個,如下面的 UML 2 圖表結構所示:

結構圖顯示了系統的靜態結構及其在不同抽象和實現級別上的部分,以及它們如何相互關聯。結構圖中的元素代表系統的有意義的概念,可能包括抽象概念、現實世界和實現概念,結構圖有以下七種類型:

  • 類圖
  • 組件圖
  • 部署圖
  • 對像圖
  • 封裝圖
  • 複合結構圖
  • 剖面圖

行為圖顯示了系統中對象的動態行為,可以描述為系統隨時間的一系列變化,行為圖有以下七種類型:

  • 用例圖
  • 活動圖
  • 狀態機圖
  • 序列圖
  • 通訊圖
  • 交互概覽圖
  • 時序圖

xcode-tutorial

什麼是類圖?

類圖是一種中心塑模技術,幾乎貫穿所有面向對象的方法。該圖描述了系統中對象的類型以及它們之間存在的各種靜態關係。

關係

重要的關係主要有以下三種:

  1. 關聯- 表示類型實例之間的關係(一個人為一家公司工作,一家公司有多個辦事處。
  2. 繼承- 用於 OO 的 ER 圖最明顯的補充。它與 OO 設計中的繼承有直接的對應關係。
  3. 聚合- 聚合,一種面向對象設計中的對象組合形式。

聚合- 聚合,一種面向對象設計中的對象組合形式。

xcode-tutorial

什麼是組件圖?

在統一塑模語言中,組件圖描述了組件如何連接在一起以形成更大的組件或軟體系統。它說明了軟體組件的體系結構以及它們之間的依賴關係。這些軟體組件包括運行時組件、可執行組件以及源程式碼組件。

組件圖示例

xcode-tutorial

什麼是部署圖?

部署圖有助於對面向對象軟體系統的物理方面進行塑模。它是一個結構圖,將系統的體系結構顯示為軟體工件到部署目標的部署(分佈)。人工製品代表了物理世界中的具體元素,它們是開發過程的結果。它在靜態視圖中對運行時配置進行塑模,並可視化應用程序中工件的分佈。在大多數情況下,它涉及對硬件配置以及存在的軟體組件進行塑模。

部署圖示例

xcode-tutorial

什麼是對像圖?

對像圖是實例的圖,包括對象和數據值。靜態對像圖是類圖的一個實例;它顯示了系統在某個時間點的詳細狀態的快照。不同之處在於類圖表示由類及其關係組成的抽像模型。但是,對像圖表示特定時刻的實例,這在本質上是具體的。對像圖的使用相當有限,即顯示數據結構的示例。

類圖與對像圖 - 一個例子

有些人可能會發現很難理解 UML 類圖和 UML 對像圖之間的區別,因為它們都由命名的“矩形塊”組成,其中包含屬性,並且之間具有連結,這使得兩個 UML 圖看起來相似. 有些人甚至可能認為它們是相同的,因為在 UML 工具中,它們使用的類圖和對像圖的符號都放在同一個圖編輯器 - 類圖中。

但實際上,類圖和對像圖代表了程式碼庫的兩個不同方面。在本文中,我們將為您提供有關這兩個 UML 圖的一些想法,它們是什麼,它們有什麼區別以及何時使用它們。

類圖與對像圖的關係

您在編程時創建“類”。例如,在網上銀行系統中,您可以創建“用戶”、“帳戶”、“交易”等類。在課堂管理系統中,您可以創建“教師”、“學生”、“作業”等類. 在每個類中,都有代表該類特徵和行為的屬性和操作。類圖是一個 UML 圖,您可以在其中可視化這些類,以及它們的屬性、操作和相互關係。

UML 對像圖顯示系統中的對象實例在特定狀態下如何相互交互。它還表示處於該狀態的那些對象的數據值。換句話說,UML 對像圖可以看作是在特定狀態下如何使用類(在 UML 類圖中繪製)的表示。

如果您不喜歡這些定義,請查看以下 UML 圖示例。我相信你會在幾秒鐘內了解它們的差異。

類圖示例

下面的類圖示例表示兩個類 - 用戶和附件。用戶可以上傳多個附件,因此這兩個類通過關聯連接,在附件端使用 0..* 作為多重性。

xcode-tutorial

對像圖示例

下面的對像圖示例向您展示了用戶和附件類的對象實例在彼得(即用戶)嘗試上傳兩個附件時的“樣子”。所以要上傳的兩個附件對像有兩個Instance Specification。

xcode-tutorial

什麼是封裝圖?

包圖是UML結構圖,顯示包和包之間的依賴關係。模型圖允許顯示系統的不同視圖,例如,作為多層(也稱為多層)應用程序 - 多層應用程序模型。

封裝圖示例

xcode-tutorial

什麼是複合結構圖?

複合結構圖是添加到 UML 2.0 的新工件之一。複合結構圖類似於類圖,是一種組件圖,主要用於從微觀角度對系統進行塑模,但它描繪的是單個部分而不是整個類。它是一種靜態結構圖,顯示了類的內部結構以及這種結構使協作成為可能。

該圖可以包括內部部件、部件相互交互或類實例通過其與部件和外部世界交互的端口,以及部件或端口之間的連接器。複合結構是一組互連的元素,它們在運行時協作以實現某些目的。每個元素在協作中都有一些定義的角色。

複合結構圖示例

xcode-tutorial

什麼是剖面圖?

概要圖使您能夠創建特定於域和平台的構造型並定義它們之間的關係。您可以通過繪製原型形狀來創建原型,並通過以資源為中心的界面將它們與組合或概括聯繫起來。您還可以定義和可視化構造型的標記值。

剖面圖示例

xcode-tutorial

什麼是用例圖?

用例模型根據用例描述系統的功能需求。它是系統預期功能(用例)及其環境(參與者)的模型。用例使您能夠將您對系統的需求與系統如何滿足這些需求聯繫起來。

將用例模型想像成一個菜單,就像您在餐廳中找到的菜單一樣。通過查看菜單,您可以了解可供您選擇的菜品、個別菜餚及其價格。您還知道餐廳供應哪種美食:意大利菜、墨西哥菜、中國菜等等。通過查看菜單,您可以對該餐廳的用餐體驗有一個整體印象。實際上,菜單“模仿”了餐廳的行為。

因為它是一種非常強大的計劃工具,所以用例模型通常被所有團隊成員用於開發週期的所有階段。

用例圖示例

xcode-tutorial

什麼是活動圖?

活動圖是逐步活動和操作的工作流的圖形表示,支持選擇、迭代和並發。它描述了目標系統的控制流程,例如探索複雜的業務規則和操作,描述用例以及業務流程。在統一塑模語言中,活動圖旨在為計算和組織過程(即工作流)塑模。

活動圖示例

xcode-tutorial

什麼是狀態機圖?

狀態圖是 UML 中用於描述系統行為的一種圖,它基於 David Harel 的狀態圖概念。狀態圖描述了允許的狀態和轉換以及影響這些轉換的事件。它有助於可視化對象的整個生命週期,從而有助於更好地理解基於狀態的系統。

狀態機圖示例

xcode-tutorial

什麼是序列圖?

序列圖基於時間序列對對象的協作進行塑模。它顯示了對像在用例的特定場景中如何與其他對象交互。借助先進的可視化塑模能力,您只需點擊幾下即可創建複雜的序列圖。此外,Visual Paradigm 等一些塑模工具可以根據您在用例描述中定義的事件流生成序列圖。

序列圖示例

xcode-tutorial

什麼是通信圖?

與序列圖類似,通信圖也用於對用例的動態行為進行塑模。與序列圖相比,通信圖更側重於顯示對象的協作而不是時間序列。它們實際上在語義上是等價的,因此某些塑模工具(例如 Visual Paradigm)允許您從一個到另一個生成它。

通信圖示例

xcode-tutorial

什麼是交互概覽圖?

交互概覽圖側重於交互控制流的概覽。它是活動圖的變體,其中節點是交互或交互發生。交互概覽圖描述了隱藏消息和生命線的交互。您可以連結“真實”圖表並在交互概覽圖中實現圖表之間的高度可導航性。

交互概覽圖示例

xcode-tutorial

什麼是時序圖?

時序圖顯示了對像在給定時間段內的行為。時序圖是序列圖的一種特殊形式。時序圖和時序圖的區別在於軸顛倒,時間從左到右增加,生命線顯示在垂直排列的單獨隔間中。

時序圖示例

xcode-tutorial