UML應(yīng)用RationalRose進(jìn)行狀態(tài)機(jī)分析與設(shè)計實例解析
本節(jié)向大家介紹一下UML應(yīng)用方面的知識,通過應(yīng)用RationalRose進(jìn)行狀態(tài)機(jī)分析與設(shè)計實例向大家介紹,內(nèi)容主要包括用戶的需求和分析狀態(tài)機(jī)等,相信通過本節(jié)的介紹大家對UML應(yīng)用有新的認(rèn)識。
UML應(yīng)用-應(yīng)用RationalRose進(jìn)行狀態(tài)機(jī)分析與設(shè)計實例
前言
本文結(jié)合一個具體的實例,試圖通過對一個對象狀態(tài)機(jī)的分析,畫出一個完整的狀態(tài)圖。筆者初學(xué)UML,大膽下筆此文,難免紕漏,以期能拋磚引玉,請您不吝批評指正。
狀態(tài)機(jī)用于對系統(tǒng)中的動態(tài)行為建模,一般使用一個狀態(tài)機(jī)對一個對象經(jīng)歷的狀態(tài)變化序列進(jìn)行建模,狀態(tài)是指對象在生命周期中的一個條件或狀況,把這個狀態(tài)機(jī)用UML圖的形式表現(xiàn)出來,就是一個狀態(tài)圖。
一個系統(tǒng)中會有很多對象,一般僅對狀態(tài)序列復(fù)雜的對象畫出狀態(tài)圖,從而進(jìn)行細(xì)致的分析。
UML應(yīng)用中用戶的需求
首先介紹一下我們要實現(xiàn)系統(tǒng)的需求,本系統(tǒng)是一個專家網(wǎng)絡(luò),主要包括三種資源。
第一,網(wǎng)絡(luò)服務(wù)的提供者。與專家合作,簽署協(xié)議。
第二,領(lǐng)域?qū)<?,通過專家網(wǎng)絡(luò)進(jìn)行專業(yè)問題解答,并可以通過網(wǎng)絡(luò)服務(wù)的提供者收取提問者的傭金。
第三,專家網(wǎng)絡(luò)的最終用戶,即提問者,可以通過專家網(wǎng)絡(luò)提出問題,并選擇相應(yīng)的領(lǐng)域?qū)<疫M(jìn)行回答。
此系統(tǒng)中的一個核心對象就是問題(Questions),我們要針對它的狀態(tài)機(jī)進(jìn)行分析,給出狀態(tài)圖。
一個問題將籍由系統(tǒng)中不同角色的行為而相應(yīng)改變自己的狀態(tài)。
起初一個問題由提問者添加到系統(tǒng)中,編輯完成后,選擇一個專家并提交,相應(yīng)的專家在登錄后可以查看到此問題,此時,提問者不能夠再對問題進(jìn)行修改。
一個問題在未提交給任何專家之前,提問者可以刪除此問題。但一旦提交或者已經(jīng)回答,就無法刪除。
專家可以選擇接受或者拒絕,如果專家拒絕此問題,則問題會重新發(fā)回給提問者,其可以在此編輯此問題,并選擇不同的專家進(jìn)行提問。當(dāng)選擇編輯此問題,則提問者可以在自己的視圖看到問題已經(jīng)被接受,并正在進(jìn)行回答,但提問者看不到正在編輯的問題解答內(nèi)容。
專家解答完成之后,把問題提交給提問者,提交之后,專家無法再進(jìn)行編輯。此時,提問者可以查看專家的解答內(nèi)容,如果認(rèn)可解答內(nèi)容,可以選擇接受,問題被歸檔。否則,可以提出拒絕解答內(nèi)容,拒絕的問題由網(wǎng)絡(luò)服務(wù)提供者進(jìn)行處理。如果提問者在問題解答后的一個確定的時間內(nèi)沒有作出明確的接受或者拒絕的回復(fù),則系統(tǒng)會自動認(rèn)為問題已經(jīng)解答完畢,并歸檔。
提問者在提出問題時,可以選擇問題的解答級別,分為簡單解答和詳細(xì)解答,在選擇專家時,可以查看專家對不同級別問題進(jìn)行解答所需要花費(fèi)的最長時間以及費(fèi)用。當(dāng)專家開始編輯此問題后,則計時開始,若沒有在規(guī)定的時間內(nèi)完成解答,則問題會過期,由網(wǎng)絡(luò)服務(wù)提供者確認(rèn)后重新發(fā)送給提問者。提問者可以重新進(jìn)行編輯提交。
如果提問者第一次提問要求為簡單解答,在專家回復(fù)后,提問者可以選擇要求更為詳細(xì)的回答,問題會被再次提交給同一個專家。
以上概要描述了主要的需求,通過需求我們需要分析出Question對象所要經(jīng)歷的狀態(tài)序列,以及觸發(fā)狀態(tài)轉(zhuǎn)換的事件和對象的動作。
UML應(yīng)用中分析狀態(tài)機(jī)
當(dāng)問題被提問者加入系統(tǒng),但還未提交給專家前,問題處于編輯狀態(tài),我們稱狀態(tài)為"Uploaded"。
當(dāng)提問者刪除了一個問題,則問題處于無效狀態(tài),我們稱狀態(tài)為"Removed"。
當(dāng)問題由提問者第一次提交給專家后,問題處于等待解答狀態(tài),我們稱狀態(tài)為"New"。
當(dāng)專家拒絕此問題后,問題狀態(tài)處于被拒絕狀態(tài),我們稱狀態(tài)為"Refusedbyexpert"。
當(dāng)專家開始編輯解答內(nèi)容,表示問題已經(jīng)被接受,正在進(jìn)行編輯,我們稱狀態(tài)為"Workinprogress"。
如果專家沒有及時解答完問題,問題會在規(guī)定的時間內(nèi)過期,我們稱狀態(tài)為"Expired"。
當(dāng)專家解答完問題,提交給提問者之后,問題等待提問者進(jìn)行Check,我們稱狀態(tài)為"Answered"。
如果提問者拒絕了專家的回答,則問題處于被拒絕狀態(tài),我們稱狀態(tài)為"RefusedbyAsker"。
如果提問者接受了專家的解答,則問題結(jié)束,我們稱狀態(tài)為"Finished"。
提問者還可以要求專家更詳細(xì)的回答,提問者再次向同一個專家提交更詳細(xì)的解答請求后,問題在此回到等待解答狀態(tài),與前面的"New"狀態(tài)進(jìn)行區(qū)分,我們稱狀態(tài)為"2th.New"。
此外還有兩個特殊的狀態(tài),就是初態(tài)和終態(tài)。
以上我們根據(jù)需求列舉出了問題對象在系統(tǒng)中經(jīng)歷的所有狀態(tài)可能,以及出發(fā)狀態(tài)轉(zhuǎn)換的條件。接下來我們在RationalRose中使用狀態(tài)圖畫出狀態(tài)的序列。本節(jié)關(guān)于UML應(yīng)用就簡單介紹到這里。
畫出狀態(tài)圖
狀態(tài)圖如下:
【編輯推薦】
- UML應(yīng)用的三種境界中你屬于哪一種
- 專家解析 圖書館管理系統(tǒng)中UML應(yīng)用
- 實例講解UML對象圖使用
- 軟件設(shè)計過程中面向?qū)ο骍ML技術(shù)如何使用
- UML建?;A(chǔ)教程