面向?qū)ο蠓治鯻第1頁
面向?qū)ο蠓治鯻第2頁
面向?qū)ο蠓治鯻第3頁
面向?qū)ο蠓治鯻第4頁
面向?qū)ο蠓治鯻第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蠓治龅谝豁?,共九十六頁?022年,8月28日面向?qū)ο蠓治?OOA)的關(guān)鍵是識別出問題域內(nèi)的類與對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。在用面向?qū)ο笥^點建立起的3種模型中,對象模型是最基本、最重要、最核心的。第二頁,共九十六頁,2022年,8月28日10.1面向?qū)ο蠓治龅幕具^程

10.1.1概述面向?qū)ο蠓治?抽取和整理用戶需求并建立問題域精確模型的過程。面向?qū)ο蠓治鲞^程從分析陳述用戶需求的文件開始??赡苡捎脩魡畏矫鎸懗鲂枨箨愂?,也可能由系統(tǒng)分析員配合用戶,共同寫出需求陳述。需求陳述通常是不完整、不準(zhǔn)確的,而且往往是非正式的。很難準(zhǔn)確描述第三頁,共九十六頁,2022年,8月28日10.1.1概述通過分析,可以發(fā)現(xiàn)和改正原始陳述中的二義性和不一致性,補充遺漏的內(nèi)容,從而使需求陳述更完整、更準(zhǔn)確。因此,需求陳述不是一成不變的,它是細化和完善實際需求的基礎(chǔ)??焖俳⒌脑拖到y(tǒng),有助于分析員和用戶之間的交流和理解,從而能更正確地提煉出用戶的需求。接著,系統(tǒng)分析員深入理解用戶需求,抽象出目標(biāo)系統(tǒng)的本質(zhì)屬性,并用模型準(zhǔn)確地表示出來。迭代分析模型第四頁,共九十六頁,2022年,8月28日10.1.1概述建模過程中分類工作往往有很大難度。它必須反映出一定深度的領(lǐng)域知識,必須有領(lǐng)域?qū)<业拿芮信浜喜拍芡瓿?。重用技術(shù)是經(jīng)常使用的。面向?qū)ο蠼5玫降哪P图挫o態(tài)結(jié)構(gòu)(對象模型)、交互次序(動態(tài)模型)和數(shù)據(jù)變換(功能模型)。第五頁,共九十六頁,2022年,8月28日10.1.23個子模型與5個層次不同問題中這3個子模型的重要程度也不同。解決任何一個問題,都需要從客觀世界實體及實體間相互關(guān)系抽象出極有價值的對象模型;當(dāng)問題涉及交互作用和時序時,動態(tài)模型是重要的;解決運算量很大的問題,則涉及重要的功能模型。動態(tài)模型和功能模型中都包含了對象模型中的操作(即服務(wù)或方法)。第六頁,共九十六頁,2022年,8月28日10.1.23個子模型與5個層次復(fù)雜問題的對象模型通常由5個層次組成:主題層、類與對象層、結(jié)構(gòu)層、屬性層和服務(wù)層。第七頁,共九十六頁,2022年,8月28日10.1.23個子模型與5個層次主題是指導(dǎo)讀者(包括系統(tǒng)分析員、軟件設(shè)計人員、領(lǐng)域?qū)<?、管理人員、用戶等,泛指所有需要讀懂系統(tǒng)模型的人)理解大型、復(fù)雜模型的一種機制。通過劃分主題把一個大型、復(fù)雜的對象模型分解成幾個不同的概念范疇。第八頁,共九十六頁,2022年,8月28日10.1.23個子模型與5個層次5個層次對應(yīng)著在面向?qū)ο蠓治鲞^程中建立對象模型的5項主要活動:找出類與對象;識別結(jié)構(gòu);識別主題;定義屬性;定義服務(wù)。在進行面向?qū)ο蠓治鰰r并不需要嚴(yán)格遵守自頂向下的原則。第九頁,共九十六頁,2022年,8月28日10.1.23個子模型與5個層次在完整地定義每個類中的服務(wù)之前,需要先建立起動態(tài)模型和功能模型,通過對這兩種模型的研究,能夠更正確更合理地確定每個類應(yīng)該提供哪些服務(wù)。第十頁,共九十六頁,2022年,8月28日10.1.23個子模型與5個層次在概念上可以認(rèn)為,面向?qū)ο蠓治龃篌w上按照下列順序進行:Step1:

尋找類與對象Step2:識別結(jié)構(gòu)Step3:識別主題Step4:定義屬性Step5:建立動態(tài)模型Step6:建立功能模型Step7:定義服務(wù)。

當(dāng)然,上述過程要多次迭代得以實現(xiàn)。第十一頁,共九十六頁,2022年,8月28日10.2需求陳述

10.2.1書寫要點需求陳述的內(nèi)容包括:問題范圍,功能需求,性能需求,應(yīng)用環(huán)境及假設(shè)條件等。它描述用戶的需求而不是提出解決問題的方法。應(yīng)該指出哪些是系統(tǒng)必要的,哪些是任選的。應(yīng)該避免對設(shè)計策略施加約束,也不要描述系統(tǒng)的內(nèi)部結(jié)構(gòu)。對系統(tǒng)性能及系統(tǒng)與外界環(huán)境交互協(xié)議的描述,是合適的需求。從實際出發(fā),迭代完成。第十二頁,共九十六頁,2022年,8月28日10.2.2例子某銀行擬開發(fā)一個自動取款機系統(tǒng),它是一個由自動取款機、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)。ATM和中央計算機由總行投資購買??傂袚碛卸嗯_ATM,分別設(shè)在全市各主要街道上。分行負(fù)責(zé)提供分行計算機和柜員終端。柜員終端設(shè)在分行營業(yè)廳及分行下屬的各個儲蓄所內(nèi)。該系統(tǒng)的軟件開發(fā)成本由各個分行分?jǐn)?。第十三頁,共九十六頁?022年,8月28日10.2.2例子第十四頁,共九十六頁,2022年,8月28日10.2.2例子銀行柜員使用柜員終端處理儲戶提交的儲蓄事務(wù)。儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款或開新賬戶。儲戶也可以從自己的賬戶中取款。通常,一個儲戶可能擁有多個賬戶。柜員負(fù)責(zé)把儲戶提交的存款或取款事務(wù)輸進柜員終端,接收儲戶交來的現(xiàn)金或支票,或付給儲戶現(xiàn)金。柜員終端與相應(yīng)的分行計算機通信,分行計算機具體處理針對某個賬戶的事務(wù)并且維護賬戶。第十五頁,共九十六頁,2022年,8月28日10.2.2例子擁有銀行賬戶的儲戶有權(quán)申請領(lǐng)取現(xiàn)金兌換卡。使用現(xiàn)金兌換卡可以通過ATM訪問自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息(例如,某個指定賬戶上的余額)。將來可能還要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。第十六頁,共九十六頁,2022年,8月28日10.2.2例子所謂現(xiàn)金兌換卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號。分行代碼惟一標(biāo)識總行下屬的一個分行,卡號確定了這張卡可以訪問哪些賬戶。通常,一張卡可以訪問儲戶的若干個賬戶,但是不一定能訪問這個儲戶的全部賬戶。每張現(xiàn)金兌換卡僅屬于一個儲戶所有,但是,同一張卡可能有多個副本,因此,必須考慮同時在若干臺ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說,系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問。第十七頁,共九十六頁,2022年,8月28日10.2.2例子當(dāng)用戶把現(xiàn)金兌換卡插入ATM之后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計算機交換關(guān)于事務(wù)的信息。首先,ATM要求用戶輸入密碼,接下來ATM把從這張卡上讀到的信息以及用戶輸入的密碼傳給中央計算機,請求中央計算機核對這些信息并處理這次事務(wù)。中央計算機根據(jù)卡上的分行代碼確定這次事務(wù)與分行的對應(yīng)關(guān)系,并且委托相應(yīng)的分行計算機驗證用戶密碼。如果用戶輸入的密碼是正確的,ATM就要求用戶選擇事務(wù)類型(取款、查詢等)。當(dāng)用戶選擇取款時,ATM請求用戶輸入取款額。最后,ATM從現(xiàn)金出口吐出現(xiàn)金,并且打印出賬單交給用戶。第十八頁,共九十六頁,2022年,8月28日10.3建立對象模型面向?qū)ο蠓治鍪紫冉栴}域的對象模型。它表示了目標(biāo)系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。需求陳述、應(yīng)用領(lǐng)域的專業(yè)知識以及關(guān)于客觀世界的常識,是建立對象模型時的主要信息來源。第十九頁,共九十六頁,2022年,8月28日10.3建立對象模型對象模型通常有5個層次。典型的工作步驟是:Step1:

確定對象類和關(guān)聯(lián)。對于大型復(fù)雜問題還要進一步劃分出若干個主題;Step2:

給類和關(guān)聯(lián)增添屬性。以進一步描述它們;Step3:

設(shè)計繼承關(guān)系。利用適當(dāng)?shù)睦^承關(guān)系進一步合并和組織類。Step4:

設(shè)計類中的操作。對類中操作的最后確定。第二十頁,共九十六頁,2022年,8月28日10.3.1確定類與對象類與對象是客觀存在的。系統(tǒng)分析員的首要任務(wù)就是所有候選的類與對象,然后從中篩選掉不正確的或不必要的。1.找出候選的類與對象對象是問題域中有意義的事物的抽象,它們既可能是物理實體,也可能是抽象概念。具體地說,大多數(shù)客觀事物可分為下述5類:第二十一頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(1)可感知的物理實體,例如,飛機、汽車、書、房屋等。(2)人或組織的角色,例如,醫(yī)生、教師、雇主、雇員、計算機系、財務(wù)處等。(3)應(yīng)該記憶的事件,例如,飛行、演出、訪問、交通事故等。(4)兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì),例如,購買、納稅、結(jié)婚等。(5)需要說明的概念,例如,政策、保險政策、版權(quán)法等。第二十二頁,共九十六頁,2022年,8月28日10.3.1確定類與對象另一種非正式分析方法以用自然語言書寫的需求陳述為依據(jù)。把陳述中的名詞作為類與對象的候選者把形容詞作為確定屬性的線索把動詞作為服務(wù)的候選者。第二十三頁,共九十六頁,2022年,8月28日10.3.1確定類與對象銀行,自動取款機(ATM),系統(tǒng),中央計算機,分行計算機,柜員終端,網(wǎng)絡(luò),總行,分行,軟件,成本,市,街道,營業(yè)廳,儲蓄所,柜員,儲戶,現(xiàn)金,支票,賬戶,事務(wù),現(xiàn)金兌換卡,余額,磁卡,分行代碼,卡號,用戶,副本,信息,密碼,類型,取款額,賬單,訪問。分析員還應(yīng)該根據(jù)領(lǐng)域知識或常識進一步把隱含的類與對象提取出來。例如,在ATM系統(tǒng)的需求陳述中提取“通信鏈路”和“事務(wù)日志”。第二十四頁,共九十六頁,2022年,8月28日10.3.1確定類與對象2.篩選出正確的類與對象非正式分析僅僅找到一些候選的類與對象,下面應(yīng)該嚴(yán)格考察每個候選對象,從中去掉不正確的或不必要的,僅保留確實應(yīng)該記錄其信息或需要其提供服務(wù)的那些對象。篩選時主要依據(jù)下列標(biāo)準(zhǔn),刪除不正確或不必要的類與對象:第二十五頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(1)冗余如果兩個類表達了同樣的信息,則應(yīng)該保留在此問題域中最富于描述力的名稱。以ATM系統(tǒng)為例,上面用非正式分析法得出了34個候選的類,其中儲戶與用戶,現(xiàn)金兌換卡與磁卡及副本分別描述了相同的兩類信息,因此,應(yīng)該去掉“用戶”、“磁卡”、“副本”等冗余的類,僅保留“儲戶”和“現(xiàn)金兌換卡”這兩個類。第二十六頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(2)無關(guān)現(xiàn)實世界中存在許多對象,不能把它們都納入到系統(tǒng)中去,僅需要把與本問題密切相關(guān)的類與對象放進目標(biāo)系統(tǒng)中。以ATM系統(tǒng)為例,這個系統(tǒng)并不處理分?jǐn)傑浖_發(fā)成本的問題,而且ATM和柜員終端放置的地點與本軟件的關(guān)系也不大。因此,應(yīng)該去掉候選類“成本”、“市”、“街道”、“營業(yè)廳”和“儲蓄所”。第二十七頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(3)籠統(tǒng)在需求陳述中常常使用一些籠統(tǒng)的、泛指的名詞,要么系統(tǒng)無須記憶有關(guān)它們的信息,要么在需求陳述中有更明確更具體的名詞對應(yīng)它們所暗示的事務(wù)。以ATM系統(tǒng)為例,“銀行”實際指總行或分行,“訪問”在這里實際指事務(wù),“信息”的具體內(nèi)容在需求陳述中隨后就指明了。此外還有一些籠統(tǒng)含糊的名詞??傊?,在本例中應(yīng)該去掉“銀行”、“網(wǎng)絡(luò)”、“系統(tǒng)”、“軟件”、“信息”、“訪問”等候選類。第二十八頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(4)屬性在需求陳述中有些名詞實際上描述的是其他對象的屬性。在ATM系統(tǒng)的例子中,“現(xiàn)金”、“支票”、“取款額”、“賬單”、“余額”、“分行代碼”、“卡號”、“密碼”、“類型”等,實際上都應(yīng)該作為屬性對待。第二十九頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(5)操作在需求陳述中有時可能使用一些既可作為名詞,又可作為動詞的詞。例如,談到電話時通常把“撥號”當(dāng)作動詞,當(dāng)構(gòu)造電話模型時確實應(yīng)該把它作為一個操作,而不是一個類。但是,在開發(fā)電話的自動記賬系統(tǒng)時,“撥號”需要有自己的屬性(例如日期、時間、受話地點等),因此應(yīng)該把它作為一個類。第三十頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(6)實現(xiàn)在分析階段不應(yīng)該過早地考慮怎樣實現(xiàn)目標(biāo)系統(tǒng)。因此,應(yīng)該去掉和實現(xiàn)有關(guān)的候選的類與對象。在ATM系統(tǒng)的例子中,“事務(wù)日志”無非是對一系列事務(wù)的記錄,它的確切表示方式是面向?qū)ο笤O(shè)計的議題;“通信鏈路”在邏輯上是一種聯(lián)系,在系統(tǒng)實現(xiàn)時它是關(guān)聯(lián)類的物理實現(xiàn)??傊?,應(yīng)該暫時去掉“事務(wù)日志”和“通信鏈路”這兩個類,在設(shè)計或?qū)崿F(xiàn)時再考慮它們。第三十一頁,共九十六頁,2022年,8月28日10.3.1確定類與對象綜上所述,在ATM系統(tǒng)的例子中,經(jīng)過初步篩選,剩下下列類與對象:ATM、中央計算機、分行計算機、柜員終端、總行、分行、柜員、儲戶、賬戶、事務(wù)、現(xiàn)金兌換卡。第三十二頁,共九十六頁,2022年,8月28日10.3.1確定類與對象兩個或多個對象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)。分析確定關(guān)聯(lián),能促使分析員考慮問題域的邊緣情況,有助于發(fā)現(xiàn)那些尚未被發(fā)現(xiàn)的類與對象。在分析確定關(guān)聯(lián)的過程中,不必花過多的精力去區(qū)分關(guān)聯(lián)和聚集。第三十三頁,共九十六頁,2022年,8月28日10.3.1確定類與對象1.初步確定關(guān)聯(lián)需求陳述中的描述性動詞或動詞詞組,通常表示關(guān)聯(lián)。以ATM系統(tǒng)為例,經(jīng)過分析初步確定出下列關(guān)聯(lián):第三十四頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(1)直接提取動詞短語得出的關(guān)聯(lián)ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡(luò)??傂袚碛卸嗯_ATM。ATM設(shè)在主要街道上。分行提供分行計算機和柜員終端。柜員終端設(shè)在分行營業(yè)廳及儲蓄所內(nèi)。分行分?jǐn)傑浖_發(fā)成本。儲戶擁有賬戶。分行計算機處理針對賬戶的事務(wù)。分行計算機維護賬戶。第三十五頁,共九十六頁,2022年,8月28日10.3.1確定類與對象柜員終端與分行計算機通信。柜員輸入針對賬戶的事務(wù)。ATM與中央計算機交換關(guān)于事務(wù)的信息。中央計算機確定事務(wù)與分行的對應(yīng)關(guān)系。ATM讀現(xiàn)金兌換卡。ATM與用戶交互。ATM吐出現(xiàn)金。ATM打印賬單。系統(tǒng)處理并發(fā)的訪問。第三十六頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(2)需求陳述中隱含的關(guān)聯(lián)總行由各個分行組成。分行保管賬戶??傂袚碛兄醒胗嬎銠C。系統(tǒng)維護事務(wù)日志。系統(tǒng)提供必要的安全性。儲戶擁有現(xiàn)金兌換卡。(3)根據(jù)問題域知識得出的關(guān)聯(lián)現(xiàn)金兌換卡訪問賬戶。分行雇用柜員。第三十七頁,共九十六頁,2022年,8月28日10.3.1確定類與對象2.篩選經(jīng)初步分析得出的關(guān)聯(lián)只能作為候選的關(guān)聯(lián),還需經(jīng)過進一步篩選,主要依據(jù)如下:(1)已刪去的類之間的關(guān)聯(lián)如果已經(jīng)刪掉的候選類,則與這個類有關(guān)的關(guān)聯(lián)也應(yīng)該刪去,或用其他類重新表達這個關(guān)聯(lián)。由于已經(jīng)刪去了“系統(tǒng)”、“網(wǎng)絡(luò)”、“市”、“街道”、“成本”、“軟件”、“事務(wù)日志”、“現(xiàn)金”、“營業(yè)廳”、“儲蓄所”、“賬單”等候選類,因此,與這些類有關(guān)的下列8個關(guān)聯(lián)也應(yīng)該刪去:第三十八頁,共九十六頁,2022年,8月28日10.3.1確定類與對象①ATM、中央計算機、分行計算機及柜員終端組成網(wǎng)絡(luò)。②ATM設(shè)在主要街道上。③分行分?jǐn)傑浖_發(fā)成本。④系統(tǒng)提供必要的安全性。⑤系統(tǒng)維護事務(wù)日志。⑥ATM吐出現(xiàn)金。⑦ATM打印賬單。⑧柜員終端設(shè)在分行營業(yè)廳及儲蓄所內(nèi)。第三十九頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(2)與問題無關(guān)的或應(yīng)在實現(xiàn)階段考慮的關(guān)聯(lián)應(yīng)該把處在本問題域之外的關(guān)聯(lián)或與實現(xiàn)密切相關(guān)的關(guān)聯(lián)刪去。例如,在ATM系統(tǒng)的例子中,“系統(tǒng)處理并發(fā)的訪問”并沒有標(biāo)明對象之間的新關(guān)聯(lián),它只不過提醒我們在實現(xiàn)階段需要使用實現(xiàn)并發(fā)訪問的算法,以處理并發(fā)事務(wù)。第四十頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(3)瞬時事件關(guān)聯(lián)應(yīng)該描述問題域的靜態(tài)結(jié)構(gòu),而不應(yīng)該是一個瞬時事件。以ATM系統(tǒng)為例,“ATM讀現(xiàn)金兌換卡”描述了ATM與用戶交互周期中的一個動作,它并不是ATM與現(xiàn)金兌換卡之間的固有關(guān)系,因此應(yīng)該刪去。類似地,還應(yīng)該刪去“ATM與用戶交互”。第四十一頁,共九十六頁,2022年,8月28日10.3.1確定類與對象如果用動作表述的需求隱含了問題域的某種基本結(jié)構(gòu),則應(yīng)該用適當(dāng)?shù)膭釉~詞組重新表示這個關(guān)聯(lián)。例如,在ATM系統(tǒng)的需求陳述中,“中央計算機確定事務(wù)與分行的對應(yīng)關(guān)系”隱含了結(jié)構(gòu)上“中央計算機與分行通信”的關(guān)系。第四十二頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(4)三元關(guān)聯(lián)三個或三個以上對象之間的關(guān)聯(lián),大多可以分解為二元關(guān)聯(lián)或用詞組描述成限定的關(guān)聯(lián)。“柜員輸入針對賬戶的事務(wù)”可以分解成“柜員輸入事務(wù)”和“事務(wù)修改賬戶”這樣兩個二元關(guān)聯(lián)。而“分行計算機處理針對賬戶的事務(wù)”也可以做類似的分解?!癆TM與中央計算機交換關(guān)于事務(wù)的信息”這個候選的關(guān)聯(lián),實際上隱含了“ATM與中央計算機通信”和“在ATM上輸入事務(wù)”這兩個二元關(guān)聯(lián)。第四十三頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(5)派生關(guān)聯(lián)應(yīng)該去掉那些可以用其他關(guān)聯(lián)定義的冗余關(guān)聯(lián)。例如,在ATM系統(tǒng)的例子中,“總行擁有多臺ATM”實質(zhì)上是“總行擁有中央計算機”和“ATM與中央計算機通信”這兩個關(guān)聯(lián)組合的結(jié)果。而“分行計算機維護賬戶”的實際含義是“分行保管賬戶”和“事務(wù)修改賬戶”。3.進一步完善應(yīng)該進一步完善經(jīng)篩選后余下的關(guān)聯(lián),通常從下述幾個方面進行改進:第四十四頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(1)正名好的名字是幫助讀者理解的關(guān)鍵因素之一。因此,應(yīng)該選擇含義更明確的名字作為關(guān)聯(lián)名?!胺中刑峁┓中杏嬎銠C和柜員終端”不如改為“分行擁有分行計算機”和“分行擁有柜員終端”。(2)分解為了能夠適用于不同的關(guān)聯(lián),必要時應(yīng)該分解以前確定的類與對象。例如,在ATM系統(tǒng)中,應(yīng)該把“事務(wù)”分解成“遠程事務(wù)”和“柜員事務(wù)”。第四十五頁,共九十六頁,2022年,8月28日10.3.1確定類與對象(3)補充遺漏的關(guān)聯(lián)就應(yīng)該及時補上。例如,在ATM系統(tǒng)中把“事務(wù)”分解成上述兩類之后,需要補充“柜員輸入柜員事務(wù)”、“柜員事務(wù)輸進柜員終端”、“在ATM上輸入遠程事務(wù)”和“遠程事務(wù)由現(xiàn)金兌換卡授權(quán)”等關(guān)聯(lián)。(4)標(biāo)明重數(shù)初步判定各個關(guān)聯(lián)的類型,并粗略確定關(guān)聯(lián)的重數(shù)。下圖是經(jīng)上述分析過程之后得出的ATM系統(tǒng)原始的類圖。第四十六頁,共九十六頁,2022年,8月28日10.3.1確定類與對象圖10.3ATM系統(tǒng)原始的類圖第四十七頁,共九十六頁,2022年,8月28日10.3.3劃分主題應(yīng)該按照使不同主題內(nèi)的對象相互間依賴和交互最少的原則來確定主題。以ATM系統(tǒng)為例,可以把它劃分成總行(包含總行和中央計算機這兩個類)、分行(包含分行、分行計算機、柜員終端、柜員事務(wù)、柜員和賬戶等類)和ATM(包含ATM、遠程事務(wù)、現(xiàn)金兌換卡和儲戶等類)等3個主題。第四十八頁,共九十六頁,2022年,8月28日10.3.4確定屬性屬性是對象的性質(zhì)。分析階段不用屬性來表示對象間的關(guān)系,使用關(guān)聯(lián)能夠表示兩個對象間的任何關(guān)系。確定屬性的過程包括分析和選擇兩個步驟。第四十九頁,共九十六頁,2022年,8月28日10.3.4確定屬性1.分析在需求中用名詞詞組表示屬性,例如,“汽車的顏色”或“光標(biāo)的位置”。往往用形容詞表示可枚舉的具體屬性值,例如,“紅色的”、“打開的”。分析員還必須借助于領(lǐng)域知識和常識才能分析得出需要的屬性。應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,不要考慮那些超出所要解決的問題范圍的屬性。在分析過程中應(yīng)該首先找出最重要的屬性,以后再逐漸把其余屬性增添進去。(迭代)第五十頁,共九十六頁,2022年,8月28日10.3.4確定屬性2.選擇認(rèn)真考察經(jīng)初步分析而確定下來的那些屬性,從中刪掉不正確的或不必要的屬性。(1)誤把對象當(dāng)作屬性如果某個實體的獨立存在比它的值更重要,則應(yīng)把它作為一個對象。在具體應(yīng)用領(lǐng)域中具有自身性質(zhì)的實體,必然是對象。第五十一頁,共九十六頁,2022年,8月28日10.3.4確定屬性(2)誤把關(guān)聯(lián)類的屬性當(dāng)作一般對象的屬性如果某個性質(zhì)依賴于某個關(guān)聯(lián)鏈,則該性質(zhì)是關(guān)聯(lián)類的屬性。在多對多關(guān)聯(lián)中,關(guān)聯(lián)類屬性很明顯,即使在以后的開發(fā)階段中,也不能把它歸并成相互關(guān)聯(lián)的兩個對象中任一個的屬性。第五十二頁,共九十六頁,2022年,8月28日10.3.4確定屬性(3)把限定誤當(dāng)成屬性正確使用限定詞往往可以減少關(guān)聯(lián)的重數(shù)。如果把某個屬性值固定下來以后能減少關(guān)聯(lián)的重數(shù),則應(yīng)該考慮把這個屬性重新表述成一個限定詞。在ATM系統(tǒng)的例子中,“分行代碼”、“賬號”、“雇員號”、“站號”等都是限定詞。第五十三頁,共九十六頁,2022年,8月28日10.3.4確定屬性(4)誤把內(nèi)部狀態(tài)當(dāng)成了屬性如果某個性質(zhì)是對象的非公開的內(nèi)部狀態(tài),則應(yīng)該從對象模型中刪掉這個屬性。(5)過于細化在分析階段應(yīng)該忽略那些對大多數(shù)操作都沒有影響的屬性。(6)存在不一致的屬性類應(yīng)該是簡單而且一致的。如果得出一些看起來與其他屬性毫不相關(guān)的屬性,則應(yīng)該考慮把該類分解成兩個不同的類。第五十四頁,共九十六頁,2022年,8月28日10.3.5識別繼承關(guān)系一般說來,可以使用兩種方式建立繼承關(guān)系:自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個過程實質(zhì)上模擬了人類歸納思維過程。在ATM系統(tǒng)中,“遠程事務(wù)”和“柜員事務(wù)”是類似的,可以泛化出父類“事務(wù)”;類似地,可以從“ATM”和“柜員終端”泛化出父類“輸入站”。第五十五頁,共九十六頁,2022年,8月28日10.3.5識別繼承關(guān)系自底向上也稱為從特殊類發(fā)現(xiàn)一般類。如下圖的例子:公司職員股東姓名身分證號碼……股份……職員工資……………………股東姓名身分證號碼股份…………職員姓名身分證號碼工資…………?第五十六頁,共九十六頁,2022年,8月28日10.3.5識別繼承關(guān)系(2)自頂向下:

把現(xiàn)有類細化成更具體的子類,這模擬了人類的演繹思維過程。利用多重繼承可以提高共享程度,但是同時也增加了概念上以及實現(xiàn)時的復(fù)雜程度。使用多重繼承機制時,通常應(yīng)該指定一個主要父類,從它繼承大部分屬性和行為;次要父類只補充一些屬性和行為。第五十七頁,共九十六頁,2022年,8月28日10.3.5識別繼承關(guān)系自頂向下也稱為從一般類發(fā)現(xiàn)特殊類。公司職員股東姓名身分證號碼……股份……職員工資……公司職員姓名身分證號碼股份工資…………………………??第五十八頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改軟件開發(fā)過程是一個迭代的過程。建模過程同理。面向?qū)ο蟮母拍詈头栐谡麄€開發(fā)過程中都是一致的,更容易實現(xiàn)反復(fù)修改、逐步完善。有些細化工作是在建立了動態(tài)模型和功能模型之后才進行的。建模的步驟并不一定嚴(yán)格按照前面講述的次序進行。第五十九頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改1.分解“現(xiàn)金兌換卡”類“現(xiàn)金兌換卡”有兩個相對獨立的功能,它既是鑒別儲戶使用ATM的權(quán)限的卡,又是ATM獲得分行代碼和卡號等數(shù)據(jù)的數(shù)據(jù)載體。因此把“現(xiàn)金兌換卡”類分解為“卡權(quán)限”和“現(xiàn)金兌換卡”兩個類。前一個類標(biāo)志儲戶訪問賬戶的權(quán)限,后一個類是含有分行代碼和卡號的數(shù)據(jù)載體。多張現(xiàn)金兌換卡可能對應(yīng)著相同的訪問權(quán)限。關(guān)聯(lián)第六十頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改2.“事務(wù)”由“更新”組成一個事務(wù)包含對賬戶的若干次更新,更新指的是對賬戶所做的一個動作(取款、存款或查詢)?!案隆彪m然代表一個動作,但是它有自己的屬性(類型、金額等),應(yīng)該獨立存在,因此應(yīng)該把它作為類。3.把“分行”與“分行計算機”合并區(qū)分“分行”與“分行計算機”,對于本系統(tǒng)并沒有多大意義,為簡單起見,應(yīng)該把它們合并。類似地,合并“總行”和“中央計算機”。第六十一頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改取消沒有特殊屬性的特殊類。大學(xué)生研究生研究方向指導(dǎo)教師……學(xué)生姓名學(xué)號班級…………研究生研究方向指導(dǎo)教師……學(xué)生姓名學(xué)號班級…………第六十二頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改通過增加屬性簡化一般-特殊結(jié)構(gòu)。人員…………男人…………女人……………………美國人…………日本人…………人員性別國籍…………中國人第六十三頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改兩種結(jié)構(gòu)的變通冷藏車…………汽車…………制冷設(shè)備…………冷藏車…………汽車…………制冷設(shè)備…………僅用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)同用冷藏車…………汽車……………………僅用整體-部分結(jié)構(gòu)第六十四頁,共九十六頁,2022年,8月28日10.3.6反復(fù)修改用整體-部分結(jié)構(gòu)實現(xiàn)復(fù)用車床…………機床…………刨床…………起重機…………電動機…………鉆床…………送料車…………第六十五頁,共九十六頁,2022年,8月28日10.4建立動態(tài)模型第一步,編寫典型交互行為的腳本。雖然腳本中不可能包括每個偶然事件,但是,至少必須保證不遺漏常見的交互行為。第二步,從腳本中提取出事件。確定觸發(fā)每個事件的動作對象以及接受事件的目標(biāo)對象。第三步,排列事件發(fā)生的次序。確定每個對象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。最后,比較各個對象的狀態(tài)圖。檢查它們之間的一致性,確保事件之間的匹配。第六十六頁,共九十六頁,2022年,8月28日10.4.1編寫腳本所謂“腳本”,原意是指“表演戲曲、話劇,拍攝電影、電視劇等所依據(jù)的本子,里面記載臺詞、故事情節(jié)等”。在建立動態(tài)模型的過程中,腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件。腳本描述用戶與目標(biāo)系統(tǒng)之間的一個或多個典型的交互過程,以便對目標(biāo)系統(tǒng)的行為有更具體的認(rèn)識。編寫腳本有助于確保整個交互過程的正確性的和清晰性。第六十七頁,共九十六頁,2022年,8月28日10.4.1編寫腳本編寫腳本時,首先編寫正常情況的腳本。然后,考慮特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)。最后,考慮出錯情況。例如,輸入的值為非法值或響應(yīng)失敗。對大多數(shù)交互式系統(tǒng)來說,出錯處理都是最難實現(xiàn)的部分。如果可能,應(yīng)該允許用戶“異常中止”一個操作或“取消”一個操作。此外,還應(yīng)該提供諸如“幫助”和狀態(tài)查詢之類的在基本交互行為之上的“通用”交互行為。第六十八頁,共九十六頁,2022年,8月28日10.4.1編寫腳本腳本描述事件序列。每當(dāng)系統(tǒng)中的對象與用戶交換信息時,就發(fā)生一個事件。所交換的信息值就是該事件的參數(shù)(例如,“輸入密碼”事件的參數(shù)是所輸入的密碼)。也有許多事件是無參數(shù)的,這樣的事件僅傳遞一個信息——該事件已經(jīng)發(fā)生了。對于每個事件,都應(yīng)該指明觸發(fā)該事件的動作對象(例如,系統(tǒng)、用戶或其他外部事物)、接受事件的目標(biāo)對象以及該事件的參數(shù)。第六十九頁,共九十六頁,2022年,8月28日10.4.2設(shè)想用戶界面大多數(shù)交互行為都可以分為應(yīng)用邏輯和用戶界面兩部分。通常,系統(tǒng)分析員首先集中精力考慮系統(tǒng)的信息流和控制流,而不是首先考慮用戶界面。事實上,采用不同界面(例如,命令行或圖形用戶界面),可以實現(xiàn)同樣的程序邏輯。應(yīng)用邏輯是內(nèi)在的、本質(zhì)的內(nèi)容,用戶界面是外在的表現(xiàn)形式。動態(tài)模型著重表示應(yīng)用系統(tǒng)的控制邏輯。第七十頁,共九十六頁,2022年,8月28日10.4.2設(shè)想用戶界面圖10.7ATM的界面格式第七十一頁,共九十六頁,2022年,8月28日10.4.3畫事件跟蹤圖完整、正確的腳本為建立動態(tài)模型奠定了必要的基礎(chǔ)。為了有助于建立動態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖。為此首先需要進一步明確事件及事件與對象的關(guān)系。第七十二頁,共九十六頁,2022年,8月28日10.4.3畫事件跟蹤圖1.確定事件應(yīng)該仔細分析每個腳本,以便從中提取出所有外部事件。事件包括系統(tǒng)與用戶交互的所有信號、輸入、輸出、中斷、動作等。從腳本中容易找出正常事件,但是不要遺漏了異常事件和出錯條件。傳遞信息的對象的動作也是事件。例如,儲戶插入現(xiàn)金兌換卡、儲戶輸入密碼、ATM吐出現(xiàn)金等都是事件。大多數(shù)對象到對象的交互行為都對應(yīng)著事件。第七十三頁,共九十六頁,2022年,8月28日10.4.3畫事件跟蹤圖應(yīng)該把對控制流產(chǎn)生相同效果的那些事件組合在一起作為一類事件,并給它們?nèi)∫粋€惟一的名字。例如,“吐出現(xiàn)金”是一個事件類,盡管這類事件中的每個個別事件的參數(shù)值不同(吐出的現(xiàn)金數(shù)額不同),然而這并不影響控制流。第七十四頁,共九十六頁,2022年,8月28日10.4.3畫事件跟蹤圖2.畫出事件跟蹤圖從腳本中提取出各類事件并確定了每類事件的發(fā)送對象和接受對象之后,就可以用事件跟蹤圖把事件序列以及事件與對象的關(guān)系,形象、清晰地表示出來。事件跟蹤圖實質(zhì)上是擴充的腳本,可認(rèn)為事件跟蹤圖是簡化的UML順序圖。第七十五頁,共九十六頁,2022年,8月28日事件跟蹤圖舉例:打電話掛斷電話電話切斷掛斷電話通話通話停止振鈴?fù)V拐疋忢憫?yīng)電話電話振鈴鈴聲撥號(3)撥號(7撥號(3)撥號(2)電話忙音結(jié)束撥號(8)電話忙音開始拿起聽筒電話線接電話者打電話者第七十六頁,共九十六頁,2022年,8月28日存量為零找零扣減存量燈亮余額飲料結(jié)算選擇鍵#選擇按紐燈亮總金額夠顯示總額總額累加投入硬幣金額計算器存量計算器顧客售貨機選擇鍵售完燈舉例:飲料自動售貨機系統(tǒng)的時序圖第七十七頁,共九十六頁,2022年,8月28日10.4.4畫狀態(tài)圖狀態(tài)圖描繪事件與對象狀態(tài)的關(guān)系。當(dāng)對象接受了一個事件以后,它的下個狀態(tài)取決于當(dāng)前狀態(tài)及所接受的事件。由事件引起的狀態(tài)改變稱為“轉(zhuǎn)換”。通常,用一張狀態(tài)圖描繪一類對象的行為,它確定了由事件序列引出的狀態(tài)序列。但是,也不是任何一個類都需要有一張狀態(tài)圖描繪它的行為。系統(tǒng)分析員應(yīng)該集中精力僅考慮具有重要交互行為的那些類。第七十八頁,共九十六頁,2022年,8月28日10.4.4畫狀態(tài)圖從一張事件跟蹤圖出發(fā)畫狀態(tài)圖時,應(yīng)該集中精力僅考慮影響一類對象的事件,也就是說,僅考慮事件跟蹤圖中指向某條豎線的那些箭頭線。如果同一個對象對相同事件的響應(yīng)不同,則這個對象處在不同狀態(tài)。應(yīng)該盡量給每個狀態(tài)取個有意義的名字。通常,從事件跟蹤圖中當(dāng)前考慮的豎線射出的箭頭線,是這條豎線代表的對象達到某個狀態(tài)時所做的行為(往往是引起另一類對象狀態(tài)轉(zhuǎn)換的事件)。第七十九頁,共九十六頁,2022年,8月28日10.4.4畫狀態(tài)圖根據(jù)一張事件跟蹤圖畫出狀態(tài)圖之后,再把其他腳本的事件跟蹤圖合并到已畫出的狀態(tài)圖中。為此需在事件跟蹤圖中找出以前考慮過的腳本的分支點例如“驗證賬戶”就是一個分支點,因為驗證的結(jié)果可能是“賬戶有效”,也可能是“無效賬戶”然后把其他腳本中的事件序列并入已有的狀態(tài)圖中,作為一條可選的路徑。第八十頁,共九十六頁,2022年,8月28日10.4.4畫狀態(tài)圖考慮完正常事件之后再考慮邊界情況和特殊情況,其中包括在不適當(dāng)時候發(fā)生的事件。有時用戶不能做出快速響應(yīng),然而某些資源又必須及時收回,于是在一定間隔后就產(chǎn)生了“超時”事件。對用戶出錯情況往往需要花費很多精力處理,但是,出錯處理是不能省略的。第八十一頁,共九十六頁,2022年,8月28日10.4.4畫狀態(tài)圖圖10.10總行類的狀態(tài)圖第八十二頁,共九十六頁,2022年,8月28日10.4.4畫狀態(tài)圖圖10.11分行類的狀態(tài)圖第八十三頁,共九十六頁,2022年,8月28日10.4.5審查動態(tài)模型各個類的狀態(tài)圖通過共享事件合并起來,構(gòu)成了系統(tǒng)的動態(tài)模型。在完成了每個具有重要交互行為的類的狀態(tài)圖之后,應(yīng)該檢查系統(tǒng)級的完整性和一致性。每個事件都應(yīng)該既有發(fā)送對象又有接受對象,當(dāng)然,有時發(fā)送者和接受者是同一個對象。對于沒有前驅(qū)或沒有后繼的狀態(tài)應(yīng)該著重審查,如果這個狀態(tài)既不是交互序列的起點也不是終點,則發(fā)現(xiàn)了一個錯誤。第八十四頁,共九十六頁,2022年,8月28日10.4.5審查動態(tài)模型應(yīng)該審查每個事件,跟蹤它對系統(tǒng)中各個對象所產(chǎn)生的效果,以保證它們與每個腳本都匹配。在總行類的狀態(tài)圖中,事件“分行代碼錯”是由總行發(fā)出的,但是在ATM類的狀態(tài)圖中并沒有一個狀態(tài)接受這個事件。因此,在ATM類的狀態(tài)圖中應(yīng)該再補充一個狀態(tài)“do/顯示分行代碼錯信息”,它接受由前驅(qū)狀態(tài)“do/驗證賬戶”發(fā)出的事件“分行代碼錯”,它的后續(xù)狀態(tài)是“退卡”。第八十五頁,共九十六頁,2022年,8月28日10.5建立功能模型功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。其中的處理功能可以用IPO圖(或表)、偽碼等多種方式進一步描述。通常在建立了對象模型和動態(tài)模型之后再建立功能模型。第八十六頁,共九十六頁,2022年,8月28日10

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論