狀態(tài)圖
1.什么是狀態(tài)圖
狀態(tài)圖是指描述一個(gè)實(shí)體基于事件反應(yīng)的動(dòng)態(tài)行為,顯示了該實(shí)體如何根據(jù)當(dāng)前所處的狀態(tài)對(duì)不同的事件做出反應(yīng)的。通常我們創(chuàng)建一個(gè)UML狀態(tài)圖是為了以下的研究目的:研究類、角色、子系統(tǒng)、或組件的復(fù)雜行為。
2.狀態(tài)圖的建模
建立狀態(tài)圖的步驟如下:
(1)確定上下文環(huán)境。狀態(tài)圖是立足于狀態(tài)遷移而進(jìn)行行為描述的。因此建立狀態(tài)圖時(shí)首先要搞清楚狀態(tài)的主體,確定狀態(tài)的上下文環(huán)境。常見的狀態(tài)主體有:類、用例、多個(gè)用例和整個(gè)系統(tǒng)。
(2)識(shí)別狀態(tài)。狀態(tài)主體會(huì)表現(xiàn)出一些穩(wěn)定的狀態(tài),它們需要被識(shí)別出來,并且標(biāo)記出其中的初始狀態(tài)和結(jié)束狀態(tài)集。在有些情況下,可能會(huì)不存在確定的初始狀態(tài)和結(jié)束狀態(tài)。
(3)建立狀態(tài)轉(zhuǎn)換。根據(jù)需求所描述的系統(tǒng)行為,建立各個(gè)穩(wěn)定狀態(tài)之間可能存在的轉(zhuǎn)換。
(4)補(bǔ)充詳細(xì)信息,完善狀態(tài)圖。添加轉(zhuǎn)換的觸發(fā)事件、轉(zhuǎn)換行為和監(jiān)護(hù)條件等詳細(xì)信息。
在有些情況下也可能會(huì)需要建立狀態(tài)圖的層次結(jié)構(gòu)或者進(jìn)行其他更加復(fù)雜的工作。
例如,針對(duì)ATM系統(tǒng)示例,可以按照下面的步驟建立取錢類的狀態(tài)圖:
(1)明確狀態(tài)圖的主體:取錢類。
(2)識(shí)別取錢類可能存在的穩(wěn)定狀態(tài):
①接收取錢請(qǐng)求狀態(tài)。
?、谏矸蒡?yàn)證狀態(tài)。
?、巯蜚y行信息系統(tǒng)提交取錢信息狀態(tài)。
?、芴幚砣″X交易狀態(tài)。
?、萏幚砩矸蒡?yàn)證錯(cuò)誤狀態(tài)。
?、尢幚砣″X成功狀態(tài)。
?、咴儐柺欠襁M(jìn)行其他交易。
其中,接收取錢請(qǐng)求為系統(tǒng)的初始狀態(tài)。
(3)建立狀態(tài)轉(zhuǎn)換??赡艿臓顟B(tài)轉(zhuǎn)換如表所示,其中如果第i行第J列的元素被標(biāo)記為y,則表示第i行的狀態(tài)可以轉(zhuǎn)換為第J列的狀態(tài)。
接收取錢請(qǐng)求 | 身份驗(yàn)證 | 提交信息 | 處理取錢交易 | 處理身份驗(yàn)證錯(cuò)誤 | 取錢交易失敗處理 | 詢問是否進(jìn)行其他交易 | |
接收取錢請(qǐng)求 | Y | Y | |||||
身份驗(yàn)證 | Y | Y | |||||
提交信息 | Y | Y | |||||
處理取錢交易 | Y | ||||||
處理身份驗(yàn)證錯(cuò)誤 | Y | ||||||
取錢交易失敗處理 | Y | ||||||
詢問是否進(jìn)行其他交易 | Y |
(4)在已識(shí)別狀態(tài)和轉(zhuǎn)換的基礎(chǔ)上,添加詳細(xì)的信息說明,建立狀態(tài)圖。