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

下載本文檔

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

文檔簡(jiǎn)介

1、25軟件工程導(dǎo)論(第五版)第10章 面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程不論采用哪種軟件工程方法開發(fā)軟件,需求分析的主要工作都是:理解需求、表達(dá)需求和驗(yàn)證需求,下面的圖概括地表示了參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng)的過程。圖: 參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng) 面向?qū)ο蠓治觯∣bject-Oriented Analysis,簡(jiǎn)稱OOA)的關(guān)鍵就是識(shí)別出對(duì)象與類,并分析它們之間的關(guān)系,最終建立對(duì)象模型、動(dòng)態(tài)模型和功能模型。 10.1.1 概述 系統(tǒng)分析員要善于學(xué)習(xí)、勇于實(shí)踐,更重要的是一切從實(shí)際出發(fā)。注“OOA就是抽取和整理用戶需求并建立問題域精確模型的過程?!保≒231)這在一開始能做到嗎?扯蛋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)模型的過程是一個(gè)迭代(iterations)式的自頂向下的求精過程。對(duì)于一個(gè)大型復(fù)雜系統(tǒng)來說對(duì)象模型一般由下述5個(gè)層次組成:圖10.2 復(fù)雜問題的對(duì)象模型的5個(gè)層次其中主題層是指從一個(gè)更高(高于“類”)的抽象層次來描述對(duì)象模型(即從一個(gè)相當(dāng)高的層次上描述總體模型),通過劃分“主題”把一個(gè)復(fù)雜系統(tǒng)的對(duì)象模型分解成幾個(gè)不同的概念范疇。其實(shí)上述5個(gè)層次就是OOA中建立對(duì)象模型的5項(xiàng)主要工作:找出類和對(duì)象,識(shí)別結(jié)構(gòu)(類或?qū)ο笾g的關(guān)系),識(shí)別主題、定義

3、屬性、定義服務(wù)。我們知道動(dòng)態(tài)模型和功能模型中都包含了對(duì)象模型中的操作,因此人們?cè)诙x每個(gè)類中的服務(wù)前,往往先建立起動(dòng)態(tài)模型和功能模型,這樣說來OOA大體上可按下列順序進(jìn)行: (1)確定類和對(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書寫要點(diǎn) 10.2.2例子我們用“ATM系統(tǒng)”(ATM是Automatic Teller Machine的縮寫,意即自動(dòng)柜員機(jī))的開發(fā)

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

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

6、關(guān)聯(lián)也要?jiǎng)h除 2)無關(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)該描述問題域的靜態(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)分解:分解已確定的類以適用關(guān)聯(lián) 3)補(bǔ)充:及時(shí)補(bǔ)充遺漏關(guān)聯(lián) 4)標(biāo)明重?cái)?shù):但無需花過多精力圖10.3ATM系統(tǒng)原始的類圖10.3.3劃分主題按問題領(lǐng)域而不是用功能分解來高度概括主題10.3.4確定屬性屬性是類中所定義的數(shù)據(jù),它表明了對(duì)象的性質(zhì)。一般來說,確定屬性的過程包括分析和選擇兩個(gè)步驟:1. 分析通常用名詞詞組表

7、示屬性,如:“汽車的顏色”、“光標(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)類屬性與對(duì)象屬性(例:依賴某個(gè)關(guān)聯(lián)鏈的性質(zhì)是關(guān)聯(lián)類屬性);3) 區(qū)分限定詞和屬性(能用限定詞更好)4) 區(qū)分內(nèi)部狀態(tài)和屬性(例:某性質(zhì)是對(duì)象的內(nèi)部狀態(tài))5) 忽略無影響的屬性(在分析階段應(yīng)該忽略對(duì)大多數(shù)操作無影響的屬性)6) 注意屬性的相關(guān)性(分解該“類”) 圖10.4ATM系統(tǒng)對(duì)象模型中的屬性10.3.5識(shí)別繼承關(guān)系

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

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

10、本的目的是保證不遺漏重要的交互步驟。實(shí)質(zhì) 編寫腳本的實(shí)質(zhì)是分析用戶對(duì)與系統(tǒng)交互過程的要求。編寫腳本時(shí),首先編寫正常情況的腳本,其次考慮特殊情況,最后考慮出錯(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畫事件跟蹤圖腳本為建立動(dòng)態(tài)模型(狀態(tài)圖)提供了很好的基礎(chǔ),但用自然語言書寫的腳本還不夠簡(jiǎn)明,并

11、且會(huì)有二義性,因此在畫狀態(tài)圖前,我們往往先畫出事件跟蹤圖簡(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)作為一類事件。經(jīng)過分析要確定每類事件的發(fā)送對(duì)象和接受對(duì)象。2. 畫出事件跟蹤圖 從腳本中提取出各類事件,并確定每類事件的發(fā)送對(duì)象和接受對(duì)象,就可以用事件跟蹤圖把事件序列以及事件與對(duì)象的關(guān)系表示出來,事件跟蹤圖是擴(kuò)充的腳本,

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

13、狀態(tài)圖圖10.10總行類的狀態(tài)圖圖10.11分行類的狀態(tài)圖10.4.5審查動(dòng)態(tài)模型各個(gè)類的狀態(tà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畫出基本系統(tǒng)模型圖最高層的DFD圖10.12ATM系統(tǒng)的基本系統(tǒng)模型10.5.2畫出功能級(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ú)立單元。 在確定類中的操作時(shí),既要考慮該類實(shí)體的常規(guī)行為,又要考慮本系統(tǒng)中特殊的服務(wù)。1. 常規(guī)行為在分析階段可以認(rèn)為,類中定義的每個(gè)屬性都是可以訪問的,也就是類中已經(jīng)定義了讀、寫該類每個(gè)屬性的操作,而無需顯式表示這些常規(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論