活動圖是UML用于對系統的動態行為建模的另一種常用工具,它描述活動的順序,展
現從一個活動到另一個活動的控制流.活動圖在本質上是一種流程圖。
-------------------------------
什么是活動?活動圖與狀態圖的區別是什么?
活動是某件事情正在進行的狀態,既可以是現實生活中正在進行的某 項工作,也可以是軟
件系統某個類對象的一個操作。活動在狀態機中表現為由一系列動作組成的非原子的執行過程。
雖然活動圖與狀態圖都是狀態機的表現形式,但是兩者還是有本質區別·活動圖著重表
現從一個活動到另一個活動的控制流,是內部處理驅動的流程:而狀態圖著重描述從一個狀
態到另一個狀態的流程, 主要有外部事件的參與。
-------------------------------
活動圖的圖形表示
在UML中,活動圖表示成圓角矩形,與狀態圖的圓角矩形相比,活動圖的矩形的圓角
更柔和,看上去接近橢圓。活動圖的圖標包含對活動的描述(如活動名)。如果一個活動引發
下一個活動,兩個活動的圖標之間用帶箭頭的直線連接。 與狀態圖類似,活動圈也有起點和
終點,表示法和狀態圖相同。
活動圖中還包括分支與合并、分叉與匯合等模型元素。 分支與合并的圖標和狀態圖中判定
的圖標相同,而分叉與匯合則用一條加粗的線段表示。
-------------------------------
活動圖與流程圖的區別
雖然活動圖描述系統使用的活動、判定點和分支,看起來和流程圖沒什么兩樣,并且傳
統的流程圖所能表示的內容,大多數情況下也可以使用活動圖表示,但是兩者是有區別的,
不能將兩個概念混淆。
活動圖與流程圖的區別如下。
(1)流程閣著重描述處理過程,它的主要控制結構是順序、分支和循環,各個處理過程
之間有嚴格的順序和時間關系;而活動圖描述的是對象活動的順序關系所遵循的規則,它著
重表現的是系統的行為,而非系統的處理過程。
(2) 活動圖能夠表示并發活動的情形,而流程圖不能。
(3) 活動圖是面向對象的,而流程圖是面向過程的.
-------------------------------
活動圖的組成元素
UML的活動圖中包含的圖形元素有動作狀態、 活動狀態、動作流、分支與合并、分叉與
匯合、泳道和對象流等。
4 分支與合并
動作流一般會自動進行控制轉換,直到遇到分支.分支在軟件系統流程中很常見,它
般用于表示對象類所具有的條件行為。一個無條件的動作流可以在一個動作狀態的動作完成
后自動觸發動作狀態的轉換以激發下一個動作狀態,而有條件的動作流則需要根據條件,即
一個布爾表達式的真假來判定動作的流向.條件行為用分支和合并表達。
在活動圖中分支與合并用空心小菱形表示。分支包括一個入轉換和兩個帶條件的出轉
換,出轉換的條件應當是互斥的,這樣可以保證只有一條出轉換能夠被觸發。合并包括兩個
帶條件的入轉換和一個出轉換,合并表示從對應的分支開始的條件行為的結束。
5 分支與匯合
對象在運行時可能會存在兩個或者多個并發運行的控制流,為了對并發的控制流建饃,
在UML中尋|入了分叉與匯合的概念,分叉用于將動作流分為兩個或者多個并發運行的分支,
而匯合則用于同步這些并發分支,以達到共同完成一項事務的目的。
分叉可以用來描述并發線程,每個分叉可以有一個輸入轉換和兩個或多個輸出轉換,每
個轉換都可以是獨立的控制流。
匯合代表兩個或多個并發控制流同步發生,當所有的控制流都達到匯合點后,控制才能
繼續往下進行。每個匯合可以有兩個或多個輸入轉換和一個輸出轉換。
分叉和匯合都使用加粗的水平線段表示。
6 泳道
泳道將活動圖中的活動化分為若干組,并把每一組指定給負責這組活動的業務組織.&P
對象。 在活動圖中,泳道區分了負責活動的對象,它明確地表示了哪些活動是由哪些對象進
行的。 在包含泳道的活動圖中,每個活動只能明確地屬于一個泳道。
在活動圖中,泳道用垂直實線繪出,垂直線分隔的區域就是泳道。在泳道上方可以給出
泳道的名字或對象(對象類〕的名字,該對象(對象類〉負責泳道內的全部活動。泳道沒有
順序,不同泳道中的活動既可以順序進行也可以并發進行,動作流和對象流允許穿越分隔線。
7 對象流
對象流是動作狀態或者活動狀態與對象之間的依賴關系,表示動作使用對象或者動作對
對象的影響。 用活動圖描述某個對象時,可以把涉及到的對象放置在活動圖中并用一個依賴
將其連接到進行創建;修改和撤銷的動作狀態或者活動狀態上,對象的這種使用方法就構成
了對象流。
對象流中的對象有如下特點·
(1) 個對象可以由多個動作操縱,
2)一個動作輸出的對象可以作為另一個動作輸入的對象:
(3)在活動圖中,同一個對象可以多次出現,它的每-次出現表明該對象正處于對象生
存期的不同時間點.
在活動圖中,對象流用帶有箭頭的虛線表示。如果箭頭從動作狀態出發指向對象,則表
示動作對對象施加了一定的影響。施加的影響包括創建、修改和撤銷等。如果箭頭從對象指
向動作狀態,則表示該動作使用對象流所指向的對象。
-------------------------------
活動的分解
一個活動可以分為若干個動作或子活動,這些動作和子活動本身又可以組成一個活動
圖。不含內嵌活動或動作的活動稱之為簡單活動:嵌套了若干活動或動作的活動稱之為組合
活動,組合活動有自己的名字和相應的子活動圖。
-------------------------------
活動圖建模技術
在系統建模的過程中,活動圖能夠附加到任何建模元素中以描述其行為,這些元素包括
用例、類、接口、節點、協作、操作和方法等。通常來說,用活動圖對工作流建模可遵循如
下步驟:
(1)識別要對工作流描述的類或對象a 找出負責工作流實現的業務對象,這些對象可以
是顯示業務領域的實體,也可以是一種抽象的概念和事物。找出業務對象的目的是為每一個
重要的業務對象建立泳道。
(2) 確定工作流的初始狀態和終止狀態,明確工作流的邊界。
(3)對動作狀態或活動狀態建模。找出隨時間發生的動作和活動,將它們表示為動作狀
態或活動狀態。
(4) 對動作流建模。對動作流建模時可以首先處理順序動作,接著處理分支與合并等條
件行為,然后處理分叉與匯合等并發行為。
(5) 對對象流建模。找出與工作流相關的重要對象,并將其連接到相應的動作狀態和活
動狀態。
(6) 對建立的模型進行精化和細化。