




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十章面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅幕具^程需求陳述建立對(duì)象模型建立動(dòng)態(tài)模型建立功能模型定義服務(wù)
第十章面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅幕具^程1面向?qū)ο蠓治鯫OA(Object-OrientedAnalysis)的目標(biāo)是完成對(duì)所求解問題的分析,確定系統(tǒng)“作什么”,并建立系統(tǒng)的模型。
面向?qū)ο蠓治龅幕具^程1.概述OOA的基本任務(wù)
運(yùn)用面向?qū)ο蟮姆椒?對(duì)問題域和系統(tǒng)責(zé)任進(jìn)行分析和理解,找出描述它們的類和對(duì)象,定義其屬性和操作,及其結(jié)構(gòu)、靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系。面向?qū)ο蠓治鯫OA(Object-Oriented2通常,面向?qū)ο蠓治鲞^程從分析陳述用戶需求的文件開始??赡苡捎脩?包括出資開發(fā)該軟件的業(yè)主代表及最終用戶)單方面寫出需求陳述,也可能由系統(tǒng)分析員配合用戶,共同寫出需求陳述。通常,面向?qū)ο蠓治鲞^程從分析陳述用戶需求的文件開始??赡苡捎?OOA面臨的問題:1、問題域和系統(tǒng)責(zé)任問題問題域(problemdomain)—被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域。系統(tǒng)責(zé)任(systemresponsibilities)—所開發(fā)的系統(tǒng)應(yīng)具備的職能。2、交流問題(各類人員之間的要求)3、需求的不斷變化(用戶、競(jìng)爭(zhēng)因素、經(jīng)費(fèi)、技術(shù)因素)OOA面臨的問題:4獲取用戶基本需求標(biāo)識(shí)類和對(duì)象定義類的結(jié)構(gòu)和層次表示類(對(duì)象)間的關(guān)系為對(duì)象行為建模OOA分析過程獲取用戶基本需求標(biāo)識(shí)類和對(duì)象定義類的結(jié)構(gòu)和層次表示類(對(duì)象)51、獲取用戶基本需求
用戶與開發(fā)者之間進(jìn)行充分交流,常用Usercase(用例)來收集和描述用戶的需求。即先標(biāo)識(shí)使用該系統(tǒng)的不同的行為者(actor)。2、標(biāo)識(shí)類和對(duì)象標(biāo)識(shí)類與對(duì)象是一致的。在確定系統(tǒng)的用例后,可標(biāo)識(shí)類及類的屬性和操作。確定最終對(duì)象
可根據(jù)以下原則確定:需要保留的信息,需要的服務(wù),具有多個(gè)屬性,具有公共屬性及操作。從問題域或用例描述入手,發(fā)現(xiàn)對(duì)象。
對(duì)象可能的形式有:外部實(shí)體、事物、發(fā)生的事件、角色、組織單位、場(chǎng)所、構(gòu)造物等。1、獲取用戶基本需求2、標(biāo)識(shí)類和對(duì)象確定最終對(duì)象從問題域或用6標(biāo)識(shí)屬性
從本質(zhì)上講,屬性定義了對(duì)象。可從問題的陳述中或通過對(duì)類的理解而標(biāo)識(shí)出屬性。定義操作
操作定義了對(duì)象的行為并以某種方式修改對(duì)象的屬性。操作分為:對(duì)數(shù)據(jù)的操作,計(jì)算操作,控制操作。3、定義類的結(jié)構(gòu)和層次類的結(jié)構(gòu)有:一般—特殊(generalization-specialization)結(jié)構(gòu)整體—部分(whole-part)結(jié)構(gòu)標(biāo)識(shí)屬性定義操作3、定義類的結(jié)構(gòu)和層次7構(gòu)成類圖的元素所表達(dá)的模型信息,分為三個(gè)層次:
對(duì)象層—給出系統(tǒng)中所有反映問題域和系統(tǒng)責(zé)任的對(duì)象。
特征層—給出類(對(duì)象)的內(nèi)部特征,即類的屬性和操作。
關(guān)系層—給出各類(對(duì)象)之間的關(guān)系,包括繼承、組裝、一般—特殊、整體—部分、屬性的靜態(tài)依賴關(guān)系,操作的動(dòng)態(tài)依賴關(guān)系。對(duì)象層特征層關(guān)系層圖4.8OOA基本模型用“對(duì)象-關(guān)系模型”描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。5、建立對(duì)象-行為模型描述了系統(tǒng)的動(dòng)態(tài)行為。4、建立類(對(duì)象)間的關(guān)系構(gòu)成類圖的元素所表達(dá)的模型信息,分為三個(gè)層次:對(duì)象層特征8面向?qū)ο蠼5玫降哪P桶到y(tǒng)的三個(gè)要素,即靜態(tài)結(jié)構(gòu)(對(duì)象模型)、交互次序(動(dòng)態(tài)模型)和數(shù)據(jù)變換(功能模型)。解決的問題不同,這三個(gè)子模型的重要程度也不同:幾乎解決任何一個(gè)問題,都需要從客觀世界實(shí)體及實(shí)體間相互關(guān)系抽象出極有價(jià)值的對(duì)象模型;當(dāng)問題涉及交互作用和時(shí)序時(shí)(例如,用戶界面及過程控制等),動(dòng)態(tài)模型是重要的;解決運(yùn)算量很大的問題(例如,高級(jí)語言編譯、科學(xué)與工程計(jì)算等),則涉及重要的功能模型。動(dòng)態(tài)模型和功能模型中都包含了對(duì)象模型中的操作(即服務(wù)或方法)。2.三個(gè)子模型與五個(gè)層次面向?qū)ο蠼5玫降哪P桶到y(tǒng)的三個(gè)要素,即靜態(tài)結(jié)構(gòu)9復(fù)雜問題(大型系統(tǒng))的對(duì)象模型通常由下述5個(gè)層次組成:主題層、類與對(duì)象層、結(jié)構(gòu)層、屬性層和服務(wù)層。上述5個(gè)層次對(duì)應(yīng)著在面向?qū)ο蠓治鲞^程中建立對(duì)象模型的5項(xiàng)主要活動(dòng):找出類與對(duì)象,識(shí)別結(jié)構(gòu),識(shí)別主題,定義屬性,定義服務(wù)。復(fù)雜問題(大型系統(tǒng))的對(duì)象模型通常由下述5個(gè)層次組成:主題10需求陳述的內(nèi)容包括:?jiǎn)栴}范圍,功能需求,性能需求,應(yīng)用環(huán)境及假設(shè)條件等。總之,需求陳述應(yīng)該闡明“做什么”而不是“怎樣做”。它應(yīng)該描述用戶的需求而不是提出解決問題的方法。應(yīng)該指出哪些是系統(tǒng)必要的性質(zhì),哪些是任選的性質(zhì)。應(yīng)該避免對(duì)設(shè)計(jì)策略施加過多的約束,也不要描述系統(tǒng)的內(nèi)部結(jié)構(gòu),因?yàn)檫@樣做將限制實(shí)現(xiàn)的靈活性。書寫需求陳述時(shí),要盡力做到語法正確,而且應(yīng)該慎重選用名詞、動(dòng)詞、形容詞和同義詞。需求陳述1.書寫要點(diǎn)需求陳述的內(nèi)容包括:?jiǎn)栴}范圍,功能需求,性能需求,11系統(tǒng)分析員必須把需求與實(shí)現(xiàn)策略區(qū)分開,后者是一類偽需求。需求陳述可簡(jiǎn)可繁。對(duì)人們熟悉的傳統(tǒng)問題的陳述,可能相當(dāng)詳細(xì),相反,對(duì)陌生領(lǐng)域項(xiàng)目的需求,開始時(shí)可能寫不出具體細(xì)節(jié)。隨后進(jìn)行的面向?qū)ο蠓治龅哪康?,就是全面深入地理解問題域和用戶的真實(shí)需求,建立起問題域的精確模型。系統(tǒng)分析員必須與用戶及領(lǐng)域?qū)<颐芮信浜蠀f(xié)同工作,共同提煉和整理用戶需求。在這個(gè)過程中,很可能需要快速建立起原型系統(tǒng),以便與用戶更有效地交流。系統(tǒng)分析員必須把需求與實(shí)現(xiàn)策略區(qū)分開,后者是一類偽需求。12自動(dòng)取款機(jī)(ATM)系統(tǒng)實(shí)例。2.例子自動(dòng)取款機(jī)(ATM)系統(tǒng)實(shí)例。2.例子13需求陳述如下:
某銀行擬開發(fā)一個(gè)自動(dòng)取款機(jī)系統(tǒng),它是一個(gè)由自動(dòng)取款機(jī)、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)。ATM和中央計(jì)算機(jī)由總行投資購(gòu)買。總行擁有多臺(tái)ATM,分別設(shè)在全市各主要街道上。分行負(fù)責(zé)提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及分行下屬的各個(gè)儲(chǔ)蓄所內(nèi)。該系統(tǒng)的軟件開發(fā)成本由各個(gè)分行分?jǐn)?。需求陳述如下?4銀行柜員使用柜員終端處理儲(chǔ)戶提交的儲(chǔ)蓄事務(wù)。儲(chǔ)戶可以用現(xiàn)金或支票向自己擁有的某個(gè)賬戶內(nèi)存款或開新賬戶。儲(chǔ)戶也可以從自己的賬戶中取款。通常,一個(gè)儲(chǔ)戶可能擁有多個(gè)賬戶。柜員負(fù)責(zé)把儲(chǔ)戶提交的存款或取款事務(wù)輸進(jìn)柜員終端,接收儲(chǔ)戶交來的現(xiàn)金或支票,或付給儲(chǔ)戶現(xiàn)金。柜員終端與相應(yīng)的分行計(jì)算機(jī)通信,分行計(jì)算機(jī)具體處理針對(duì)某個(gè)賬戶的事務(wù)并且維護(hù)賬戶。擁有銀行賬戶的儲(chǔ)戶有權(quán)申請(qǐng)領(lǐng)取現(xiàn)金兌換卡。使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息(例如,某個(gè)指定賬戶上的余額)。將來可能還要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。銀行柜員使用柜員終端處理儲(chǔ)戶提交的儲(chǔ)蓄事務(wù)。儲(chǔ)戶可以用現(xiàn)金或15所謂現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號(hào)。分行代碼惟一標(biāo)識(shí)總行下屬的一個(gè)分行,卡號(hào)確定了這張卡可以訪問哪些賬戶。通常,一張卡可以訪問儲(chǔ)戶的若干個(gè)賬戶,但是不一定能訪問這個(gè)儲(chǔ)戶的全部賬戶。每張現(xiàn)金兌換卡僅屬于一個(gè)儲(chǔ)戶所有,但是,同一張卡可能有多個(gè)副本,因此,必須考慮同時(shí)在若干臺(tái)ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說,系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問。所謂現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號(hào)。分行16當(dāng)用戶把現(xiàn)金兌換卡插入ATM之后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。首先,ATM要求用戶輸入密碼,接下來ATM把從這張卡上讀到的信息以及用戶輸入的密碼傳給中央計(jì)算機(jī),請(qǐng)求中央計(jì)算機(jī)核對(duì)這些信息并處理這次事務(wù)。中央計(jì)算機(jī)根據(jù)卡上的分行代碼確定這次事務(wù)與分行的對(duì)應(yīng)關(guān)系,并且委托相應(yīng)的分行計(jì)算機(jī)驗(yàn)證用戶密碼。如果用戶輸入的密碼是正確的,ATM就要求用戶選擇事務(wù)類型(取款、查詢等)。當(dāng)用戶選擇取款時(shí),ATM請(qǐng)求用戶輸入取款額。最后,ATM從現(xiàn)金出口吐出現(xiàn)金,并且打印出賬單交給用戶。當(dāng)用戶把現(xiàn)金兌換卡插入ATM之后,ATM就與用戶交互,以獲取17面向?qū)ο蠓治鍪滓墓ぷ?,是建立問題域的對(duì)象模型。這個(gè)模型描述了現(xiàn)實(shí)世界中的“類與對(duì)象”以及它們之間的關(guān)系,表示了目標(biāo)系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。靜態(tài)數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)用細(xì)節(jié)依賴較少,比較容易確定;當(dāng)用戶的需求變化時(shí),靜態(tài)數(shù)據(jù)結(jié)構(gòu)相對(duì)來說比較穩(wěn)定。因此,用面向?qū)ο蠓椒ㄩ_發(fā)絕大多數(shù)軟件時(shí),都首先建立對(duì)象模型,然后再建立另外兩個(gè)子模型。需求陳述、應(yīng)用領(lǐng)域的專業(yè)知識(shí)以及關(guān)于客觀世界的常識(shí),是建立對(duì)象模型時(shí)的主要信息來源。建立對(duì)象模型面向?qū)ο蠓治鍪滓墓ぷ?,是建立問題域的對(duì)象模18類與對(duì)象是在問題域中客觀存在的,系統(tǒng)分析員的主要任務(wù)就是通過分析找出這些類與對(duì)象。首先找出所有候選的類與對(duì)象,然后從候選的類與對(duì)象中篩選掉不正確的或不必要的。1.確定類與對(duì)象類與對(duì)象是在問題域中客觀存在的,系統(tǒng)分析員的主要任務(wù)191、名詞識(shí)別法識(shí)別問題域中的實(shí)體,實(shí)體的描述通常用名詞、名詞短語、名詞性代詞的形式出現(xiàn)。用指定語言對(duì)系統(tǒng)進(jìn)行描述;從系統(tǒng)描述中標(biāo)識(shí)名詞、名詞短語、名詞性代詞;識(shí)別確定(取、舍)類。1、名詞識(shí)別法202、系統(tǒng)實(shí)體識(shí)別法不關(guān)心系統(tǒng)的運(yùn)作流程及實(shí)體之間的通信狀態(tài),而只考慮系統(tǒng)中的人員、組織、地點(diǎn)、表格、報(bào)告等實(shí)體,經(jīng)過分析將他們識(shí)別為類(或?qū)ο螅?。被?biāo)識(shí)的實(shí)體有:系統(tǒng)需要存儲(chǔ)、分析、處理的信息實(shí)體、系統(tǒng)內(nèi)部需要處理的設(shè)備、與系統(tǒng)交互的外部系統(tǒng)、系統(tǒng)相關(guān)人員、系統(tǒng)的組織實(shí)體。2、系統(tǒng)實(shí)體識(shí)別法211)找出候選的類與對(duì)象對(duì)象是對(duì)問題域中有意義的事物的抽象,它們既可能是物理實(shí)體,也可能是抽象概念。具體地說,大多數(shù)客觀事物可分為下述5類:(1)可感知的物理實(shí)體,例如,飛機(jī)、汽車、書、房屋等等。(2)人或組織的角色,例如,醫(yī)生、教師、雇主、雇員、計(jì)算機(jī)系、財(cái)務(wù)處等等。(3)應(yīng)該記憶的事件,例如,飛行、演出、訪問、交通事故等等。1)找出候選的類與對(duì)象22(4)兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì),例如,購(gòu)買、納稅、結(jié)婚等等。(5)需要說明的概念,例如,政策、保險(xiǎn)政策、版權(quán)法等等。在分析所面臨的問題時(shí),可以參照上列5類常見事物,找出在當(dāng)前問題域中的候選類與對(duì)象。(4)兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì),23另一種更簡(jiǎn)單的分析方法,是所謂的非正式分析。這種分析方法以用自然語言書寫的需求陳述為依據(jù),把陳述中的名詞作為類與對(duì)象的候選者,用形容詞作為確定屬性的線索,把動(dòng)詞作為服務(wù)(操作)的候選者。下面以ATM系統(tǒng)為例,說明非正式分析過程:從需求陳述中找出下列名詞,可以把它們作為類與對(duì)象的初步的候選者:另一種更簡(jiǎn)單的分析方法,是所謂的非正式分析。這種24銀行,自動(dòng)取款機(jī)(ATM),系統(tǒng),中央計(jì)算機(jī),分行計(jì)算機(jī),柜員終端,網(wǎng)絡(luò),總行,分行,軟件,成本,市,街道,營(yíng)業(yè)廳,儲(chǔ)蓄所,柜員,儲(chǔ)戶,現(xiàn)金,支票,賬戶,事務(wù),現(xiàn)金兌換卡,余額,磁卡,分行代碼,卡號(hào),用戶,副本,信息,密碼,類型,取款額,賬單,訪問。通常,在需求陳述中不會(huì)一個(gè)不漏地寫出問題域中所有有關(guān)的類與對(duì)象,因此,分析員應(yīng)該根據(jù)領(lǐng)域知識(shí)或常識(shí)進(jìn)一步把隱含的類與對(duì)象提取出來。例如,在ATM系統(tǒng)的需求陳述中雖然沒寫“通信鏈路”和“事務(wù)日志”,但是,根據(jù)領(lǐng)域知識(shí)和常識(shí)可以知道,在ATM系統(tǒng)中應(yīng)該包含這兩個(gè)實(shí)體。銀行,自動(dòng)取款機(jī)(ATM),系統(tǒng),中央計(jì)算機(jī),252)篩選出正確的類與對(duì)象非正式分析僅僅幫助我們找到一些候選的類與對(duì)象,接下來應(yīng)該嚴(yán)格考察每個(gè)候選對(duì)象,從中去掉不正確的或不必要的,僅保留確實(shí)應(yīng)該記錄其信息或需要其提供服務(wù)的那些對(duì)象。篩選時(shí)主要依據(jù)下列標(biāo)準(zhǔn),刪除不正確或不必要的類與對(duì)象:(1)冗余以ATM系統(tǒng)為例,上面用非正式分析法得出了34個(gè)候選的類,其中儲(chǔ)戶與用戶,現(xiàn)金兌換卡與磁卡及副本分別描述了相同的兩類信息,因此,應(yīng)該去掉“用戶”、“磁卡”、“副本”等冗余的類,僅保留“儲(chǔ)戶”和“現(xiàn)金兌換卡”這兩個(gè)類。2)篩選出正確的類與對(duì)象(1)冗余26(2)無關(guān)以ATM系統(tǒng)為例,這個(gè)系統(tǒng)并不處理分?jǐn)傑浖_發(fā)成本的問題,而且ATM和柜員終端放置的地點(diǎn)與本軟件的關(guān)系也不大。因此,應(yīng)該去掉候選類“成本”、“市”、“街道”、“營(yíng)業(yè)廳”和“儲(chǔ)蓄所”。(3)籠統(tǒng)以ATM系統(tǒng)為例,“銀行”實(shí)際指總行或分行,“訪問”在這里實(shí)際指事務(wù),“信息”的具體內(nèi)容在需求陳述中隨后就指明了。此外還有一些籠統(tǒng)含糊的名詞??傊?,在本例中應(yīng)該去掉“銀行”、“網(wǎng)絡(luò)”、“系統(tǒng)”、“軟件”、“信息”、“訪問”等候選類。(2)無關(guān)27(4)屬性在ATM系統(tǒng)的例子中,“現(xiàn)金”、“支票”、“取款額”、“賬單”、“余額”、“分行代碼”、“卡號(hào)”、“密碼”、“類型”等,實(shí)際上都應(yīng)該作為屬性對(duì)待。(5)操作例如,談到電話時(shí)通常把“撥號(hào)”當(dāng)作動(dòng)詞,當(dāng)構(gòu)造電話模型時(shí)確實(shí)應(yīng)該把它作為一個(gè)操作,而不是一個(gè)類。但是,在開發(fā)電話的自動(dòng)記賬系統(tǒng)時(shí),“撥號(hào)”需要有自己的屬性(例如日期、時(shí)間、受話地點(diǎn)等),因此應(yīng)該把它作為一個(gè)類??傊?,本身具有屬性需獨(dú)立存在的操作,應(yīng)該作為類與對(duì)象。(4)屬性28(6)實(shí)現(xiàn)在ATM系統(tǒng)的例子中,“事務(wù)日志”無非是對(duì)一系列事務(wù)的記錄,它的確切表示方式是面向?qū)ο笤O(shè)計(jì)的議題;“通信鏈路”在邏輯上是一種聯(lián)系,在系統(tǒng)實(shí)現(xiàn)時(shí)它是關(guān)聯(lián)類的物理實(shí)現(xiàn)??傊?,應(yīng)該暫時(shí)去掉“事務(wù)日志”和“通信鏈路”這兩個(gè)類,在設(shè)計(jì)或?qū)崿F(xiàn)時(shí)再考慮它們。綜上所述,在ATM系統(tǒng)的例子中,經(jīng)過初步篩選,剩下下列類與對(duì)象:ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)、柜員終端、總行、分行、柜員、儲(chǔ)戶、賬戶、事務(wù)、現(xiàn)金兌換卡。(6)實(shí)現(xiàn)29兩個(gè)或多個(gè)類之間的相互依賴關(guān)系就是關(guān)聯(lián),關(guān)聯(lián)通常用描述性動(dòng)詞和動(dòng)詞詞組表示2.確定關(guān)聯(lián)1)初步確定關(guān)聯(lián)以ATM系統(tǒng)為例,經(jīng)過分析初步確定出下列關(guān)聯(lián):(1)直接提取動(dòng)詞短語得出的關(guān)聯(lián)ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò)??傂袚碛卸嗯_(tái)ATM。ATM設(shè)在主要街道上。分行提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及儲(chǔ)蓄所內(nèi)。兩個(gè)或多個(gè)類之間的相互依賴關(guān)系就是關(guān)聯(lián),關(guān)聯(lián)通常用描述性動(dòng)詞30分行分?jǐn)傑浖_發(fā)成本。儲(chǔ)戶擁有賬戶。分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)。分行計(jì)算機(jī)維護(hù)賬戶。柜員終端與分行計(jì)算機(jī)通信。柜員輸入針對(duì)賬戶的事務(wù)。ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。分行分?jǐn)傑浖_發(fā)成本。31(2)需求陳述中隱含的關(guān)聯(lián)總行由各個(gè)分行組成。分行保管賬戶??傂袚碛兄醒胗?jì)算機(jī)。系統(tǒng)維護(hù)事務(wù)日志。系統(tǒng)提供必要的安全性。儲(chǔ)戶擁有現(xiàn)金兌換卡。(3)根據(jù)問題域知識(shí)得出的關(guān)聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。(2)需求陳述中隱含的關(guān)聯(lián)322)篩選篩選時(shí)主要根據(jù)下述標(biāo)準(zhǔn)刪除候選的關(guān)聯(lián):(1)已刪去的類之間的關(guān)聯(lián)以ATM系統(tǒng)為例,由于已經(jīng)刪去了“系統(tǒng)”、“網(wǎng)絡(luò)”、“市”、“街道”、“成本”、“軟件”、“事務(wù)日志”、“現(xiàn)金”、“營(yíng)業(yè)廳”、“儲(chǔ)蓄所”、“賬單”等候選類,因此,與這些類有關(guān)的下列8個(gè)關(guān)聯(lián)也應(yīng)該刪去:①ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò)。②ATM設(shè)在主要街道上。③分行分?jǐn)傑浖_發(fā)成本。④系統(tǒng)提供必要的安全性。2)篩選33(2)與問題無關(guān)的或應(yīng)在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)應(yīng)該把處在本問題域之外的關(guān)聯(lián)或與實(shí)現(xiàn)密切相關(guān)的關(guān)聯(lián)刪去。例如,在ATM系統(tǒng)的例子中,“系統(tǒng)處理并發(fā)的訪問”并沒有標(biāo)明對(duì)象之間的新關(guān)聯(lián),它只不過提醒我們?cè)趯?shí)現(xiàn)階段需要使用實(shí)現(xiàn)并發(fā)訪問的算法,以處理并發(fā)事務(wù)。⑤系統(tǒng)維護(hù)事務(wù)日志。⑥ATM吐出現(xiàn)金。⑦ATM打印賬單。⑧柜員終端設(shè)在分行營(yíng)業(yè)廳及儲(chǔ)蓄所內(nèi)。(2)與問題無關(guān)的或應(yīng)在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)⑤系統(tǒng)維護(hù)事務(wù)34(3)瞬時(shí)事件以ATM系統(tǒng)為例,“ATM讀現(xiàn)金兌換卡”描述了ATM與用戶交互周期中的一個(gè)動(dòng)作,它并不是ATM與現(xiàn)金兌換卡之間的固有關(guān)系,因此應(yīng)該刪去。類似地,還應(yīng)該刪去“ATM與用戶交互”這個(gè)候選的關(guān)聯(lián)。如果用動(dòng)作表述的需求隱含了問題域的某種基本結(jié)構(gòu),則應(yīng)該用適當(dāng)?shù)膭?dòng)詞詞組重新表示這個(gè)關(guān)聯(lián)。例如,在ATM系統(tǒng)的需求陳述中,“中央計(jì)算機(jī)確定事務(wù)與分行的對(duì)應(yīng)關(guān)系”隱含了結(jié)構(gòu)上“中央計(jì)算機(jī)與分行通信”的關(guān)系。(3)瞬時(shí)事件35(4)三元關(guān)聯(lián)在ATM系統(tǒng)的例子中,“柜員輸入針對(duì)賬戶的事務(wù)”可以分解成“柜員輸入事務(wù)”和“事務(wù)修改賬戶”這樣兩個(gè)二元關(guān)聯(lián)。而“分行計(jì)算機(jī)處理針對(duì)賬戶的事務(wù)”也可以做類似的分解?!癆TM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息”這個(gè)候選的關(guān)聯(lián),實(shí)際上隱含了“ATM與中央計(jì)算機(jī)通信”和“在ATM上輸入事務(wù)”這兩個(gè)二元關(guān)聯(lián)。(4)三元關(guān)聯(lián)36(5)派生關(guān)聯(lián)例如,在ATM系統(tǒng)的例子中,“總行擁有多臺(tái)ATM”實(shí)質(zhì)上是“總行擁有中央計(jì)算機(jī)”和“ATM與中央計(jì)算機(jī)通信”這兩個(gè)關(guān)聯(lián)組合的結(jié)果。而“分行計(jì)算機(jī)維護(hù)賬戶”的實(shí)際含義是“分行保管賬戶”和“事務(wù)修改賬戶”。3)進(jìn)一步完善應(yīng)該進(jìn)一步完善經(jīng)篩選后余下的關(guān)聯(lián),通常從下述幾個(gè)方面進(jìn)行改進(jìn):(5)派生關(guān)聯(lián)37(1)正名例如,“分行提供分行計(jì)算機(jī)和柜員終端”不如改為“分行擁有分行計(jì)算機(jī)”和“分行擁有柜員終端”。(2)分解例如,在ATM系統(tǒng)中,應(yīng)該把“事務(wù)”分解成“遠(yuǎn)程事務(wù)”和“柜員事務(wù)”。(3)補(bǔ)充例如,在ATM系統(tǒng)中把“事務(wù)”分解成上述兩類之后,需要補(bǔ)充“柜員輸入柜員事務(wù)”、“柜員事務(wù)輸進(jìn)柜員終端”、“在ATM上輸入遠(yuǎn)程事務(wù)”和“遠(yuǎn)程事務(wù)由現(xiàn)金兌換卡授權(quán)”等關(guān)聯(lián)。(1)正名38(4)標(biāo)明重?cái)?shù)下圖是經(jīng)上述分析過程之后得出的ATM系統(tǒng)原始的類圖。圖2銀行網(wǎng)絡(luò)系統(tǒng)的初始對(duì)象類圖總行分行帳戶儲(chǔ)戶中央計(jì)算機(jī)ATM遠(yuǎn)程事務(wù)分行計(jì)算機(jī)柜員現(xiàn)金卡柜員終端柜員事務(wù)通信通信擁有擁有擁有雇傭涉及涉及訪問授權(quán)擁有擁有擁有組成錄入輸入輸入(4)標(biāo)明重?cái)?shù)圖2銀行網(wǎng)絡(luò)系統(tǒng)的初始對(duì)象類圖總行分行帳39在開發(fā)大型、復(fù)雜系統(tǒng)的過程中,為了降低復(fù)雜程度,人們習(xí)慣于把系統(tǒng)再進(jìn)一步劃分成幾個(gè)不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干個(gè)范疇。在開發(fā)很小的系統(tǒng)時(shí),可能根本無須引入主題層;對(duì)于含有較多對(duì)象的系統(tǒng),則往往先識(shí)別出類與對(duì)象和關(guān)聯(lián),然后劃分主題,并用它作為指導(dǎo)開發(fā)者和用戶觀察整個(gè)模型的一種機(jī)制;對(duì)于規(guī)模極大的系統(tǒng),則首先由高級(jí)分析員粗略地識(shí)別對(duì)象和關(guān)聯(lián),然后初步劃分主題,經(jīng)進(jìn)一步分析,對(duì)系統(tǒng)結(jié)構(gòu)有更深入的了解之后,再進(jìn)一步修改和精煉主題。3.劃分主題在開發(fā)大型、復(fù)雜系統(tǒng)的過程中,為了降低復(fù)雜程度,人們習(xí)慣于把40應(yīng)該按問題領(lǐng)域而不是用功能分解方法來確定主題。此外,應(yīng)該按照使不同主題內(nèi)的對(duì)象相互間依賴和交互最少的原則來確定主題。以ATM系統(tǒng)為例,可以把它劃分成總行(包含總行和中央計(jì)算機(jī)這兩個(gè)類)、分行(包含分行、分行計(jì)算機(jī)、柜員終端、柜員事務(wù)、柜員和賬戶等類)和ATM(包含ATM、遠(yuǎn)程事務(wù)、現(xiàn)金兌換卡和儲(chǔ)戶等類)等3個(gè)主題。事實(shí)上,我們描述的是一個(gè)簡(jiǎn)化的ATM系統(tǒng),為了簡(jiǎn)單起見,在下面討論這個(gè)例子時(shí)將忽略主題層。應(yīng)該按問題領(lǐng)域而不是用功能分解方法來確定主題。此外,應(yīng)該按照41屬性是對(duì)象的性質(zhì),藉助于屬性我們能對(duì)類與對(duì)象和結(jié)構(gòu)有更深入更具體的認(rèn)識(shí)。注意,在分析階段不要用屬性來表示對(duì)象間的關(guān)系,使用關(guān)聯(lián)能夠表示兩個(gè)對(duì)象間的任何關(guān)系,而且把關(guān)系表示得更清晰、更醒目。一般說來,確定屬性的過程包括分析和選擇兩個(gè)步驟:1)分析通常,在需求陳述中用名詞詞組表示屬性。4.確定屬性屬性是對(duì)象的性質(zhì),藉助于屬性我們能對(duì)類與對(duì)象和結(jié)構(gòu)有更深入更42屬性的確定既與問題域有關(guān),也和目標(biāo)系統(tǒng)的任務(wù)有關(guān)。應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,不要考慮那些超出所要解決的問題范圍的屬性。在分析過程中應(yīng)該首先找出最重要的屬性,以后再逐漸把其余屬性增添進(jìn)去。在分析階段不要考慮那些純粹用于實(shí)現(xiàn)的屬性。屬性的確定既與問題域有關(guān),也和目標(biāo)系統(tǒng)的任務(wù)有關(guān)。43
確定類屬性圖3銀行網(wǎng)絡(luò)系統(tǒng)的部分屬性ATM分發(fā)現(xiàn)金遠(yuǎn)程事務(wù)種類,日期,時(shí)間,數(shù)量?jī)?chǔ)戶名字地址現(xiàn)金卡密碼雇員號(hào)站代碼分行名字帳戶號(hào)卡片碼銀行碼分行計(jì)算機(jī)帳戶余額、類型貸款限定柜員名字柜員事務(wù)柜員終端銀行碼總行中央計(jì)算機(jī)銀行碼站代碼確定類屬性圖3銀行網(wǎng)絡(luò)系統(tǒng)的部分屬性ATM遠(yuǎn)程事務(wù)儲(chǔ)442)選擇認(rèn)真考察經(jīng)初步分析而確定下來的那些屬性,從中刪掉不正確的或不必要的屬性。通常有以下幾種常見情況:2)選擇45(1)誤把對(duì)象當(dāng)作屬性例如,在郵政目錄中,“城市”是一個(gè)屬性,而在人口普查中卻應(yīng)該把“城市”當(dāng)作對(duì)象。(2)誤把關(guān)聯(lián)類的屬性當(dāng)作一般對(duì)象的屬性如果某個(gè)性質(zhì)依賴于某個(gè)關(guān)聯(lián)鏈的存在,則該性質(zhì)是關(guān)聯(lián)類的屬性,在分析階段不應(yīng)該把它作為一般對(duì)象的屬性。(3)把限定誤當(dāng)成屬性正確使用限定詞往往可以減少關(guān)聯(lián)的重?cái)?shù)。如果把某個(gè)屬性值固定下來以后能減少關(guān)聯(lián)的重?cái)?shù),則應(yīng)該考慮把這個(gè)屬性重新表述成一個(gè)限定詞。在ATM系統(tǒng)的例子中,“分行代碼”、“賬號(hào)”、“雇員號(hào)”、“站號(hào)”等都是限定詞。(1)誤把對(duì)象當(dāng)作屬性46(4)誤把內(nèi)部狀態(tài)當(dāng)成了屬性如果某個(gè)性質(zhì)是對(duì)象的非公開的內(nèi)部狀態(tài),則應(yīng)該從對(duì)象模型中刪掉這個(gè)屬性。(5)過于細(xì)化在分析階段應(yīng)該忽略那些對(duì)大多數(shù)操作都沒有影響的屬性。(6)存在不一致的屬性類應(yīng)該是簡(jiǎn)單而且一致的。如果得出一些看起來與其他屬性毫不相關(guān)的屬性,則應(yīng)該考慮把該類分解成兩個(gè)不同的類。(4)誤把內(nèi)部狀態(tài)當(dāng)成了屬性47可以使用兩種方式建立繼承(即泛化)關(guān)系:自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個(gè)過程實(shí)質(zhì)上模擬了人類歸納思維過程。例如,在ATM系統(tǒng)中,“遠(yuǎn)程事務(wù)”和“柜員事務(wù)”是類似的,可以泛化出父類“事務(wù)”;類似地,可以從“ATM”和“柜員終端”泛化出父類“輸入站”。自頂向下:把現(xiàn)有類細(xì)化成更具體的子類,這模擬了人類的演繹思維過程。從應(yīng)用域中常常能明顯看出應(yīng)該做的自頂向下的具體化工作。5.識(shí)別繼承關(guān)系可以使用兩種方式建立繼承(即泛化)關(guān)系:5.識(shí)別繼承關(guān)系48圖4使用繼承來細(xì)化類圖4銀行網(wǎng)絡(luò)系統(tǒng)的對(duì)象模型銀行碼柜員終端輸入站遠(yuǎn)程事務(wù)帳戶余額、類型貸款限定儲(chǔ)戶名字地址柜員名字現(xiàn)金卡密碼事務(wù)種類,日期,時(shí)間,數(shù)量中央計(jì)算機(jī)銀行碼站代碼銀行碼總行ATM分發(fā)現(xiàn)金柜員事務(wù)雇員號(hào)站代碼總行名字帳戶號(hào)卡片碼銀行碼分行計(jì)算機(jī)圖4使用繼承來細(xì)化類圖4銀行網(wǎng)絡(luò)系統(tǒng)的對(duì)象模型銀行碼柜員終49僅僅經(jīng)過一次建模過程很難得到完全正確的對(duì)象模型。事實(shí)上,軟件開發(fā)過程就是一個(gè)多次反復(fù)修改、逐步完善的過程。在建模的任何一個(gè)步驟中,如果發(fā)現(xiàn)了模型的缺陷,都必須返回到前期階段進(jìn)行修改。由于面向?qū)ο蟮母拍詈头?hào)在整個(gè)開發(fā)過程中都是一致的,因此遠(yuǎn)比使用結(jié)構(gòu)分析、設(shè)計(jì)技術(shù)更容易實(shí)現(xiàn)反復(fù)修改、逐步完善的過程。實(shí)際上,有些細(xì)化工作(例如,定義服務(wù))是在建立了動(dòng)態(tài)模型和功能模型之后才進(jìn)行的。僅僅經(jīng)過一次建模過程很難得到完全正確的對(duì)象模型。事實(shí)上,軟件50下面以ATM系統(tǒng)為例,討論可能做的修改:1)分解“現(xiàn)金兌換卡”類實(shí)際上,“現(xiàn)金兌換卡”有兩個(gè)相對(duì)獨(dú)立的功能,它既是鑒別儲(chǔ)戶使用ATM的權(quán)限的卡,又是ATM獲得分行代碼和卡號(hào)等數(shù)據(jù)的數(shù)據(jù)載體。因此,把“現(xiàn)金兌換卡”類分解為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個(gè)類,將使每個(gè)類的功能更單一:前一個(gè)類標(biāo)志儲(chǔ)戶訪問賬戶的權(quán)限,后一個(gè)類是含有分行代碼和卡號(hào)的數(shù)據(jù)載體。多張現(xiàn)金兌換卡可能對(duì)應(yīng)著相同的訪問權(quán)限。6.反復(fù)修改下面以ATM系統(tǒng)為例,討論可能做的修改:6.反復(fù)修改512)“事務(wù)”由“更新”組成通常,一個(gè)事務(wù)包含對(duì)賬戶的若干次更新,這里所說的更新,指的是對(duì)賬戶所做的一個(gè)動(dòng)作(取款、存款或查詢)?!案隆彪m然代表一個(gè)動(dòng)作,但是它有自己的屬性(類型、金額等),應(yīng)該獨(dú)立存在,因此應(yīng)該把它作為類。3)把“分行”與“分行計(jì)算機(jī)”合并區(qū)分“分行”與“分行計(jì)算機(jī)”,對(duì)于分析這個(gè)系統(tǒng)來說,并沒有多大意義,為簡(jiǎn)單起見,應(yīng)該把它們合并。類似地,應(yīng)該合并“總行”和“中央計(jì)算機(jī)”。2)“事務(wù)”由“更新”組成52
圖5完善對(duì)象模型圖5修改后的對(duì)象模型輸入站遠(yuǎn)程事務(wù)現(xiàn)金卡銀行名、卡片碼安全號(hào)柜員事務(wù)柜員名字柜員終端分行銀行碼站代碼帳戶余額、類型貸款限定儲(chǔ)戶名字地址ATM分發(fā)現(xiàn)金事務(wù)種類、日期、時(shí)間、數(shù)量卡片權(quán)限密碼、限制更新數(shù)量、類型雇員號(hào)站代碼分行名字帳戶號(hào)卡片碼輸入組成擁有擁有雇用訪問標(biāo)識(shí)發(fā)行被錄入開始涉及維持有有圖5完善對(duì)象模型圖5修改后的對(duì)象模型輸入站遠(yuǎn)程事務(wù)現(xiàn)金53建立動(dòng)態(tài)模型的步驟:第一步:編寫典型交互行為的腳本。第二步:從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng)作對(duì)象以及接受事件的目標(biāo)對(duì)象。第三步:排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系并用狀態(tài)圖描繪它們。最后:比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。建立動(dòng)態(tài)模型建立動(dòng)態(tài)模型54所謂“腳本”,原意是指“表演戲曲、話劇,拍攝電影、電視劇等所依據(jù)的本子,里面記載臺(tái)詞、故事情節(jié)等”。在建立動(dòng)態(tài)模型的過程中,腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。腳本描述用戶(或其他外部設(shè)備)與目標(biāo)系統(tǒng)之間的一個(gè)或多個(gè)典型的交互過程,以便對(duì)目標(biāo)系統(tǒng)的行為有更具體的認(rèn)識(shí)。編寫腳本的目的,是保證不遺漏重要的交互步驟,它有助于確保整個(gè)交互過程的正確性的和清晰性。1.編寫腳本所謂“腳本”,原意是指“表演戲曲、話劇,拍攝電影、電視劇等所55腳本描寫的范圍并不是固定的,既可以包括系統(tǒng)中發(fā)生的全部事件,也可以只包括由某些特定對(duì)象觸發(fā)的事件。腳本描寫的范圍主要由編寫腳本的具體目的決定。在編寫腳本的過程中,需要與用戶充分交換意見,編寫后還應(yīng)該經(jīng)過他們審查與修改。編寫腳本時(shí),首先編寫正常情況的腳本。然后,考慮特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)。最后,考慮出錯(cuò)情況。腳本描述事件序列。對(duì)于每個(gè)事件,都應(yīng)該指明觸發(fā)該事件的動(dòng)作對(duì)象(例如,系統(tǒng)、用戶或其他外部事物)、接受事件的目標(biāo)對(duì)象以及該事件的參數(shù)。腳本描寫的范圍并不是固定的,既可以包括系統(tǒng)中發(fā)生的全部事件,56自動(dòng)取款機(jī)與用戶交互的正常的腳本如下所示:⑴自動(dòng)取款機(jī)請(qǐng)求儲(chǔ)戶插入卡片;用戶插入現(xiàn)金卡。⑵自動(dòng)取款機(jī)接受卡片并讀出它的卡號(hào)。⑶自動(dòng)取款機(jī)要求密碼,用戶鍵入密碼“4011”。⑷自動(dòng)取款機(jī)與總行確認(rèn)卡號(hào)和密碼;分行檢查它并通知承兌的自動(dòng)取款機(jī)。⑸自動(dòng)取款機(jī)要求選擇事務(wù)類型(取款、存款、轉(zhuǎn)戶及查詢),儲(chǔ)戶選擇取款。⑹自動(dòng)取款機(jī)要求現(xiàn)金數(shù)量;儲(chǔ)戶輸入¥100。⑺自動(dòng)取款機(jī)要求總行處理事務(wù);總行把要求轉(zhuǎn)給分行,確認(rèn)事務(wù)成功。⑻自動(dòng)取款機(jī)分發(fā)現(xiàn)金并且要求儲(chǔ)戶取現(xiàn)金;儲(chǔ)戶取現(xiàn)金。⑼自動(dòng)取款機(jī)提示儲(chǔ)戶是否想繼續(xù);儲(chǔ)戶指出不繼續(xù)。⑽自動(dòng)取款機(jī)打印收據(jù),退出卡,并請(qǐng)求儲(chǔ)戶取出它們;儲(chǔ)戶拿走收據(jù)和卡。⑾自動(dòng)取款機(jī)請(qǐng)求儲(chǔ)戶插入。
自動(dòng)取款機(jī)與用戶交互的正常的腳本如下所示:57⑴自動(dòng)取款機(jī)請(qǐng)求儲(chǔ)戶插入卡;儲(chǔ)戶插入現(xiàn)金卡。⑵自動(dòng)取款機(jī)接受卡并讀它的卡號(hào)。⑶自動(dòng)取款機(jī)要求密碼;儲(chǔ)戶鍵入:9999:。⑷自動(dòng)取款機(jī)與總行確認(rèn)卡號(hào)和密碼,在咨詢分行后拒絕它。⑸自動(dòng)取款機(jī)指示密碼錯(cuò)并要求重新鍵入;儲(chǔ)戶鍵入:4011:,總行確認(rèn)成功。⑹自動(dòng)取款機(jī)請(qǐng)求儲(chǔ)戶選擇事務(wù)類型;儲(chǔ)戶選擇取款。⑺自動(dòng)取款機(jī)請(qǐng)求鍵入現(xiàn)金數(shù)量;儲(chǔ)戶改變選擇并鍵入“CANCEL”(取消)。⑻自動(dòng)取款機(jī)退出卡并且請(qǐng)求儲(chǔ)戶拿走卡;儲(chǔ)戶取出卡。⑼自動(dòng)取款機(jī)請(qǐng)求儲(chǔ)戶插入卡。自動(dòng)取款機(jī)與用戶交互的例外的腳本如下所示:
⑴自動(dòng)取款機(jī)請(qǐng)求儲(chǔ)戶插入卡;儲(chǔ)戶插入現(xiàn)金卡。自動(dòng)取款機(jī)與用58大多數(shù)交互行為都可以分為應(yīng)用邏輯和用戶界面兩部分。通常,系統(tǒng)分析員首先集中精力考慮系統(tǒng)的信息流和控制流,而不是首先考慮用戶界面。事實(shí)上,采用不同界面(例如,命令行或圖形用戶界面),可以實(shí)現(xiàn)同樣的程序邏輯。應(yīng)用邏輯是內(nèi)在的、本質(zhì)的內(nèi)容,用戶界面是外在的表現(xiàn)形式。動(dòng)態(tài)模型著重表示應(yīng)用系統(tǒng)的控制邏輯。2.設(shè)想用戶界面大多數(shù)交互行為都可以分為應(yīng)用邏輯和用戶界面兩部分。通常,系統(tǒng)59不經(jīng)過實(shí)際使用很難評(píng)價(jià)一個(gè)用戶界面的優(yōu)劣,因此,軟件開發(fā)人員往往快速地建立起用戶界面的原型,供用戶試用與評(píng)價(jià)。下圖是初步設(shè)想出的ATM界面格式。不經(jīng)過實(shí)際使用很難評(píng)價(jià)一個(gè)用戶界面的優(yōu)劣,因此,軟件開發(fā)人員60完整、正確的腳本為建立動(dòng)態(tài)模型奠定了必要的基礎(chǔ)。但是,用自然語言書寫的腳本往往不夠簡(jiǎn)明,而且有時(shí)在閱讀時(shí)會(huì)有二義性。為了有助于建立動(dòng)態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖。為此首先需要進(jìn)一步明確事件及事件與對(duì)象的關(guān)系。3.畫事件跟蹤圖完整、正確的腳本為建立動(dòng)態(tài)模型奠定了必要的基礎(chǔ)。但是,用自然611)確定事件應(yīng)該仔細(xì)分析每個(gè)腳本,以便從中提取出所有外部事件。事件包括系統(tǒng)與用戶(或外部設(shè)備)交互的所有信號(hào)、輸入、輸出、中斷、動(dòng)作等等。從腳本中容易找出正常事件,但是,應(yīng)該小心仔細(xì),不要遺漏了異常事件和出錯(cuò)條件。傳遞信息的對(duì)象的動(dòng)作也是事件。例如,儲(chǔ)戶插入現(xiàn)金兌換卡、儲(chǔ)戶輸入密碼、ATM吐出現(xiàn)金等都是事件。大多數(shù)對(duì)象到對(duì)象的交互行為都對(duì)應(yīng)著事件。1)確定事件62應(yīng)該把對(duì)控制流產(chǎn)生相同效果的那些事件組合在一起作為一類事件,并給它們?nèi)∫粋€(gè)惟一的名字。例如,“吐出現(xiàn)金”是一個(gè)事件類,盡管這類事件中的每個(gè)個(gè)別事件的參數(shù)值不同(吐出的現(xiàn)金數(shù)額不同),然而這并不影響控制流。但是,應(yīng)該把對(duì)控制流有不同影響的那些事件區(qū)分開來,不要誤把它們組合在一起。例如“賬戶有效”、“賬戶無效”、“密碼錯(cuò)”等都是不同的事件。經(jīng)過分析,應(yīng)該區(qū)分出每類事件的發(fā)送對(duì)象和接受對(duì)象。一類事件相對(duì)它的發(fā)送對(duì)象來說是輸出事件,但是相對(duì)它的接受對(duì)象來說則是輸入事件。有時(shí)一個(gè)對(duì)象把事件發(fā)送給自己,在這種情況下,該事件既是輸出事件又是輸入事件。應(yīng)該把對(duì)控制流產(chǎn)生相同效果的那些事件組合在一起作為一類事件,632)畫出事件跟蹤圖從腳本中提取出各類事件并確定了每類事件的發(fā)送對(duì)象和接受對(duì)象之后,就可以用事件跟蹤圖把事件序列以及事件與對(duì)象的關(guān)系,形象、清晰地表示出來。事件跟蹤圖實(shí)質(zhì)上是擴(kuò)充的腳本,可以認(rèn)為事件跟蹤圖是簡(jiǎn)化的UML順序圖。在事件跟蹤圖中,一條豎線代表一個(gè)對(duì)象,每個(gè)事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對(duì)象指向接受對(duì)象。時(shí)間從上向下遞增,也就是說,畫在最上面的水平箭頭線代表最先發(fā)生的事件,畫在最下面的水平箭頭線所代表的事件最晚發(fā)生。箭頭線之間的間距并沒有具體含義,圖中僅用箭頭線在垂直方向上的相對(duì)位置表示事件發(fā)生的先后,并不表示兩個(gè)事件之間的精確時(shí)間差。2)畫出事件跟蹤圖64退出
圖6銀行網(wǎng)絡(luò)系統(tǒng)的事件追綜圖儲(chǔ)戶自動(dòng)取款機(jī)總行分行確認(rèn)帳號(hào)插入卡要求密碼輸入密碼要求類型輸入類型要求數(shù)量輸入數(shù)量分發(fā)現(xiàn)金要求取現(xiàn)金取現(xiàn)金提示繼續(xù)終止打印收椐退出卡要求取卡取卡顯示屏確認(rèn)銀行卡銀行帳戶正確處理銀行事務(wù)銀行事務(wù)成功帳戶正確處理事務(wù)事務(wù)成功退出圖6銀行網(wǎng)絡(luò)系統(tǒng)的事件追綜圖儲(chǔ)戶自動(dòng)取款機(jī)總行分行65
圖7系統(tǒng)的事件圖自動(dòng)取款機(jī)的事件流圖圖7銀行網(wǎng)絡(luò)系統(tǒng)的事件圖用戶分行ATM總行確認(rèn)卡及銀行,處理銀行事務(wù)分行事務(wù)成功、失敗,分行帳戶正確事務(wù)成功、事務(wù)失敗、帳戶正確、不正確帳戶、密碼、銀行代碼插入卡,輸入密碼,類型,取現(xiàn)金,取卡不顯示主屏可讀卡,要求密碼、類型、數(shù)量,取消信息,分發(fā)現(xiàn)金,要求繼續(xù),不正確帳戶信息確認(rèn)帳戶處理事務(wù)圖7系統(tǒng)的事件圖自動(dòng)取款機(jī)的事件流圖圖7銀行網(wǎng)絡(luò)系統(tǒng)的66狀態(tài)圖描繪事件與對(duì)象狀態(tài)的關(guān)系。當(dāng)對(duì)象接受了一個(gè)事件以后,它的下個(gè)狀態(tài)取決于當(dāng)前狀態(tài)及所接受的事件。由事件引起的狀態(tài)改變稱為“轉(zhuǎn)換”。如果一個(gè)事件并不引起當(dāng)前狀態(tài)發(fā)生轉(zhuǎn)換,則可忽略這個(gè)事件。通常,用一張狀態(tài)圖描繪一類對(duì)象的行為,它確定了由事件序列引出的狀態(tài)序列。系統(tǒng)分析員應(yīng)該集中精力僅考慮具有重要交互行為的那些類。從一張事件跟蹤圖出發(fā)畫狀態(tài)圖時(shí),應(yīng)該集中精力僅考慮影響一類對(duì)象的事件,也就是說,僅考慮事件跟蹤圖中指向某條豎線的那些箭頭線。4.畫狀態(tài)圖狀態(tài)圖描繪事件與對(duì)象狀態(tài)的關(guān)系。當(dāng)對(duì)象接受了一個(gè)事件以后,它67根據(jù)一張事件跟蹤圖畫出狀態(tài)圖之后,再把其他腳本的事件跟蹤圖合并到已畫出的狀態(tài)圖中。為此需在事件跟蹤圖中找出以前考慮過的腳本的分支點(diǎn)(例如“驗(yàn)證賬戶”就是一個(gè)分支點(diǎn),因?yàn)轵?yàn)證的結(jié)果可能是“賬戶有效”,也可能是“無效賬戶”),然后把其他腳本中的事件序列并入已有的狀態(tài)圖中,作為一條可選的路徑。考慮完正常事件之后再考慮邊界情況和特殊情況,其中包括在不適當(dāng)時(shí)候發(fā)生的事件(例如,系統(tǒng)正在處理某個(gè)事務(wù)時(shí),用戶要求取消該事務(wù))。根據(jù)一張事件跟蹤圖畫出狀態(tài)圖之后,再把其他腳本的事件跟蹤圖合68當(dāng)狀態(tài)圖覆蓋了所有腳本,包含了影響某類對(duì)象狀態(tài)的全部事件時(shí),該類的狀態(tài)圖就構(gòu)造出來了。利用這張狀態(tài)圖可能會(huì)發(fā)現(xiàn)一些遺漏的情況。測(cè)試完整性和出錯(cuò)處理能力的最好方法,是設(shè)想各種可能出現(xiàn)的情況,多問幾個(gè)“如果……,則……”的問題。以ATM系統(tǒng)為例?!癆TM”、“柜員終端”、“總行”和“分行”都是主動(dòng)對(duì)象,它們相互發(fā)送事件;而“現(xiàn)金兌換卡”、“事務(wù)”和“賬戶”是被動(dòng)對(duì)象,并不發(fā)送事件?!皟?chǔ)戶”和“柜員”雖然也是動(dòng)作對(duì)象,但是,它們都是系統(tǒng)外部的因素,無須在系統(tǒng)內(nèi)實(shí)現(xiàn)它們。因此,只需要考慮“ATM”、“總行”、“柜員終端”和“分行”的狀態(tài)圖。當(dāng)狀態(tài)圖覆蓋了所有腳本,包含了影響某類對(duì)象狀態(tài)的全部事件時(shí),69
為重要的類建立狀態(tài)圖圖8“自動(dòng)取款機(jī)”類的狀態(tài)圖檢查do:要求密碼核對(duì)do:確認(rèn)帳戶選擇do:要求類型輸數(shù)據(jù)do:要求數(shù)量開始do:顯示屏插入插入密碼帳戶正確輸入類型取卡片不可讀do:不可讀卡信息取消do:取消信息帳戶錯(cuò)誤do:帳戶錯(cuò)誤信息失敗do:失敗信息取消取消插入卡卡片退出do:退出卡,取卡片結(jié)束do:打印收據(jù)繼續(xù)否do:請(qǐng)求繼續(xù)發(fā)現(xiàn)金do:請(qǐng)求繼續(xù)事物do:處理事務(wù)事務(wù)成功取現(xiàn)金終止取消輸入事務(wù)帳戶錯(cuò)取消取消密碼錯(cuò)事務(wù)失敗等5秒為重要的類建立狀態(tài)圖圖8“自動(dòng)取款機(jī)”類的狀態(tài)圖檢查核70圖9分行類的狀態(tài)圖
圖9“總行”類的狀態(tài)圖do:處理分行事務(wù)do:確認(rèn)分行代碼do:確認(rèn)卡[正確代碼]分行事務(wù)成功/事務(wù)成功處理事務(wù)確認(rèn)帳戶[錯(cuò)誤代碼]/錯(cuò)的分理處代碼錯(cuò)的分行帳戶/錯(cuò)的帳戶錯(cuò)的分行帳戶OK/錯(cuò)的密碼分行密碼/帳戶OK分行事務(wù)失?。聞?wù)失敗圖9分行類的狀態(tài)圖圖9“總行”類的狀態(tài)圖do:處理d71do:更新帳戶do:確認(rèn)卡片號(hào)do:確認(rèn)密碼[有效][成功]/分行事務(wù)成功處理分行事務(wù)確認(rèn)分行與卡片[無效]/錯(cuò)的分行帳戶[無效]/錯(cuò)的分行密碼[有效]/分行帳戶OK[失?。荩中惺聞?wù)失敗圖10“分行”類的狀態(tài)圖do:更新do:確認(rèn)do:確認(rèn)[有效][成功]/分行事務(wù)成72各個(gè)類的狀態(tài)圖通過共享事件合并起來,構(gòu)成了系統(tǒng)的動(dòng)態(tài)模型。在完成了每個(gè)具有重要交互行為的類的狀態(tài)圖之后,應(yīng)該檢查系統(tǒng)級(jí)的完整性和一致性。對(duì)于沒有前驅(qū)或沒有后繼的狀態(tài)應(yīng)該著重審查,如果這個(gè)狀態(tài)既不是交互序列的起點(diǎn)也不是終點(diǎn),則發(fā)現(xiàn)了一個(gè)錯(cuò)誤。應(yīng)該審查每個(gè)事件,跟蹤它對(duì)系統(tǒng)中各個(gè)對(duì)象所產(chǎn)生的效果,以保證它們與每個(gè)腳本都匹配。5.審查動(dòng)態(tài)模型各個(gè)類的狀態(tài)圖通過共享事件合并起來,構(gòu)成了系統(tǒng)的動(dòng)態(tài)模型。在73功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。其中的處理功能可以用IPO圖(或表)、偽碼等多種方式進(jìn)一步描述。通常在建立了對(duì)象模型和動(dòng)態(tài)模型之后再建立功能模型。建立功能模型功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功741、確定輸入、輸出值先列出輸入、輸出值,輸入輸出值是系統(tǒng)與外部世界之間的事件的參數(shù)。檢測(cè)問題陳述,從中找出遺漏的所有輸入輸出值。由于所有系統(tǒng)與外部世界之間的交互都經(jīng)過自動(dòng)出納機(jī),因而所有輸入輸出值都是自動(dòng)出納機(jī)事件的參數(shù)。圖給出了自動(dòng)出納機(jī)的輸入輸出值。圖11自動(dòng)出納機(jī)的輸入輸出值現(xiàn)金卡儲(chǔ)戶自動(dòng)取款機(jī)卡片碼帳戶類型事務(wù)類型密碼現(xiàn)金收據(jù)信息1、確定輸入、輸出值圖11自動(dòng)出納機(jī)的輸入輸出值現(xiàn)金卡儲(chǔ)75
自動(dòng)出納機(jī)頂層數(shù)據(jù)流圖2、建立數(shù)據(jù)流圖數(shù)據(jù)流圖說明輸出值是怎樣從輸入值得來的,數(shù)據(jù)流圖通常按層次組織。最頂層由單個(gè)處理組成,也可由收集輸入、計(jì)算值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保稅器材維修合同范本
- 包銷合同范本
- 衛(wèi)浴訂購(gòu)合同范例
- 區(qū)府租房合同范本
- 個(gè)人學(xué)習(xí)計(jì)劃書26篇
- 中藥炮制工中級(jí)??荚囶}及答案
- 維修電工練習(xí)題庫(kù)+答案
- 工業(yè)鍋爐司爐考試模擬題含答案
- 醫(yī)藥采購(gòu)合同范例
- 一本男孩子必讀的書教學(xué)反思
- 高級(jí)英語-第一冊(cè)-課后習(xí)題答案
- 《帶電作業(yè)用絕緣工具試驗(yàn)導(dǎo)則》
- 2024年時(shí)事政治熱點(diǎn)題庫(kù)200道附完整答案【必刷】
- 2024年山東信息職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 藥材的采收與產(chǎn)地加工
- 江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握小堵殬I(yè)技能測(cè)試》參考試題庫(kù)(含答案)
- 小學(xué)勞動(dòng)教育二年級(jí)下冊(cè)教學(xué)計(jì)劃
- 三年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 2024春開學(xué)第一課-開學(xué)第一課 禁毒我先行 課件
- 《聽歌識(shí)曲》課件
- 金屬冶煉安全培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論