第10章面向?qū)ο蠓治鋈鈅第1頁(yè)
第10章面向?qū)ο蠓治鋈鈅第2頁(yè)
第10章面向?qū)ο蠓治鋈鈅第3頁(yè)
第10章面向?qū)ο蠓治鋈鈅第4頁(yè)
第10章面向?qū)ο蠓治鋈鈅第5頁(yè)
已閱讀5頁(yè),還剩20頁(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)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上第10章 面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^(guò)程不論采用哪種軟件工程方法開(kāi)發(fā)軟件,需求分析的主要工作都是:理解需求、表達(dá)需求和驗(yàn)證需求,下面的圖概括地表示了參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng)的過(guò)程。圖: 參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng) 面向?qū)ο蠓治觯∣bject-Oriented Analysis,簡(jiǎn)稱(chēng)OOA)的關(guān)鍵就是識(shí)別出對(duì)象與類(lèi),并分析它們之間的關(guān)系,最終建立對(duì)象模型、動(dòng)態(tài)模型和功能模型。 10.1.1 概述 系統(tǒng)分析員要善于學(xué)習(xí)、勇于實(shí)踐,更重要的是一切從實(shí)際出發(fā)。注“OOA就是抽取和整理用戶需求并建立問(wèn)題域精確模型的過(guò)程?!保≒231)這在一開(kāi)始能做到嗎?扯蛋10.1.

2、2 3個(gè)子模型與5個(gè)層次 面向?qū)ο蠼P杞到y(tǒng)的三個(gè)要素:1)靜態(tài)結(jié)構(gòu)(對(duì)象模型)、2)交互次序(動(dòng)態(tài)模型)、3)數(shù)據(jù)交換(功能模型)。 建立系統(tǒng)模型的過(guò)程是一個(gè)迭代(iterations)式的自頂向下的求精過(guò)程。對(duì)于一個(gè)大型復(fù)雜系統(tǒng)來(lái)說(shuō)對(duì)象模型一般由下述5個(gè)層次組成:圖10.2 復(fù)雜問(wèn)題的對(duì)象模型的5個(gè)層次其中主題層是指從一個(gè)更高(高于“類(lèi)”)的抽象層次來(lái)描述對(duì)象模型(即從一個(gè)相當(dāng)高的層次上描述總體模型),通過(guò)劃分“主題”把一個(gè)復(fù)雜系統(tǒng)的對(duì)象模型分解成幾個(gè)不同的概念范疇。其實(shí)上述5個(gè)層次就是OOA中建立對(duì)象模型的5項(xiàng)主要工作:找出類(lèi)和對(duì)象,識(shí)別結(jié)構(gòu)(類(lèi)或?qū)ο笾g的關(guān)系),識(shí)別主題、定義

3、屬性、定義服務(wù)。我們知道動(dòng)態(tài)模型和功能模型中都包含了對(duì)象模型中的操作,因此人們?cè)诙x每個(gè)類(lèi)中的服務(wù)前,往往先建立起動(dòng)態(tài)模型和功能模型,這樣說(shuō)來(lái)OOA大體上可按下列順序進(jìn)行: (1)確定類(lèi)和對(duì)象(2)確定關(guān)聯(lián)(3)劃分主題(4)定義屬性(5)確定繼承關(guān)系(6)建立動(dòng)態(tài)模型(7)建立功能模型(8)定義服務(wù) 需要注意地是在這里我們根本不強(qiáng)調(diào)順序,更不是談什么步驟。10.2需求陳述需求陳述的主要任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么?”,而不是“系統(tǒng)應(yīng)該怎么做?”10.2.1書(shū)寫(xiě)要點(diǎn) 10.2.2例子我們用“ATM系統(tǒng)”(ATM是Automatic Teller Machine的縮寫(xiě),意即自動(dòng)柜員機(jī))的開(kāi)發(fā)

4、作為OOA&OOD的實(shí)例。圖10.2ATM系統(tǒng)10.3建立對(duì)象模型10.3.1確定類(lèi)與對(duì)象1. 找出候選的類(lèi)與對(duì)象(例:P236 ATM系統(tǒng)) 一般來(lái)說(shuō),大千世界中的客觀事物可分為5類(lèi): 1)可感知的物理實(shí)體,如:飛機(jī),汽車(chē),房屋 2)人或組織的角色,如:教師,醫(yī)生,計(jì)算機(jī)系,學(xué)生處 3)應(yīng)該記憶的事件,如:飛行,演出,訪問(wèn),交通事故 4)對(duì)象的相互作用,如:購(gòu)買(mǎi),結(jié)婚,納稅 5)概念,如:政策,刑法,泛化,集合2. 篩選出正確的類(lèi)與對(duì)象 我們需要確定的類(lèi)與對(duì)象是:(1) 應(yīng)該記錄的對(duì)象(2) 需要它提供服務(wù)的對(duì)象同時(shí)要關(guān)注下述6個(gè)方面: 1) 冗余: 去掉冗余的類(lèi)(如“用戶”)2)

5、無(wú)關(guān): 去掉無(wú)關(guān)的類(lèi)(如“儲(chǔ)蓄所”)3) 籠統(tǒng): 去掉籠統(tǒng)的類(lèi)(如“銀行”)4) 屬性: 區(qū)分屬性和類(lèi)(某個(gè)性質(zhì)若具有很強(qiáng)的獨(dú)立性應(yīng)當(dāng)作為“類(lèi)”)5) 操作: 區(qū)分操作和類(lèi)(本身具有屬性且需獨(dú)立存在的“操作”應(yīng)當(dāng)作為“類(lèi)”)6) 實(shí)現(xiàn): 忽略實(shí)現(xiàn)內(nèi)容(應(yīng)當(dāng)去掉僅和實(shí)現(xiàn)有關(guān)的“類(lèi)”,如“事務(wù)日志”)10.3.2確定關(guān)聯(lián)對(duì)象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)。在分析的起始階段,我們不必花過(guò)多的精力去區(qū)分關(guān)聯(lián)和聚集,聚集不過(guò)是一種特殊的關(guān)聯(lián),是關(guān)聯(lián)的一個(gè)特例。1. 初步確定關(guān)聯(lián) 通過(guò)分析動(dòng)詞詞組我們可以得出大多數(shù)關(guān)聯(lián)(例:P238 ATM系統(tǒng))2. 篩選 篩選時(shí)要關(guān)注下述5個(gè)方面: 1)已刪去的

6、類(lèi)之間的關(guān)聯(lián)也要?jiǎng)h除 2)無(wú)關(guān)的或在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)要?jiǎng)h除 3)描述瞬時(shí)事件的關(guān)系不應(yīng)作為關(guān)聯(lián)(關(guān)聯(lián)應(yīng)該描述問(wèn)題域的靜態(tài)結(jié)構(gòu)) 4)三個(gè)或三個(gè)以上對(duì)象的關(guān)聯(lián)要作分解或描述成限定關(guān)聯(lián) 5)冗余關(guān)聯(lián)要?jiǎng)h除3. 進(jìn)一步完善 完善時(shí)要關(guān)注下述4個(gè)方面: 1)正名:選擇更明確的名字作為關(guān)聯(lián)名 2)分解:分解已確定的類(lèi)以適用關(guān)聯(lián) 3)補(bǔ)充:及時(shí)補(bǔ)充遺漏關(guān)聯(lián) 4)標(biāo)明重?cái)?shù):但無(wú)需花過(guò)多精力圖10.3ATM系統(tǒng)原始的類(lèi)圖10.3.3劃分主題按問(wèn)題領(lǐng)域而不是用功能分解來(lái)高度概括主題10.3.4確定屬性屬性是類(lèi)中所定義的數(shù)據(jù),它表明了對(duì)象的性質(zhì)。一般來(lái)說(shuō),確定屬性的過(guò)程包括分析和選擇兩個(gè)步驟:1. 分析通常用名

7、詞詞組表示屬性,如:“汽車(chē)的顏色”、“光標(biāo)的位置”,而用形容詞表示可枚舉的具體屬性,如:“紅色的”、“白色的”。在分析階段應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,而不要考慮那些純粹用于實(shí)現(xiàn)的屬性。2. 選擇選擇時(shí)要關(guān)注下述6個(gè)方面: 1) 區(qū)分對(duì)象與屬性(僅關(guān)注其值的是屬性);2) 區(qū)分關(guān)聯(lián)類(lèi)屬性與對(duì)象屬性(例:依賴某個(gè)關(guān)聯(lián)鏈的性質(zhì)是關(guān)聯(lián)類(lèi)屬性);3) 區(qū)分限定詞和屬性(能用限定詞更好)4) 區(qū)分內(nèi)部狀態(tài)和屬性(例:某性質(zhì)是對(duì)象的內(nèi)部狀態(tài))5) 忽略無(wú)影響的屬性(在分析階段應(yīng)該忽略對(duì)大多數(shù)操作無(wú)影響的屬性)6) 注意屬性的相關(guān)性(分解該“類(lèi)”) 圖10.4ATM系統(tǒng)對(duì)象模型中的屬性10.3.5識(shí)別

8、繼承關(guān)系確定了類(lèi)中的屬性之后,就可以利用繼承機(jī)制共享公共性質(zhì),并對(duì)眾多的類(lèi)重新加以組織。一般來(lái)說(shuō),可以應(yīng)用兩種方式建立繼承(即泛化)關(guān)系:(1) 自底向上:抽象出現(xiàn)有類(lèi)的共同性質(zhì)泛化出父類(lèi);(2) 自頂向下:把現(xiàn)有類(lèi)細(xì)化成更具體的子類(lèi)。圖10.5帶有繼承關(guān)系的ATM對(duì)象模型10.3.6反復(fù)修改對(duì)象模型的建立是一個(gè)反復(fù)修改、逐步完善的迭代過(guò)程。對(duì)于初學(xué)者來(lái)說(shuō),可嘗試用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)幾個(gè)較小系統(tǒng),取得一定的經(jīng)驗(yàn)后,再總結(jié)更適合自己的工作方式。1. 分解“現(xiàn)金兌換卡”類(lèi)2. “事務(wù)”由“更新”組成3. 把“分行”與“分行計(jì)算機(jī)”合并圖10.6修改后的ATM對(duì)象模型10.4建立動(dòng)態(tài)模型一般來(lái)說(shuō),建立

9、動(dòng)態(tài)模型的典型步驟如下:(1) 編寫(xiě)腳本,確保不遺漏正常的交互行為;(2) 從腳本中提取事件,確定每個(gè)事件的發(fā)送對(duì)象(觸發(fā)該事件動(dòng)作的對(duì)象)和接受對(duì)象;(3) 畫(huà)事件跟蹤圖(Sequence Diagram,時(shí)序圖或順序圖,描述對(duì)象之間的時(shí)間順序)(4) 畫(huà)狀態(tài)圖(5) 審查狀態(tài)圖的完整性和一致性10.4.1編寫(xiě)腳本腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件(腳本描述事件序列,是用例的實(shí)例,是系統(tǒng)的一種實(shí)際使用方法。),它描述用戶(或其它外部設(shè)備)與系統(tǒng)之間的交互過(guò)程;對(duì)于每個(gè)事件,腳本都應(yīng)該指明觸發(fā)該事件的動(dòng)作對(duì)象(如:系統(tǒng)、用戶或其它外部事物)、接受事件的目標(biāo)對(duì)象,以及該事件的參數(shù)。目的

10、 編寫(xiě)腳本的目的是保證不遺漏重要的交互步驟。實(shí)質(zhì) 編寫(xiě)腳本的實(shí)質(zhì)是分析用戶對(duì)與系統(tǒng)交互過(guò)程的要求。編寫(xiě)腳本時(shí),首先編寫(xiě)正常情況的腳本,其次考慮特殊情況,最后考慮出錯(cuò)情況;如有可能還應(yīng)該允許用戶“異常操作”。此外還應(yīng)該提供“在線幫助”、狀態(tài)查詢等在基本交互行為之上的“通用”交互行為。10.4.2設(shè)想用戶界面用戶界面是用戶對(duì)系統(tǒng)的“第一感”,它往往對(duì)用戶是否喜歡一個(gè)系統(tǒng)起很重要的作用,因此在分析階段也不能完全忽略用戶界面。設(shè)計(jì)用戶界面時(shí)重要的是用戶和系統(tǒng)進(jìn)行信息交換的方式。圖10.7 ATM的界面格式10.4.3畫(huà)事件跟蹤圖腳本為建立動(dòng)態(tài)模型(狀態(tài)圖)提供了很好的基礎(chǔ),但用自然語(yǔ)言書(shū)寫(xiě)的腳本還不夠

11、簡(jiǎn)明,并且會(huì)有二義性,因此在畫(huà)狀態(tài)圖前,我們往往先畫(huà)出事件跟蹤圖簡(jiǎn)化的UML順序圖(Sequence Diagram,時(shí)序圖),為此需進(jìn)一步明確事件(事件就是引起系統(tǒng)做動(dòng)作或(和)轉(zhuǎn)換狀態(tài)的控制信息)及事件與對(duì)象的關(guān)系。1. 確定事件 事件包括系統(tǒng)與用戶(或外部設(shè)備)交互的所有信號(hào)、輸入、輸出、中斷、動(dòng)作等,要注意的是(1)對(duì)象的動(dòng)作也是事件 ;(2)對(duì)控制流產(chǎn)生相同效果的那些事件應(yīng)作為一類(lèi)事件。經(jīng)過(guò)分析要確定每類(lèi)事件的發(fā)送對(duì)象和接受對(duì)象。2. 畫(huà)出事件跟蹤圖 從腳本中提取出各類(lèi)事件,并確定每類(lèi)事件的發(fā)送對(duì)象和接受對(duì)象,就可以用事件跟蹤圖把事件序列以及事件與對(duì)象的關(guān)系表示出來(lái),事件跟蹤圖是擴(kuò)充

12、的腳本,更是簡(jiǎn)化了的UML順序圖。圖10.8ATM系統(tǒng)正常情況腳本的事件跟蹤圖(時(shí)序圖)10.4.4畫(huà)狀態(tài)圖狀態(tài)圖描述了事件與對(duì)象狀態(tài)(對(duì)象生命周期中的階段)的關(guān)系。UML用狀態(tài)圖來(lái)表示對(duì)象的動(dòng)態(tài)行為,它確定了由事件序列引出的狀態(tài)序列。系統(tǒng)分析員應(yīng)僅考慮系統(tǒng)內(nèi)具有重要交互行為的哪些類(lèi),即每個(gè)主動(dòng)發(fā)送事件的對(duì)象類(lèi)的動(dòng)態(tài)行為用一張狀態(tài)圖來(lái)表示,各個(gè)類(lèi)的狀態(tài)圖通過(guò)共享事件合并起來(lái),從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。從一張事件跟蹤圖出發(fā)畫(huà)狀態(tài)圖時(shí),要關(guān)注影響一類(lèi)對(duì)象的事件,即考慮指向某條豎線(對(duì)象)的箭頭線,把這些事件作為狀態(tài)圖中的有向邊(箭頭線),邊上標(biāo)以事件名,兩個(gè)事件之間的間隔就是一個(gè)狀態(tài)。圖10.9 A

13、TM類(lèi)的狀態(tài)圖圖10.10總行類(lèi)的狀態(tài)圖圖10.11分行類(lèi)的狀態(tài)圖10.4.5審查動(dòng)態(tài)模型各個(gè)類(lèi)的狀態(tài)圖通過(guò)共享事件合并起來(lái),就構(gòu)成了系統(tǒng)的“動(dòng)態(tài)模型”,應(yīng)該細(xì)致審查動(dòng)態(tài)模型的完整性和一致性10.5建立功能模型功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組DFD組成,其中處理功能可以用IPO圖(或表)、偽碼等描述。10.5.1畫(huà)出基本系統(tǒng)模型圖最高層的DFD圖10.12ATM系統(tǒng)的基本系統(tǒng)模型10.5.2畫(huà)出功能級(jí)數(shù)據(jù)流圖圖10.13ATM系統(tǒng)的功能級(jí)數(shù)據(jù)流圖10.5.3描述處理框功能10.6定義服務(wù) 對(duì)象是由描述其屬性的數(shù)據(jù),以及可以對(duì)這些數(shù)據(jù)施加的操作,封裝在一起構(gòu)成的獨(dú)立單元。 在確定類(lèi)中的操作時(shí),既要考慮該類(lèi)實(shí)體的常規(guī)行為,又要考慮本系統(tǒng)中特殊的服務(wù)。1. 常規(guī)行為在分析階段可以認(rèn)為,類(lèi)中定義的每個(gè)屬性都是可以訪問(wèn)的,也就是類(lèi)中已經(jīng)定義了讀、寫(xiě)該類(lèi)每個(gè)屬性的操作,而無(wú)需顯式表示這些常規(guī)操作。2. 從事件導(dǎo)出的操作 狀態(tài)圖中若有發(fā)往對(duì)象的事件,該對(duì)象必須要有相應(yīng)的操作。3. 與數(shù)據(jù)流圖中處理邏輯對(duì)應(yīng)的操作 DFD中的每個(gè)處理邏輯都與一個(gè)對(duì)象(或幾個(gè)對(duì)象)上的操作相對(duì)應(yīng)。4. 利用繼承減少冗余操作 應(yīng)盡量利用繼承機(jī)制減少所需定義的

溫馨提示

  • 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)論