第10章面向?qū)ο蟮姆治鯻第1頁
第10章面向?qū)ο蟮姆治鯻第2頁
第10章面向?qū)ο蟮姆治鯻第3頁
第10章面向?qū)ο蟮姆治鯻第4頁
第10章面向?qū)ο蟮姆治鯻第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第10章

面向?qū)ο蟮姆治?/p>

2本章目標(biāo)掌握需求陳述的書寫。掌握對象模型的建立。掌握動態(tài)模型的建立。掌握功能模型的建立。不管采用哪種方法開發(fā)軟件,分析的過程都是提取系統(tǒng)需求的過程。分析工作主要包括3項內(nèi)容,這就是理解、表達(dá)和驗證。3410.1面向?qū)ο蟮姆治鲞^程面向?qū)ο蟮姆治?,就是抽取和整理用戶需求并建立問題域精確模型的過程?!?〕系統(tǒng)分析員要對需求文檔進(jìn)行分析?!灸康摹浚喊l(fā)現(xiàn)和改正需求文檔中的二義性和不一致性,彌補(bǔ)缺乏,從而使需求文檔更加完整、更加準(zhǔn)確?!?〕系統(tǒng)分析人員應(yīng)該深入理解用戶需求,識別出問題域內(nèi)的對象,并分析其相互關(guān)系,抽象出目標(biāo)系統(tǒng)應(yīng)該完成的需求任務(wù),并用5面向?qū)ο蠓治瞿P蜏?zhǔn)確地表示出來〔用面向?qū)ο蟮挠^點建立對象模型、動態(tài)模型和功能模型〕〔3〕需求評審。通過用戶、領(lǐng)域?qū)<?、系統(tǒng)分析員和系統(tǒng)設(shè)計人員的評審。并進(jìn)行反復(fù)修改后,確定需求規(guī)格說明。6101.1面向?qū)ο蠓治龅娜齻€模型與五個層次面向?qū)ο蠓治龅?個模型:面向?qū)ο蟮慕J敲嫦驅(qū)ο蠓治龅年P(guān)鍵,面向?qū)ο蠼5玫降哪P桶到y(tǒng)的3個要素:靜態(tài)結(jié)構(gòu)〔對象模型〕、交互次序〔動態(tài)模型〕、數(shù)據(jù)變換〔功能模型〕?!?〕對象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),是最根底的、最重要的模型?!?〕動態(tài)模型描述了系統(tǒng)的交互次序,當(dāng)問7題涉及交互作用和時序時,動態(tài)模型是重點?!?〕功能模型描述了系統(tǒng)的數(shù)據(jù)變換,解決運(yùn)算量很大的問題時,功能模型非常重要。8面向?qū)ο蠓治龅?個層次類-&-對象層、識別結(jié)構(gòu)層、主題層、屬性層、效勞層,如圖10.1所示。9〔1〕類-&-對象層:類和對象是數(shù)據(jù)及其處理的抽象,它反映了系統(tǒng)保存有關(guān)信息和與現(xiàn)實世界交互的能力。〔2〕主題層:是指導(dǎo)模型的讀者〔包括系統(tǒng)分析員、軟件設(shè)計人員、領(lǐng)域?qū)<摇⒂脩舻取忱斫獯笮?、?fù)雜模型的一種機(jī)制?!?〕結(jié)構(gòu)層:結(jié)構(gòu)表示問題域的復(fù)雜性,類的成員結(jié)構(gòu)反映了一般-特殊關(guān)系,整體-局部結(jié)構(gòu)反映了整體-局部的關(guān)系?!?〕屬性層:屬性是數(shù)據(jù)的元素,用來描述對象或分類結(jié)構(gòu)的實例,可在圖中給出并在對象的存儲中指定,即在給出對象定義的同時指定屬性。10〔5〕效勞層:效勞是接收到消息后必須執(zhí)行的一些處理,可在圖上標(biāo)明它并在對象的存儲中指定,即在給出對象定義的同時定義效勞。115個層次對應(yīng)的5個活動:面向?qū)ο竽P偷?個層次對應(yīng)著分析建模的5個主要活動。這5個活動可以同時〔并行〕處理;可以從較高抽象層轉(zhuǎn)移到較低的具體層,然后再返回到較高抽象層繼續(xù)處理;當(dāng)系統(tǒng)分析員在確定類-&-對象的同時,想到該類的效勞,那么可以先確定效勞后,再返回去繼續(xù)尋找類-&-對象;沒有必要遵循自頂向下,逐步求精的原那么。12面向?qū)ο蟮姆治隽鞒桃话闱闆r下,面向?qū)ο蟮姆治鲞^程可按照以下流程進(jìn)行:確定類-&-對象、識別結(jié)構(gòu)、識別主題、定義屬性、建立動態(tài)模型、建立功能模型、定義服務(wù)〔方法〕。但是,對于大型的、復(fù)雜的問題,不可能嚴(yán)格按照上面的流程進(jìn)行,需要反復(fù)屢次進(jìn)行尋找、確定、識別、建立和定義來構(gòu)造模型。也就是說,先構(gòu)造出模型的子集,然后再逐漸擴(kuò)充,直到完全、充分地理解了整個問題,才能最終構(gòu)造出符合問題域需求的正確的、準(zhǔn)確的、完整的目標(biāo)系統(tǒng)模型。1310.2

需求陳述需求陳述也稱為問題陳述或需求文檔。陳述需求是開發(fā)任何一個系統(tǒng)的首要任務(wù)。需求陳述應(yīng)該說明“做什么〞,而不是“怎么做〞。它應(yīng)該描述用戶的需求而不是提出解決問題的方法。應(yīng)該指出哪些是系統(tǒng)必要的性質(zhì),哪些是任選的性質(zhì)。通常,需求陳述的內(nèi)容包括:問題范圍、功能需求、性能需求,應(yīng)用環(huán)境及假設(shè)條件等。14【例1】以自動取款機(jī)ATM為例,進(jìn)行需求陳述。見教材234頁圖10.2所示。1510.23建立對象模型

對象模型描述了系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),它是3個模型中最關(guān)鍵的一個模型。對象模型的作用是描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括構(gòu)成系統(tǒng)的類和對象,它們的屬性和操作,以及它們之間的聯(lián)系。10.3.1確定類和對象1.找出候選的類與對象對象是問題域中有意義的事物的抽象,既可以是物理實體,也可能是抽象概念。16【例2】以ATM系統(tǒng)為例說明非正式的過程。仔細(xì)閱讀節(jié)給出的需求陳述,從陳述中找出以下名詞作為類與對象的初步的候選者。銀行、自動取款機(jī)〔ATM〕系統(tǒng)、中央計算機(jī)、分行計算機(jī)、柜員終端、網(wǎng)絡(luò)、總行、分行、軟件、本錢、市、街道、營業(yè)廳、儲蓄所、柜員、儲戶、現(xiàn)金、支票、賬戶、事務(wù)、現(xiàn)金兌換卡、余額、磁卡、分行代碼、卡號、用戶、副本、信息、密碼、類型、取款額、賬單以及訪問等。172.篩選出正確的類與對象非正式的分析僅僅能夠幫助找到一些候選的類與對象,接下來應(yīng)該嚴(yán)格考察每個候選的類與對象,從中去掉那些不正確的或不要的,僅保存確實應(yīng)該記錄其信息或需要其提供效勞的那些對象。篩選時需要依靠以下準(zhǔn)那么進(jìn)行:〔1〕剔除冗余如果兩個類表達(dá)了同樣的信息,保存更富于描述力的名稱。例如,“儲戶〞與“用戶〞,“現(xiàn)金兌換卡〞與“磁卡〞、〞副本“分別描述了相同的信息,應(yīng)該將〞用戶“、〞磁卡“、〞副本“等冗余的類去掉。18〔2〕無關(guān)原那么刪除與問題無關(guān)的類。如,ATM和柜員機(jī)終端放置的地點與本軟件的關(guān)系不大,因此,去掉候選類〞本錢“、〞市“、〞營業(yè)廳“、〞儲蓄所“?!?〕籠統(tǒng)原那么去掉一些籠統(tǒng)的、模糊的類。如〞銀行“實際指總行或分行,〞訪問“實際指事務(wù),〞信息“的具體內(nèi)容在需求陳述中隨后就指明了,應(yīng)該去掉〞銀行“、〞網(wǎng)絡(luò)“、〞系統(tǒng)“、〞軟件“、〞信息“和〞訪問“等候選類?!?〕屬性準(zhǔn)那么有些名詞只是其它對象的屬性的描述,應(yīng)該去掉。19例如,〞現(xiàn)金“、〞支票“、〞取款額“、〞賬單“、〞余額“、〞分行代碼“、〞卡號“、〞密碼“和〞類型“等?!?〕操作準(zhǔn)那么當(dāng)遇到一些既可以作為名詞,又可作為動詞的詞時,應(yīng)根據(jù)他們在問題中的含義來決定他們是作為類還是作為類中的操作。如,通常把〞撥號“當(dāng)作動詞,當(dāng)構(gòu)造〞“模型時,確實應(yīng)該把它作為一個操作,而不是一個類?!?〕實現(xiàn)準(zhǔn)那么要去掉僅和實現(xiàn)有關(guān)的候選的類與對象。2010.3.2

確定關(guān)聯(lián)

兩個或多個對象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)。一般情況下,在初步分析問題域中的類與對象確定之后,就可以分析、確定類與對象之間存在的關(guān)聯(lián)關(guān)系了。1.初步確定關(guān)聯(lián)通常,關(guān)聯(lián)關(guān)系在需求陳述中使用描述性動詞或動詞組來表示。通過分析需求陳述,首先,直接提取需求陳述中的動詞組來初步確定多數(shù)的關(guān)聯(lián)。然后,挖掘一些隱含的關(guān)聯(lián)。21最后,根據(jù)問題域?qū)嶓w間的相互依賴、相互作用的關(guān)系,分析員還應(yīng)該與用戶和領(lǐng)域?qū)<矣懻摚鬟M(jìn)一步的補(bǔ)充?!纠?】ATM系統(tǒng)為例,經(jīng)初步確定的關(guān)聯(lián)有:見教材238頁。2.篩選關(guān)聯(lián)〔1〕刪除已經(jīng)去掉的類之間的關(guān)聯(lián)如果已經(jīng)刪除掉了某個候選類,那么與這個類有關(guān)的關(guān)聯(lián)也應(yīng)該刪掉,或用其它類重新表達(dá)這個關(guān)聯(lián)例如,在ATM系統(tǒng)中,由于已經(jīng)刪掉了〞系統(tǒng)“、〞網(wǎng)絡(luò)“、〞事務(wù)“、〞日志“、〞現(xiàn)金“、〞營業(yè)廳“、〞儲蓄所22和〞賬單“等候選類,因此與這些關(guān)聯(lián)類相關(guān)的如下8個關(guān)聯(lián)也應(yīng)該刪掉。見教材239頁?!?〕刪除與問題無關(guān)的實現(xiàn)階段的關(guān)聯(lián)例如,在ATM系統(tǒng)中,〞系統(tǒng)處理并發(fā)的訪問“是在實現(xiàn)階段需要使用實現(xiàn)并發(fā)現(xiàn)訪問的算法,以處理并發(fā)事務(wù)的關(guān)聯(lián),為此,應(yīng)刪去它。〔3〕刪除瞬時事件關(guān)聯(lián)應(yīng)該描述問題域的靜態(tài)結(jié)構(gòu),而不應(yīng)該是一個瞬時事件,應(yīng)該刪除瞬時事件的關(guān)聯(lián)。例如,在ATM系統(tǒng)中,〞ATM讀現(xiàn)金兌換卡〞描述了ATM與用戶交互周期中的一個動作,它并不是ATM與現(xiàn)金兌換卡之間的固有關(guān)系,應(yīng)該刪去。23〔4〕多元關(guān)聯(lián)分解多元關(guān)聯(lián)是3個或3個以上對象之間的關(guān)聯(lián),多數(shù)可以分解為二元關(guān)聯(lián)或用詞組描述成限定的關(guān)聯(lián)。例如,在ATM系統(tǒng)中,“柜員輸入賬戶的事務(wù)〞可以分解成“柜員輸入事務(wù)〞和“事務(wù)修改賬戶〞兩個二元關(guān)聯(lián)?!?〕派生關(guān)聯(lián)當(dāng)有的關(guān)聯(lián)可以用已有的、必要的關(guān)聯(lián)來定義時,應(yīng)該去掉這些冗余的關(guān)聯(lián)。243.完善關(guān)聯(lián)〔1〕更正名字〔2〕分解〔3〕增補(bǔ)〔4〕標(biāo)明重數(shù)見教材241頁圖10-3所示。圖10.3ATM系統(tǒng)原始的類圖252610.3.3劃分主題主題是一種指導(dǎo)開發(fā)者或用戶研究大型分組模型的機(jī)制。在初步面向?qū)ο蠓治龅母咨?,主題有助于分解大型工程以便建立工作小組,分組承擔(dān)任務(wù)。主題所提供的機(jī)制可控制一個用戶必須同時考慮模型數(shù)目。同時它還可以給出面向?qū)ο蠓治瞿P偷目傮w概況。主題所依據(jù)的原理是整體-局部關(guān)系的擴(kuò)充。ATM系統(tǒng)劃分為“總行〞、“分行〞、和“ATM〞三個主題。2710.3.4確定屬性屬性是描述對象或分類結(jié)構(gòu)實例的數(shù)據(jù)單元,確定屬性分為分析和選擇兩個步驟。通常,在需求陳述中用名詞詞組表示屬性,例如,“汽車的顏色〞,往往用形容詞表示可枚舉的具體屬性,例如“黃色的〞。但是,不可能在需求陳述中找到所有屬性,分析員還必須借助于領(lǐng)域知識和常識才能分析得出所需要的屬性。屬性對問題域的根本結(jié)構(gòu)影響很小。隨著時間的推移,問題域中的類始終保持穩(wěn)定,屬性卻可能改變了,相應(yīng)地,類中方法的復(fù)雜程度也將改變。圖10.3ATM系統(tǒng)對象模型中的屬性282910.3.5識別結(jié)構(gòu)確定了類中應(yīng)該定義的屬性后,就可以利用繼承機(jī)制共享公共性質(zhì),并對系統(tǒng)中眾多的類加以組織??捎脙煞N方法來建立繼承〔分類〕關(guān)系?!?〕自底向上識別自底向上識別是抽象出現(xiàn)有類的共同性質(zhì)來一般化成父類,找出有相似的屬性、操作和關(guān)聯(lián)的類來發(fā)現(xiàn)繼承。如,ATM中“遠(yuǎn)程事務(wù)〞和“柜員事務(wù)〞是類似的,可以一般化為“事務(wù)〞,即為父類。30〔2〕自頂向下識別自頂向下識別是把現(xiàn)有的類細(xì)化為更具體的子類,這模擬了人類的演繹思維過程。從應(yīng)用域中常常能明顯看出應(yīng)該做的自頂向下的具體化工作。ATM中“遠(yuǎn)程事務(wù)〞和“柜員事務(wù)〞是“事務(wù)〞,即為父類的具體化的子類。見教材245頁圖10-5所示。圖10.5帶有繼承關(guān)系的ATM對象模型31325.2.6優(yōu)化對象模型事實上,建立起來的對象模型很難一次性得到滿意的效果。在建模的任何一個步驟中,如果發(fā)現(xiàn)了模型的缺陷,都必須返回到前期階段進(jìn)行修改。經(jīng)過屢次反復(fù)修改,才能逐步完善得到完全正確的對象模型。下面實例以ATM系統(tǒng)為例,優(yōu)化對象模型。一般有下述幾種方法。1.刪除冗余的類如果某類中缺少屬性、操作和關(guān)聯(lián),那么可以刪除該類。332.分解類“現(xiàn)金兌換卡〞有兩個相對獨立的功能,它既有鑒別儲戶使用卡的ATM權(quán)限功能,又是ATM獲得分行代碼和卡號等數(shù)據(jù)的數(shù)據(jù)載體。因此,將“現(xiàn)金兌換卡〞類分解為“卡權(quán)限〞和“現(xiàn)金兌換卡〞兩類,可以使得每個類的功能更單一。3.補(bǔ)充關(guān)聯(lián)4.合并類例如“分行〞和“分行計算機(jī)〞雖然名字不同,但他們所完成的任務(wù)以及與其它類的關(guān)系也相同,可將這個類合并成一個類“分行〞。345.3建立動態(tài)模型建立動態(tài)模型通常情況下有下面幾個步驟?!?〕編寫典型交互行為的腳本。雖然腳本中不可能包括每個偶然事件,但是,至少必須保證不遺漏常見的交互行為。〔2〕從腳本中提取出事件,確定觸發(fā)每個事件的動作對象以及接受事件的目標(biāo)對象?!?〕排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。35〔4〕比較各個不同對象的狀態(tài)圖,檢查對象之間的一致性,確保事件之間的匹配。5.3.1編寫腳本在建立動態(tài)模型的過程中,腳本是指系統(tǒng)在某個執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。腳本描述用戶或其它外部設(shè)備與目標(biāo)系統(tǒng)之間的一個或多噶典型的交互過程,以便對目標(biāo)系統(tǒng)的行為有更具體的認(rèn)識。編寫腳本的目的,是保證不遺漏重要的交互步驟,它有助于確保整個交互過程的正確性和清晰性。365.3.2設(shè)想用戶界面軟件開發(fā)人員往往快速地建立起用戶界面的原型,供用戶試用和評價。圖5-7是初步設(shè)想的ATM界面格式。37385.3.3畫事件跟蹤圖1.確定事件從寫好的腳本中提取所有外部事件,應(yīng)注意遺漏異常事件和出錯事件。在系統(tǒng)中區(qū)分出每類事件的發(fā)送對象和接收對象。2.畫出事件跟蹤圖事件跟蹤圖中,一個類與對象用一條豎線表示,每個事件用一條水平的箭頭線表示,箭頭從事件的發(fā)送對象出發(fā)指向接收對象。事件按照先后順序排列,畫在最上面的水平箭頭線代表最先發(fā)生的事件,畫在最下面的水平箭頭線代表的事件最后發(fā)生39箭頭線之間的距離并不表示兩個事件之間的精確時間差,箭頭線的相對位置僅表示事件發(fā)生的先后次序。如5-8所示是ATM系統(tǒng)正常情況下的事件跟蹤圖。5.3.4畫狀態(tài)圖狀態(tài)圖描繪事件與對象狀態(tài)的關(guān)系,當(dāng)對象接收了一個事件以后,它的下一個狀態(tài)取決于當(dāng)前狀態(tài)及所接收的事件。由事件引起的狀態(tài)的改變被稱為“轉(zhuǎn)換〞。如果一個事件并不引起當(dāng)前狀態(tài)發(fā)生轉(zhuǎn)換,那么可忽略這個事件。1.確定狀態(tài)圖中的事件、類與對象40通常,用一張狀態(tài)圖描繪一個類的對象的行為,它確定了由事件序列引出的狀態(tài)序列。并非任何一個類都需要有一張狀態(tài)圖描繪它的行為。2.狀態(tài)圖表示首先考慮影響一類對象的事件,也就是事件跟蹤圖中執(zhí)行某條豎線的那些箭頭,把這些事件作為狀態(tài)圖中的有向邊即箭頭線,邊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論