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

  • 2763
  • 0
  • uml
  • 2021-02-19

UML统一建模语言(Unified Modeling Language)的缩写,是一种标准化的建模语言,由一整套图表组成,用于帮助系统和软件开发人员指定,可视化,构建和记录软件系统的工件以及业务建模和其他非软件系统。

UML代表了一系列在大型复杂系统建模中被证明是成功的最佳工程实践。UML是开发面向对象软件和软件开发过程中非常重要的一部分。UML主要使用图形符号来表达软件项目的设计。使用UML可以帮助项目团队沟通,探索潜在的设计并验证软件的架构设计。在这篇文章中,我们会给你详细的想法,关于什么是UML?

UML的起源

UML的目標是提供一種標準符號,可用於所有面向對象的方法,並選擇和集成前兆符號的最佳元素。UML是為廣泛的應用而設計的。因此,它為廣泛的系統和活動(如分佈式系統,分析,系統設計和部署)提供​​了構造。

UML是OMT與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也受到其他面向對象的符號的影響:

  • Mellor和Shlaer [1998]
  • Coad和Yourdon [1995]
  • Wirfs-Brock [1990]
  • Martin和Odell [1992]

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

UML的歷史

  1. 在1996年期間,由對像管理組織(OMG)發布的第一份徵求建議書(RFP)為這些組織聯合製定RFP聯合響應提供了催化劑。
  2. Rational建立了UML Partners聯盟與幾個願意投入資源為UML 1.0定義提供強有力支持的組織。那些對UML 1.0定義貢獻最大的人包括:
    • 數字設備公司
    • 生命值
    • I-Logix的
    • IntelliCorp
    • IBM
    • ICON計算
    • MCI Systemhouse
    • 微軟
    • 神諭
    • Rational軟件
    • TI
    • Unisys公司
  3. 這次合作產生了UML 1.0,這是一種定義明確,表達力強大且通用的建模語言。這是在1997年1月提交給OMG的,作為最初的RFP響應
  4. 1997年1月,IBM,ObjecTime,Platinum Technology,Ptech,Taskon,Reich Technologies和Softeam也向OMG提交了單獨的RFP響應。這些公司加入了UML合作夥伴來貢獻他們的想法,並且合作夥伴共同製定了修訂後的UML 1.1響應。UML 1.1版本的重點是提高UML 1.0語義的清晰度並納入新合作夥伴的貢獻。它已提交給OMG供其考慮並於1997年秋季通過.1並將其提高到1.1到1.5,隨後從01到06提供到UML 2.1(現在的UML當前版本是2.5)
UML歷史

為什麼是UML

隨著許多公司對軟件的戰略價值提高,該行業尋找技術來自動化軟件生產並提高質量並降低成本並縮短產品上市時間。這些技術包括組件技術,可視化編程,模式和框架。隨著業務範圍和規模的擴大,企業還尋求技術來管理系統的複雜性。特別是,他們認識到需要解決循環體系結構問題,例如物理分佈,並發性,複製,安全性,負載平衡和容錯。另外,萬維網的開發雖然簡化了一些事情,但卻加劇了這些架構問題。統一建模語言(UML)旨在滿足這些需求。

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

UML - 概述

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

首先要注意的是,有很多不同的圖表(模型)需要習慣。這是因為可以從許多不同的角度來看系統。軟件開發將有許多利益相關者參與其中。

例如:

  • 分析師
  • 設計師
  • 編碼器
  • 測試儀
  • QA
  • 客戶
  • 技術作者
 

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

下面簡要介紹一下這13個圖中的每一個,如下面的UML 2 Diagram Structure所示:

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

 

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

UML圖類型

什麼是類圖?

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

關係

有三種主要的關係是重要的:

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

類圖示例

類圖

有關類圖的更多詳細信息,請閱讀文章什麼是類圖?

什麼是組件圖?

在統一建模語言中,組件圖描繪了組件如何連接在一起形成更大的組件或軟件系統。它演示了軟件組件的體系結構以及它們之間的依賴關係。這些軟件組件包括運行時組件,可執行組件也是源代碼組件。

組件圖示例

組件圖

有關組件圖的更多詳細信息,請閱讀文章什麼是組件圖?

什麼是部署圖?

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

部署圖示例

部署圖

有關部署圖的更多詳細信息,請閱讀文章什麼是部署圖?

什麼是對像圖?

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

類圖與對像圖 - 一個例子

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

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

類圖與對像圖的關係

你在編程時創建“類”。例如,在網上銀行系統中,您可以創建“用戶”,“賬戶”,“交易”等類。在課堂管理系統中,您可以創建“教師”,“學生”,“任務”等課程在每個類中,都有屬性和操作來表示類的特徵和行為。類圖是一個UML圖,您可以在這裡看到這些類以及它們的屬性,操作和相互關係。

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

如果你不喜歡那些定義的東西,那麼看看下面的UML圖例子。我相信你會在幾秒鐘內了解他們的差異。

類圖示例

以下類圖示例代表兩個類 - 用戶和附件。用戶可以上傳多個附件,以便兩個類與關聯連接,在附件側以0 .. *作為多重性。

類圖

 

 

對像圖示例

以下對像圖示例顯示了在Peter(即用戶)嘗試上載兩個附件的時刻,用戶和附件類的對象實例“看起來像”。因此,要上傳兩個附件對像有兩個實例規範。

對像圖

有關對像圖的更多詳細信息,請閱讀文章什麼是對像圖?

什麼是包圖?

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

包圖示例


包圖

有關包圖的更多詳細信息,請閱讀文章什麼是包圖?

什麼是複合結構圖?

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

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

複合結構圖示例


複合結構圖

有關複合結構圖的更多詳細信息,請閱讀文章什麼是複合結構圖?

什麼是輪廓圖?

配置文件圖使您能夠創建特定於域和平台的原型,並定義它們之間的關係。您可以通過繪製原型形狀來創建原型,並通過以資源為中心的接口將其與組合或泛化聯繫起來。您還可以定義和可視化標記刻板的值。

配置文件圖示例


配置文件圖

有關Profile Diagram的更多詳細信息,請閱讀UML中的什麼是Profile Profile?

什麼是用例圖?

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

將用例模型想像成菜單,就像您在餐館中找到的菜單一樣。通過查看菜單,你知道什麼是可用的,單個菜餚以及它們的價格。你也知道餐廳供應什麼樣的菜餚:意大利,墨西哥,中國等。通過查看菜單,您可以獲得該餐廳等待您的用餐體驗的全面印象。實際上,菜單“模擬”餐廳的行為。

由於它是一個非常強大的規劃工具,因此所有團隊成員通常在開發週期的所有階段都使用用例模型。

用例圖示例


用例圖

有關用例圖的更多詳細信息,請閱讀文章什麼是用例圖?

什麼是活動圖?

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

活動圖示例


活動圖

有關活動圖的更多詳細信息,請閱讀文章什麼是活動圖?

什麼是狀態機圖?

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

狀態機圖示例


狀態機圖

有關狀態機圖的更多詳細信息,請閱讀文章什麼是狀態機圖?

什麼是序列圖?

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

序列圖示例


序列圖

有關序列圖的更多詳細信息,請閱讀文章什麼是序列圖?

什麼是通信圖?

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

通信圖示例


活動圖

有關Communication Diagram的更多詳細信息,請閱讀文章什麼是通信圖?

什麼是交互概覽圖?

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

交互概述圖示例


交互概述圖

有關交互概覽圖的更多詳細信息,請閱讀文章什麼是交互概覽圖?

什麼是時序圖?

時序圖顯示了給定時間內對象的行為。時序圖是序列圖的一種特殊形式。時序圖和時序圖之間的差異在於軸是反向的,以便時間從左到右增加,並且生命線顯示在分開的垂直排列的隔間中。

時序圖示例


時序圖

有關時序圖的更多詳細信息,請閱讀什麼是時序圖?

學習UML。繪製UML。

獲得Visual Paradigm Community Edition,這是一款免費的UML工具,可以幫助您更快,更有效地學習UML。Visual Paradigm Community Edition支持所有的UML圖表類型。它的UML建模器是屢獲殊榮的,易於使用和直觀的。

免費下載

UML詞彙表和術語

  • 抽像類 - 一個永遠不會被實例化的類。這個類的一個實例永遠不會存在。
  • Actor(演員) - 發起系統參與的事件的對像或人物。
  • 活動:活動圖中的步驟或行動。代表系統或演員採取的行動。
  • 活動圖:顯示流程中的步驟和決策以及並行操作的流程圖,例如算法或業務流程。
  • 聚合 - 是另一類的一部分。在圖表中的包含類旁邊顯示空心鑽石。
  • 工件 - 描述設計過程中某個步驟輸出的文檔。描述是圖形,文字或某種組合。
  • 關聯 - 模型中兩個元素之間的關聯這可能表示代碼中的成員變量,或者人員記錄與其所代表的人之間的關聯,或者兩類工作人員之間的關係或任何類似的關係。默認情況下,一個關聯中的兩個元素是相等的,並且通過該關聯知道彼此。一個關聯也可以是一個可導航的關聯,這意味著該關聯的源端知道目標端,但反之亦然。
  • 關聯類:表示兩個其他類之間的關聯信息的類。
  • 屬性 - 可用於引用其他對像或保存對象狀態信息的對象的特徵。
  • 基類:定義由子類通過泛化關係繼承的屬性和操作的類。
  • 分支:活動圖中的決策點。分支出現多個轉變,每個都有一個保護條件。當控製到達分支時,恰好一個保護條件必須為真; 並且控制遵循相應的轉換。
  • :一類相似的對象,全部由相同的屬性和操作描述,並且所有的賦值都兼容。
  • 類圖 - 顯示系統類和它們之間的關係。
  • 分類器:具有屬性和操作的UML元素。具體來說,Actor,Classes和Interfaces。
  • 協作:通信圖中兩個對象之間的關係,指示消息可以在對象之間來回傳遞。
  • 通信圖 - 顯示如何在強調對象角色的同時完成操作的圖表。
  • 組件:系統中可部署的代碼單元。
  • 組件圖:顯示各種組件和接口之間關係的圖。
  • 概念 - 要包含在域模型中的名詞或抽象概念。
  • 構建階段 - Rational統一過程的第三階段,在此過程中,正在構建的系統中內置了多個功能迭代。這是主要工作完成的地方。
  • 依賴關係:指示一個分類器的關係知道另一個分類器的屬性和操作,但不直接連接到第二個分類器的任何實例。
  • 部署圖:顯示各種處理器之間關係的圖表。
  •  - 系統涉及的部分宇宙。
  • 精化階段 - Rational Unified Process的第二階段,允許進行額外的項目計劃,包括構建階段的迭代。
  • 元素:出現在模型中的任何項目。
  • 封裝 - 對像中的數據是私有的。
  • 泛化 - 表示一個類是另一個類(超類)的子類。一個空心箭頭指向超類。
  • 事件:在狀態圖中,這表示導致系統採取行動或切換狀態的信號或事件或輸入。
  • 最終狀態:在狀態圖或活動圖中,這表示圖完成的點。
  • :活動圖中的一個點,多個並行控制線程開始。
  • 泛化:繼承關係,其中一個子類繼承並添加到基類的屬性和操作。
  • GoF - 四人幫設計模式。
  • 高凝聚力 - GRASP評估模式,確保課程不太複雜,做不相關的功能。
  • 低耦合 - 一種GRASP評估模式,用於衡量一個類別依賴另一個類別或與另一個類別連接的程度。
  • 初始階段 - 處理原始概念化和項目開始的Rational Unified Process的第一階段。
  • 繼承 - 子類繼承父類(超類)類的屬性或特性。這些屬性可以在子類中重寫。
  • 初始狀態:在狀態圖或活動圖中,這表示圖開始的點。
  • 實例 - 一個類像模板一樣用來創建一個對象。這個對像被稱為類的一個實例。可以創建該類的任何數量的實例。
  • 接口:定義形成行為契約的屬性和操作的分類器。提供者類或組件可以選擇實現接口(即,實現其屬性和操作)。客戶類或組件然後可以取決於接口並因此使用提供者而不提供提供者的真實類別的任何細節。
  • 迭代 - 一個小型項目部分,其中一小部分功能被添加到項目中。包括分析,設計和編碼的開發循環。
  • 加入:活動圖中的一個點,其中多個並行控制線程同步並重新加入。
  • 成員:分類器中的屬性或操作。
  • 合併:活動圖中的一個點,不同的控制路徑匯集在一起。
  • 消息 - 從一個對像到另一個對象的請求,要求接收消息的對象執行某些操作。這基本上是對接收對像中的方法的調用。
  • 方法 - 對像中的函數或過程。
  • 模型 - 中央UML工件。由各個元素按層次結構排列,元素之間也有關係。
  • 多重性 - 顯示在領域模型中並在外部概念框中指示,表示與其他對象的分位數的對像數量關係。
  • 可導航性:指示關係的哪一端知道另一端。關係可以具有雙嚮導航(每一端意識到另一端)或單嚮導航(一端意識到另一端,但反之亦然)。
  • 符號 - 具有創建分析和設計方法規則的圖形文檔。
  • 注意:文字註釋添加到圖表中以更詳細地解釋圖表。
  • 對象 - 對象:在活動圖中,從活動接收信息或向活動提供信息的對象。在協作圖或序列圖中,參與圖中所示場景的對象。一般來說:給定分類器(Actor,Class或Interface)的一個實例或示例。
  •  - 邏輯上應該組合在一起的一組UML元素。
  • 包圖:所有元素都是包和依賴關係的類圖。
  • 模式 - 用於確定要交互的對象的責任分配的解決方案。這是成功解決一個眾所周知的常見問題的名稱。
  • 參數:操作的參數。
  • 多態性 - 相同的消息,不同的方法。也用作模式。
  • 私有:應用於屬性或操作的可見性級別,指示只有包含該成員的分類器的代碼才可以訪問該成員。
  • 處理器:在部署圖中,這代表可以部署代碼的計算機或其他可編程設備。
  • 受保護:應用於屬性或操作的可見性級別,指示只有包含該成員或其子類的分類器的代碼才可以訪問該成員。
  • 公開:應用於屬性或操作的可見性級別,指示任何代碼都可以訪問該成員。
  • 讀取方向箭頭 - 指示領域模型中關係的方向。
  • 實現:表示組件或類提供給定的接口。
  • 角色 - 用於域模型中,它是關於角色角色的可選描述。
  • 順序圖:一個圖表,顯示隨著時間的推移對象的存在,以及隨著時間的推移在這些對象之間傳遞的消息以執行某些行為。狀態圖圖 - 顯示所有可能的對象狀態的圖。
  • 狀態:在狀態圖中,這表示系統或子系統的一種狀態:它在某個時間點的狀態以及數據的值。
  • 狀態圖:顯示系統或子系統的狀態,狀態之間的轉換以及導致轉換的事件的圖表。
  • 靜態:對屬性的修飾符,用於指示在分類器的所有實例中只有一個屬性共享副本。操作的修飾符,用於指示操作獨立運行並且不在分類器的一個特定實例上操作。
  • Stereotype:一種應用於Model元素的修飾符,用於指示它通常無法用UML表示的內容。從本質上講,定型允許你定義你自己的UML“方言”。
  • 子類:繼承由子類通過泛化關係定義的屬性和操作的類。
  • Swimlane:活動圖的一個元素,指示系統或域的哪些部分執行特定的活動。Swimlane中的所有活動都是Swimlane所代表的對象,組件或Actor的職責。
  • 時間拳擊 - 每次迭代都會有特定目標的時間限制。
  • 過渡:在活動圖中,表示從一個活動或分支或合併或分叉或連接到另一個的控制流。在國家圖表中,代表從一個國家到另一個國家的變化。
  • 過渡階段 - Rational統一過程的最後一個階段,在這個階段中,用戶接受使用新系統和系統的培訓,用戶可以使用這個階段。
  • UML - 統一建模語言利用文本和圖形文檔來增強軟件項目的分析和設計,允許在對象之間建立更緊密的關係。
  • 用例:在用例圖中,表示系統為響應來自Actor的某個請求而採取的操作。
  • 用例圖:顯示參與者和用例之間關係的圖表。
  • 可見性:屬性或操作的修飾符,用於指示哪些代碼可以訪問該成員。可見性級別包括公共,受保護和私有。
  • 工作流程 - 一組產生特定結果的活動。

流行的UML書籍

下面列出了一些您可以通過閱讀來學習UML的最暢銷的UML書籍。

  1. UML Distilled:標準對象建模語言簡要指南
  2. UML 2和統一過程:實用的面向對象的分析和設計
  3. 學習UML 2.0
  4. 使用UML構建Web應用程序
  5. 統一建模語言參考手冊
  6. UML 2.0風格的元素
  7. 面向Java程序員的UML
  8. Schaum的UML概要
  9. 統一建模語言用戶指南
  10. UML 2認證指南:基礎和中級考試
  11. UML中面向對象設計的基本原理
  12. 使用用例驅動的對象建模與UML:一個註釋的電子商務示例
  13. 用UML設計柔性面向對象系統
  14. 用UML進行用例驅動的對象建模
  15. 使用UML 2.0進行系統分析和設計:面向對象的方法
  16. 概述UML 2.0
  17. 面向對象的分析和設計與應用程​​序
  18. UML解釋
  19. 設計模式:可重用面向對象軟件的元素
  20. 對象入門:使用UML 2.0進行敏捷模型驅動開發

活動圖

11個模板

22個模板

5個模板

Visual Paradigm International