uml活動圖的概念與作用

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是一種定義良好、易於表達、功能強大且普遍適用的建模語言。它融入了軟件工程領域的新思想、新方法和新技術。它的作用域不限於支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。

作爲一種建模語言,UML的定義包括UML語義和UML表示法兩個部分。

(1) UML語義 描述基於UML的精確元模型定義。元模型爲UML的所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發者能在語義上取得一致,消除了因人而異的最佳表達方法所造成的影響。此外UML還支持對元模型的擴展定義。

(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. 輔助活動圖

當活動圖過於複雜時可以用活動的分解來處理

 

一個活動可以分爲若干個動作或子活動,這些動作和子活動本身又可以組成一個活動圖。

不含內嵌活動或動作的活動稱之爲簡單活動;

嵌套了若干活動或動作的活動稱之爲組合活動,組合活動有自己的名字和相應的子活動圖

三.活動圖繪製要點

⑴ 識別要對工作流描述的類或對象。找出負責工作流實現的業務對象,這些對象可以是顯示業務領域的實體,也可以是一種抽象的概念和事物。找出業務對象的目的是爲每一個重要的業務對象建立泳道。

⑵ 確定工作流的初始狀態和終止狀態,明確工作流的邊界。

⑶ 對動作狀態或活動狀態建模。找出隨時間發生的動作和活動,將它們表示爲動作狀態或活動狀態。

⑷ 對動作流建模。對動作流建模時可以首先處理順序動作,接着處理分支與合併等條件行爲,然後處理分叉與匯合等併發行爲。

⑸ 對對象流建模。找出與工作流相關的重要對象,並將其連接到相應的動作狀態和活動狀態。

⑹ 對建立的模型進行精化和細化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章