iT邦幫忙

0

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

UML是統一建模語言的簡稱,是一種標準化建模語言,由一組集成的圖表組成,旨在幫助系統和軟體開發人員指定、可視化、構建和記錄軟體系統的偽影,以及商業建模和其他非軟體系統。UML 代表了一系列最佳工程實踐,這些實踐在大型複雜系統的建模方面被證明是成功的。UML 是開發對象導向軟體和軟體開發過程的重要組成部分。UML 主要使用圖形標註來表達軟體項目的設計。使用UML可幫助專案團隊進行溝通、探索潛在設計並驗證軟體的架構設計。在本文中,我們將為您提供關於什麼是 UML 的詳細想法、UML 的歷史以及每個 UML 圖類型的描述,以及 UML 示例。

UML 的起源

UML 的目標是提供標準符號,可用於所有面向物件的方法,並選擇和集成前體符號的最佳元素。UML 專為各種應用而設計。因此,它為廣泛的系統和活動(例如分散式系統、分析、系統設計和部署)提供結構。

UML 是 OMT 統一產生的符號

  1. 物件建模技術 OMT [詹姆斯·倫博1991] - 最適合分析和數據密集型信息系統。
  2. 布赫 [格雷迪 · 布赫1994] - 在設計和實施方面非常出色。格雷迪·布赫曾與阿達語進行過廣泛的合作,並且是開發面向對象的語言技術的主要參與者。雖然Booch方法很強,但這個符號不太受歡迎(很多雲形主導了他的模型——不是很整潔)
  3. OOSE(面向對象的軟體工程 [伊瓦爾·雅各森1992]) - 具有一種稱為"使用案例"的模型。使用案例是瞭解整個系統行為的有力技術(OO 傳統上是弱的領域)。

1994年,OMT的創造者吉姆·倫博離開通用電氣,加入理性公司的格雷迪·布赫,震驚了軟體界。夥伴關係的目的是將他們的想法合併到單一的統一方法中(該方法的工作標題確實是"統一方法")。

到1995年,OOSE的創造者伊瓦爾·雅各森也加入了理性,他的想法(特別是"使用案例"的概念)被納入新的統一方法——現在稱為統一建模語言1。倫博、布赫和雅各森的團隊被親切地稱為 "三個朋友"

UML 也受到其他對象導向記分的影響:

  • 梅勒和施萊爾 (Mellor and Shlaer) [1998]
  • 考德和尤頓 (Coad and Yourdon)[1995]
  • 維爾夫斯-布羅克 (Wirfs-Brock) [1990]
  • 馬丁和奧德爾 (Martin and Odell) [1992]

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

UML 歷史

  1. 1996年,物件管理小組(OMG)發出的第一份提案請求(RFP)為這些組織聯合起來,產生聯合RFP對策提供了催化劑。
  2. Rational 與幾個願意投入資源以實現強大的 UML 1.0 定義的組織建立了 UML 合作夥伴財團。對 UML 1.0 定義貢獻最大的包括:
  • Digital Equipment Corp
  • HP
  • i-Logix
  • IntelliCorp
  • IBM
  • ICON Computing
  • MCI Systemhouse
  • Microsoft
  • Oracle
  • Rational Software
  • TI
  • Unisys
  1. 這種協作產生了UML 1.0,這是一種定義明確、表現力強、功能強大且普遍適用的建模語言。這是1997年1月提交OMG的,作為RFP的初步答覆。
  2. 1997年1月,IBM、ObjecTime、白金技術、Ptech、塔斯頓、帝國技術和軟化工業也分別向OMG提交了RFP答覆。這些公司加入了 UML 合作夥伴,貢獻他們的想法,合作夥伴共同提出了修訂后的 UML 1.1 回應。UML 1.1 版本的重點是提高UML 1.0語義的清晰度,並納入新合作夥伴的貢獻。它提交OMG審議,並在1997年秋季通過,並增強1.1至1.5,隨後從01至06年UML 2.1(現在UML當前版本為2.5)

UML 歷史記錄

為什麼UML

隨著軟體的戰略價值對許多公司來說增加,該行業尋找技術來自動化軟體的生產,提高品質,降低成本和上市時間。這些技術包括元件技術、視覺程式設計、模式和框架。企業還尋求技術來管理系統的複雜性,因為它們的範圍和規模在增加。特別是,他們認識到需要解決經常性的建築問題,如物理分佈、併發、複製、安全、負載平衡和容錯性。此外,萬維網的發展,雖然使一些事情更簡單,加劇了這些建築問題。統一建模語言 (UML) 旨在滿足這些需求。Page-Jones 在 UML 中的基本對象導向設計中總結了 UML 設計的主要目標,具體如下:

  1. 為使用者提供即用、富有表現力的視覺建模語言,以便他們能夠開發和交換有意義的模型。
  2. 提供可擴展性和專業化機制,以擴展核心概念。
  3. 獨立於特定的程式設計語言和發展過程。
  4. 為理解建模語言提供正式依據。
  5. 鼓勵二OO二工具市場的發展。
  6. 支援更高層次的發展理念,如協作、框架、模式和元件。
  7. 整合最佳實踐。

UML - 概述

在我們開始研究 UML 理論之前,我們將對 UML 的一些主要概念進行非常簡短的考察。

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

例如:

  • 分析師
  • 設計師
  • 程式師
  • 測試
  • QA
  • 客戶
  • 技術作者

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

下面快速檢視以下 UML 2 圖結構中顯示的這 13 張圖表中的每個圖:

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

行為圖顯示系統中物件的動態行為,可描述為系統隨時間變化的一系列,有七種行為圖如下:

UML 圖類型

什麼是類圖?

類圖是一種中央建模技術,它貫穿幾乎所有面向物件的方法。此圖描述了系統中的物件類型及其之間存在的各種靜態關係。

關係

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

  1. 關聯- 表示類型實例之間的關係(一個人為公司工作,公司擁有多個辦事處。
  2. 繼承- 二OO年使用ER圖的最明顯補充。它與二OO二年設計中的繼承有直接的通信。
  3. 聚合- 聚合,對象導向設計中的對象構成形式。

類圖示例

類圖

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

什麼是組分圖?

在統一建模語言中,元件圖描述了元件如何連接在一起以形成更大的元件或軟體系統。它說明了軟體元件的架構及其之間的依賴性。這些軟體元件包括運行時間元件、可執行元件以及原始程式碼元件。

元件圖示例

元件圖

有關元件圖的更多詳細資訊,請閱讀文章什麼是組分圖?

什麼是部署圖?

部署圖有助於建模對象導向軟體系統的物理方面。它是一個結構圖,顯示系統的架構作為軟體人工製品的部署(分發)到部署目標。文物代表了物理世界中作為發展過程結果的具體元素。它以靜態檢視對運行時間配置進行模型化,並可視化應用程式中工件的分佈。在大多數情況下,它涉及到將硬體配置與所依賴的軟體元件一起建模。

部署圖示例

部署圖

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

什麼是物件圖?

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

類圖與物件圖 - 範例

有些人可能發現很難理解 UML 類圖和 UML 物件圖之間的區別,因為它們都由命名的「矩形方塊」組成,其中包含屬性,並且之間有聯繫,這使得兩個 UML 圖看起來相似。有些人甚至可能認為他們是相同的,因為在UML工具中,他們同時使用類圖和物件圖的註釋被放在同一個圖表編輯器 - 類圖中。

但事實上,類圖和物件圖代表了代碼基數的兩個不同方面。在本文中,我們將為您提供有關這兩個 UML 圖的一些想法,它們是什麼,它們的差異是什麼,以及何時使用它們。

類圖和物件圖之間的關係

程式設計時創建"類"。例如,在網上銀行系統中,您可以創建"使用者","帳戶","交易"等類。在課堂管理系統中,您可以創建「教師」,「學生」,"分配"等課程。在每個類中,都有代表類特徵和行為的屬性和操作。類圖是一個 UML 圖,您可以可視化這些類,以及它們的屬性、操作和相互關係。

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

如果您不是這些定義內容的粉絲,請查看以下 UML 圖示例。我相信你會在幾秒鐘內理解他們的差異。

類圖示例

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

類圖

物件圖示例

以下物件圖示例顯示使用者和附件類的物件實例在Peter(即使用者)試圖上傳兩個附件的那一刻如何"看起來像"。因此,要上傳的兩個附件物件有兩個實例規範。

物件圖

有關物件圖的更多詳細資訊,請閱讀文章「什麼是物件圖」?

什麼是包裝圖?

包圖是 UML 結構圖,顯示包與包之間的依賴關係。模型圖允許顯示系統的不同視圖,例如多層(又名多層)應用程式 - 多層應用模型。

包裝圖示例

包裝圖

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

什麼是複合結構圖?

複合結構圖是添加到UML 2.0的新產品之一。復合結構圖類似於類圖,是一種主要用於在微觀視點建模系統的組分圖,但它描繪的是各個部分而不是整個類。它是一種靜態結構圖,顯示一個類的內部結構和該結構使協作成為可能。

此圖可以包括內部部分、各部分相互交互的埠,或者該類實例通過這些電例與零件和外部世界相互作用,以及零件或埠之間的連接器。復合結構是一組相互關聯的元素,在運行時協同工作以達到某些目的。每個元素在協作中都有一些定義的角色。

複合結構圖示例

複合結構圖

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

什麼是配置檔圖?

配置檔圖使您能夠創建域和平臺特定的成見,並定義它們之間的關係。您可以通過繪製刻板印象形狀來創建成見,並通過以資源為中心的介面將其與構圖或概括聯繫起來。您還可以定義和可視化標記的成見值。

配置文件圖示例

配置文件圖

有關設定檔圖的更多詳細資訊,請閱讀UML 中什麼是設定檔圖的文章?

什麼是用例圖?

用例模型從使用案例的角度描述系統的功能要求。它是系統預期功能(使用案例)及其環境(參與者)的模型。使用案例可讓您將系統所需的內容與系統如何滿足這些需求聯繫起來。

將用例模型視為功能表,很像您在餐廳找到的功能表。通過查看功能表,您可以瞭解可供您選擇的菜餚、單個菜餚及其價格。您還知道餐廳供應什麼樣的美食:義大利菜、墨西哥菜、中餐等。通過查看功能表,您可以全面瞭解該餐廳等待您用餐的體驗。功能表實際上"模仿"了餐廳的行為。

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

使用案例圖示例

使用案例圖

有關使用案例圖的更多詳細資訊,請閱讀文章「什麼是使用案例圖」?

什麼是活動圖?

活動圖是支持選擇、反覆運算和併發的步進活動和行動的工作流程的圖形表示。它描述了目標系統的控制流程,例如探索複雜的業務規則和操作,描述了使用案例以及業務流程。在統一建模語言中,活動圖旨在類比計算過程和組織過程(即工作流程)。

活動圖示例

活動圖

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

什麼是狀態機器圖?

狀態圖是UML中用於描述系統行為的一種圖表,它基於大衛·哈雷爾的狀態圖概念。狀態圖描繪了允許的狀態和過渡以及影響這些過渡的事件。它有助於可視化物體的整個生命周期,從而有助於更好地瞭解基於狀態的系統。

狀態機器圖示例

狀態機器圖

有關狀態機器圖的更多詳細資訊,請閱讀文章「什麼是狀態機器圖」?

什麼是序列圖?

序列圖根據時間序列對對對象的協作進行模型。它顯示了物件在使用案例的特定場景中如何與其他物件相互作用。憑藉先進的視覺建模功能,您可以在很少的點擊中創建複雜的序列圖。此外,一些建模工具(如視覺範式)可以從您在用例描述中定義的事件流生成序列圖。

序列圖示例

序列圖

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

什麼是通信圖?

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

通信圖示例

活動圖

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

什麼是交互概述圖?

交互概述圖側重於對相互作用控制流的概述。它是活動圖的變體,其中節點是相互作用或相互作用發生。交互概述圖描述了隱藏消息和生命線的交互。您可以將「真實」圖表連接起來,並在交互概述圖內的圖表之間實現高度通航性。

交互概述圖示例

交互概述圖

有關交互概述圖的更多詳細資訊,請閱讀文章什麼是交互概述圖?

什麼是時間圖?

時間圖顯示物件在給定時間段內的行為。計時圖是序列圖的一種特殊形式。計時圖和序列圖之間的差異是軸被反轉,以便時間從左到右增加,生命線顯示在垂直排列的單獨隔間中。

計時圖示例

計時圖

有關計時圖的更多詳細資訊,請閱讀文章什麼是計時圖?

獲取視覺範式社區版,這是一個免費的UML工具,可以説明您更快、更有效地學習UML。視覺範式社區版支援所有UML圖類型。其UML建模機屢獲殊榮,易於使用,直觀。

免費下載

UML 詞彙表和術語

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

流行的 UML 書籍

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

  1. UML 蒸餾:標準物件建模語言簡介
  2. UML 2 和統一流程:實用對象導向分析與設計
  3. 學習UML 2.0
  4. 使用 UML 構建 Web 應用程式
  5. 統一建模語言參考手冊
  6. UML 2.0 樣式的元素
  7. 爪哇程式師的UML
  8. 肖姆的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的敏捷模型驅動開發

相關連結

  1. 用於視覺建模的專業UML設計工具

您要尋找免費的 UML 工具,以便更快、更輕鬆、更快地學習 UML 嗎?視覺範式社區版是一個 UML 軟體,支援所有 UML 圖類型。它是一個國際屢獲殊榮的UML建模師,但它是易於使用,直觀 - 完全免費。

免費下載



尚未有邦友留言

立即登入留言