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