UML學習筆記之活動圖

1. 活動圖的基本概念

活動圖是一種用於描述系統行爲的模型視圖,它可用來描述動作和動作導致對象狀態改變的結果,而不用考慮引發狀態改變的事件。
通常,活動圖記錄單個操作或方法的邏輯、單個用例或商業過程的邏輯流程。
UML中,活動的起點用來描述活動圖的開始狀態,用黑的實心圓表示。活動的終止點描述活動圖的終止狀態,用一個含有實心圓的空心圓表示。活動圖中的活動既可以是手動執行的任務,也可以是自動執行的任務,用圓角矩形表示。   
活動圖的主要目的是描述動作及對象的改變結果,而狀態圖則是以狀態的概念描述對象、子系統、系統在生命週期中的各種行爲。

2.活動圖的作用

活動圖的作用主要體現在:

    (1)描述一個操作執行過程中所完成的工作。說明角色、工作流、組織和對象是如何工作的。

    (2)活動圖對用例描述尤其有用,它可建模用例的工作流,顯示用例內部和用例之間的路徑。它可以說明用例的實例是如何執行動作以及如何改變對象狀態。

    (3)顯示如何執行一組相關的動作,以及這些動作如何影響它們周圍的對象。

    (4)活動圖對理解業務處理過程十分有用。活動圖可以畫出工作流用以描述業務,有利於與領域專家進行交流。通過活動圖可以明確業務處理操作是如何進行的,以及可能產生的變化。

    (5)描述複雜過程的算法,在這種情況下使用的活動圖和傳統的程序流程圖的功能是差不多的。

3.活動圖的組成

動作狀態:

動作狀態(action state)是原子性的動作或操作的執行狀態,它不能被外部事件的轉換中斷。
UML中,動作狀態使用平滑的圓角矩形表示,動作狀態表示的動作寫在矩形內部

活動狀態:

活動狀態是非原子性的,用來表示一個具有子結構的純粹計算的執行。活動狀態可以分解成其他子活動或動作狀態,可以被使轉換離開狀態的事件從外部中斷。
活動狀態是一個程序的執行過程的狀態而不是一個普通對象的狀態。離開一個活動狀態的轉換通常不包括事件觸發器。
動作狀態是一種特殊的活動狀態。可以把動作狀態理解爲一種原子的活動狀態,即它只有一個入口動作,並且它活動時不會被轉換所中斷。       
活動狀態和動作狀態的表示圖標相同,都是平滑的圓角矩形。兩者不同的是活動狀態可以在圖標中給出入口動作和出口動作等信息。

組合活動:

組合活動是一種內嵌活動圖的狀態。一個組合活動在表面上看是一個狀態,但其本質卻是一組子活動的概括。一個組合活動可以分解爲多個活動或者動作的組合。每個組合活動都有自己的名字和相應的子活動圖。一旦進入組合活動,嵌套在其中的子活動圖就開始執行,直到到達子活動圖的最後一個狀態,組合活動結束。
如果一些活動狀態比較發雜,就會用到組合活動。比如,我們去購物,當選購完商品後就需要付款。雖然付款只是一個活動狀態,但是付款卻可以包括不同的情況。對於會員來說,一般是打折後付款,而一般的顧客就要全額付款了。這樣,在付款這個活動狀態中,就又內嵌了兩個活動,所以付款活動狀態就是一個組合活動。   

分叉與結合:

併發(concurrency)指的是在同一時間間隔內,有兩個或者兩個以上的活動執行。對於一些複雜的大型系統而言,對象在運行時往往不止存在一個控制流,而是存在兩個或者多個併發運行的控制流。爲了對併發的控制流建模,在UML中引入了分叉和匯合的概念。
分叉用來表示將一個控制流分成兩個或者多個併發運行的分支,結合用來表示並行分支在此得到同步。

分支與合併:

分支在活動圖中很常見,它是轉換的一部分,它將轉換路徑分成多個部分,每一部分都有單獨的監護條件和不同的結果。當動作流遇到分支時,會根據監護條件(布爾值)的真假來判定動作的流向。分支的每個路徑的監護條件應該是互斥的,這樣可以保證只有一條路徑的轉換被激發。在活動圖中,離開一個活動狀態的分支通常是完成轉換,它們是在狀態內活動完成時隱含觸發的。
合併指的是兩個或者多個控制路徑在此匯合的情況。合併是一種便利的表示法,省略它不會丟失信息。合併和分支常常成對的使用,合併表示從對應分支開始的條件行爲的結束。

泳道:

爲了對活動的職責進行組織而在活動圖中將活動狀態分爲不同的組,稱爲泳道(swimlane)。每個泳道代表特定含義的狀態職責的部分。在活動圖中,每個活動只能明確的屬於一個泳道,泳道明確的表示了哪些活動是由哪些對象進行的。
每個泳道都有一個與其他泳道不同的名稱。
每個泳道可能由一個或者多個類實施,類所執行的動作或擁有的狀態按照發生的事件順序自上而下的排列在泳道內。


對象流:

活動圖中交互的簡單元素是活動和對象,控制流(controlflow)就是對活動和對象之間的關係的描述。詳細的說控制流表示動作與其參與者和後繼動作之間以及動作和其輸入和輸出對象之間的關係。而對象流就是一種特殊的控制流。
對象流(object flow)是將對象流狀態作爲輸入或輸出的控制流。在活動圖中,對象流描述了動作狀態或者活動狀態與對象之間的關係,表示了動作使用對象以及動作對對象的影響。


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