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