UML活動圖教案
單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,UML活動圖教案,1.描述工作流,訂貨處理活動圖,2.描述工程組織過程,建筑工程過程活動圖,3.描述算法流程,2 活動圖的圖形表示,在UML中,活動表示成圓角矩形。,如果一個活動引發(fā)下一個活動,兩個活動的圖標(biāo)之間用帶箭頭的直線連接。,活動圖也有起點和終點。,活動圖中還包括分支與合并、分叉與匯合等模型元素。分支與合并的圖標(biāo)和狀態(tài)圖中的判定的圖標(biāo)相同,而分叉與匯合則用一條加粗的線段表示。,活動起點,活動,分叉,匯合,活動終點,分支,合并,活動圖的圖形表示,3 活動圖的組成元素,組成UML的圖形元素:,動作狀態(tài)(,Action State,),活動狀態(tài)(,Activity State,),動作流(,Action Flow,),分支(,Branch,),與合并(,Merge,),分叉(,Fork,),與匯合(,Join,),泳道(,Swimlane,),對象流(,Object Flow,),動作狀態(tài),動作狀態(tài)是指執(zhí)行原子的、不可中斷的動作,并在此動作完成后通過完成轉(zhuǎn)換轉(zhuǎn)向另一個狀態(tài)的狀態(tài)。,動作狀態(tài)使用平滑的圓角矩形表示,動作狀態(tài)所表示的動作寫在圓角矩形內(nèi)部。,活動狀態(tài),活動狀態(tài)用于表達(dá)狀態(tài)機中的一個非原子的運行,活動狀態(tài)可以分解成其他子活動或動作狀態(tài).,活動狀態(tài)的表示圖標(biāo)也是平滑的圓角矩形,并可以在圖標(biāo)中給出入口動作和出口動作等信息。,活動狀態(tài)的內(nèi)部活動可以用另一個活動圖來表示。,和動作狀態(tài)不同,活動狀態(tài)可以有入口動作和出口動作,也可以有內(nèi)部轉(zhuǎn)移。,動作狀態(tài)是活動狀態(tài)的一個特例,如果某個活動狀態(tài)只包括一個動作,那么它就是一個動作狀態(tài)。,動作流,所有動作狀態(tài)之間的轉(zhuǎn)換流稱之為動作流。,活動圖的轉(zhuǎn)換也用帶箭頭的直線表示,箭頭的方向指向轉(zhuǎn)入的方向。,活動流,分支與合并,分支一般用于表示對象類所具有的條件行為。,條件行為用分支和合并表達(dá)。,在活動圖中分支與合并用空心小菱形表示。,一個分支有一個入轉(zhuǎn)換和兩個帶條件的出轉(zhuǎn)換,出轉(zhuǎn)換的條件應(yīng)當(dāng)是互斥的,這樣可以保證只有一條出轉(zhuǎn)換能夠被觸發(fā)。,一個合并有兩個帶條件的入轉(zhuǎn)換和一個出轉(zhuǎn)換,合并表示從對應(yīng)的分支開始的條件行為的結(jié)束。,分支與合并,分叉與匯合,分叉用于將動作流分為兩個或者多個并發(fā)運行的分支,而匯合則用于同步這些并發(fā)分支,以達(dá)到共同完成一項事務(wù)的目的。,分叉可以用來描述并發(fā)線程,每個分叉可以有一個輸入轉(zhuǎn)換和兩個或多個輸出轉(zhuǎn)換,每個轉(zhuǎn)換都可以是獨立的控制流。,匯合代表兩個或多個并發(fā)控制流同步發(fā)生,當(dāng)所有的控制流都達(dá)到匯合點后,控制才能繼續(xù)往下進(jìn)行。每個匯合可以有兩個或多個輸入轉(zhuǎn)換和一個輸出轉(zhuǎn)換。,分叉和匯合都使用加粗的水平線段表示。,分叉與匯合:用來對并發(fā)的控制流建模。,分叉用于將活動流分為兩個或多個并發(fā)運行的分支。,分叉,匯合,分叉,泳道,泳道將活動圖中的活動化分為若干組,并把每一組指定給負(fù)責(zé)這組活動的業(yè)務(wù)組織即對象。,泳道區(qū)分了負(fù)責(zé)活動的對象,明確地表示了哪些活動是由哪些對象進(jìn)行的。,每個活動只能明確地屬于一個泳道。,泳道用垂直實線繪出,垂直線分隔的區(qū)域就是泳道。在泳道上方可以給出泳道的名字或?qū)ο螅▽ο箢悾┑拿郑搶ο螅▽ο箢悾┴?fù)責(zé)泳道內(nèi)的全部活動。,泳道沒有順序,不同泳道中的活動既可以順序進(jìn)行也可以并發(fā)進(jìn)行,動作流和對象流允許穿越分隔線。,對象流,對象流是動作狀態(tài)或者活動狀態(tài)與對象之間的依賴關(guān)系,表示動作使用對象或者動作對對象的影響。,對象流中的對象特點:,一個對象可以由多個動作操縱。,一個動作輸出的對象可以作為另一個動作輸入的對象。,在活動圖中,同一個對象可以多次出現(xiàn),它的每一次出現(xiàn)表明該對象正處于對象生存期的不同時間點。,對象流用帶有箭頭的虛線表示。如果箭頭從動作狀態(tài)出發(fā)指向?qū)ο螅瑒t表示動作對對象施加了一定的影響。如果箭頭從對象指向動作狀態(tài),則表示該動作使用對象流所指向的對象。,對象流:反映活動與對象之間的依賴關(guān)系,表示對象對活動的作用或活動對對象的影響,用依賴關(guān)系表示。,對象流,1)如果箭頭從活動指向?qū)ο螅硎净顒訉ο蟮膭?chuàng)建、修改或撤銷等的影響;,2)如果箭頭從對象指向活動,表示該活動將使用所指向的對象。,對象下的方括號表示對象的狀態(tài),4 活動圖建模技術(shù),識別要對其工作流描述的,類或?qū)ο?。,確定工作流的初始狀態(tài)和終止?fàn)顟B(tài),明確工作流的邊界。,對,動作狀態(tài)或活動狀態(tài),建模。,對,動作流,建模。,對,對象流,建模。,對建立的模型進(jìn)行,精化和細(xì)化,。,用例圖,用例的事件流描述,1 “Deposit fund”(存款),1.1 簡單描述,本用例允許客戶借助Clerk存款到賬戶中。,1.2 前置條件(Pre-Conditions),在本用例開始前,Clerk必須登錄到系統(tǒng)中。,1.3 后置條件(Post-Conditions),如果用例成功,則客戶CustomerActor賬戶中存款的金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變。,1.4 擴充點(Extension Points),無。,1.5 事件流,1.5.1 基流(Basic Flow),當(dāng)CustomerActor想存錢到自己的賬戶時,要向Clerk提交存款單和現(xiàn)金,用例啟動。,(1)系統(tǒng)提示Clerk輸入用戶姓名、用戶的id號、賬號和所存款項的金額。,(2)Clerk輸入相關(guān)信息后提交,系統(tǒng)確認(rèn)賬戶是否存在并有效(當(dāng)用戶名、用戶id與賬戶的戶主信息一致,且賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1)。,(3)系統(tǒng)建立存款事件記錄,并更新賬戶的相關(guān)信息。,1.5.2 替代流(Alternative Flow),E-1:賬戶不存在或無效,顯示提示信息,用戶可以重新輸入或終止該用例。,用例的事件流描述,2 “Withdraw fund”(取款),2.1 簡單描述,本用例允許Clerk按照客戶的要求從客戶的賬戶中取款。,2.2 前置條件(Pre-Conditions),在本用例開始前,用戶必須登錄到系統(tǒng)中。,2.3 后置條件(Post-Conditions),如果用例成功,則客戶CustomerActor賬戶中存款的金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變。,2.4 擴充點(Extension Points),無。,2.5 事件流,2.5.1 基流(Basic Flow),當(dāng)Customer想從自己的賬戶中取錢時,要向Clerk提交取款單,用例啟動。,(1)系統(tǒng)提示Clerk輸入用戶姓名、用戶的id號、賬號和取款金額。,(2)Clerk輸入相關(guān)信息后提交,系統(tǒng)確認(rèn)賬戶是否存在并有效(當(dāng)用戶名、用戶id與賬戶的戶主信息一致,且賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1),賬戶中的存款金額是否足夠支付所取款項(E-2)。,(3)系統(tǒng)建立取款事件記錄,并更新賬戶的相關(guān)信息。,2.5.2 替代流(Alternative Flow),E-1:若賬戶不存在或無效,顯示提示信息,用戶可以重新輸入或終止該用例。,E-2:賬戶中的存款金額不足,顯示提示信息,用戶可以重新輸入金額或終止該用例。,用例的事件流描述,3 “Transfer fund”(轉(zhuǎn)賬),3.1 簡單描述,本用例允許Clerk按照客戶的要求將資金從一個賬戶轉(zhuǎn)到另一個賬戶。,3.2 前置條件(Pre-Conditions),在本用例開始前,用戶必須登錄到系統(tǒng)中。,3.3 后置條件(Post-Conditions),如果用例成功,則客戶CustomerActor賬戶中存款的金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變。,3.4 擴充點(Extension Points),無。,3.5 事件流,3.5.1 基流(Basic Flow),當(dāng)Customer要求轉(zhuǎn)賬時,用例啟動,(1)系統(tǒng)提示Clerk輸入用戶姓名、用戶的id號、賬戶號碼和轉(zhuǎn)賬金額。,(2)Clerk輸入相關(guān)信息后提交。(資金轉(zhuǎn)入賬戶所在的銀行只能在所提供的銀行列表中選擇)。,(3)系統(tǒng)確認(rèn)資金轉(zhuǎn)出賬戶是否存在并有效(當(dāng)用戶名、用戶id與賬戶的戶主信息一致,且賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1),資金轉(zhuǎn)出賬戶中的金額是否足夠支付所轉(zhuǎn)款項(E-2)。,(4)更新資金轉(zhuǎn)出賬戶的相關(guān)信息。,(5)為資金轉(zhuǎn)出賬戶建立轉(zhuǎn)賬記錄。,(6)存儲轉(zhuǎn)賬記錄。,(7)判斷資金轉(zhuǎn)入賬戶是否屬于同一銀行,,如果資金轉(zhuǎn)入賬戶與資金轉(zhuǎn)出賬戶屬于同一銀行,則執(zhí)行分支流S-1:在同一銀行的賬戶間轉(zhuǎn)賬。,如果資金轉(zhuǎn)入賬戶與資金轉(zhuǎn)出賬戶屬于不同銀行,則執(zhí)行分支流S-2:在不同銀行的賬戶間轉(zhuǎn)賬。,用例的事件流描述,3.5.2 分支流(Subflows),S-1:在同一銀行的賬戶間轉(zhuǎn)賬,(1)系統(tǒng)確認(rèn)資金轉(zhuǎn)入賬戶是否存在并有效(當(dāng)賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1)。,(2)更新資金轉(zhuǎn)入賬戶的相關(guān)信息。,(3)為資金轉(zhuǎn)入賬戶建立轉(zhuǎn)賬記錄。,(4)存儲轉(zhuǎn)賬記錄。,S-2:在不同銀行的賬戶間轉(zhuǎn)賬,(1)發(fā)送轉(zhuǎn)賬通知給另一個銀行。,3.4.3 替代流(Alternative Flow),E-1:賬戶不存在或無效,顯示提示信息,用戶可以重新輸入或終止該用例。,E-2:賬戶中的存款金額不足,顯示提示信息,用戶可以修改所轉(zhuǎn)款項的金額或終止該用例。,使用ROSE創(chuàng)建活動圖,要創(chuàng)建活動圖,首先展開“Logic View”菜單項,然后在“Logic View”圖標(biāo)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“New”下的“Activity Diagram”選項建立新的活動圖。,在狀態(tài)圖建立以后,雙擊狀態(tài)圖圖標(biāo),會出現(xiàn)狀態(tài)圖繪制區(qū)域,活動圖工具條,選擇工具,文本,注釋,狀態(tài),初始狀態(tài),終止?fàn)顟B(tài),狀態(tài)轉(zhuǎn)換,反身轉(zhuǎn)換,活動,水平同步條,垂直同步條,判斷,泳道,活動圖中增加模型元素,活動圖也有初始和終止?fàn)顟B(tài)。初始狀態(tài)在活動圖中用實心圓表示,終止?fàn)顟B(tài)在活動圖中用含有實心圓的空心圓表示。鼠標(biāo)左鍵點擊活動圖工具欄中初始狀態(tài)圖標(biāo),然后在繪制區(qū)域要繪制的地方單擊鼠標(biāo)左鍵就可以創(chuàng)建初始狀態(tài)。終止?fàn)顟B(tài)的創(chuàng)建方法和初始狀態(tài)相同。,創(chuàng)建初始和終止?fàn)顟B(tài),要創(chuàng)建動作狀態(tài),首先點擊活動圖工具欄中的“Activity”圖標(biāo),然后在繪制區(qū)域要繪制動作狀態(tài)的地方單擊鼠標(biāo)左鍵。,創(chuàng)建動作狀態(tài),修改動作狀態(tài)的屬性信息。首先雙擊動作狀態(tài)圖標(biāo),在彈出的對話框“General”選項卡里進(jìn)行如名稱“Name”和文檔說明“Documentation”等屬性的設(shè)置。,活動規(guī)范,顯示動作類型和動作表達(dá)式,要增加操作,右擊選擇Insert,自動添加類型為Entry的操作,雙擊此處,打開動作規(guī)范窗口,動作規(guī)范窗口,選擇動作執(zhí)行的時機,添加對象與對象流,(1)將對象與對象流按紐顯示在繪圖工作欄中,右擊繪圖工具欄空白處,選擇“Customize”,彈出,如下窗口,將這兩項添加到繪圖工具欄。,(2)添加與設(shè)置對象,a.使用此按紐添加對象,結(jié)果為:,雙擊添加的對象,彈出右側(cè)窗口,在name輸入對象名,在state處選擇,彈出如下窗口,在name處輸入狀態(tài)名后返回,注意:,在同一步活動圖中,同名的對象只能通過復(fù)制來創(chuàng)建,活動圖的應(yīng)用,為工作流建模,為操作建模,The End,謝謝您的聆聽!,期待您的指正!,