天天看點

UML之活動圖

基本概念:是UML中一種重要的用于表達系統動态特性的圖

  活動圖的作用是描述一系列具體動态過程的執行邏輯,展現活動和活動之間轉移的控制流,并且它采用一種着重邏輯過程的方式來叙述。

  在對軟體密集系統模組化的時候,有時需要詳細地模拟系統在運作時的業務流程。面對這種需要,我們可以分析對象間發生的活動和觸發條件,選用活動圖對這些動态方面進行模組化。

  活動圖的主要組成元素包括動作、活動、動作流、分支與合并、分叉與彙合、泳道和對象流等。

UML之活動圖

活動圖組成元素:動作和活動節點、開始和終止、控制流、判斷節點、合并節點、泳道。

UML之活動圖

動作和活動節點

  動作代表一個原子操作,操作可能是任何合法的行為。

  動作可以是并且不限于:建立或删除對象、發送消息、調用接口,甚至數學運算以及傳回表達式的求值結果。

  活動節點是一系列動作,主要用于實作動作序列的簡化和動作圖的嵌套。活動節點在圖例上的表達方式和動作相同。、

UML之活動圖

開始和終止

  活動圖中的開始和終止是兩個标記符号,分别标記了業務流程的起始位置和結束位置。

  活動圖中必須有且僅有一個開始标記,一般至少有一個結束标記。(存在一些特殊的無窮過程不存在終止标記。)

UML之活動圖

控制流

  控制流是活動圖中用于标示控制路徑的一種符号。它負責當一個動作或活動節點執行完畢後,将執行主體從目前已完畢的節點轉移到過程的下一個動作或動作節點。

  控制流從活動圖的開始标記開始運作,經過順序、分支等結構引導着各個動作的連續執行。

UML之活動圖

判斷節點

  判斷節點是活動圖中進行邏輯判斷、并創造分支的一種方法。

  判斷節點具有一個進入控制流和至少兩個導出控制流。

  判斷節點具有多個導出流,對于每條導出流而言,應當在表示該控制流的箭頭上附加控制條件。

UML之活動圖
UML之活動圖

合并節點

  合并節點将多個控制流進行合并,并統一導出到同一個離開控制流。

  合并節點僅有邏輯意義而沒有時間和資料上的意義:幾個動作都指向同一個合并節點也并不意味着這些動作要在進入之後互相等待或進行同步資料之類的操作。

UML之活動圖

泳道

  泳道是将活動中的具體活動按照負責進行該活動的對象進行分區,一條泳道中的所有活動由同一個對象來執行。

  除了以上的對線性流程進行分區以外,使用泳道表示法可以更清晰地表示并發。

UML之活動圖

工時審批流程

      員工填寫工時,項目工時報項目經理審批後再報部門經理審批、非項目工時直接報部門經理審批。

UML之活動圖

活動圖的進階概念:分叉節點、結合節點、對象流、擴充區域

分叉節點與結合節點

  分叉節點是從線性流程進入并發過程的過渡節點,它擁有一個進入控制流和多個離開控制流。分叉節點的所有離開流程是并發關系,即分叉節點使執行過程進入多個動作并發的狀态。

  結合節點是将多個并發控制流收束回同一流程的節點标記,功能上與合并節點類似。結合節點的各個進入控制流間具有并發關系,它們在系統中同時運作。

UML之活動圖

例子:學生選課的活動圖

學生選上課後需要上課、複習、考試、查詢成績,查詢成績後可以申請複核、查詢複核結果、成績如果及格慶祝、未通過補考或重修。

UML之活動圖
UML之活動圖

對象流

  對象流是UML為填補活動圖與面向對象思想之間的疏離而出現的。如果需要在活動圖中表現對象流,則首先需要繪制出泳道,且對象應該作為泳道的負責對象出現。

UML之活動圖
UML之活動圖
UML之活動圖

擴充區域

  擴充區域是表示過程中的某個活動片段的模型。擴充區域可以将一個需要展現在活動圖中的循環過程進行提取(不需要展現在活動圖中的,可以直接使用活動節點來略寫)。

UML之活動圖

活動圖模組化技術

對業務流程模組化

  選擇一個将要描述的重要過程,過程中盡量涉及數量少但是關鍵的對象或參與者,将無關或關聯很小的對象排除在外,為每一個對象或參與者繪制泳道。

  在總體業務流程中提取關鍵的動作或活動節點,并且将他們與對象或參與者相對應;若發現有些動作無法對應,則考慮動作是否在這個流程中起關鍵作用,或者是否遺漏了某些對象或參與者。

  規定初始狀态;确定過程可能的結束位置,為活動圖添加開始和結束節點。

  從業務流程的開始節點開始,把過程中發生的動作按事件順序排列,依次把這些動作添加到活動圖中。

  把局部的過于複雜的動作序列加以總結,繪制成一個活動節點;如果需要,把這個動作序列使用另外的活動圖進行模組化。

  找出連接配接這些動作和活動節點的控制流,并且準确找到過程中的分支、分叉、合并與結合節點。

  如果業務流程中有一些關鍵對象的值或狀态需要加以描述,使用對象流添加這些對象在某些動作或活動節點前後的狀态描述。

對用例互動模組化

  選擇概念用例——即從系統對客戶提供的各種服務中确定出一個關鍵業務,這個關鍵業務可能是在多個相同或不同的情況下反複出現,或者是系統需要提供的一個關鍵服務或進行的關鍵操作。

  對于目前選擇的用例,通過事件流進行順序叙述,并找出所有的參與者主動動作,把這些動作整理成動作或活動節點。

  把參與者和系統劃分為兩個泳道,如果有除了主參與者以外的其它參與者,也為它們分别劃分泳道。

  把活動節點縱向按照事件發生順序、橫向按照參與者角色和系統角色對應填入活動圖中。

繪制活動圖

  “活動圖” 比較直覺易懂;與傳統的流程圖十分的相近,隻要能夠讀懂活動圖,就不難畫出活動圖

  繪制時首先決定是否采用泳道:主要根據活動圖中是否要展現出活動的不同實施者

  然後盡量使用分支、分岔和彙合等基本的模組化元素來描述活動控制流程

  如果需要,加入對象流以及對象的狀态變化,利用一些進階的模組化元素(如輔助活動圖、彙合描述、發送信号與接收信号、引腳、擴充區)來表示更多的資訊

  活動圖的模組化關鍵是表示出控制流,其它的模組化元素都是圍繞這一宗旨所進行的補充

例子(1)上班活動圖

  早上起來,心裡鬥争是否去上班。如果決定睡懶覺,就打電話請假,繼續睡覺。如果決定上班,洗漱後出門上班。上班時要決定吃不吃早餐,吃就買早餐在途中食用,不吃就回公司再做打算。

UML之活動圖

例子(2)汽車租賃

UML之活動圖

例子(3)客戶下單

  使用者下單後,生成送貨清單時讓客戶選擇支付方式。若支付成功後,将收款清單和送貨位址交到供貨商,供貨商修改訂單狀态,如果送貨完成則訂單完成否則傳回供貨商。若支付逾時、或支付失敗,則結束。

UML之活動圖
UML之活動圖
UML之活動圖
上一篇: UML 活動圖
下一篇: UML活動圖