統一建模語言 (UML)是一種可用於任何目的的建模語言。UML的主要目標是建立可視化系統設計的標準。它看起來很像其他工程分支中的設計。
UML 是一種視覺語言,而不是一種編程語言。UML 圖用於描述系統的行為和結構。UML 是一種建模、設計和分析工具,適用於軟件工程師、業務人員和系統架構師。統一建模語言於 1997 年被對像管理組 (OMG)批准為標準。從那時起,OMG 一直負責它。2005 年,國際標準化組織 (ISO) 接受 UML 作為標準。UML 一直在更新,並定期進行檢查。
什麼是 UML?
統一建模語言 (UML) 旨在為大型軟件系統的結構和行為的架構、設計和實現建立通用的可視化建模語言。UML 具有軟件開發之外的應用程序,例如工業流程。
它由多種類型的圖表組成,類似於其他領域中使用的藍圖。一般而言,UML 圖描述了系統的邊界、結構和行為,以及其中包含的對象。
儘管 UML 不是一種編程語言,但存在使用 UML 圖以多種語言生成代碼的工具。
UML 的歷史
UML 源於圍繞軟件開發和文檔的困惑。在整個 1990 年代,有多種技術可以表示和記錄軟件系統。結果,三位 Rational Software 軟件開發人員在 1994-1996 年間創建了 UML。它後來在 1997 年被公認為標準,從那時起一直保持不變,只做了很小的修改。
UML 真的有必要嗎?
- 複雜的應用程序需要各個團隊的協作和規劃,這需要他們之間的清晰和直接的溝通方式。
- 業務人員不理解代碼。因此,UML 對於非程序員了解系統的基本需求、功能和操作變得必不可少。
- 當團隊可以可視化流程、用戶交互和系統的靜態結構時,他們可以節省大量時間。
面向對象的設計和分析與 UML 相關聯。為了創建圖表,UML 獲取項目並在它們之間創建關聯。以下是 UML 圖的一些示例。
- 結構圖描述了系統的靜態特徵或結構。顯示了結構圖。組件圖、對像圖、類圖和部署圖都是軟件開發中使用的圖的示例。
- 行為圖描述了系統的動態特徵或行為。包括行為圖。用例圖、狀態圖、活動圖和交互圖幫助您可視化您的想法。
根據 UML 的示意圖層次結構如下圖所示。
UML 中的關鍵面向對象概念
面向對象 (OO) 分析和設計已被 UML 取代。
對象由數據和控制它的方法組成。數據代表對象的當前狀態。類是一種具有層次結構的對象,可用於模擬現實世界的系統。層次通過繼承表示,類可以根據需要以多種方式鏈接。
對像是存在於我們周圍的真實世界實體,UML 可以代表抽象、封裝、繼承和多態等基本原則。
UML 能夠表示面向對象分析和設計中的所有概念。
在 UML 圖中僅表示面向對象的概念。因此,在學習 UML 之前,徹底了解 OO 概念至關重要。
- 類:類定義藍圖,即對象的結構和功能,並在UML 中使用。
- 對象:對象幫助我們分解和模塊化複雜的系統。模塊化使我們能夠將系統分解為易於理解的組件,從而使我們能夠逐個創建它。系統的基本單元(構建塊)是對象,用於描述實體。
- 繼承:一種允許子類繼承其父類屬性的機制。
- 抽象:一種保護用戶不受實現細節影響的方法。
- 封裝:將數據放在一起並保護其免受外界影響的過程。
- 多態性:一種允許函數或實體以多個版本存在的方法。
UML 中的補充:
- 增加了原始 UML 定義的範圍,並添加了敏捷等軟件開發方法。
- 最初,UML 需要九個圖表。UML 2.x 中的圖表數量從 9 個增加到 13 個。時序圖、通信圖、交互概覽圖和復合結構圖是四個新的圖表。狀態圖在 UML 2.x 中被重命名為狀態機圖。
- 現在可以使用 UML 2.x 將軟件系統分解為組件和子組件。
UML 結構圖
類圖——類圖是使用最廣泛的 UML 圖。它是所有面向對象軟件系統的基礎。類圖用於通過顯示系統的類、方法和屬性來描述系統的靜態結構。類圖還幫助我們確定各種類或對象之間的聯繫。
複合結構圖——複合結構圖用於說明一個類的內部結構以及它與系統其他組件的交互點。片段及其配置之間的鏈接決定了分類器(類、組件或部署節點)的行為方式。部件、端口和連接用於說明結構化分類器的內部結構。我們還可以使用複合結構圖來建模合作。它們類似於類圖,但它們不是表示完整的類,而是深入顯示特定元素。
對像圖– 對像圖可以稱為系統中實例的屏幕截圖以及它們之間存在的關係。由於對像圖描述了對像在實例化後的行為,因此我們能夠研究系統在特定時刻的行為。對像圖類似於類圖,不同之處在於它顯示了系統中類的實例。我們使用類圖來描述實際的分類器及其關係。另一方面,對像圖表示類的特定實例以及它們在某個時間點之間的關係。
組件圖——組件圖用於顯示系統的物理組件是如何連接的。它們用於模擬實現細節。組件圖顯示了軟件系統各部分之間的結構關係,可以幫助我們確定計劃的開發是否滿足了所有的功能需求。在設計和構建複雜系統時,組件圖是必不可少的。系統的許多組件通過接口相互通信。
部署圖– 部署圖是描述系統硬件和軟件的圖表。它告訴我們那裡的硬件組件以及在它們上執行的軟件組件。系統軟件生成的信息稱為工件。當軟件在具有各種配置的眾多設備上使用、分發或部署時,它們最常被使用。
包圖– 包圖用於顯示包及其組件的排列方式。包圖簡單地描述了不同包的相互依賴關係以及包的內部結構。包有助於將 UML 圖組織成有意義的組和對圖的理解。它們主要用於保持類圖和用例圖的組織。
UML 行為圖
狀態機圖——用於描繪系統或系統部分在特定時間點的狀態。這是一個行為圖,其中行為由有限數量的狀態轉換錶示。狀態機和狀態圖是狀態圖的其他名稱。這些術語經常互換。簡而言之,狀態圖是類對時間和不斷變化的外部輸入的反應的動態行為的可視化表示。
活動圖——我們使用活動圖來展示系統的控制流是如何工作的。活動圖也可以用來指代執行用例所涉及的階段。活動圖用於表示順序和並發的活動。因此,活動圖用於直觀地描述工作流。流的情況和它們發生的順序是活動圖的重點。活動圖用於表示或描述導致特定事件的事件。
用例圖用於描述系統或系統組件的功能。它們經常用於描述系統的功能需求以及與外部代理(參與者)的交互。用例是描述可以應用系統的各種上下文的圖表。用例圖為我們提供了系統或系統元素執行的高級概述,而無需深入了解實現的細節。
序列圖簡單地描述了一系列項目之間的交互,即這些交互發生的順序。序列圖也可以稱為事件圖或事件場景。序列圖顯示了系統的組件如何以及以何種順序協同工作。商務人士和軟件工程師經常使用這些圖表來記錄和理解新系統和當前系統的需求。
通信圖 (在 UML 1.x 中也稱為協作圖)用於描述對象之間信息的順序傳輸。對象及其關係是通信圖的重點。序列圖可以用來描述類似的信息,但通信圖表示的是自然狀態下的對象和鏈接。
時序圖 ——時序圖是一種時序圖,它描述了對像在一段時間內的行為。它們用於描述控制對象狀態和行為變化的時間和持續時間約束。
交互概覽圖——交互概覽圖是一系列事件的模型,可用於將復雜的交互分解為更簡單的事件。它是活動和序列圖之間的交叉。
UML 詞彙表
- 抽像類 ——永遠不會被實例化的類。這個類的實例永遠不會存在。
- 參與者 ——啟動系統所涉及的事件的對像或人。
- 活動:活動圖中的步驟或動作。表示系統或演員採取的行動。
- 活動圖:一個美化的流程圖,顯示流程中的步驟和決策以及並行操作,例如算法或業務流程。
- 聚合 ——是另一個類的一部分。在圖表中包含類旁邊顯示有一個空心菱形。
- 工件 ——描述設計過程中步驟輸出的文檔。描述是圖形的、文本的或某種組合。
- 關聯 – 模型的兩個元素之間的連接。這可能表示代碼中的成員變量,或人事記錄與其所代表的人之間的關聯,或兩類工人之間的關係,或任何類似的關係。默認情況下,關聯中的兩個元素是相等的,並且通過關聯相互了解。一個關聯也可以是一個可導航的關聯,這意味著關聯的源端知道目標端,但反之則不然。
- 關聯類:代表兩個其他類之間的關聯並向其添加信息的類。
- 屬性 ——對象的特徵,可用於引用其他對像或保存對象狀態信息。
- 基類:定義由子類通過泛化關係繼承的屬性和操作的類。
- 分支:活動圖中的決策點。分支中出現多個轉換,每個轉換都有一個保護條件。當控製到達 Branch 時,恰好有一個 Guard Condition 為真;並且控制遵循相應的轉換。
- 類:類似對象的類別,都由相同的屬性和操作描述,並且所有分配兼容。
- 類圖 ——顯示系統類和它們之間的關係。
- 分類器:具有屬性和操作的 UML 元素。具體來說,Actors、Classes 和 Interfaces。
- 協作:通信圖中兩個對象之間的關係,表明消息可以在對象之間來回傳遞。
- 通信圖 ——顯示操作如何完成的圖表,同時強調對象的角色。
- 組件:系統內可部署的代碼單元。
- 組件圖:顯示各種組件和接口之間關係的圖表。
- 概念 ——要包含在領域模型中的名詞或抽象概念。
- 構建階段 ——Rational Unified Process 的第三階段,在此階段,功能的多次迭代被構建到正在構建的系統中。這是主要工作完成的地方。
- 依賴關係:表示一個分類器知道另一個分類器的屬性和操作,但不直接連接到第二個分類器的任何實例的關係。
- 部署圖:顯示各種處理器之間關係的圖表。
- 域 – 系統所涉及的宇宙的一部分。
- 細化階段 ——Rational Unified Process 的第二階段,允許額外的項目規劃,包括構建階段的迭代。
- 元素:出現在模型中的任何項目。
- 封裝 ——對像中的數據是私有的。
- 泛化 ——表示一個類是另一個類(超類)的子類。一個空心箭頭指向超類。
- 事件:在狀態圖中,這表示導致系統採取行動或切換狀態的信號或事件或輸入。
- 最終狀態:在狀態圖或活動圖中,這表示圖完成的點。
- Fork:活動圖中多個並行控制線程開始的點。
- 泛化:一種繼承關係,其中子類繼承並添加到基類的屬性和操作。
- GoF – 四組設計模式。
- 高內聚性 ——一種 GRASP 評估模式,確保類不會太複雜,執行不相關的功能。
- 低耦合 ——一種 GRASP 評估模式,用於衡量一個類對另一個類的依賴程度或與另一個類的連接程度。
- 初始階段 ——Rational Unified Process 的第一個階段,處理最初的概念化和項目的開始。
- 繼承 ——子類繼承其父(超類)類的屬性或特徵。這些屬性可以在子類中被覆蓋。
- 初始狀態:在狀態圖或活動圖中,這表示圖開始的點。
- 實例 – 類像模板一樣用於創建對象。這個對像被稱為類的一個實例。可以創建任意數量的類實例。
- 接口:定義形成行為契約的屬性和操作的分類器。提供者類或組件可以選擇實現接口(即實現其屬性和操作)。然後,客戶端類或組件可以依賴於接口,從而使用提供者,而不需要提供者的真實類的任何細節。
- 迭代 – 一個小型項目部分,在此期間將一些小功能添加到項目中。包括分析、設計和編碼的開發循環。
- 加入:活動圖中的一個點,多個並行控制線程同步並重新加入。
- 成員:分類器中的屬性或操作。
- 合併:活動圖中不同控制路徑匯集在一起的點。
- 消息 ——從一個對像到另一個對象的請求,要求接收消息的對像做某事。這基本上是對接收對像中的方法的調用。
- 方法 ——對像中的函數或過程。
- 模型 ——核心 UML 工件。由按包以層次結構排列的各種元素組成,以及元素之間的關係。
- 多重性 ——顯示在領域模型中並在概念框外表示,它表示對像數量與其他對象的分位數的關係。
- 可導航性:指示關係的哪一端知道另一端。關係可以具有雙向可導航性(每一端都知道另一端)或單向可導航性(一端知道另一端,但反之則不然)。
- Notation – 帶有用於創建分析和設計方法的規則的圖形文檔。
- 注意:添加到圖表中的文本註釋以更詳細地解釋圖表。
- 對象 ——對象:在活動圖中,從活動接收信息或向活動提供信息的對象。在協作圖或序列圖中,參與圖中描述的場景的對象。通常:給定分類器(Actor、Class 或 Interface)的一個實例或示例。
- 包 ——邏輯上應該組合在一起的一組 UML 元素。
- 包圖:一個類圖,其中所有元素都是包和依賴項。
- 模式 ——用於確定交互對象職責分配的解決方案。它是成功解決眾所周知的常見問題的名稱。
- 參數:操作的參數。
- 多態性 ——相同的信息,不同的方法。也用作圖案。
- Private:應用於屬性或操作的可見性級別,指示只有包含該成員的分類器的代碼才能訪問該成員。
- 處理器:在部署圖中,這表示可以部署代碼的計算機或其他可編程設備。
- 受保護:應用於屬性或操作的可見性級別,指示只有包含該成員的分類器或其子類的代碼才能訪問該成員。
- Public:應用於屬性或操作的可見性級別,表示任何代碼都可以訪問該成員。
- 閱讀方向箭頭 – 指示領域模型中關係的方向。
- 實現:表示組件或類提供給定接口。
- 角色 ——在領域模型中使用,它是關於參與者角色的可選描述。
- 序列圖:顯示對象隨時間存在的圖表,以及隨時間在這些對象之間傳遞以執行某些行為的消息。狀態圖——顯示所有可能的對象狀態的圖。
- 狀態:在狀態圖中,這表示系統或子系統的一種狀態:它在某個時間點正在做什麼,以及它的數據值。
- 狀態圖:顯示系統或子系統的狀態、狀態之間的轉換以及導致轉換的事件的圖。
- 靜態:屬性的修飾符,指示在分類器的所有實例之間共享的屬性只有一個副本。操作的修飾符,表示該操作獨立存在並且不對分類器的一個特定實例進行操作。
- Stereotype:應用於模型元素的修飾符,表明它通常不能在 UML 中表達。本質上,Stereotypes 允許您定義自己的 UML“方言”。
- 子類:繼承由子類通過泛化關係定義的屬性和操作的類。
- 泳道:活動圖的一個元素,指示系統或域的哪些部分執行特定的活動。Swimlane 中的所有活動都是由 Swimlane 表示的對象、組件或 Actor 的責任。
- 時間拳擊 ——每次迭代都會有一個帶有特定目標的時間限制。
- 過渡:在活動圖中,表示從一個活動或分支或合併或分叉或連接到另一個的控制流。在狀態圖中,表示從一個狀態到另一個狀態的變化。
- 過渡階段 ——Rational Unified Process 的最後一個階段,在此階段用戶接受培訓以了解如何使用新系統,並且系統可供用戶使用。
- UML – 統一建模語言利用文本和圖形文檔通過允許對象之間更緊密的關係來增強軟件項目的分析和設計。
- 用例:在用例圖中,表示系統為響應來自參與者的某些請求而採取的操作。
- 用例圖:顯示參與者和用例之間關係的圖表。
- 可見性:屬性或操作的修飾符,指示哪些代碼可以訪問該成員。可見性級別包括公共、受保護和私有。
- 工作流 ——產生某些特定結果的一組活動。