1. 程式人生 > 其它 >UML 活動圖

UML 活動圖

本學期在學 uml 建模,這星期要完成對專案用例圖中幾個主要用例的活動圖分析,索性寫下自己對活動圖的學習筆記和實操。
有些類似的用例,網上或者書上的活動圖表示都不盡相同,我是按照自己的理解,感覺沒有很嚴格的標準,重要的是把活動描述清晰明瞭。

活動圖

活動圖是一種表達系統動態行為的圖,提供了流程的視覺化描述。
對於用例圖中的用例,我們很難看到潛在的問題,因為其流程及具體操作我們是不知道的。比起用文字描述的用例規格說明,使用活動圖將用例的複雜流程視覺化會更加清晰明瞭,便於理解。

一. 基本概念

1. 動作(Actions)

活動包含許多動作,動作是活動的基本單位,具有原子性。動作一般用圓角矩形

來表示,動賓結構描述。
活動圖中還有活動狀態(可分解),也用圓角矩形表示,但其中能包含一個完整活動。動作實際上是活動狀態的一個特例。如果一個活動只由一個動作,那麼它就是一個動作狀態。
動作和活動狀態也可以叫作動作節點和活動節點
如果圓角矩形右下角有一個叉子的符號,則該動作為 callBehavior型別,我的理解是該動作會直接呼叫另一個活動。呼叫動作所屬的活動與被呼叫活動是兩個獨立的活動,為不相關集。

2. 開始和終止

活動圖展示的是一個流程,那麼必然由開始和結束。一個流程有且僅有一個開始節點,但至少有一個結束節點。開始節點為實心黑點,終止節點為一個圓圈,有點像小黃人的眼睛?: )

3. 判斷節點和合並節點

判斷節點 用菱形表示,具有一個進入流程和多個離開流程,類似於 switch 分支語句。離開流程應該包括進入流程產生的所有可能結果要走的路徑。
合併節點 同樣用菱形表示,但合併節點具有多個進入流程並導向一個離開流程。
需要注意的是,判斷節點和合並節點都只表示邏輯意義,並不意味著動作的併發執行或者其他時間或資料同步的操作,這對區分他們與分叉節點,結合節點很關鍵

4. 分叉節點和結合節點

分叉節點在圖中表示為有一個進入箭頭多個離開箭頭的粗橫線,其與判斷節點的區別在於併發,判斷節點只執行其中一個離開流程,而分叉節點的進入流程會導致多個離開流程的併發,其常常與結合節點合用來表達併發的過程。
結合節點在圖中則表示為有多個進入箭頭一個離開箭頭的粗橫線

,對於結合節點來說,必須完成所有的進入流程後,才能進行離開流程,
分叉節點和結合節點的組合使用可以概括為表現多個流程的同進同出

5. 分割槽(泳道)

分割槽的目的是為了說明具體活動的執行物件,一般是使用者,系統之類。除此之外,對處於不同泳道的併發活動進行分割槽並列,可以更加清晰地表達併發的進行。

6. 物件流

物件用矩形表示,有時動作的發生可能涉及到物件的變化,通過新增物件流可以直觀地表達出物件的變化,比如給油箱加油,我們可能需要這麼一個油箱物件,表達油箱當前的狀態,如果油量很低則執行動作【加油】,讓油量達到滿的狀態。不建議在活動圖新增過多物件,會使得圖變得複雜而笨拙,應該均衡其利弊而使用。

二. 實際案例

下面將以一個【預訂運動場地】活動為例,畫出活動圖

  1. 我們要確定有多少個參與者,即泳道條數,我這裡有普通使用者,訂單處理系統以及預約管理系統

  2. 我們要預約場館,是不是得先告訴系統使用者要做什麼運動,在什麼時候運動。然後預約管理系統就會篩選出滿足條件的場館,如果一個沒有,那麼預訂失敗;如果有符合條件的場館,ok使用者再去看這些場館的資訊,用判斷節點來表達。

  3. 找到心儀的場館然後填寫預約資訊,又訂單管理系統參與生成訂單,要注意只有使用者選擇完支付方式後,我們才會執行動作支付預約費用(聯絡我們使用淘寶的時候!!),所以這是併發的動作。我們上面提到了,用分叉節點和結合節點表示併發。最後在判斷節點控制下導向結果預約成功和預約失敗,最後的活動圖如下

三. 總結

畫活動圖就是描述一個活動的視覺化流程,在畫活動圖之前,腦海中應該有大致的流程,先做什麼後做什麼,注意哪些動作是併發,然後梳理清楚,才不至於出來的圖有交叉很亂的情況。
我畫的也挺粗糙,僅僅用了活動圖的基本概念,之後代入角色反覆思考,多實踐了。

本文來自部落格園,作者:_krill,轉載請註明原文連結:https://www.cnblogs.com/krill/p/15472642.html