uml是程序員須要掌握一個重要工具,特別在研究hadoop(http://www.iigrowing.cn/hadoop)系統中,有不少相關的uml圖形須要繪製,爲了方便你們瞭解uml,在網絡上找了些uml方面的文章(http://www.iigrowing.cn/?s=uml)在參考資料中,在uml參考資料中缺乏活動圖方面的介紹,所以特意在網絡上尋找了一些資料,而後整理成一篇文章,供你們參考,水平有限疏漏不免,請諒解.程序員
一.UML概述網絡
如下內容對uml進行簡單介紹,讀者有興趣能夠閱讀,建議讀者能夠閱讀其餘uml等文章,最後有時間在瞭解這個部份內容。這樣能夠先去實踐一些uml,而後在回到這裏的一些簡單的理論介紹,收穫會大些。併發
UML 全稱Unified Modeling Language 又稱統一建模語言或標準建模語言,是始於1997年一個OMG標準,它是一個支持模型化和軟件系統開發的圖形化語言,爲軟件開發的全部階段提供模型化和可視化支持。工具
UML是一種定義良好、易於表達、功能強大且廣泛適用的建模語言。它融入了軟件工程領域的新思想、新方法和新技術。它的做用域不限於支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。oop
做爲一種建模語言,UML的定義包括UML語義和UML表示法兩個部分。開發工具
(1) UML語義 描述基於UML的精確元模型定義。元模型爲UML的全部元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發者能在語義上取得一致,消除了因人而異的最佳表達方法所形成的影響。此外UML還支持對元模型的擴展定義。.net
(2) UML表示法 定義UML符號的表示法,爲開發者或開發工具使用這些圖形符號和文本語法爲系統建模提供了標準。這些圖形符號和文字所表達的是應用級的模型,在語義上它是UML元模型的實例。線程
標準建模語言UML的重要內容能夠由下列五類圖(共9種圖形)來定義:設計
第一類是用例圖,對象
從用戶角度描述系統功能,並指出各功能的操做者。
第二類是靜態圖 (Static diagram),
包括類圖、對象圖和包圖。其中類圖描述系統中類的靜態結構。不只定義系統中的類,表示類之間的聯繫如關聯、依賴、聚合等,也包括類的內部結構(類的屬性和操做)。類圖描述的是一種靜態關係,在系統的整個生命週期都是有效的。
對象圖是類圖的實例,幾乎使用與類圖徹底相同的標識。他們的不一樣點在於對象圖顯示類的多個對象實例,而不是實際的類。一個對象圖是類圖的一個實例。因爲對象存在生命週期,所以對象圖只能在系統某一時間段存在。
包由包或類組成,表示包與包之間的關係。包圖用於描述系統的分層結構。
第三類是行爲圖(Behavior diagram),
描述系統的動態模型和組成對象間的交互關係。行爲圖包括:狀態圖、活動圖、順序圖和協做圖。其中狀態圖描述類的對象全部可能的狀態以及事件發生時狀態的轉移條件。一般,狀態圖是對類圖的補充。在實用上並不須要爲全部的類畫狀態圖,僅爲那些有多個狀態其行爲受外界環境的影響而且發生改變的類畫狀態圖。 而活動圖描述知足用例要求所要進行的活動以及活動間的約束關係,有利於識別並行活動。活動圖是一種特殊的狀態圖,它對於系統的功能建模特別重要,強調對象間的控制流程。 順序圖展示了一組對象和由這組對象收發的消息,用於按時間順序對控制流建模。用順序圖說明系統的動態視圖。 協做圖展示了一組對象,這組對象間的鏈接以及這組對象收發的消息。它強調收發消息的對象的結構組織,按組織結構對控制流建模。 順序圖和協做圖都是交互圖,順序圖和協做圖能夠相互轉換。
第四類是交互圖(Interactive diagram),
描述對象間的交互關係。其中順序圖顯示對象之間的動態合做關係,它強調對象之間消息發送的順序,同時顯示對象之間的交互;合做圖描述對象間的協做關係,合做圖跟順序圖類似,顯示對象間的動態合做關係。除顯示信息交換外,合做圖還顯示對象以及它們之間的關係。若是強調時間和順序,則使用順序圖;若是強調上下級關係,則選擇合做圖。這兩種圖合稱爲交互圖。
第五類是實現圖 ( Implementation diagram )。
其中構件圖描述代碼部件的物理結構及各部件之間的依賴關係。一個部件多是一個資源代碼部件、一個二進制部件或一個可執行部件。它包含邏輯類或實現類的有關信息。部件圖有助於分析和理解部件之間的相互影響程度。
配置圖定義系統中軟硬件的物理體系結構。它能夠顯示實際的計算機和設備(用節點表示)以及它們之間的鏈接關係,也可顯示鏈接的類型及部件之間的依賴性。在節點內部,放置可執行部件和對象以顯示節點跟可執行軟件單元的對應關係。
從應用的角度看,當採用面向對象技術設計系統時,
首先是描述需求;
其次根據需求創建系統的靜態模型,以構造系統的結構;
第三步是描述系統的行爲。
其中在第一步與第二步中所創建的模型都是靜態的,包括用例圖、類圖(包含包)、對象圖、組件圖和配置圖等五個圖形,是標準建模語言UML的靜態建模機制。
其中第三步中所創建的模型或者能夠執行,或者表示執行時的時序狀態或交互關係。它包括狀態圖、活動圖、順序圖和合做圖等四個圖形,是標準建模語言UML的動態建模機制。所以,標準建模語言UML的主要內容也能夠概括爲靜態建模機制和動態建模機制兩大類。
二.活動圖介紹
1. 簡介
活動圖是uml的動態模型的一種圖形,通常用來描述相關用例圖。準確的活動圖定義:活動圖描述知足用例要求所要進行的活動以及活動間的約束關係,有利於識別並行活動。活動圖是一種特殊的狀態圖,它對於系統的功能建模特別重要,強調對象間的控制流程。
交互圖強調的是對象到對象的控制流,而活動圖則強調的是從活動到活動的控制流
活動圖是一種表述過程基理、業務過程以及工做流的技術。
它能夠用來對業務過程、工做流建模,也能夠對用例實現甚至是程序實現來建模
2. 活動圖示例
下圖是個簡單的活動圖例子,裏面包括了大部分活動圖的相關元素,你們應該都能看的差很少吧,有不明白的能夠繼續看,下面有針對各個元素有介紹啦,相信你們看完後面的,看這個圖就不會有問題的。
另外,若想學會畫活動圖,必須先看大量的圖,看明白別人的圖,在慢慢畫,慢慢一個圖形就弄明白了。
其實uml包括了各類各樣的圖形,把每種圖形都會畫啦,基本uml也就會啦。
3. 活動圖與流程圖的區別
活動圖描述系統使用的活動、斷定點和分支,看起來和流程圖沒什麼兩樣,而且傳統的流程圖所能表示的內容,大多數狀況下也可使用活動圖表示,可是二者是有區別的,不能將兩個概念混淆。
活動圖與流程圖的區別
⑴ 流程圖着重描述處理過程,它的主要控制結構是順序、分支和循環,各個處理過程之間有嚴格的順序和時間關係
活動圖描述的是對象活動的順序關係所遵循的規則,它着重表現的是系統的行爲,而非系統的處理過程。
⑵ 活動圖可以表示併發活動的情形,而流程圖不能。
⑶ 活動圖是面向對象的,而流程圖是面向過程的。
4. 活動圖與狀態圖區別
活動圖與狀態圖都是狀態機的表現形式,可是二者仍是有本質區別:
狀態圖着重描述從一個狀態到另外一個狀態的流程,主要有外部事件的參與。
上圖是一個典型的狀態圖
活動圖着重表現從一個活動到另外一個活動的控制流,是內部處理驅動的流程。
5. 活動圖基本元素
1) 初始節點和活動終點:
實心圓表示初始節點(只有一個),圓圈內加一個實心圓來表示活動終點(可有多個)。
2) 活動節點:
用來表示一個活動
3) 轉換:
一條帶箭頭的直線來表示。 一旦前一個活動結束立刻轉到下一個活動(無觸發轉換)。
4) 分支與監護條件:
分支是用菱形表示的,它有一個進入轉換(箭頭從外指向分支符號),一個或多個離開轉換(箭頭從分支符號指向外)。而每一個離開轉換上都會有一個監護條件,用來表示知足什麼條件的時候執行該轉換。
5) 分叉與匯合:
分叉用於將動做流分爲兩個或者多個併發運行的分支,而匯合則用於同步這些併發分支,以達到共同完成一項事務的目的。
分叉能夠用來描述併發線程,每一個分叉能夠有一個輸入轉換和兩個或多個輸出轉換,每一個轉換均可以是獨立的控制流。
匯合表明兩個或多個併發控制流同步發生,當全部的控制流都達到匯合點後,控制才能繼續往下進行。
每一個匯合能夠有兩個或多個輸入轉換和一個輸出轉換。
匯合將兩條路徑鏈接到一塊兒,合併成一條路徑。匯合指的是兩個或者多個控制路徑在此匯合的狀況。匯合是一種便利的表示法,省略它不會丟失信息。匯合和分支經常成對的使用,合併表示從對應分支開始的條件行爲的結束。
分叉和匯合都使用加粗的水平線段表示。
6. 抽象的活動圖示例
UML的活動圖中包含的圖形元素有動做狀態、活動狀態、動做流、分支與合併、分叉與匯合、泳道和對象流等。
7. 帶泳道的活動圖
泳道代表每一個活動是由哪些人或哪些部門負責完成。
每一個泳道表明特定含義的狀態職責的部分。在活動圖中,每一個活動只能明確的屬於一個泳道,泳道明確的表示了哪些活動是由哪些對象進行的。
每一個泳道都有一個與其餘泳道不一樣的名稱。
每一個泳道可能由一個或者多個類實施,類所執行的動做或擁有的狀態按照發生的事件順序自上而下的排列在泳道內。
在活動圖中泳道區分了負責活動的對象,它明確地表示了哪些活動是由哪些對象進行的。
在包含泳道的活動圖中每一個活動只能明確地屬於一個泳道
上圖是一個未採用泳道的活動圖
上圖是採用泳道技術後的活動圖
從兩幅圖的對比中,咱們能夠了解泳道技術是很是重要的,能夠更明確表達出活動圖的意圖。
泳道將活動圖中的活動化分爲若干組,並把每一組指定給負責這組活動的業務組織,即對象。
泳道區分了負責活動的對象,它明確地表示了哪些活動是由哪些對象進行的。
在包含泳道的活動圖中,每一個活動只能明確地屬於一個泳道。
在活動圖中,泳道用垂直實線繪出,垂直線分隔的區域就是泳道。
在泳道上方能夠給出泳道的名字或對象(對象類)的名字,該對象(對象類)負責泳道內的所有活動。
泳道沒有順序,不一樣泳道中的活動既能夠順序進行也能夠併發進行。
動做流和對象流容許穿越分隔線。
8. 帶對象流的活動圖
用活動圖描述某個對象時,能夠把涉及到的對象放置在活動圖中,並用一個依賴將其鏈接到進行建立、修改和撤銷的動做狀態或者活動狀態上,對象的這種使用方法就構成了對象流。
對象流是動做狀態或者活動狀態與對象之間的依賴關係
對象流表示動做使用對象或者動做對對象的影響。
對象流中對象的特色:
⑴ 一個對象能夠由多個動做操縱;
⑵ 一個動做輸出的對象能夠做爲另外一個動做輸入的對象;
對象流中對象的特色:
⑶ 在活動圖中,同一個對象能夠屢次出現,它的每一次出現代表該對象正處於對象生存期的不一樣時間點。
在活動圖中,對象流用帶有箭頭的虛線表示。
若是箭頭從動做狀態出發指向對象,則表示動做對對象施加了必定的影響。
施加的影響包括建立、修改和撤銷等。若是箭頭從對象指向動做狀態,則表示該動做使用對象流所指向的對象。
狀態圖中的對象用矩形表示,矩形內是該對象的名稱,名稱下的方括號代表對象此時的狀態。
還能夠在對象名稱的下面加一個分隔欄表示對象的屬性值。
9. 信號發送和接收
發送信號與接收信號
10. 引腳
是一個對象節點,表明活動鏈接輸入、輸出值的鏈接點
用來標明每一個活動節點所需輸入的數據或者所產生的數據(建模業務流時則可表示產生或者消耗的資源)
11. 擴展區
表示重複或循環
12. 輔助活動圖
當活動圖過於複雜時能夠用活動的分解來處理
一個活動能夠分爲若干個動做或子活動,這些動做和子活動自己又能夠組成一個活動圖。
不含內嵌活動或動做的活動稱之爲簡單活動;
嵌套了若干活動或動做的活動稱之爲組合活動,組合活動有本身的名字和相應的子活動圖
三.活動圖繪製要點
⑴ 識別要對工做流描述的類或對象。找出負責工做流實現的業務對象,這些對象能夠是顯示業務領域的實體,也能夠是一種抽象的概念和事物。找出業務對象的目的是爲每個重要的業務對象創建泳道。
⑵ 肯定工做流的初始狀態和終止狀態,明確工做流的邊界。
⑶ 對動做狀態或活動狀態建模。找出隨時間發生的動做和活動,將它們表示爲動做狀態或活動狀態。
⑷ 對動做流建模。對動做流建模時能夠首先處理順序動做,接着處理分支與合併等條件行爲,而後處理分叉與匯合等併發行爲。
⑸ 對對象流建模。找出與工做流相關的重要對象,並將其鏈接到相應的動做狀態和活動狀態。