官术网_书友最值得收藏!

3.8 生成行為模型

建模表示方法只是表達(dá)了需求模型中的靜態(tài)元素,現(xiàn)在要把它轉(zhuǎn)換成系統(tǒng)或產(chǎn)品的動(dòng)態(tài)行為。為此,可以把系統(tǒng)行為表示成一個(gè)特定的事件和時(shí)間的函數(shù)。行為模型顯示了軟件如何對(duì)外部事件或激勵(lì)做出響應(yīng)。要生成模型,分析師必須按如下步驟進(jìn)行。

1)評(píng)估所有的用例,以保證完全理解系統(tǒng)內(nèi)的交互順序。

2)識(shí)別驅(qū)動(dòng)交互順序的事件,并理解這些事件如何與特定的對(duì)象相互關(guān)聯(lián)。

3)為每個(gè)用例生成序列。

4)創(chuàng)建系統(tǒng)狀態(tài)圖。

5)評(píng)審行為模型以驗(yàn)證準(zhǔn)確性和一致性。

用例表現(xiàn)了涉及參與者和系統(tǒng)的活動(dòng)順序。一般而言,只要系統(tǒng)和參與者之間交換了信息就發(fā)生事件。這里,事件不是被交換的信息,而是已交換信息的事實(shí)。

在行為建模的場(chǎng)合下,必須考慮兩種不同的狀態(tài)描述:①系統(tǒng)執(zhí)行其功能時(shí)每個(gè)類的狀態(tài);②系統(tǒng)執(zhí)行其功能時(shí)從外部觀察到的系統(tǒng)狀態(tài)。

類狀態(tài)具有被動(dòng)和主動(dòng)兩種特征。被動(dòng)狀態(tài)只是某個(gè)對(duì)象所有屬性的當(dāng)前狀態(tài)。一個(gè)對(duì)象的主動(dòng)狀態(tài)指的是對(duì)象進(jìn)行持續(xù)變換或處理時(shí)的當(dāng)前狀態(tài)。必然發(fā)生事件(有時(shí)被稱為觸發(fā)器)才能迫使對(duì)象做出從一個(gè)主動(dòng)狀態(tài)到另一個(gè)主動(dòng)狀態(tài)的轉(zhuǎn)移。

有兩種不同的行為表現(xiàn)形式。第一種顯示一個(gè)類如何改變基于外部事件的狀態(tài),第二種以時(shí)間函數(shù)的形式顯示軟件的行為。

1)分析類的狀態(tài)圖。UML狀態(tài)圖是一種行為模型,該圖為每個(gè)類呈現(xiàn)了主動(dòng)狀態(tài)和導(dǎo)致這些主動(dòng)狀態(tài)變化的事件(觸發(fā)器)。圖3-20舉例說明了SafeHome安全功能中ControlPanel類的狀態(tài)圖。

圖3-20中顯示的每個(gè)箭頭表示某個(gè)對(duì)象從一個(gè)主動(dòng)狀態(tài)轉(zhuǎn)移到另一個(gè)主動(dòng)狀態(tài)。每個(gè)箭頭上的標(biāo)注都體現(xiàn)了觸發(fā)狀態(tài)轉(zhuǎn)移的事件。盡管主動(dòng)狀態(tài)模型在提供對(duì)象的“生命歷史”信息方面非常有用,但也能提供另外一些信息以便加深理解對(duì)象的行為。除了說明導(dǎo)致轉(zhuǎn)移發(fā)生的事件外,分析師還可以說明守衛(wèi)Guard和動(dòng)作。守衛(wèi)是為了保證轉(zhuǎn)移發(fā)生而必須滿足的一個(gè)布爾條件。例如,圖3-20中從“讀取”狀態(tài)轉(zhuǎn)移到“比較”狀態(tài)的守衛(wèi)可以由檢查用例來確定。

978-7-111-52634-6-Chapter03-21.jpg

圖3-20 ControlPanel類的狀態(tài)圖

if(password input=4 digits)then compare to stored password

一般而言,轉(zhuǎn)移的守衛(wèi)通常依賴于某個(gè)對(duì)象的一個(gè)或多個(gè)屬性值。換句話說,守衛(wèi)依賴于對(duì)象的被動(dòng)狀態(tài)。

動(dòng)作是與狀態(tài)轉(zhuǎn)移同時(shí)發(fā)生的或者它作為狀態(tài)轉(zhuǎn)移的結(jié)果,而且通常動(dòng)作包含對(duì)象的一個(gè)或多個(gè)操作(職責(zé))。

2)順序圖。第二種表現(xiàn)行為的方式在UML中稱為順序圖,它表明事件如何引發(fā)從一個(gè)對(duì)象到另一個(gè)對(duì)象的轉(zhuǎn)移。一旦通過檢查用例確認(rèn)了事件,建模人員就創(chuàng)建了一個(gè)順序圖,即用時(shí)間函數(shù)表現(xiàn)如何引發(fā)事件從一個(gè)對(duì)象流到另一個(gè)對(duì)象。事實(shí)上,順序圖是用例的速記版本。它表現(xiàn)了導(dǎo)致行為從一個(gè)類流到另一個(gè)類的關(guān)鍵類和事件。

圖3-21給出了SafeHome安全功能的部分順序圖。每個(gè)箭頭代表了一個(gè)事件(源自一個(gè)用例),并說明了事件如何引導(dǎo)SafeHome對(duì)象之間的行為。時(shí)間縱向(向下)度量,窄的縱向矩形表示處理某個(gè)活動(dòng)所用的時(shí)間。沿著縱向的時(shí)間線可以展示出對(duì)象的狀態(tài)。

第一個(gè)事件“系統(tǒng)就緒”來自外部環(huán)境并把行為引導(dǎo)到對(duì)象Homeowner。房主輸入一個(gè)密碼,“查找請(qǐng)求”事件發(fā)送到System,在一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)中查找密碼并向ControlPanel(現(xiàn)在處在比較狀態(tài))返回(找到或沒有找到)結(jié)果。有效的密碼將促使系統(tǒng)產(chǎn)生“密碼正確”事件,該事件通過“激活請(qǐng)求”事件激活傳感器。最終,通過控制把“成功激活事件”返回到房主。

一旦完成了完整的順序圖,把所有導(dǎo)致系統(tǒng)對(duì)象之間轉(zhuǎn)移的事件整理為輸入事件集合和輸出事件集合(來自一個(gè)對(duì)象)。對(duì)于將要構(gòu)建的系統(tǒng)而言,這些信息對(duì)于創(chuàng)建系統(tǒng)的有效設(shè)計(jì)非常有用。

978-7-111-52634-6-Chapter03-22.jpg

圖3-21 SafeHome安全功能的順序圖(部分)

主站蜘蛛池模板: 江达县| 曲水县| 饶平县| 德钦县| 肃宁县| 株洲县| 牟定县| 丰宁| 葵青区| 大同市| 崇文区| 翼城县| 班玛县| 汉中市| 辰溪县| 太湖县| 繁峙县| 大港区| 府谷县| 岱山县| 家居| 岑溪市| 开化县| 澄江县| 石狮市| 洱源县| 肇州县| 个旧市| 友谊县| 阜康市| 崇左市| 南投市| 克东县| 邹城市| 临沧市| 永年县| 法库县| 湖口县| 张家界市| 鄂温| 临汾市|