第7章 面向?qū)ο蠓治?1_第1頁
第7章 面向?qū)ο蠓治?1_第2頁
第7章 面向?qū)ο蠓治?1_第3頁
第7章 面向?qū)ο蠓治?1_第4頁
第7章 面向?qū)ο蠓治?1_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章面向?qū)ο蠓治?.1面向?qū)ο蠓治龇椒?/p>

7.1.1面向?qū)ο蠓治鲞^程面向?qū)ο蟮姆治鲋饕杂美P蜑榛A(chǔ)。開發(fā)人員在收集到的原始需求的基礎(chǔ)上,通過構(gòu)建用例模型從而得到系統(tǒng)的需求。進(jìn)而再通過對用例模型的完善,使得需求得到改善。所謂用例是指系統(tǒng)中的一個功能單元,可以描述為參與者與系統(tǒng)之間的一次交互。用例常被用來收集用戶的需求。首先要找到系統(tǒng)的操作者,即用例的參與者。參與者是在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進(jìn)行有意義交互的任何事物。可以把參與者執(zhí)行的每一個系統(tǒng)功能都看作一個用例。可以說,用例描述了系統(tǒng)的功能,涉及系統(tǒng)為了實現(xiàn)一個功能目標(biāo)而關(guān)聯(lián)的參與者、對象和行為。確定了系統(tǒng)的所有用例之后,就可以開始識別目標(biāo)系統(tǒng)中的對象和類了。把具有相似屬性和操作的對象定義為一個類。7.1面向?qū)ο蠓治龇椒?/p>

邊界類示意圖控制類示意圖實體類示意圖目標(biāo)系統(tǒng)的類可以劃分為邊界類、控制類和實體類。邊界類代表了系統(tǒng)及其操參與者的邊界,描述參與者與系統(tǒng)之間的交互。它更加關(guān)注系統(tǒng)的職責(zé),而不是實現(xiàn)職責(zé)的具體細(xì)節(jié)。通常,界面控制類、系統(tǒng)和設(shè)備接口類都屬于邊界類??刂祁惔砹讼到y(tǒng)的邏輯控制,描述一個用例所具有的事件流的控制行為,實現(xiàn)對用例行為的封裝。通常,可以為每個用例定義一個控制類。實體類描述了系統(tǒng)中必須存儲的信息及相關(guān)的行為,通常對應(yīng)于現(xiàn)實世界中的事物。7.1面向?qū)ο蠓治龇椒?/p>

確定了系統(tǒng)的類和對象之后,就可以分析類之間的關(guān)系了。對象或類之間的關(guān)系有依賴、關(guān)聯(lián)、聚合、組合、泛化和實現(xiàn)。依賴關(guān)系是“非結(jié)構(gòu)化”的和短暫的關(guān)系,表明某個對象會影響另外一個對象的行為或服務(wù)。關(guān)聯(lián)關(guān)系是“結(jié)構(gòu)化”的關(guān)系,描述對象之間的連接。聚合關(guān)系和組合關(guān)系是特殊的關(guān)聯(lián)關(guān)系,它們強(qiáng)調(diào)整體和部分之間的從屬性,組合是聚合的一種形式,組合關(guān)系對應(yīng)的整體和部分具有很強(qiáng)的歸屬關(guān)系和一致的生命期。比如,計算機(jī)和顯示器就屬于聚合關(guān)系。泛化關(guān)系與類間的繼承類似。實現(xiàn)關(guān)系是針對類與接口的關(guān)系。7.1面向?qū)ο蠓治龇椒?/p>

明確了對象、類和類之間的層次關(guān)系之后,需要進(jìn)一步識別出對象之間的動態(tài)交互行為,即系統(tǒng)響應(yīng)外部事件或操作的工作過程。一般采用順序圖將用例和分析的對象聯(lián)系在一起,描述用例的行為是如何在對象之間分布的。也可以采用協(xié)作圖、狀態(tài)圖或活動圖。

最后,需要將需求分析的結(jié)果用多種模型圖表示出來,并對其進(jìn)行評審。由于分析的過程是一個循序漸進(jìn)的過程,合理的分析模型需要多次迭代才能得到。7.1面向?qū)ο蠓治龇椒?/p>

7.1面向?qū)ο蠓治龇椒?/p>

7.1.2面向?qū)ο蠓治鲈瓌t1.定義有實際意義的對象2.模型的描述要規(guī)范、準(zhǔn)確3.共享性4.封裝性7.2面向?qū)ο蠼?/p>

在面向?qū)ο蟮姆治鲋?,通常需要建?種形式的模型,它們分別是描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型,描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型,以及描述系統(tǒng)功能的功能模型。這3種模型都涉及數(shù)據(jù)、控制、操作等共同的概念,只不過每種模型描述的側(cè)重點(diǎn)不同。一個典型的軟件系統(tǒng)通常包括的內(nèi)容為:它使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)。7.2面向?qū)ο蠼?/p>

7.2.1建立對象模型復(fù)雜問題(大型系統(tǒng))的對象模型通常由下述5個層次組成:主題層(也稱為范疇層)、類與對象層、結(jié)構(gòu)層、屬性層和服務(wù)層,如圖所示。上述5個層次對應(yīng)著在面向?qū)ο蠓治鲞^程中建立對象模型的5項主要活動:劃分主題;找出類與對象;識別結(jié)構(gòu);定義屬性;定義服務(wù)。7.2面向?qū)ο蠼?/p>

1.劃分主題A.主題主題是把一組具有較強(qiáng)聯(lián)系的類組織在一起而得到的類的集合。主題的劃分有以下兩種方式。自底向上。先建立對象類,然后把對象類中關(guān)系較密切的類組織為一個主題。如果主題數(shù)量仍然很多,則可進(jìn)一步將聯(lián)系較強(qiáng)的小主題組織為大主題,直到系統(tǒng)中最上層主題數(shù)不超過7個。這種方式適合于小型系統(tǒng)或中型系統(tǒng)。自頂向下。先分析系統(tǒng),確定幾個大的主題,每個主題相當(dāng)于一個子系統(tǒng)。將這些子系統(tǒng)再分別進(jìn)行面向?qū)ο蠓治觯⒏鱾€子系統(tǒng)中的對象類。最終可將各個子系統(tǒng)合并為一個大的子系統(tǒng)。7.2面向?qū)ο蠼?/p>

B.主題圖上述的主題劃分的最終結(jié)果能夠形成一個完整的對象類圖和一個主題圖。主題圖一般有如下3種表示方式。展開方式將關(guān)系較密切的對象類畫在一個框內(nèi),框的每個角標(biāo)上主題號,框內(nèi)是詳細(xì)的對象類圖,標(biāo)出每個類的屬性和服務(wù)以及類之間的詳細(xì)關(guān)系,這就是主題圖的展開方式。壓縮方式將每個主題號及主題名分別寫在一個框內(nèi),這就是主題圖的壓縮方式。半展開方式。將每個框內(nèi)主題號、主題名及該主題中所含的對象類全部列出,這就是主題圖的半展開方式。主題圖的壓縮方式是為了表明系統(tǒng)的總體情況,而主題圖的展開方式是為了表明系統(tǒng)的詳細(xì)情況。7.2面向?qū)ο蠼?/p>

2.確定類與對象建立對象模型首先要確定對象、類,然后分析對象、類之間的相互關(guān)系。對象類之間的關(guān)系可分為關(guān)聯(lián)、依賴、泛化和實現(xiàn)等關(guān)系。對象模型用類符號、類實例符號、類的關(guān)聯(lián)關(guān)系、繼承關(guān)系等表示。有些對象具有主動服務(wù)功能,稱為主動對象。7.2面向?qū)ο蠼?/p>

3.確定屬性屬性的確定既與問題域有關(guān),也和目標(biāo)系統(tǒng)的任務(wù)有關(guān)。標(biāo)識屬性的啟發(fā)性準(zhǔn)則如下:1)每個對象至少需包含一個屬性。2)屬性取值必需適合對象類的所有實例。3)出現(xiàn)在泛化關(guān)系中的對象所繼承的屬性必須與泛化關(guān)系一致。4)系統(tǒng)的所有存儲數(shù)據(jù)必須定義為屬性。5)對象的導(dǎo)出屬性應(yīng)當(dāng)略去。6)在分析階段,如果某屬性描述了對象的外部不可見狀態(tài),應(yīng)將該屬性從分析模型中刪去。通用的屬性應(yīng)放在泛化結(jié)構(gòu)中較高層的類中,特殊的屬性應(yīng)放在較低層的類中。實體關(guān)系圖中的實體可能對應(yīng)于某一對象。這樣,實體的屬性就會簡單地成為對象的屬性。如果實體(如學(xué)校)不只對應(yīng)于一類對象,那么這個實體的屬性必須分配到分析模型的不同類的對象之中。7.2面向?qū)ο蠼?/p>

4.確定服務(wù)“對象”是由描述其屬性的數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的操作(即方法或服務(wù)),封裝在一起構(gòu)成的獨(dú)立單元。因此,為建立完整的對象模型,既要確定類中應(yīng)該定義的屬性,又要確定類中應(yīng)該定義的服務(wù)。但是,需要等到建立了動態(tài)模型和功能模型之后,才能最終確定類中應(yīng)有的服務(wù),因為這兩個模型更明確地描述了每個類中應(yīng)該提供哪些服務(wù)。實際上,在確定類中應(yīng)有的服務(wù)時,既要考慮該類實體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務(wù)。7.2面向?qū)ο蠼?/p>

7.2.2建立動態(tài)模型對象模型建立后,就需考察對象和關(guān)系的動態(tài)變化情況。動態(tài)模型描述對象和關(guān)系的狀態(tài)、狀態(tài)轉(zhuǎn)換的觸發(fā)事件、對象的服務(wù)(行為)。(1)狀態(tài)狀態(tài)是對象在其生命周期中的某個特定階段所處的某種情形,它是對影響對象行為的屬性值的一種抽象。狀態(tài)規(guī)定了對象對事件的響應(yīng)方式。對象對事件的響應(yīng),既可以是做一個(或一系列)的動作,也可以僅僅改變對象本身的狀態(tài),還可以是既改變狀態(tài)又做動作。(2)事件事件是引起對象狀態(tài)轉(zhuǎn)換的控制信息,它是在某個特定時刻所發(fā)生的事情,它是對引起對象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的現(xiàn)實世界中的抽象。事件沒有持續(xù)時間,是瞬間完成的。(3)服務(wù)服務(wù)(行為)是指對象達(dá)到某種狀態(tài)時所做的一系列處理操作。這些操作是需要消耗時間的。建立動態(tài)模型首先要編寫腳本,從腳本中提取事件,然后畫出UML的順序圖(也稱事件跟蹤圖),最后畫出對象的狀態(tài)轉(zhuǎn)換圖。7.2面向?qū)ο蠼?/p>

1.編寫腳本在建立動態(tài)模型過程中,腳本是系統(tǒng)執(zhí)行某個功能的一系列事件,腳本描述用戶(或其他外部設(shè)備)與目標(biāo)系統(tǒng)之間的一個或多個典型的交互過程,以便對目標(biāo)系統(tǒng)的行為有更具體的認(rèn)識。腳本通常起始于一個系統(tǒng)外部的輸人事件,結(jié)束于一個系統(tǒng)外部的輸出事件,它可以包括發(fā)生在這個期間的系統(tǒng)所有的內(nèi)部事件(包括正常情況腳本和異常情況腳本)。編寫腳本的目的是保證不遺漏系統(tǒng)功能中重要的交互步驟,有助于確保整個交互過程的正確性和清晰性。7.2面向?qū)ο蠼?/p>

例如,下面陳述的是客戶在ATM機(jī)上取款的腳本。(1)客戶將卡插入ATM機(jī),開始用例。(2)ATM顯示歡迎消息并提示客戶輸入密碼。(3)客戶輸入密碼。(4)ATM確認(rèn)密碼有效。如果無效則執(zhí)行子事件流a。如果與主機(jī)聯(lián)接有問題,則執(zhí)行異常事件流e。(5)ATM提供以下選項:存錢、取錢、查詢。(6)用戶選擇取錢選項。(7)ATM提示輸入所取金額。(8)用戶輸入所取金額。(9)ATM確定該賬戶是否有足夠的金額。如果余額不夠,則執(zhí)行子事件流b,如果與主機(jī)聯(lián)接有問題,則執(zhí)行異常事件流e。(10

)ATM從客戶賬戶中減去所取金額。(11)ATM向客戶提供要取的錢。(12)ATM打印清單。(13)ATM退出客戶的卡,用例結(jié)束。子事件流a:a1.

提示用戶輸入無效密碼,請求再次輸入;a2.如果三次輸入無效密碼,系統(tǒng)自動關(guān)閉,退出客戶銀行卡。子事件流b:b1.提示用戶余額不夠。b2.返回(5),等待客戶重新選擇。7.2面向?qū)ο蠼?/p>

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)的控制邏輯。但是,用戶界面的美觀、方便、易學(xué)及效率,是用戶使用系統(tǒng)時首先感受到的。用戶界面的美觀與否往往對用戶是否喜歡、是否接受一個系統(tǒng)起很重要的作用。在分析階段不能忽略用戶界面的設(shè)計,在這個階段用戶界面的細(xì)節(jié)并不太重要,重要的是在這種界面下的信息交換方式。應(yīng)該快速建立用戶界面原型,供用戶試用與評價。7.2面向?qū)ο蠼?/p>

畫UML順序圖或活動圖完整、正確的腳本為建立動態(tài)模型奠定了必要的基礎(chǔ)。但是,用自然語言書寫的腳本往往不夠簡明,而且有時在閱讀時會有二義性。為了有助于建立動態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖。UML順序圖(也稱為事件跟蹤圖)中,一條豎線代表應(yīng)用領(lǐng)域中的一個類,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對象指向接受對象,時間從上向下遞增。7.2面向?qū)ο蠼?/p>

4.畫狀態(tài)圖如果對象的屬性值不相同時,對象的行為規(guī)則有所不同,我們稱對象處于不同的狀態(tài)。由于對象在不同狀態(tài)下呈現(xiàn)不同的行為方式,所以應(yīng)分析對象的狀態(tài),才可正確地認(rèn)識對象的行為并定義它的服務(wù)。例如,通信系統(tǒng)中的電話對象,就有電話閑置、撥通中、忙音、通話、斷線、超時等狀態(tài)。這里可以專門定義一個“狀態(tài)”屬性。該屬性有之前介紹的幾種屬性值,每一個屬性值就是一種狀態(tài)。有了狀態(tài)圖,就可“執(zhí)行”狀態(tài)圖,以便檢驗狀態(tài)轉(zhuǎn)換的正確性和協(xié)調(diào)一致性。執(zhí)行方法是從任意一個狀態(tài)開始,當(dāng)出現(xiàn)一個事件時,引起狀態(tài)轉(zhuǎn)換,到達(dá)另一狀態(tài),在狀態(tài)人口處執(zhí)行相關(guān)的行為,在另一事件出現(xiàn)之前,這個狀態(tài)應(yīng)該不發(fā)生變化。7.2面向?qū)ο蠼?/p>

7.2.3建立功能模型功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。數(shù)據(jù)流圖中的處理對應(yīng)于狀態(tài)圖中的活動或動作,數(shù)據(jù)流對應(yīng)于對象圖中的對象或?qū)傩?。建立功能模型的步驟如下(1)確定輸入和輸出值(2)畫數(shù)據(jù)流圖(3)定義服務(wù)7.2面向?qū)ο蠼?/p>

1.確定輸入和輸出值數(shù)據(jù)流圖中的輸入和輸出值是系統(tǒng)與外部之間進(jìn)行交互的事件的參數(shù)。2.畫數(shù)據(jù)流圖功能模型可用多張數(shù)據(jù)流圖等來表示。在面向?qū)ο蠓椒ㄖ?,?shù)據(jù)源往往是主動對象,它通過生成或使用數(shù)據(jù)來驅(qū)動數(shù)據(jù)流。數(shù)據(jù)終點(diǎn)接收數(shù)據(jù)的輸出流。數(shù)據(jù)流圖中的數(shù)據(jù)存儲是被動對象,本身不產(chǎn)生任何操作,只響應(yīng)存儲和訪問數(shù)據(jù)的要求。輸入箭頭表示增加、更改或刪除所存儲的數(shù)據(jù),輸出箭頭表示從數(shù)據(jù)存儲中查找信息。7.2面向?qū)ο蠼?/p>

3.定義服務(wù)類的服務(wù)與對象模型中的屬性和關(guān)聯(lián)的查詢有關(guān),與動態(tài)模型中的事件有關(guān),與功能模型的處理有關(guān)。通過分析,把這些服務(wù)添加到對象模型中去。類的服務(wù)有以下4種:(1)對象模型中的服務(wù)來自對象模型的服務(wù)具有讀和寫屬性值。(2)從事件導(dǎo)出的服務(wù)狀態(tài)圖中發(fā)往對象的事件也就是該對象接收到的消息,因此該對象必須有由消息選擇符指定的操作,這個操作修改對象狀態(tài)(即屬性值)并啟動相應(yīng)的服務(wù)??梢钥闯?,所啟動的這些服務(wù)通常就是接受事件的對象在相應(yīng)狀態(tài)的行為。7.2面向?qū)ο蠼?/p>

(3)自狀態(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

提交評論