第十章 軟件工程 面向?qū)ο蠓治鯻第1頁(yè)
第十章 軟件工程 面向?qū)ο蠓治鯻第2頁(yè)
第十章 軟件工程 面向?qū)ο蠓治鯻第3頁(yè)
第十章 軟件工程 面向?qū)ο蠓治鯻第4頁(yè)
第十章 軟件工程 面向?qū)ο蠓治鯻第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程

第十章面向?qū)ο蠓治龅谑旅嫦驅(qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^(guò)程10.2需求陳述10.3建立對(duì)象模型10.4建立動(dòng)態(tài)模型10.5建立功能模型10.6定義服務(wù)10.1面向?qū)ο蠓治龅幕具^(guò)程不論采用哪種方法學(xué)開(kāi)發(fā)軟件,分析過(guò)程都是提取系統(tǒng)需求的過(guò)程。面向?qū)ο蠓治龅年P(guān)鍵是識(shí)別出問(wèn)題域內(nèi)的類與對(duì)象,分析確定它們之間的關(guān)系,最終建立起問(wèn)題域的對(duì)象模型、動(dòng)態(tài)模型和功能模型。分析工作主要包括理解,表達(dá)和驗(yàn)證:首先,分析員通過(guò)與用戶及領(lǐng)域?qū)<业某浞纸涣?,力求充分理解用戶需求和該?yīng)用領(lǐng)域的關(guān)鍵性背景知識(shí)。用某種無(wú)二義性的方式把這種理解表達(dá)成文檔資料(軟件需求規(guī)格說(shuō)明)問(wèn)題復(fù)雜,人之間交流帶有隨意性和非形式化,理解過(guò)程通常不能一次達(dá)到理想效果,還須進(jìn)一步驗(yàn)證軟件需求規(guī)格說(shuō)明的正確性、完整性和有效性,發(fā)現(xiàn)問(wèn)題則進(jìn)行修正需求分析過(guò)程是系統(tǒng)分析員與用戶及領(lǐng)域?qū)<曳磸?fù)交流和多次修正的過(guò)程。理解和驗(yàn)證的過(guò)程交替進(jìn)行,反復(fù)迭代10.1面向?qū)ο蠓治龅幕具^(guò)程-概述1.1概述面向?qū)ο蠓治?,就是抽取和整理用戶需求并建立?wèn)題域精確模型的過(guò)程。需求陳述往往是不完整、不準(zhǔn)確的,通過(guò)分析應(yīng)該改正原始陳述中的二義性和不一致性,補(bǔ)充遺漏的內(nèi)容在分析需求陳述的過(guò)程中,需要反復(fù)多次地與用戶協(xié)商、討論、交流信息,還應(yīng)該了解現(xiàn)有的類似系統(tǒng)快速地建立一個(gè)能在計(jì)算機(jī)上運(yùn)行的原型系統(tǒng),有助于分析員與用戶之間的溝通,從而能更正確地提取出用戶的需求分析員應(yīng)該在深入理解用戶需求的基礎(chǔ)上,抽象出目標(biāo)系統(tǒng)的本質(zhì)屬性,并利用模型精確地表示出來(lái):通過(guò)建立模型能夠糾正在分析早期對(duì)問(wèn)題域的誤解在面向?qū)ο蠼_^(guò)程中,分析員必須認(rèn)真向領(lǐng)域?qū)<覍W(xué)習(xí)仔細(xì)研究以前針對(duì)相同的或類似的問(wèn)題域進(jìn)行面向?qū)ο蠓治龅玫降慕Y(jié)果,這些在當(dāng)前項(xiàng)目中往往有許多是可重用的10.1面向?qū)ο蠓治龅幕具^(guò)程-概述OOA有兩個(gè)任務(wù)形式地說(shuō)明我們所面對(duì)的應(yīng)用問(wèn)題,最終成為軟件系統(tǒng)基本構(gòu)成的對(duì)象,還有系統(tǒng)所必須遵從的,由應(yīng)用環(huán)境所決定的規(guī)則和約束。明確地規(guī)定構(gòu)成系統(tǒng)的對(duì)象如何協(xié)同合作,完成指定的功能。OOA概念模型通過(guò)OOA建立的系統(tǒng)模型是以概念為中心的,因此稱為概念模型。這樣的模型由一組相關(guān)的類組成。軟件規(guī)格說(shuō)明就是基于這樣的概念模型形成的,以模型描述為基本部分,再加上接口要求、性能限制等其它方面的要求說(shuō)明。1.2三個(gè)子模型與五個(gè)層次面向?qū)ο蠼⑵饋?lái)的模型包含系統(tǒng)的三個(gè)要素,即:靜態(tài)結(jié)構(gòu)(對(duì)象模型)交互次序(動(dòng)態(tài)模型)數(shù)據(jù)變換(功能模型)解決的問(wèn)題不同,這3個(gè)子模型的重要程度也不同:幾乎解決任何一個(gè)問(wèn)題,都需要從客觀世界實(shí)體及實(shí)體間相互關(guān)系抽象出極有價(jià)值的對(duì)象模型當(dāng)模型涉及交互作用和時(shí)序時(shí),動(dòng)態(tài)模型是重要的解決運(yùn)算量是很大的問(wèn)題,則涉及重要的功能模型動(dòng)態(tài)模型和功能模型中都包含了對(duì)象模型中的操作(即服務(wù))。復(fù)雜問(wèn)題的對(duì)象模型對(duì)應(yīng)著在面向?qū)ο蠓治鲞^(guò)程中建立對(duì)象模型的5項(xiàng)主要活動(dòng):10.1面向?qū)ο蠓治龅幕具^(guò)程-三個(gè)模型構(gòu)造和評(píng)審OOA概念模型的順序和由五個(gè)層次組成。這五個(gè)層次是分析過(guò)程中的層次。每個(gè)層次工作都為系統(tǒng)規(guī)格說(shuō)明增加了一個(gè)組成部分這五個(gè)層次是:類與對(duì)象、屬性、服務(wù)、結(jié)構(gòu)和主題在概念上,面向?qū)ο蠓治龃篌w上按照下列順序進(jìn)行:尋找類與對(duì)象—>識(shí)別結(jié)構(gòu)—>識(shí)別主題—>定義屬性—>建立動(dòng)態(tài)模型—>建立功能模型—>定義服務(wù)但是,分析工作不可能嚴(yán)格地按照順序進(jìn)行,大型復(fù)雜系統(tǒng)的模型需要反復(fù)構(gòu)造多遍才能完成。通常,先構(gòu)造出模型的子集,然后逐漸擴(kuò)充,直到充分地理解了整個(gè)問(wèn)題,才能最終把完整的模型建立起來(lái)。這五項(xiàng)工作完全沒(méi)有順序完成,也無(wú)須徹底完成一項(xiàng)工作以后再開(kāi)始另外一項(xiàng)工作。10.1面向?qū)ο蠓治龅幕具^(guò)程-五個(gè)層次10.1面向?qū)ο蠓治龅幕具^(guò)程-五個(gè)層次找出類與對(duì)象,識(shí)別結(jié)構(gòu),識(shí)別主題,定義屬性,定義服務(wù)需求陳述通常包括:?jiǎn)栴}范圍,功能需求,性能需求,應(yīng)用環(huán)境及假設(shè)條件等應(yīng)該闡明“做什么”而不是“怎么做”應(yīng)該描述用戶的需求而不是提出解決問(wèn)題的方法應(yīng)該指出哪些是系統(tǒng)必要的性質(zhì),哪些是任選的性質(zhì)應(yīng)該避免對(duì)設(shè)計(jì)策略施加過(guò)多的約束,也不要描述系統(tǒng)的內(nèi)部結(jié)構(gòu),否則將限制實(shí)現(xiàn)的靈活性對(duì)系統(tǒng)性能及外界環(huán)境交互協(xié)議的描述是合適的需求對(duì)采用的軟件工程標(biāo)準(zhǔn)、模塊構(gòu)造準(zhǔn)則、將來(lái)可能做的擴(kuò)充以及可維護(hù)性要求等方面描述,也都是適當(dāng)?shù)男枨髸鴮懶枨箨愂鰰r(shí),要盡力作到語(yǔ)法正確,而且應(yīng)該慎用選用名詞、動(dòng)詞、形容詞和同義詞系統(tǒng)分析員必須與用戶及領(lǐng)域?qū)<颐芮信浜蠀f(xié)同工作,共同提煉和整理用戶需求10.2需求陳述在這個(gè)過(guò)程中,很可能需要快速建立起原型系統(tǒng),以便與用戶更有效地交流10.2需求陳述ATM系統(tǒng)對(duì)象模型描述了現(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ì)來(lái)說(shuō)比較穩(wěn)定因此,用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)絕大多數(shù)軟件時(shí),都首先建立對(duì)象模型,然后再建立另外兩個(gè)子模型。建立對(duì)象模型是面向?qū)ο蠓治鍪滓墓ぷ鲗?duì)象模型的主要信息來(lái)源:需求陳述、應(yīng)用領(lǐng)域的專業(yè)知識(shí)以及關(guān)于客觀世界的常識(shí)10.3建立對(duì)象模型3.1確定類與對(duì)象1.找出候選的類與對(duì)象對(duì)象是對(duì)問(wèn)題域中有意義的事物的抽象,它們既可能是物理實(shí)體,也可能是抽象概念。具體地說(shuō),大多數(shù)客觀事物可分為下述5類:可感知的物理實(shí)體,例如,飛機(jī)、汽車、書、房屋等等人或組織的角色,例如,醫(yī)生、教師、雇主、雇員、計(jì)算機(jī)系、財(cái)務(wù)處等等應(yīng)該記憶的事件,例如飛行、演出、訪問(wèn)、交通事故等等

兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì),例如,購(gòu)買、納稅、結(jié)婚等等需要說(shuō)明的概念,例如,政策、保險(xiǎn)政策、版權(quán)法等等分析時(shí),可以參照上列5類常見(jiàn)事物,找出在當(dāng)前問(wèn)題域中的候選類與對(duì)象。10.3建立對(duì)象模型-確定類與對(duì)象識(shí)別潛在對(duì)象的另外一種分類外部實(shí)體:與系統(tǒng)交換信息的外部設(shè)備、相關(guān)子系統(tǒng)、操作員或用戶等;信息結(jié)構(gòu):?jiǎn)栴}論域中的概念實(shí)體,信號(hào)、報(bào)表、顯示信息;需要記憶的事件:系統(tǒng)執(zhí)行過(guò)程中產(chǎn)生并需要記憶的事件,如單擊鼠標(biāo),擊打鍵盤等;角色:與系統(tǒng)交互的人員所扮演的角色,學(xué)生、教師、會(huì)計(jì)組織機(jī)構(gòu):有關(guān)機(jī)構(gòu),如公司、部門、小組等;地點(diǎn)或位置:用做系統(tǒng)環(huán)境或問(wèn)題上下文的場(chǎng)所、位置,如客戶地址、收件人地址等;操作規(guī)程:如操作菜單、某種數(shù)據(jù)輸入過(guò)程等。10.3建立對(duì)象模型-確定類與對(duì)象另一種更簡(jiǎn)單的分析方法,是所謂的非正式分析,即:以用自然語(yǔ)言書寫的需求陳述為依據(jù)把陳述中的名詞作為類與對(duì)象的候選者用形容詞作為確定屬性的線索把動(dòng)詞作為服務(wù)(操作)的候選者選擇類和對(duì)象的原則對(duì)象類應(yīng)提供某些服務(wù)或處理,有意義的操作對(duì)象類具有多屬性:對(duì)象具有多種屬性,只有一個(gè)屬性的對(duì)象一般是其他對(duì)象頂屬性所有屬性對(duì)于類中所有實(shí)例都應(yīng)有意義,否則原對(duì)象類應(yīng)分解為兩類對(duì)象對(duì)象類定義的有關(guān)操作應(yīng)適應(yīng)對(duì)象類的所有實(shí)例對(duì)象應(yīng)是軟件需求模型的必要成分,與設(shè)計(jì)和實(shí)現(xiàn)方法無(wú)關(guān)10.3建立對(duì)象模型-確定類與對(duì)象10.3建立對(duì)象模型-確定類與對(duì)象例子銀行自動(dòng)取款機(jī)(ATM)系統(tǒng)某銀行擬開(kāi)發(fā)一個(gè)自動(dòng)取款機(jī)系統(tǒng),它是一個(gè)由自動(dòng)取款機(jī)、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)儲(chǔ)戶可以用現(xiàn)金或支票向自己擁有的某個(gè)賬戶內(nèi)存款或開(kāi)新賬戶,儲(chǔ)戶也可以從自己的賬戶中取款。通常,一個(gè)儲(chǔ)戶可能擁有多個(gè)賬戶。柜員負(fù)責(zé)把儲(chǔ)戶提交的存款或取款事務(wù)輸進(jìn)柜員終端,接收儲(chǔ)戶交來(lái)的現(xiàn)金或支票,或付給儲(chǔ)戶現(xiàn)金。柜員終端與相應(yīng)的分行計(jì)算機(jī)通信,分行計(jì)算機(jī)具體處理針對(duì)某個(gè)賬戶的事務(wù)并且維護(hù)賬戶。擁有銀行賬戶的儲(chǔ)戶有權(quán)申請(qǐng)領(lǐng)取銀行卡。使用銀行卡可以通過(guò)ATM訪問(wèn)自己的賬戶。銀行卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息所謂銀行卡就是一張?zhí)刂频拇趴ǎ厦嬗蟹中写a和卡號(hào)。通常,一張卡可以訪問(wèn)儲(chǔ)戶的若干個(gè)賬戶,但是不一定能訪問(wèn)這個(gè)儲(chǔ)戶的全部賬戶。每張銀行卡僅屬于一個(gè)儲(chǔ)戶所有,但是,同一張卡可能有多個(gè)副本,因此,必須考慮同時(shí)在若干臺(tái)ATM上使用同樣的銀行卡的可能性。也就是系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問(wèn)。10.3建立對(duì)象模型-確定類與對(duì)象當(dāng)用戶把銀行卡插入ATM之后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息。首先,ATM要求用戶輸入密碼,接下來(lái)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)金,并且打印出賬單交給用戶。

10.3建立對(duì)象模型-確定類與對(duì)象找出候選的對(duì)象類

銀行、自動(dòng)取款機(jī)、系統(tǒng)、中央計(jì)算機(jī)、分行計(jì)算機(jī)、柜員機(jī)、網(wǎng)絡(luò)、總行、分行、軟件、成本、市、街道、營(yíng)業(yè)廳、儲(chǔ)蓄所、柜員、儲(chǔ)戶、現(xiàn)金、支票、賬戶、事務(wù)、日志、通訊鏈路、存折、信用卡、余額、銀行卡、分行代碼、卡號(hào)、用戶、副本、信息、密碼、類型、取款額、賬單、訪問(wèn)。2.篩選出正確的類與對(duì)象刪除不正確或不必要的類與對(duì)象:冗余——如果兩個(gè)名詞(或名詞短語(yǔ))代表同樣的事物,則應(yīng)該僅保留在此問(wèn)題域中最富于描述力的名稱。儲(chǔ)戶、用戶|存折、信用卡無(wú)關(guān)——現(xiàn)實(shí)世界中存在許多對(duì)象,不能把它們都納入到系統(tǒng)中去,僅需要把本問(wèn)題密切相關(guān)的對(duì)象放在目標(biāo)系統(tǒng)中。成本、市、街道、營(yíng)業(yè)廳、儲(chǔ)蓄所(ATM地點(diǎn))10.3建立對(duì)象模型-確定類與對(duì)象籠統(tǒng)——陳述需求時(shí)使用的一些籠統(tǒng)、泛指的名詞,在初步分析時(shí)把它們作為候選對(duì)象列出,但要么系統(tǒng)無(wú)須記憶有關(guān)它們的信息,要么在需求陳述中有更明確更具體的名詞對(duì)應(yīng)它們所暗示的事物,因此,通常把這些籠統(tǒng)的或模糊的對(duì)象去掉。銀行、系統(tǒng)、網(wǎng)絡(luò)、總行、分行、軟件、信息、訪問(wèn)屬性——陳述中有些名詞實(shí)際上描述的是其他對(duì)象的屬性,應(yīng)把這些名詞從候選對(duì)象中去掉。如果某個(gè)性質(zhì)具有很強(qiáng)的獨(dú)立性,則應(yīng)該把它們作為對(duì)象而不是作為屬性?,F(xiàn)金、支票、取款額、賬單、余額、分行代碼、卡號(hào)、密碼、類型操作——陳述中有時(shí)可能使用一些既作為名詞,又可作為動(dòng)詞的詞,應(yīng)慎重考慮它們?cè)趩?wèn)題中含義,以便正確地決定把她們作為對(duì)象還是作為對(duì)象的操作。一般說(shuō)本身具有屬性需要獨(dú)立存在的操作,應(yīng)該作為對(duì)象;反之應(yīng)作為對(duì)象操作。實(shí)現(xiàn)——在分析階段不應(yīng)該過(guò)早地考慮怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)。因此,應(yīng)該去掉僅和實(shí)現(xiàn)有關(guān)的候選對(duì)象。日志、通訊鏈路10.3建立對(duì)象模型-確定類與對(duì)象3.2確定關(guān)聯(lián)兩個(gè)或多個(gè)對(duì)象之間相互作用、相互依賴的關(guān)系就是關(guān)聯(lián)。在分析確定關(guān)聯(lián)的過(guò)程中,不必花過(guò)多精力去區(qū)分關(guān)聯(lián)和聚集。1.初步確定關(guān)聯(lián)在需求陳述中使用的描述性動(dòng)詞或動(dòng)詞詞組,通常表示關(guān)聯(lián)關(guān)系:大多數(shù)關(guān)聯(lián)可通過(guò)直接提取需求中的動(dòng)詞詞組得出分析需求陳述,還能發(fā)現(xiàn)一些隱含的關(guān)聯(lián)還應(yīng)該與用戶及領(lǐng)域?qū)<矣懻搯?wèn)題域?qū)嶓w間的相互依賴、相互作用關(guān)系,根據(jù)領(lǐng)域知識(shí)再進(jìn)一步補(bǔ)充一些關(guān)聯(lián)10.3建立對(duì)象模型-確定關(guān)聯(lián)2.篩選候選關(guān)聯(lián)需經(jīng)過(guò)進(jìn)一步篩選,以去掉不正確的或不必要的關(guān)聯(lián):已刪去的對(duì)象之間的關(guān)聯(lián)——如果在分析確定對(duì)象的過(guò)程中已經(jīng)刪掉了某個(gè)候選對(duì)象,則與這個(gè)對(duì)象有關(guān)的關(guān)聯(lián)也應(yīng)該刪去,或用其他對(duì)象重新表達(dá)這個(gè)關(guān)聯(lián)。與問(wèn)題無(wú)關(guān)的或應(yīng)在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)——應(yīng)該把處在本問(wèn)題域之外的關(guān)聯(lián)或與實(shí)現(xiàn)密切相關(guān)的關(guān)聯(lián)刪去。瞬時(shí)事件——關(guān)聯(lián)應(yīng)該描述問(wèn)題域的靜態(tài)結(jié)構(gòu),而不應(yīng)該描述一個(gè)瞬時(shí)事件。三元關(guān)聯(lián)——三個(gè)或三個(gè)以上對(duì)象之間的關(guān)聯(lián),大多可以分解為二元關(guān)聯(lián)。派生關(guān)聯(lián)——應(yīng)該刪除那些可以用其他關(guān)聯(lián)定義的冗余關(guān)聯(lián)10.3建立對(duì)象模型-確定關(guān)聯(lián)3.改進(jìn)正名——應(yīng)該仔細(xì)選擇含義更明確的名字作為關(guān)聯(lián)名。分解——為了能適用于不同的關(guān)聯(lián),必要時(shí)應(yīng)該分解以前確定的類與對(duì)象。補(bǔ)充——發(fā)現(xiàn)了遺漏的關(guān)聯(lián)就應(yīng)該及時(shí)補(bǔ)上。標(biāo)明重?cái)?shù)——應(yīng)該初步判斷各個(gè)關(guān)聯(lián)的類型并粗略地確定關(guān)聯(lián)的重?cái)?shù)。4.確定實(shí)例連接關(guān)系如有多對(duì)多的實(shí)例連接,需增加一個(gè)新的“交互”對(duì)象,如“賬戶”和“銀行卡”----》儲(chǔ)戶(三元)對(duì)于同一個(gè)類各個(gè)實(shí)例之間的實(shí)例連接,若有屬性描述它,則應(yīng)建立新的類或?qū)ο蟆H纭盎橐觥笔侨伺c人間的關(guān)系,除了對(duì)象“人”外,還需建立“婚姻”事件對(duì)象。如果兩個(gè)類之間有兩個(gè)以上的實(shí)例連接時(shí),需加一個(gè)類或?qū)ο髞?lái)區(qū)分連接的含義(三元)10.3建立對(duì)象模型-確定關(guān)聯(lián)以特殊化的視點(diǎn)來(lái)看,一個(gè)繼承關(guān)系可以看作是“是”或“是一種”關(guān)系。例如, 一輛卡車是交通工具一輛卡車是一種交通工具在繼承關(guān)系中,使用繼承將較一般化的屬性和服務(wù)放在一般化的類和對(duì)象中。從整體的視點(diǎn)來(lái)看,一個(gè)整體-部分可看作一個(gè)“有一個(gè)”或“是一部分”關(guān)系。例如,飛機(jī)有一個(gè)發(fā)動(dòng)機(jī)發(fā)動(dòng)機(jī)是一部分飛機(jī)飛機(jī)是整體對(duì)象,發(fā)動(dòng)機(jī)是局部對(duì)象。10.3建立對(duì)象模型-確定關(guān)聯(lián)5標(biāo)識(shí)部分-整體關(guān)系總體-部分關(guān)聯(lián),如飛機(jī)-發(fā)動(dòng)機(jī)之間的關(guān)系。包容-內(nèi)含關(guān)聯(lián),如飛機(jī)-飛行員之間的關(guān)系。收集-成員關(guān)聯(lián),如機(jī)構(gòu)-職員之間的關(guān)系。將每一個(gè)類看作是一個(gè)整體類,對(duì)它的所有可能部分情況,考慮以下問(wèn)題:

它是否在問(wèn)題論域中?它是否在系統(tǒng)的職責(zé)內(nèi)?它是否代表一個(gè)以上的狀態(tài)值?若不是,是否將它變?yōu)檎w中的一個(gè)屬性?它是否提供問(wèn)題論域中有用的抽象?把每一個(gè)類置于部分的地位,對(duì)于它所有的整體情形,考慮上述5個(gè)問(wèn)題。檢查以前在相同或類似問(wèn)題論域中面向?qū)ο蠓治龅慕Y(jié)果,看是否有可直接復(fù)用的整體-部分關(guān)系。10.3建立對(duì)象模型-確定關(guān)聯(lián)例ATM系統(tǒng)①初步確定關(guān)系直接提取動(dòng)詞短語(yǔ)得出關(guān)系:ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò),總行擁有多少臺(tái)ATM,

ATM主要設(shè)在街道上,分行提供分行計(jì)算機(jī)和柜員終端,柜員終端設(shè)在分行營(yíng)業(yè)廳及儲(chǔ)蓄所中,分行分?jǐn)傑浖_(kāi)發(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)系(中央計(jì)算機(jī)通訊分行),ATM讀銀行卡,ATM與用戶交互,ATM吐出現(xiàn)金,ATM打印帳單,系統(tǒng)處理并發(fā)的訪問(wèn)10.3建立對(duì)象模型-確定關(guān)聯(lián)需求陳述中的隱含關(guān)系:總行由各分行組成、分行保管帳戶、總行有中央計(jì)算機(jī)、系統(tǒng)維護(hù)事務(wù)日志、系統(tǒng)提供必要安全性、儲(chǔ)戶有銀行卡根據(jù)問(wèn)題域知識(shí)得出的關(guān)系:銀行卡訪問(wèn)帳戶、分行雇用柜員②篩選刪除已刪除類的關(guān)系:系統(tǒng)、網(wǎng)絡(luò)、軟件、成本、市、街道、營(yíng)業(yè)廳、儲(chǔ)蓄所、現(xiàn)金如:ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成網(wǎng)絡(luò)、ATM主要設(shè)在街道上、分行分?jǐn)傑浖_(kāi)發(fā)成本、系統(tǒng)維護(hù)事務(wù)日志、系統(tǒng)提供必要的安全性、ATM吐出現(xiàn)金、ATM打印帳單、分行提供分行計(jì)算機(jī)和柜員終端10.3建立對(duì)象模型-確定關(guān)聯(lián)與問(wèn)題無(wú)關(guān)及實(shí)現(xiàn)階段考慮的關(guān)系:系統(tǒng)處理并發(fā)訪問(wèn)(提醒需使用并發(fā)算法)瞬間事件(關(guān)聯(lián)描述靜態(tài)結(jié)構(gòu)):

ATM讀銀行卡、ATM與用戶交互三元關(guān)系(分解為二元關(guān)聯(lián)或使用詞組描述成限定關(guān)聯(lián)):柜員輸入針對(duì)帳戶的事務(wù)--》柜員輸入事務(wù)、修改帳戶分行計(jì)算機(jī)處理針對(duì)帳戶的事務(wù)--》ATM與中央計(jì)算機(jī)交換關(guān)于事務(wù)的信息--》ATM與中央計(jì)算機(jī)通訊、在ATM上輸入事務(wù)派生關(guān)系:冗余關(guān)系分行計(jì)算機(jī)維護(hù)帳戶=分行保管帳戶+事務(wù)修改帳戶10.3建立對(duì)象模型-確定關(guān)聯(lián)③進(jìn)一步完善正名:分行提供分行計(jì)算機(jī)和柜員終端--》分行擁有分行計(jì)算機(jī)+分行擁有柜員終端分解:事務(wù)=遠(yuǎn)程事務(wù)+柜員事務(wù)補(bǔ)充:柜員輸入柜員事務(wù)、ATM輸入遠(yuǎn)程事務(wù)、柜員事務(wù)輸入柜員終端、遠(yuǎn)程事務(wù)由銀行卡授權(quán)④標(biāo)明階數(shù)⑤畫對(duì)象模型圖10.3建立對(duì)象模型-確定關(guān)聯(lián)3.3劃分主題(較大的系統(tǒng))主題可以看成是高層的模塊或子系統(tǒng)。主題表示此模型的整體框架。可以是一個(gè)層次結(jié)構(gòu)。使大而復(fù)雜的模型比較清晰。對(duì)于含有較多對(duì)象的系統(tǒng),則往往先識(shí)別出類與對(duì)象和關(guān)聯(lián),然后劃分主題,并用它作為指導(dǎo)開(kāi)發(fā)者和用戶觀察整個(gè)模型的一種機(jī)制對(duì)于規(guī)模極大的系統(tǒng),則首先由高級(jí)分析員粗略地識(shí)別對(duì)象和關(guān)聯(lián),然后初步劃分主題,經(jīng)進(jìn)一步分析,對(duì)系統(tǒng)結(jié)構(gòu)有風(fēng)深入的了解之后,再進(jìn)一步修改和精煉主題應(yīng)該按問(wèn)題領(lǐng)域而不是用功能分解方法來(lái)確定主題此外,應(yīng)該按照使不同主題內(nèi)的對(duì)象相互間依賴和交互最少的原則來(lái)確定主題10.3建立對(duì)象模型-劃分主題劃分原則:不要按功能來(lái)劃分主題,應(yīng)按對(duì)象間相互依賴及交互最少的原則來(lái)劃分主題將每一種結(jié)構(gòu)(包括整體-部分結(jié)構(gòu)、和一般化-特殊化結(jié)構(gòu))中最上層的類提升成為主題;將各不屬于任何結(jié)構(gòu)的類提升主題;檢查在相同或類似的問(wèn)題論域中以前做面向?qū)ο蠓治龅慕Y(jié)果,看是否有可直接復(fù)用的主題。10.3建立對(duì)象模型-劃分主題編輯管理的主題10.3建立對(duì)象模型-劃分主題3.4確定屬性1.分析對(duì)象所保存的信息稱為它的屬性。類的屬性所描述的是狀態(tài)信息,每個(gè)實(shí)例的屬性值表達(dá)了該實(shí)例的狀態(tài)值。通常,陳述中用名詞詞組表示屬性(例如,汽車的顏色)

,形容詞表示可枚舉的具體屬性但不可能在需求陳述中找出全部屬性,還必須借助于領(lǐng)域知識(shí)和常識(shí)才能分析得出需要的屬性屬性的確定既與問(wèn)題域有關(guān),也和目標(biāo)系統(tǒng)的任務(wù)有關(guān)應(yīng)該僅考慮與具體應(yīng)用密切相關(guān)的屬性,不要考慮那些超出所要解決的問(wèn)題范圍的屬性2.選擇認(rèn)真考慮經(jīng)初步分析而確定下來(lái)的那些屬性,從中刪除不正確的或不必要的屬性:10.3建立對(duì)象模型-確定屬性誤把對(duì)象當(dāng)作屬性——如果某個(gè)實(shí)體的獨(dú)立存在比它的值更重要,則應(yīng)把它作為一個(gè)對(duì)象而不是對(duì)象的屬性。在具體應(yīng)用領(lǐng)域中具有自身性質(zhì)的實(shí)體,必然是對(duì)象。誤把關(guān)聯(lián)類的屬性當(dāng)作一般對(duì)象的屬性——如果某個(gè)性質(zhì)依賴于某個(gè)關(guān)聯(lián)鏈的存在,則該性質(zhì)是關(guān)聯(lián)類的屬性。把限定誤當(dāng)成屬性——如果把某個(gè)屬性值固定下來(lái)以后能減少關(guān)聯(lián)的重?cái)?shù),則應(yīng)該把這個(gè)屬性重新表述成一個(gè)限定詞。誤把內(nèi)部狀態(tài)當(dāng)成了屬性——如果某個(gè)性質(zhì)是對(duì)象的非公開(kāi)的內(nèi)部狀態(tài),則應(yīng)該從對(duì)象模型中刪除這個(gè)屬性。過(guò)于細(xì)化——在分析階段應(yīng)該忽略那些對(duì)大多數(shù)操作都沒(méi)有影響的屬性。存在不一致的屬性——類應(yīng)該是簡(jiǎn)單而且一致的。如果得出一些看起來(lái)與其他實(shí)行毫不相關(guān)的屬性,則應(yīng)該考慮把該類分解成兩個(gè)不同的類。10.3建立對(duì)象模型-確定屬性3確定屬性的方法和策略每個(gè)對(duì)象至少需包含一個(gè)屬性屬性取值必需適合對(duì)象類的所有實(shí)例所有系統(tǒng)的存儲(chǔ)數(shù)據(jù)需求必須定義為屬性是否誤把對(duì)象當(dāng)作屬性(實(shí)體的獨(dú)立存在比它的值更重要)誤把內(nèi)部狀態(tài)當(dāng)成了屬性、過(guò)于細(xì)化:掛失是否存在不一致的屬性(屬性具有多重值,該對(duì)象應(yīng)是分解為兩個(gè)對(duì)象)是否有只有一個(gè)屬性的對(duì)象(是其他對(duì)象的屬性)借貸卡、信用卡、銀行卡、存折、金卡、副卡10.3建立對(duì)象模型-確定屬性3.5識(shí)別繼承關(guān)系(是一知識(shí)抽取過(guò)程,需經(jīng)驗(yàn))確定了類中應(yīng)有的屬性之后,就可以利用繼承機(jī)制共享公共性質(zhì),并對(duì)系統(tǒng)中眾多的類加以組織。繼承關(guān)系的建立實(shí)質(zhì)上是知識(shí)抽取過(guò)程,它應(yīng)該反映出一定深度的領(lǐng)域知識(shí),因此必須有領(lǐng)域?qū)<颐芮信浜喜拍芡瓿???梢允褂孟率鰞煞N方法建立繼承關(guān)系:①自底向上:抽象出現(xiàn)有類的共性(公共屬性)泛化出父類,這模擬了人類的演繹思維過(guò)程。遠(yuǎn)程事務(wù)+柜員事務(wù)=事務(wù)(父類)ATM+柜員終端=輸入站②和自頂向下:把現(xiàn)有類細(xì)化成更具體的子類,這模擬了人類的演繹思維過(guò)程(帶形容詞的名詞)10.3建立對(duì)象模型-識(shí)別繼承使用多重繼承機(jī)制時(shí),應(yīng)該指定一個(gè)主要父類,從它繼承大部分屬性和行為,次要父類再作補(bǔ)充。如果一個(gè)一般化對(duì)象可能有多個(gè)特殊化對(duì)象,應(yīng)當(dāng)先考慮最簡(jiǎn)單的特殊化對(duì)象和最復(fù)雜的特殊化對(duì)象,然后再考慮中間其他的特殊化對(duì)象。以特殊化的視點(diǎn)來(lái)看,一個(gè)繼承關(guān)系可以看作是“是”或“是一種”關(guān)系。例如, 一輛卡車是交通工具一輛卡車是一種交通工具在繼承關(guān)系中,使用繼承將較一般化的屬性和服務(wù)放在一般化的類和對(duì)象中。從整體的視點(diǎn)來(lái)看,一個(gè)整體-部分可看作一個(gè)“有一個(gè)”或“是一部分”關(guān)系。例如,飛機(jī)有一個(gè)發(fā)動(dòng)機(jī)發(fā)動(dòng)機(jī)是一部分飛機(jī)其中,飛機(jī)是整體對(duì)象,發(fā)動(dòng)機(jī)是局部對(duì)象。10.3建立對(duì)象模型-識(shí)別繼承3.6反復(fù)修改僅僅經(jīng)過(guò)一次建模過(guò)程很難得到完全正確的對(duì)象模型:軟件開(kāi)發(fā)過(guò)程就是一個(gè)多次反復(fù)修改、逐步完善過(guò)程在建模的任何一個(gè)步驟中,如果發(fā)現(xiàn)了模型的缺陷,都必須返回前期階段進(jìn)行修改面向?qū)ο蟮母拍詈头?hào)在整個(gè)開(kāi)發(fā)過(guò)程中都是一致的,遠(yuǎn)比使用SASD更容易實(shí)現(xiàn)反復(fù)修改及逐步完善的過(guò)程有些細(xì)化工作(如定義服務(wù))是在建立了動(dòng)態(tài)模型和功能模型之后才進(jìn)行的分解“銀行卡”類:卡授權(quán)+銀行卡“事務(wù)”由“更新”組成:一個(gè)事務(wù)包含對(duì)帳戶的若干次更新。更新是動(dòng)作,但有獨(dú)立的屬性將“分行”和“分行計(jì)算機(jī)”合并:分行類將“總行”和“中央計(jì)算機(jī)”合并:總行類10.3建立對(duì)象模型-反復(fù)修改4.1建立動(dòng)態(tài)模型的步驟:①編寫典型交互行為的腳本,雖然腳本中不可能包括每個(gè)偶然事件,但是,至少必須保證不遺漏常見(jiàn)的交互行為。②從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng)作對(duì)象以及接受事件的目標(biāo)對(duì)象。③排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們④確定事件:與用戶交互的所有信號(hào)、輸入/出、中斷、動(dòng)作⑤畫事件跟蹤圖:事件序列以及事件與對(duì)象的關(guān)系⑥畫出狀態(tài)圖:描繪事件與狀態(tài)的關(guān)系。對(duì)象接受事件后,它下個(gè)狀態(tài)取決于當(dāng)前狀態(tài)及所接受的事件。⑦比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。⑧審查動(dòng)態(tài)模型:各個(gè)類狀態(tài)圖通過(guò)共享事件合并起來(lái)10.4建立動(dòng)態(tài)模型-步驟4.2編寫腳本所謂“腳本”,原意是指“表演戲劇、話劇,拍攝電影、電視劇等所依據(jù)的本子,里面記載臺(tái)詞、故事情節(jié)等”。腳本:腳本是指系統(tǒng)在某一執(zhí)行期內(nèi)出現(xiàn)的一系列事件。腳本描述用戶(或其他外部設(shè)備)與目標(biāo)系統(tǒng)之間的一個(gè)或多個(gè)典型的交互過(guò)程(正常和異常情況)

,以便對(duì)目標(biāo)系統(tǒng)的行為有更具體的認(rèn)識(shí)。編寫腳本的目的,是保證不遺漏重要的交互步驟,它有助于確保整個(gè)交互過(guò)程的整正確性和清晰性。腳本描寫的范圍并不是固定的,既可以包括系統(tǒng)中發(fā)生的全部事件,也可以只包括由某些特定對(duì)象觸發(fā)的事件。腳本描寫的范圍主要由編寫腳本的具體目的決定。10.4建立動(dòng)態(tài)模型-編寫腳本即使在需求陳述中已經(jīng)描寫了完整的交互過(guò)程,也還需要花很大精力構(gòu)思交互的形式。編寫腳本的過(guò)程,實(shí)質(zhì)上就是分析確定用戶對(duì)系統(tǒng)交互行為的要求的過(guò)程。在編寫腳本的過(guò)程中,應(yīng)該與用戶充分交換意見(jiàn),編寫后還需要經(jīng)過(guò)他們審查與修改。編寫腳本時(shí):首先編寫正常情況的腳本然后考慮特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)最后考慮出錯(cuò)情況,例如,輸入的值為非法值或響應(yīng)失敗10.4建立動(dòng)態(tài)模型-編寫腳本腳本描述事件序列:每當(dāng)系統(tǒng)中的對(duì)象與用戶(或其他外部設(shè)備)交換信息時(shí),就發(fā)生一個(gè)事件所交換的信息值就是該事件的參數(shù)(例如,“輸入密碼”事件的參數(shù)是所輸入的密碼)也有許多事件是無(wú)參數(shù)的,這樣的事件僅傳遞一個(gè)信息——該事件已經(jīng)發(fā)生了對(duì)于每個(gè)事件,都應(yīng)該指明觸發(fā)該事件的動(dòng)作對(duì)象(例如,系統(tǒng)、用戶或其他外部事物)、接受事件的目標(biāo)對(duì)象以及該事件的參數(shù)。10.4建立動(dòng)態(tài)模型-編寫腳本例如ATM系統(tǒng)正常情況腳本:ATM請(qǐng)儲(chǔ)戶插卡;例如儲(chǔ)戶插一張信用卡ATM接受卡并讀取卡上分行代碼及卡號(hào)ATM要求用戶輸入密碼;用戶輸入密碼ATM請(qǐng)求總行驗(yàn)證密碼;總行通知ATM卡有效ATM要求用戶選擇事務(wù)類型(取款、轉(zhuǎn)帳、查詢)ATM要求用戶輸入取款額;用戶輸入取款額ATM確認(rèn)取款額在限額內(nèi),然后要求總行處理該事務(wù),總行將請(qǐng)求轉(zhuǎn)到發(fā)卡分行,分行處理完事務(wù)并返回該帳戶新余額ATM吐出現(xiàn)金并請(qǐng)用戶拿走現(xiàn)金;用戶拿走現(xiàn)金ATM問(wèn)用戶是否繼續(xù)事務(wù),用戶回答否ATM打印帳單,退出卡,請(qǐng)用戶拿走卡,用戶拿卡ATM請(qǐng)用戶插卡10.4建立動(dòng)態(tài)模型-編寫腳本例如ATM系統(tǒng)非正常情況腳本:ATM請(qǐng)儲(chǔ)戶插卡;例如儲(chǔ)戶插一張信用卡ATM接受卡并讀取卡上分行代碼及卡號(hào)ATM要求用戶輸入密碼;用戶誤輸密碼ATM請(qǐng)求總行驗(yàn)證密碼;總行通知ATM卡無(wú)效ATM顯示密碼錯(cuò)誤,請(qǐng)用戶重新輸入密碼;用戶輸入正確密碼ATM要求用戶選擇事務(wù)類型(取款、轉(zhuǎn)帳、查詢、代理)ATM要求用戶輸入取款額;用戶按“取消”鍵ATM退出卡,請(qǐng)用戶拿走卡,用戶拿走卡ATM請(qǐng)用戶插卡10.4建立動(dòng)態(tài)模型-編寫腳本4.2設(shè)想用戶界面大多數(shù)交互行為=應(yīng)用邏輯+用戶界面通常,系統(tǒng)分析員首先集中精力考慮系統(tǒng)的信息流和控制流,而不是首先考慮用戶界面事實(shí)上,采用不同界面(例如,命令行或圖形用戶界面),可以實(shí)現(xiàn)同樣的程序邏輯應(yīng)用邏輯是內(nèi)在的、本質(zhì)的內(nèi)容,用戶界面是外在的表現(xiàn)形式動(dòng)態(tài)模型分析階段重點(diǎn):應(yīng)用邏輯(本質(zhì)的內(nèi)容),不同的用戶界面表達(dá)的是相同的應(yīng)用邏輯10.4建立動(dòng)態(tài)模型-用戶界面但是,用戶界面的美觀程度、方便程度、易學(xué)程度以及效率等等,是用戶使用系統(tǒng)時(shí)最先感受到的,用戶對(duì)系統(tǒng)的“第一印象”往往從界面得來(lái),用戶界面的好壞往往對(duì)用戶是否喜歡、是否接受一個(gè)系統(tǒng)起很重要的作用。因此,在分析階段也不能完全忽略用戶界面。在這個(gè)階段用戶界面的細(xì)節(jié)并不太重要,重要的是在這種界面下的信息交換方式。我們的目的是確保能夠完成全部必要的信息交換,而不會(huì)丟失重要的信息。不經(jīng)過(guò)實(shí)際使用很難評(píng)價(jià)一個(gè)用戶界面的優(yōu)劣,因此,軟件開(kāi)發(fā)人員往往快速地建立起用戶界面的原型,供用戶試用與評(píng)價(jià)。10.4建立動(dòng)態(tài)模型-用戶界面10.4建立動(dòng)態(tài)模型-用戶界面ATM的界面格式4.3畫事件跟蹤圖完整、正確的腳本為建立動(dòng)態(tài)模型奠定了必要的基礎(chǔ)。但是,用自然語(yǔ)言書寫的腳本往往不夠簡(jiǎn)明,而且有時(shí)在閱讀時(shí)會(huì)有二義性。為了有助于建立動(dòng)態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖。為此首先需要進(jìn)一步明確事件及事件與對(duì)象的關(guān)系。1.確定事件分析腳本,提取外部事件:用戶(或外部設(shè)備)和系統(tǒng)交流的信號(hào)、輸入、輸出、中斷、動(dòng)作、異常、出錯(cuò)從腳本中容易找出正常事件,但是,應(yīng)該小心仔細(xì),不要遺漏了異常時(shí)價(jià)和出錯(cuò)條件10.4建立動(dòng)態(tài)模型-事件跟蹤圖傳遞消息的動(dòng)作也是事件:輸入密碼、插卡、ATM吐現(xiàn)金對(duì)象相互之間的交互行為多數(shù)都對(duì)應(yīng)著事件應(yīng)該把控制流產(chǎn)生相同效果的那些事件組合在一起作為一類事件,并給它們?nèi)∫粋€(gè)惟一的名字。注意同一對(duì)象中某些對(duì)控制流產(chǎn)生不同效果的事件:帳戶有效、帳戶無(wú)效、密碼錯(cuò)分析出每類事件的發(fā)送和接受對(duì)象:有將事件發(fā)送給自己的對(duì)象經(jīng)過(guò)分析,應(yīng)該區(qū)分出每類事件的發(fā)送對(duì)象和接受對(duì)象:一類事件相對(duì)它的發(fā)送對(duì)象來(lái)說(shuō)是輸出事件,但是相對(duì)它的接受對(duì)象來(lái)說(shuō)則是輸入事件。有時(shí)一個(gè)對(duì)象把事件發(fā)送給自己。在這種情況下,該事件既是輸出事件又是輸入事件。10.4建立動(dòng)態(tài)模型-事件跟蹤圖2.畫出事件跟蹤圖(腳本的擴(kuò)充)從腳本中提取出各類事件并確定了每類事件的發(fā)送對(duì)象和接受對(duì)象之后,就可以用事件跟蹤圖把事件序列以及事件與對(duì)象的關(guān)系,形象、清晰地表示出來(lái)。事件跟蹤圖實(shí)質(zhì)上是擴(kuò)充的腳本,也可以認(rèn)為它是UML順序圖的簡(jiǎn)化形式。在事件跟蹤圖中:一條豎線代表一個(gè)對(duì)象,每個(gè)事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對(duì)象指向接受對(duì)象,時(shí)間從上向下遞增,即是畫最上面的水平箭頭線代表最先發(fā)生的事件,畫在最下面的水平箭頭線所代表的事件最晚發(fā)生。箭頭線之間的間距并沒(méi)有具體含義,圖中僅用箭頭線在垂直方向上的相對(duì)位置表示事件發(fā)生的先后,并不表示兩個(gè)事件之間的精確時(shí)間差。10.4建立動(dòng)態(tài)模型-事件跟蹤圖4.4畫狀態(tài)圖狀態(tài)圖一類對(duì)象中事件和對(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)序列:并不時(shí)所有的對(duì)象類均要畫狀態(tài)圖。重點(diǎn)在有交互行為的對(duì)象,如:主動(dòng)發(fā)送事件的對(duì)象(ATM、柜員終端、總行、分行),被動(dòng)對(duì)象(銀行卡、事務(wù)、帳戶)和系統(tǒng)外部對(duì)象(儲(chǔ)戶、柜員)一般不畫一般兩個(gè)事件的間隔就有一個(gè)狀態(tài),狀態(tài)圖要覆蓋該類對(duì)象的全部事件10.4建立動(dòng)態(tài)模型-狀態(tài)圖從一張事件跟蹤圖出發(fā)畫狀態(tài)圖,應(yīng)該集中精力僅考慮影響一類對(duì)象的事件,也就是說(shuō),僅考慮事件跟蹤圖中那些箭頭線:把這些事件作為狀態(tài)圖中的有向邊(即箭頭線),在有向邊上標(biāo)上事件名。兩個(gè)事件之間處于不同狀態(tài):應(yīng)該給每個(gè)狀態(tài)取一個(gè)有意義的名字。通常,從事件跟蹤圖中當(dāng)前考慮的豎線射出的箭頭線,是這條豎線代表的對(duì)象到達(dá)某個(gè)狀態(tài)時(shí)的行為(往往是導(dǎo)致另一類對(duì)象狀態(tài)轉(zhuǎn)換的事件)。根據(jù)一張事件跟蹤圖畫出狀態(tài)圖之后,再把其他腳本的事件跟蹤圖合并到已畫出的狀態(tài)圖中:為此需要在狀態(tài)圖中找出以前考慮的分支點(diǎn),然后把其他腳本中的事件序列插入到已有的狀態(tài)圖中,作為一條可選的路徑。10.4建立動(dòng)態(tài)模型-狀態(tài)圖考慮完正常事件之后再考慮邊界情況和特殊情況,其中包括在不適當(dāng)時(shí)候發(fā)生的事件(例如,系統(tǒng)正在處理某個(gè)事務(wù)時(shí),用戶要求取消該事務(wù)):有時(shí)用戶(或外部設(shè)備)不能做出快速響應(yīng),然而某些資源又必須及時(shí)收回,于是在一定間隔就產(chǎn)生了“超時(shí)”事件。對(duì)用戶出錯(cuò)情況往往需要花費(fèi)很多精力處理,并且會(huì)使原來(lái)清晰、緊湊的程序結(jié)構(gòu)變得復(fù)雜、繁瑣,但是,出錯(cuò)處理是不能省略的。當(dāng)狀態(tài)圖覆蓋了所有腳本,包含了影響某些對(duì)象狀態(tài)的全部事件時(shí),該類的狀態(tài)圖就構(gòu)造出來(lái)了。10.4建立動(dòng)態(tài)模型-狀態(tài)圖總行類的狀態(tài)圖10.4建立動(dòng)態(tài)模型-狀態(tài)圖分行類的狀態(tài)圖10.4建立動(dòng)態(tài)模型-狀態(tài)圖4.5審查動(dòng)態(tài)模型各個(gè)類的狀態(tài)圖通過(guò)共享事件合并起來(lái),構(gòu)成了系統(tǒng)的動(dòng)態(tài)模型。在完成了每個(gè)具有重要交互行為的類的狀態(tài)圖之后,應(yīng)該檢查系統(tǒng)級(jí)的完整性和一致性:一般來(lái)說(shuō),每個(gè)事件都應(yīng)該既有發(fā)送對(duì)象又有接受對(duì)象,當(dāng)然,有時(shí)發(fā)送者和接受者是同一對(duì)象對(duì)于沒(méi)有前驅(qū)或沒(méi)有后繼的狀態(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è)腳本都匹配10.4建立動(dòng)態(tài)模型-審查模型10.5建立功能模型(通過(guò)數(shù)據(jù)流圖和數(shù)據(jù)字典)通常,功能模型由一組數(shù)據(jù)流或一組用例圖組成。其中的數(shù)據(jù)處理功能可以用IPO圖(表)、PDL語(yǔ)言等多種方式進(jìn)一步描述。一般說(shuō)來(lái),應(yīng)該在建立了對(duì)象模型和動(dòng)態(tài)模型之后再建立功能模型。畫出頂層數(shù)據(jù)流圖畫出功能級(jí)數(shù)據(jù)流圖、用例圖描述處理過(guò)程建立系統(tǒng)結(jié)構(gòu)模型10.5建立功能模型10.5建立功能模型ATM系統(tǒng)的基本系統(tǒng)模型10.5建立功能模型對(duì)更新帳戶處理過(guò)程的描述更新帳戶(帳號(hào),事務(wù)類型,金額)--》先金額、帳單數(shù)據(jù)如果取款額超過(guò)帳戶當(dāng)前余額,拒絕該事務(wù)如果取款額超過(guò)帳戶當(dāng)前余額,從余額中減去取款額后更新余額,付出儲(chǔ)戶要求的現(xiàn)金如果事務(wù)是存款,將存款額加到余額中后更新余額,不付出現(xiàn)金如果事務(wù)是查詢,不付出現(xiàn)金在上述任何一種情況下,帳單內(nèi)容是:ATM機(jī)號(hào),日期,時(shí)間,帳號(hào),事務(wù)類型,事務(wù)金額(如果有),新余額10.5建立功能模型10.6定義服務(wù)對(duì)象類行為是對(duì)象類應(yīng)該展現(xiàn)的外部服務(wù)的總和對(duì)象類為了響應(yīng)外部事件、處理另一對(duì)象的請(qǐng)求、查詢或命令,都將完成某些操作,操作將改變自身的屬性值或系統(tǒng)的狀態(tài)、或向其他對(duì)象發(fā)送消息在確定類中應(yīng)有的服務(wù)時(shí),既要考慮該類實(shí)體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務(wù)。1.常規(guī)操作在分析階段可以認(rèn)為,類中定義的每個(gè)屬性都是可以訪問(wèn)的,也就是說(shuō),假設(shè)在每個(gè)類中都定義了讀、寫該類每個(gè)屬性的操作。增加、修改、刪除、選擇、打印等服務(wù)有時(shí)是隱含的操作但是,通常無(wú)須在類圖中顯式表示這些常規(guī)操作。

10.6定義服務(wù)2.從事件導(dǎo)出的操作狀態(tài)圖中發(fā)往對(duì)象的事件也就是該對(duì)象接收到的消息,因此該對(duì)象必須提供由消息選擇符指定的操作,這個(gè)操作修改對(duì)象狀態(tài)(即屬性值)并啟動(dòng)相應(yīng)的服務(wù)。所啟動(dòng)的服務(wù)通常就是接受事件的對(duì)象在相應(yīng)狀態(tài)的行為。3.與處理或用例對(duì)應(yīng)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論