13種UML簡介、工具及示例
概要
UML(Unified Modeling Language ,統一建模語言或標準建模語言). UML圖形有13種,UML規範用來描述建模的概念有,類(物件的)、物件、關聯、職責、行為、介面、用例、包、順序、協作,以及狀態.一起細細品讀下.
1.用例圖(UseCase Diagram)
靜態圖.對系統的使用方式分類. 幫助開發團隊以一種視覺化的方式理解系統的功能需求。
元素關係包含有: 參與者,用例,子系統,關係(關聯,泛化,包含,擴充套件,依賴,專案,註釋)
這是用visio畫用例圖的介面截圖:
這是一個示例圖:
2.類圖 (Class diagram)
靜態圖.顯示類和它們的相互關係.
關係: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
泛化(Generalization):一種繼承關係
實現(Realization): 類是介面所有特徵和行為的實現
關聯(Association) :一種擁有的關係,它使一個類知道另一個類的屬性和方法
聚合(Aggregation):是整體與部分的關係,且部分可以離開整體而單獨存在
組合(Composition):是整體與部分的關係,但部分不能離開整體而單獨存在.
如公司和部門是整體和部分的關係,沒有公司就不存在部門.
組合關係是關聯關係的一種,是比聚合關係還要強的關係.
依賴(Dependency): 是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴
UML綜合示例圖
工具示例,staruml:
3.物件圖(Object Diagram)
靜態圖.物件圖只顯示物件及它們的相互關係
概述:
和類圖對比:
物件圖示例:
4.活動圖(Activity Diagram)
動態圖.顯示人或物件的活動,其方式類似於流程圖
包含有: 初始節點(開始),最後一個節點(結束),活動,,轉換,判定(決策), 同步條,分岔或匯合,泳道等
開始/結束 實心圓表示初始節點,圓圈內加一個實心圓來表示活動終點
活動 最主要的元素之一,它用來表示一個活動
轉換 當一個活動結束時,控制流就會馬上傳遞給下一個活動節點,在活動圖中稱之為“轉換”,用一條帶箭頭的直線來表示
決策 分支是用菱形表示的,它有一個進入轉換(箭頭從外指向分支符號),一個或多個離開轉換(箭頭從分支符號指向外)。而每個離開轉換上都會有一個監護條件,用來表示滿足什麼條件的時候執行該轉換
同步條
分岔或匯合 分叉用於將動作流分為兩個或者多個併發執行的分支,而匯合則用於同步這些併發分支,以達到共同完成一項事務的目的。
物件流 用活動圖描述某個物件時,可以把涉及到的物件放置在活動圖中,並用一個依賴將其連線到進行建立、修改和撤銷的動作狀態或者活動狀態上,物件的這種使用方法就構成了物件流
泳道
活動圖舉例:
活動圖-工具-Visio
流程圖 | 活動圖 |
---|---|
描述處理過程 | 描述物件的活動順序 |
控制結構:順序,分支,迴圈 | 控制結構:物件的動作行為決定。 |
面向過程 | 面向物件 |
不可以描述併發過程 | 可以描述併發過程 |
5.狀態機圖(Statechart Diagram)
動態圖.顯示生命-週期比較有趣或複雜的物件的各種狀態。
包括: 狀態、狀態表示法及狀態機,轉換.
狀態 : 是指在物件生命週期中滿足某些條件、執行某些活動或等待某些事件的一個條件和狀況。一個狀態通常包括名稱、進入/退出活動、內部轉換、子狀態和延遲事件 等五個部分組成
狀態機 是電腦科學理論的一部分,但UML中的狀態機模型主要是基於David Harel所做的擴充套件,是用來展示狀態與狀態之間轉換的圖
轉換 另一個則是在狀態之間的、包含一些文字描述的有向箭頭線,這些箭頭線稱為轉換。 下圖中紅線箭頭為轉換.
轉換五要素 :
•源狀態:即受轉換影響的狀態。
•目標狀態:當轉換完成後物件的狀態
•觸發事件:用來為轉換定義一個事件,包括呼叫、改變、訊號、時間四類事件
•監護條件:布林表示式,決定是否啟用轉換
•動作:轉換啟用時的操作
複雜轉換
轉換型別 | 描述 | 語法 |
---|---|---|
外部轉換 | 對事件做出響應,引起狀態變化或自身轉換,同時引發一個特定動作,如果離開或進入狀態將引發進入轉換、離開轉換 | 事件 ( 引數 )[ 監護條件 ]/ 動作 |
內部轉換 | 對事件做出響應,並執行一個特定的活動,但並不引起狀態變化或進入轉換、離開轉換 | 事件 ( 引數 )[ 監護條件 ]/ 動作 |
進入轉換 | 當進入某一狀態時,執行相應活動 | entry/ 活動 |
退出轉換 | 當離開某一狀態時,執行相應活動 | exit/ 活動 |
只有動作描述,進入和退出和操作方法寫在了裡面
•進入和退出轉換 :當進入一個狀態時,執行某個動作;或當退出某個狀態時,執行什麼動作。這時就可以使用進入和退出轉換 來表示
•內部轉換 :用來處理一些不離開該狀態的事件
活動與延遲事件
•活動:當物件處於一個狀態時,它一般是空閒的,在等待一個事件的發生。但是某些時間,你可能希望描述個正在進行的活動。在處於一個狀態的同時,物件做著某些工作,並一直繼續到被某個事件中斷
• 延遲事件:延遲事件是一種特殊的事件,它是指該事件不會觸發狀態的轉換,當物件處於該狀態時事件不會丟失,但會被延遲執行。例如,當E-mail程式中正 在傳送第一封郵件時,使用者下達傳送第二封郵件執令就會被延遲,但第一封郵件傳送完成後,這封郵件就會被髮送。這種事件就屬於延遲事件
符合狀態表示法:
狀態圖Visio:
6. 通訊圖(Communication Diagram)
UML2.0之前叫協作圖(Collaboration Diagram)
顯示在某種情形下物件之間傳送的訊息。 協作圖顯示了一系列的物件和在這些物件之間的聯絡以及物件間傳送和接收的訊息
作用
1). 強調的是傳送和接收訊息的物件之間的組織結構。
2). 說明系統的動態情況。
3). 描述協作物件間的互動和連結,顯示物件、物件間的連結以及物件間如何傳送訊息。
4). 表示一個類操作的實現
協作圖中的要素
協作圖中的關係
示例:
畫圖工具: StarUML
7.順序圖 (Sequence Diagram 時序圖)
動態圖.顯示與通訊圖類以的資訊,但強調的是順序,而不是連線。
要素:活動者,物件,生命線,控制焦點,訊息(同步訊息,非同步訊息,返回訊息,自關聯訊息)
1 活動者
2 物件
3 生命線
4 控制焦點
5 訊息
VISIO
8.包圖(Package Diagram)
顯示相關的類如何組合,對開發人員有用。
包可直接理解為名稱空間,資料夾,是用來組織圖形的封裝,包圖可以用來表述功能組名稱空間的組織層次Package之間的關係非常的簡單,兩個字,依賴,UML中依賴用帶箭頭的虛線表示。
•名稱:每個包都必須有一個與其它包相區別的名稱
•擁有的元素:在包中可以擁有各種其它元素,包括類、介面、構件、節點、協作、用例,甚至是其它包或圖
•包的可見性:
用“+”來表示“public”,
用“#”來表示“protected”,
用“-”來表示“private”
示例:
包圖-StarUML:
9.部署圖(Deployment Diagram)
靜態圖.顯示安裝已完成系統的機器、過程和部署製品。用來顯示系統中軟體和硬體的物理架構。從部署圖中,您可以瞭解到軟體和硬體元件之間的物理關係以及處理節點的元件分佈情況。使用部署圖可以顯示執行時系統的結構,同時還傳達構成應用程式的硬體和軟體元素的配置和部署方式。
作用
一個UML部署圖描述了一個執行時的硬體結點,以及在這些結點上執行的軟體構件的靜態檢視。
部署圖顯示了系統的硬體,安裝在硬體上的軟體,以及用於連線異構機器之間的中介軟體。
建立一個部署模型的目的包括∶
• 描述系統投產的相關問題.
• 描述系統與生產環境中的其它系統間的依賴關係,這些系統可能是已經存在,或是將要引入的。
• 描述一個商業應用主要的部署結構。
• 設計一個嵌入系統的硬體和軟體結構。
• 描述一個組織的硬體/網路基礎結構。
包含元素
節點 :代表一個執行時計算機系統中的硬體資源。包括節點的表示,節點的分類,節點中的構件,節點屬性,節點與構件。
1)節點表示
2)節點分類
2.1)處理器(Processor):處理器是能夠執行軟體、具有計算能力的節點。
2.2) 裝置(Device) :裝置是沒有計算能力的節點,通常情況下都是通過其介面為外部提供某種服務,例如印表機、IC讀寫器,如果我們的系統不考慮它們內部的晶片,就可以把它們看作裝置
3)節點中的構件
當某些構件駐留在某個節點時,可以在該節點的內部描述這些構件. 示例如下2圖.
連線 部署圖用連線表示各節點之間通訊路徑,連線用一條實線表示。對於企業的計算機系統硬體裝置間的關係,我們通常關心的是節點之間是如何連線的,因此描述節點間的關係一般不使用名稱,而是使用構造型描述
10元件圖(Component Diagram)
靜態圖.顯示可重用的元件(物件或子系統)及期介面。又稱為構件圖,它描述的是在軟體系統中遵從並實現一組介面的物理的、可替換的軟體模組。
構件圖=構件(Component)+介面(Interface)+關係(Relationship)+埠(Port)+聯結器(Connector)
在面向物件系統的物理方面進行建模要用到兩種圖:元件圖和配置圖。
包含的元素:元件(Component)->構件,介面(Interface,外部介面——埠,聯結器(Connector)——連線件,依賴關係(Dependency).
10.1 元件
• 元件是定義了良好介面的物理實現單元,是系統中可替換的物理部件。
• 元件代表系統的一個物理實現塊,代表邏輯模型元素如類、介面、協同等的物理打包。
• 構件通過它的提供介面和請求介面展現行為。
• 由於在UML2.0中,構件是一種類,因此構件具有屬性、操作和可見性。這些概念的含義與在類圖中定義的是一樣的,只是在這裡把這些概念應用在構件上。
元件的命名
元件的名稱有兩種:簡單名和路徑名。並依據目標作業系統可以新增相應的副檔名,例如Java和dll。
表示方式
元件用一個左側帶有突出兩個小矩形的矩形來表示。
UML2.0如下:
UML2.0把構件分為基本構件和包裝構件
• 基本構件注重於把構件定義為在系統中可執行的元素。
• 包裝構件擴充套件了基本構件的概念,它注重於把構件定義為一組相關的元素,這組元素為開發過程的一部分。也即, 包裝構件定義了構件的名稱空間方面。在構件的名稱空間中,可以包括類、介面、構件、包、用況、依賴(如對映)和製品。按照這種擴充套件,構件也具有如下的含義:可以用構件來裝配大粒度的構件,方法為把所複用的構件作為大粒度構件的成分,並把它們的請求和提供介面連線在一起(簡單理解:元件包含元件,組拼大元件)
元件的種類
• 配置元件(Deployment Component):執行系統需要配置的元件,是形成可執行檔案的基礎–作業系統、JAVA虛擬機器、DBMS;
• 工作產品元件(Work Product Component):包括模型、原始碼和用於建立配置元件的資料檔案,它們是配置元件的來源–UML圖、java類和資料庫表;
執行元件(Execution Component):在執行時建立的元件,是最終可執行的系統產生的允許結果–.net元件
10.2 介面(Interface)
• 介面(interface)介面由一組操作組成,它指定了一個契約,這個契約必須由實現和使用這個介面的構件的所遵循。
• 介面分提供介面和請求介面
把構件實現的介面稱為提供介面(供介面),這意味著構件的提供介面是給其它構件提供服務的。實現介面的構件支援由該介面所擁有的特徵,包括介面擁有的約束。
構件使用的介面被稱為請求介面(需介面),即構件向其它構件請求服務時要遵循的介面
• 表示方式:
供介面用“棒棒糖”式的圖形表示,即由一個封閉的圓形與一條直線組成。
需介面用“插座”式的圖形表示,即由一個半圓與一條直線組成。
10.3 外部介面——埠
• 埠是UML2.0引入的概念
• 埠描述了在構件與它的環境之間以及在構件與它的內部構件之間的一個顯示地互動點
• 埠是一個封裝構件的顯示的對外視窗,所有進出構件的互動都要通過埠。
使用埠能在更大的程度上增加構件的封裝性和可替代性。
• 埠是構件的一部分,埠的例項隨著它們所屬的構件的例項一起被建立和撤消。
<1>介面與埠的關係
提供介面說明了通過埠來提供服務,請求介面說明了通過埠需要從其它構件獲得服務。
一個構件可以通過一個特定埠同另一個構件通訊,而且通訊完全是通過由埠支援的介面來描述的。
<2>表示方式
尾部加小方框的正常介面表示,小方框就被稱為埠。
10.4 聯結器(Connector)——連線件
UML2.0提供兩種型別的聯結器:
• 代理聯結器(Delegation Connector)——委託連線件:連線外部介面的埠和內部介面。
• 組裝聯結器(Assembly Connector)——組裝連線件:元件聯結器表示構件之間的關係,它連線構件內部的類,將一個構件的供介面和一個構件的需介面捆綁在一起
• 連線埠意味著請求埠要呼叫提供埠中的操作,以得到服務。
• 立埠和介面的優點在於在設計時,兩個構件彼此不需要了解對方的內部,只要它們的介面是相互相容的即可。
• 如果一個埠提供一個特定的介面而另一個埠需要這個介面,且介面是相容的,那麼這兩個埠-便是可連線的。
1)組裝連線件
有兩種表示裝配連線件的方法:
•如果要顯式地把兩個構件例項銜接在一起,在它們的埠之間畫一條線即可。
•如果兩個構件例項相連是由於它們有相容的介面,則可以使用一“球-穴”標記來表示構件例項之間的連線關係。
裝配連線件是兩個構件例項間的連線件,它定義一個構件例項提供服務,另一個構件例項使用這些服務。裝配連線件用於把一個請求介面或埠與一個提供介面或埠的連線起來。在執行時,訊息起源於一個請求埠,沿著連線件傳遞,被交付到一個提供埠z
2)委託連線件
委託有這樣的含義:具體的訊息流將發生在所連線的埠之間,可能要跨越多個層次,最終到達要對訊息進行處理的最終部件例項。這樣,使用委託連線件可對構件行為的層次分解建模。
委託連線件把外部對構件埠的請求分發到構件內部的部件例項進行處理,或者通過構件埠把構件內部部件例項向構件外部的請求分發出去。
構件內部的一個部件可以是另一個構件或是一個類。注意,必須在兩個提供埠間或兩個請求埠間定義委託連線件。
10.5 依賴關係(Dependency)
元件圖用依賴關係表示各元件之間存在的關係型別。
在UML中,元件圖中依賴關係的表示方法與類圖中依賴關係相同,都是一個由客戶指向提供者的虛線箭頭。
11互動總圖
使用順序圖喧赤活動的務個步驟。
11.1 協作圖
定義
它描述了系統中,物件間通過訊息進行的互動,強調了物件在互動行為中承擔的角色.
作用
強調了交互發生時,每個物件承擔的職責.
可以顯示物件相互協作時充當的角色
用例顯示物件之間如何進行互動
元素
物件:在圖中位置沒有限制
鏈
訊息:為了說明互動過程中訊息的時間順序,需要給訊息新增順序號.
示例:
![enter description here][52]
11.2 順序圖
定義
用來描述為了完成某確定事務,物件之間按照時間順序進行訊息互動的圖.
目的作用
在專案的需求階段,分析師能通過提供一個更加正式層次的表達,把用例帶入下一層次。那種情況下,用例常常被細化為一個或者更多的序列圖。
組織的技術人員能發現,序列圖在記錄一個未來系統的行為應該如何表現中,非常有用。在設計階段,架構師和開發者能使用圖,挖掘出系統物件間的互動,這樣充實整個系統設計。
要素
順序圖的五要素是:活動者、物件、生命線、控制焦點、訊息
•生命線:物件存在的時間
•控制焦點:表示這個時間物件將執行操作
•訊息:表示物件之間傳輸的資訊
•訊息型別:
呼叫(同步)訊息
非同步訊息
返回訊息
阻止訊息
超時訊息
示例:
12時間圖
顯示訊息和物件狀態的準確時間限制。UML 時間圖被用來顯示隨時間變化,一個或多個元素的值或狀態的更改。也顯示時控事件之間的互動和管理它們的時間和期限約束。
狀態生命線
狀態生命線顯示隨時間變化,一個單項狀態的改變。不論時間單位如何選擇,X軸顯示經過的時間,Y軸被標為給出狀態的列表。狀態生命線如下所示:
值生命線
值生命線顯示隨時間變化,一個單項的值的變化。X軸顯示經過的時間,時間單位為任意,和狀態生命線一樣。平行線之間顯示值,每次值變化,平行線交叉。如下圖所示。
綜合
狀態和值的生命線能疊加組合。它們必須有相同的X軸。 訊息可以從一個生命線傳遞到另一個。每一個狀態和值的變換能有一個定義的事件,一個時間限制是指一個事件何時必須發生,和一個期限限制說明狀態或值多長時間必須有效。一旦這些已經被應用,其時間圖可能顯示如下。
13複合結構圖
顯示物件在聚合或複合中的相互關係,顯示介面和協作的物件.
複合圖
複合結構圖顯示類元內部結構,包括它與系統其他部分的互動點。也顯示各部分的配置與關係,這些部分一起執行類元的行為。
類元素已經在類圖部分被詳細地闡述,這部分用來說明類表現複合元素的方式,如:暴露介面,包含埠和部件。
部件
•部件是代表一組(一個或多個)例項的元素,這組例項的擁有者是一類元例項,例如:如果一個圖的例項有一組圖形元素,則這些圖形元素可以被表示為部件,並可以對他們之間的某種關係建模。注意:一個部件可以在它的父類被刪除之前從父類中被去掉,這樣部件就不會被同時刪除了。
•部件在類或元件內部顯示為不加修飾的方框。
埠
•埠是型別化的元素,代表一個包含類元例項的外部可視的部分。埠定義了類元和它的環境之間的互動。埠顯示在包含它的部件,類或組合結構的邊緣上。埠指定了類元提供的服務,以及類元要求環境提供的服務。
•埠顯示為所屬類元邊界指定的方框。
介面
•介面與類相似,但是有一些限制,所有的介面操作都是公共和抽象的,不提供任何預設的實現。所有的介面屬性都必須是常量。然而,當一個類從一個單獨的超級類繼承而來,它可以實現多個介面。
•當一個介面在圖中單列出來,它既可以顯示為類元素的方框,帶 «interface» 關鍵字和表明它是抽象的斜體名稱,也可以顯示為圓環。
•注意:圓環標註不顯示介面操作。當介面顯示為類所有的介面,它們會被當作暴露介面引用。暴露介面可以定義為是提供的,還是需求的。提供介面確認包含它的類元提供指定介面元素定義的操作,可通過類和介面間實現的連線來定義。需求介面說明該類元能與其他類元進行通訊,這些類元提供了指定介面元素所定義的操作。需求介面可通過在類和介面間建立依賴連線來定義。
•提供介面顯示為“帶棒球體”,依附在類元邊緣。需求介面顯示為“帶棒杯體”,也是依附在類元邊緣。
委託
委託聯結器用來定義元件外部埠和介面的內部工作方式。委託聯結器表示為帶有 «delegate» 關鍵字的箭頭。它連線元件的外部約定,表現為它的埠,到元件部件行為的內部實現。
協作
•協作定義了一系列共同協作的角色,它們集體展示一個指定的設計功能。協作圖應僅僅顯示完成指定任務或功能的角色與屬性。隔離主要角色是用來簡化結構和澄清行為,也用於重用。一個協作通常實現一個模式。
•協作元素顯示為橢圓。
角色繫結
•角色繫結聯結器是一條從連線協作到所要完成該任務類元的連線。它顯示為虛線,並在類元端顯示作用名。
表現
•表現聯結器用於連線協作到類元來表示此類元中使用了該協作。顯示為帶關鍵字 «represents»的虛線箭頭
發生
•發生聯結器用於連線協作到類元來表示此協作表現了(同原文)該類元;顯示為帶關鍵字«occurrence»的虛線箭頭。