




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、25軟件工程導(dǎo)論(第五版)第10章 面向?qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程不論采用哪種軟件工程方法開發(fā)軟件,需求分析的主要工作都是:理解需求、表達需求和驗證需求,下面的圖概括地表示了參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng)的過程。圖: 參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng) 面向?qū)ο蠓治觯∣bject-Oriented Analysis,簡稱OOA)的關(guān)鍵就是識別出對象與類,并分析它們之間的關(guān)系,最終建立對象模型、動態(tài)模型和功能模型。 10.1.1 概述 系統(tǒng)分析員要善于學(xué)習(xí)、勇于實踐,更重要的是一切從實際出發(fā)。注“OOA就是抽取和整理用戶需求并建立問題域精確模型的過程?!保≒231)這在一開始能做到嗎?扯蛋10.1.
2、2 3個子模型與5個層次 面向?qū)ο蠼P杞到y(tǒng)的三個要素:1)靜態(tài)結(jié)構(gòu)(對象模型)、2)交互次序(動態(tài)模型)、3)數(shù)據(jù)交換(功能模型)。 建立系統(tǒng)模型的過程是一個迭代(iterations)式的自頂向下的求精過程。對于一個大型復(fù)雜系統(tǒng)來說對象模型一般由下述5個層次組成:圖10.2 復(fù)雜問題的對象模型的5個層次其中主題層是指從一個更高(高于“類”)的抽象層次來描述對象模型(即從一個相當(dāng)高的層次上描述總體模型),通過劃分“主題”把一個復(fù)雜系統(tǒng)的對象模型分解成幾個不同的概念范疇。其實上述5個層次就是OOA中建立對象模型的5項主要工作:找出類和對象,識別結(jié)構(gòu)(類或?qū)ο笾g的關(guān)系),識別主題、定義
3、屬性、定義服務(wù)。我們知道動態(tài)模型和功能模型中都包含了對象模型中的操作,因此人們在定義每個類中的服務(wù)前,往往先建立起動態(tài)模型和功能模型,這樣說來OOA大體上可按下列順序進行: (1)確定類和對象(2)確定關(guān)聯(lián)(3)劃分主題(4)定義屬性(5)確定繼承關(guān)系(6)建立動態(tài)模型(7)建立功能模型(8)定義服務(wù) 需要注意地是在這里我們根本不強調(diào)順序,更不是談什么步驟。10.2需求陳述需求陳述的主要任務(wù)是準確地回答“系統(tǒng)必須做什么?”,而不是“系統(tǒng)應(yīng)該怎么做?”10.2.1書寫要點 10.2.2例子我們用“ATM系統(tǒng)”(ATM是Automatic Teller Machine的縮寫,意即自動柜員機)的開發(fā)
4、作為OOA&OOD的實例。圖10.2ATM系統(tǒng)10.3建立對象模型10.3.1確定類與對象1. 找出候選的類與對象(例:P236 ATM系統(tǒng)) 一般來說,大千世界中的客觀事物可分為5類: 1)可感知的物理實體,如:飛機,汽車,房屋 2)人或組織的角色,如:教師,醫(yī)生,計算機系,學(xué)生處 3)應(yīng)該記憶的事件,如:飛行,演出,訪問,交通事故 4)對象的相互作用,如:購買,結(jié)婚,納稅 5)概念,如:政策,刑法,泛化,集合2. 篩選出正確的類與對象 我們需要確定的類與對象是:(1) 應(yīng)該記錄的對象(2) 需要它提供服務(wù)的對象同時要關(guān)注下述6個方面: 1) 冗余: 去掉冗余的類(如“用戶”)2) 無關(guān):
5、去掉無關(guān)的類(如“儲蓄所”)3) 籠統(tǒng): 去掉籠統(tǒng)的類(如“銀行”)4) 屬性: 區(qū)分屬性和類(某個性質(zhì)若具有很強的獨立性應(yīng)當(dāng)作為“類”)5) 操作: 區(qū)分操作和類(本身具有屬性且需獨立存在的“操作”應(yīng)當(dāng)作為“類”)6) 實現(xiàn): 忽略實現(xiàn)內(nèi)容(應(yīng)當(dāng)去掉僅和實現(xiàn)有關(guān)的“類”,如“事務(wù)日志”)10.3.2確定關(guān)聯(lián)對象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)。在分析的起始階段,我們不必花過多的精力去區(qū)分關(guān)聯(lián)和聚集,聚集不過是一種特殊的關(guān)聯(lián),是關(guān)聯(lián)的一個特例。1. 初步確定關(guān)聯(lián) 通過分析動詞詞組我們可以得出大多數(shù)關(guān)聯(lián)(例:P238 ATM系統(tǒng))2. 篩選 篩選時要關(guān)注下述5個方面: 1)已刪去的類之間的
6、關(guān)聯(lián)也要刪除 2)無關(guān)的或在實現(xiàn)階段考慮的關(guān)聯(lián)要刪除 3)描述瞬時事件的關(guān)系不應(yīng)作為關(guān)聯(lián)(關(guān)聯(lián)應(yīng)該描述問題域的靜態(tài)結(jié)構(gòu)) 4)三個或三個以上對象的關(guān)聯(lián)要作分解或描述成限定關(guān)聯(lián) 5)冗余關(guān)聯(lián)要刪除3. 進一步完善 完善時要關(guān)注下述4個方面: 1)正名:選擇更明確的名字作為關(guān)聯(lián)名 2)分解:分解已確定的類以適用關(guān)聯(lián) 3)補充:及時補充遺漏關(guān)聯(lián) 4)標(biāo)明重數(shù):但無需花過多精力圖10.3ATM系統(tǒng)原始的類圖10.3.3劃分主題按問題領(lǐng)域而不是用功能分解來高度概括主題10.3.4確定屬性屬性是類中所定義的數(shù)據(jù),它表明了對象的性質(zhì)。一般來說,確定屬性的過程包括分析和選擇兩個步驟:1. 分析通常用名詞詞組表
7、示屬性,如:“汽車的顏色”、“光標(biāo)的位置”,而用形容詞表示可枚舉的具體屬性,如:“紅色的”、“白色的”。在分析階段應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,而不要考慮那些純粹用于實現(xiàn)的屬性。2. 選擇選擇時要關(guān)注下述6個方面: 1) 區(qū)分對象與屬性(僅關(guān)注其值的是屬性);2) 區(qū)分關(guān)聯(lián)類屬性與對象屬性(例:依賴某個關(guān)聯(lián)鏈的性質(zhì)是關(guān)聯(lián)類屬性);3) 區(qū)分限定詞和屬性(能用限定詞更好)4) 區(qū)分內(nèi)部狀態(tài)和屬性(例:某性質(zhì)是對象的內(nèi)部狀態(tài))5) 忽略無影響的屬性(在分析階段應(yīng)該忽略對大多數(shù)操作無影響的屬性)6) 注意屬性的相關(guān)性(分解該“類”) 圖10.4ATM系統(tǒng)對象模型中的屬性10.3.5識別繼承關(guān)系
8、確定了類中的屬性之后,就可以利用繼承機制共享公共性質(zhì),并對眾多的類重新加以組織。一般來說,可以應(yīng)用兩種方式建立繼承(即泛化)關(guān)系:(1) 自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類;(2) 自頂向下:把現(xiàn)有類細化成更具體的子類。圖10.5帶有繼承關(guān)系的ATM對象模型10.3.6反復(fù)修改對象模型的建立是一個反復(fù)修改、逐步完善的迭代過程。對于初學(xué)者來說,可嘗試用面向?qū)ο蠓椒ㄩ_發(fā)幾個較小系統(tǒng),取得一定的經(jīng)驗后,再總結(jié)更適合自己的工作方式。1. 分解“現(xiàn)金兌換卡”類2. “事務(wù)”由“更新”組成3. 把“分行”與“分行計算機”合并圖10.6修改后的ATM對象模型10.4建立動態(tài)模型一般來說,建立動態(tài)模型
9、的典型步驟如下:(1) 編寫腳本,確保不遺漏正常的交互行為;(2) 從腳本中提取事件,確定每個事件的發(fā)送對象(觸發(fā)該事件動作的對象)和接受對象;(3) 畫事件跟蹤圖(Sequence Diagram,時序圖或順序圖,描述對象之間的時間順序)(4) 畫狀態(tài)圖(5) 審查狀態(tài)圖的完整性和一致性10.4.1編寫腳本腳本是指系統(tǒng)在某一執(zhí)行期間內(nèi)出現(xiàn)的一系列事件(腳本描述事件序列,是用例的實例,是系統(tǒng)的一種實際使用方法。),它描述用戶(或其它外部設(shè)備)與系統(tǒng)之間的交互過程;對于每個事件,腳本都應(yīng)該指明觸發(fā)該事件的動作對象(如:系統(tǒng)、用戶或其它外部事物)、接受事件的目標(biāo)對象,以及該事件的參數(shù)。目的 編寫腳
10、本的目的是保證不遺漏重要的交互步驟。實質(zhì) 編寫腳本的實質(zhì)是分析用戶對與系統(tǒng)交互過程的要求。編寫腳本時,首先編寫正常情況的腳本,其次考慮特殊情況,最后考慮出錯情況;如有可能還應(yīng)該允許用戶“異常操作”。此外還應(yīng)該提供“在線幫助”、狀態(tài)查詢等在基本交互行為之上的“通用”交互行為。10.4.2設(shè)想用戶界面用戶界面是用戶對系統(tǒng)的“第一感”,它往往對用戶是否喜歡一個系統(tǒng)起很重要的作用,因此在分析階段也不能完全忽略用戶界面。設(shè)計用戶界面時重要的是用戶和系統(tǒng)進行信息交換的方式。圖10.7 ATM的界面格式10.4.3畫事件跟蹤圖腳本為建立動態(tài)模型(狀態(tài)圖)提供了很好的基礎(chǔ),但用自然語言書寫的腳本還不夠簡明,并
11、且會有二義性,因此在畫狀態(tài)圖前,我們往往先畫出事件跟蹤圖簡化的UML順序圖(Sequence Diagram,時序圖),為此需進一步明確事件(事件就是引起系統(tǒng)做動作或(和)轉(zhuǎn)換狀態(tài)的控制信息)及事件與對象的關(guān)系。1. 確定事件 事件包括系統(tǒng)與用戶(或外部設(shè)備)交互的所有信號、輸入、輸出、中斷、動作等,要注意的是(1)對象的動作也是事件 ;(2)對控制流產(chǎn)生相同效果的那些事件應(yīng)作為一類事件。經(jīng)過分析要確定每類事件的發(fā)送對象和接受對象。2. 畫出事件跟蹤圖 從腳本中提取出各類事件,并確定每類事件的發(fā)送對象和接受對象,就可以用事件跟蹤圖把事件序列以及事件與對象的關(guān)系表示出來,事件跟蹤圖是擴充的腳本,
12、更是簡化了的UML順序圖。圖10.8ATM系統(tǒng)正常情況腳本的事件跟蹤圖(時序圖)10.4.4畫狀態(tài)圖狀態(tài)圖描述了事件與對象狀態(tài)(對象生命周期中的階段)的關(guān)系。UML用狀態(tài)圖來表示對象的動態(tài)行為,它確定了由事件序列引出的狀態(tài)序列。系統(tǒng)分析員應(yīng)僅考慮系統(tǒng)內(nèi)具有重要交互行為的哪些類,即每個主動發(fā)送事件的對象類的動態(tài)行為用一張狀態(tài)圖來表示,各個類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。從一張事件跟蹤圖出發(fā)畫狀態(tài)圖時,要關(guān)注影響一類對象的事件,即考慮指向某條豎線(對象)的箭頭線,把這些事件作為狀態(tài)圖中的有向邊(箭頭線),邊上標(biāo)以事件名,兩個事件之間的間隔就是一個狀態(tài)。圖10.9 ATM類的
13、狀態(tài)圖圖10.10總行類的狀態(tài)圖圖10.11分行類的狀態(tài)圖10.4.5審查動態(tài)模型各個類的狀態(tài)圖通過共享事件合并起來,就構(gòu)成了系統(tǒng)的“動態(tài)模型”,應(yī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畫出功能級數(shù)據(jù)流圖圖10.13ATM系統(tǒng)的功能級數(shù)據(jù)流圖10.5.3描述處理框功能10.6定義服務(wù) 對象是由描述其屬性的數(shù)據(jù),以及可以對這些數(shù)據(jù)施加的操作,封裝在一起構(gòu)成的獨立單元。 在確定類中的操作時,既要考慮該類實體的常規(guī)行為,又要考慮本系統(tǒng)中特殊的服務(wù)。1. 常規(guī)行為在分析階段可以認為,類中定義的每個屬性都是可以訪問的,也就是類中已經(jīng)定義了讀、寫該類每個屬性的操作,而無需顯式表示這些常規(guī)操作。2. 從事件導(dǎo)出的操作 狀態(tài)圖中若有發(fā)往對象的事件,該對象必須要有相應(yīng)的操作。3. 與數(shù)據(jù)流圖中處理邏輯對應(yīng)的操作 DFD中的每個處理邏輯都與一個對象(或幾個對象)上的操作相對應(yīng)。4. 利用繼承減少冗余操作 應(yīng)盡量利用繼承機
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人工作業(yè)績報告【7篇】
- 醫(yī)學(xué)臨床癥狀復(fù)習(xí)測試附答案
- 家具設(shè)計師二級復(fù)習(xí)試題及答案
- AI倫理道德及其教育培養(yǎng)路徑研究
- 線上交易的安全性隱患試題及答案
- 2025至2030年中國三路內(nèi)外絲分水器市場現(xiàn)狀分析及前景預(yù)測報告
- 2025年山東省安全員-C證(專職安全員)考試題庫
- 中國傳統(tǒng)文化在中小學(xué)教育中的實踐與思考
- 2025至2030年中國三星級7S初榨亞麻油市場調(diào)查研究報告
- 2025至2030年中國三屜冷凍柜市場調(diào)查研究報告
- (3月省質(zhì)檢)福建省2025屆高三畢業(yè)班適應(yīng)性練習(xí)卷英語試卷(含答案)
- 秸稈破壁菌酶研發(fā)項目可行性研究報告(范文參考)
- 2025年上半年貴州黔東南州各縣(市)事業(yè)單位招聘工作人員1691人筆試易考易錯模擬試題(共500題)試卷后附參考答案
- 2025新疆機場(集團)有限責(zé)任公司阿克蘇管理分公司第一季度招聘(75人)筆試參考題庫附帶答案詳解
- 2025年阿斯利康能力測試題及答案
- 東莞市勞動合同模板6篇
- 《醫(yī)療機構(gòu)重大事故隱患判定清單(試行)》知識培訓(xùn)
- TCACM 1470-2023 胃癌前病變治未病干預(yù)指南
- Unit 4 Eat Well(大單元教學(xué)設(shè)計)2024-2025學(xué)年七年級英語下冊同步備課系列(人教版2024)
- 全國計算機等級考試《三級信息安全技術(shù)》專用教材【考綱分析+考點精講+真題演練】
- 2024年天翼云認證運維工程師考試復(fù)習(xí)題庫(含答案)
評論
0/150
提交評論