




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、25軟件工程導論(第五版)第10章 面向對象分析10.1面向對象分析的基本過程不論采用哪種軟件工程方法開發(fā)軟件,需求分析的主要工作都是:理解需求、表達需求和驗證需求,下面的圖概括地表示了參照當前系統(tǒng)建立目標系統(tǒng)的過程。圖: 參照當前系統(tǒng)建立目標系統(tǒng) 面向對象分析(Object-Oriented Analysis,簡稱OOA)的關鍵就是識別出對象與類,并分析它們之間的關系,最終建立對象模型、動態(tài)模型和功能模型。 10.1.1 概述 系統(tǒng)分析員要善于學習、勇于實踐,更重要的是一切從實際出發(fā)。注“OOA就是抽取和整理用戶需求并建立問題域精確模型的過程。”(P231)這在一開始能做到嗎?扯蛋10.1.
2、2 3個子模型與5個層次 面向對象建模需建立包含系統(tǒng)的三個要素:1)靜態(tài)結構(對象模型)、2)交互次序(動態(tài)模型)、3)數(shù)據(jù)交換(功能模型)。 建立系統(tǒng)模型的過程是一個迭代(iterations)式的自頂向下的求精過程。對于一個大型復雜系統(tǒng)來說對象模型一般由下述5個層次組成:圖10.2 復雜問題的對象模型的5個層次其中主題層是指從一個更高(高于“類”)的抽象層次來描述對象模型(即從一個相當高的層次上描述總體模型),通過劃分“主題”把一個復雜系統(tǒng)的對象模型分解成幾個不同的概念范疇。其實上述5個層次就是OOA中建立對象模型的5項主要工作:找出類和對象,識別結構(類或對象之間的關系),識別主題、定義
3、屬性、定義服務。我們知道動態(tài)模型和功能模型中都包含了對象模型中的操作,因此人們在定義每個類中的服務前,往往先建立起動態(tài)模型和功能模型,這樣說來OOA大體上可按下列順序進行: (1)確定類和對象(2)確定關聯(lián)(3)劃分主題(4)定義屬性(5)確定繼承關系(6)建立動態(tài)模型(7)建立功能模型(8)定義服務 需要注意地是在這里我們根本不強調順序,更不是談什么步驟。10.2需求陳述需求陳述的主要任務是準確地回答“系統(tǒng)必須做什么?”,而不是“系統(tǒ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ī)生,計算機系,學生處 3)應該記憶的事件,如:飛行,演出,訪問,交通事故 4)對象的相互作用,如:購買,結婚,納稅 5)概念,如:政策,刑法,泛化,集合2. 篩選出正確的類與對象 我們需要確定的類與對象是:(1) 應該記錄的對象(2) 需要它提供服務的對象同時要關注下述6個方面: 1) 冗余: 去掉冗余的類(如“用戶”)2)
5、無關: 去掉無關的類(如“儲蓄所”)3) 籠統(tǒng): 去掉籠統(tǒng)的類(如“銀行”)4) 屬性: 區(qū)分屬性和類(某個性質若具有很強的獨立性應當作為“類”)5) 操作: 區(qū)分操作和類(本身具有屬性且需獨立存在的“操作”應當作為“類”)6) 實現(xiàn): 忽略實現(xiàn)內容(應當去掉僅和實現(xiàn)有關的“類”,如“事務日志”)10.3.2確定關聯(lián)對象之間的相互依賴、相互作用的關系就是關聯(lián)。在分析的起始階段,我們不必花過多的精力去區(qū)分關聯(lián)和聚集,聚集不過是一種特殊的關聯(lián),是關聯(lián)的一個特例。1. 初步確定關聯(lián) 通過分析動詞詞組我們可以得出大多數(shù)關聯(lián)(例:P238 ATM系統(tǒng))2. 篩選 篩選時要關注下述5個方面: 1)已刪去的
6、類之間的關聯(lián)也要刪除 2)無關的或在實現(xiàn)階段考慮的關聯(lián)要刪除 3)描述瞬時事件的關系不應作為關聯(lián)(關聯(lián)應該描述問題域的靜態(tài)結構) 4)三個或三個以上對象的關聯(lián)要作分解或描述成限定關聯(lián) 5)冗余關聯(lián)要刪除3. 進一步完善 完善時要關注下述4個方面: 1)正名:選擇更明確的名字作為關聯(lián)名 2)分解:分解已確定的類以適用關聯(lián) 3)補充:及時補充遺漏關聯(lián) 4)標明重數(shù):但無需花過多精力圖10.3ATM系統(tǒng)原始的類圖10.3.3劃分主題按問題領域而不是用功能分解來高度概括主題10.3.4確定屬性屬性是類中所定義的數(shù)據(jù),它表明了對象的性質。一般來說,確定屬性的過程包括分析和選擇兩個步驟:1. 分析通常用名
7、詞詞組表示屬性,如:“汽車的顏色”、“光標的位置”,而用形容詞表示可枚舉的具體屬性,如:“紅色的”、“白色的”。在分析階段應該僅考慮與具體應用直接相關的屬性,而不要考慮那些純粹用于實現(xiàn)的屬性。2. 選擇選擇時要關注下述6個方面: 1) 區(qū)分對象與屬性(僅關注其值的是屬性);2) 區(qū)分關聯(lián)類屬性與對象屬性(例:依賴某個關聯(lián)鏈的性質是關聯(lián)類屬性);3) 區(qū)分限定詞和屬性(能用限定詞更好)4) 區(qū)分內部狀態(tài)和屬性(例:某性質是對象的內部狀態(tài))5) 忽略無影響的屬性(在分析階段應該忽略對大多數(shù)操作無影響的屬性)6) 注意屬性的相關性(分解該“類”) 圖10.4ATM系統(tǒng)對象模型中的屬性10.3.5識別
8、繼承關系確定了類中的屬性之后,就可以利用繼承機制共享公共性質,并對眾多的類重新加以組織。一般來說,可以應用兩種方式建立繼承(即泛化)關系:(1) 自底向上:抽象出現(xiàn)有類的共同性質泛化出父類;(2) 自頂向下:把現(xiàn)有類細化成更具體的子類。圖10.5帶有繼承關系的ATM對象模型10.3.6反復修改對象模型的建立是一個反復修改、逐步完善的迭代過程。對于初學者來說,可嘗試用面向對象方法開發(fā)幾個較小系統(tǒng),取得一定的經(jīng)驗后,再總結更適合自己的工作方式。1. 分解“現(xiàn)金兌換卡”類2. “事務”由“更新”組成3. 把“分行”與“分行計算機”合并圖10.6修改后的ATM對象模型10.4建立動態(tài)模型一般來說,建立
9、動態(tài)模型的典型步驟如下:(1) 編寫腳本,確保不遺漏正常的交互行為;(2) 從腳本中提取事件,確定每個事件的發(fā)送對象(觸發(fā)該事件動作的對象)和接受對象;(3) 畫事件跟蹤圖(Sequence Diagram,時序圖或順序圖,描述對象之間的時間順序)(4) 畫狀態(tài)圖(5) 審查狀態(tài)圖的完整性和一致性10.4.1編寫腳本腳本是指系統(tǒng)在某一執(zhí)行期間內出現(xiàn)的一系列事件(腳本描述事件序列,是用例的實例,是系統(tǒng)的一種實際使用方法。),它描述用戶(或其它外部設備)與系統(tǒng)之間的交互過程;對于每個事件,腳本都應該指明觸發(fā)該事件的動作對象(如:系統(tǒng)、用戶或其它外部事物)、接受事件的目標對象,以及該事件的參數(shù)。目的
10、 編寫腳本的目的是保證不遺漏重要的交互步驟。實質 編寫腳本的實質是分析用戶對與系統(tǒng)交互過程的要求。編寫腳本時,首先編寫正常情況的腳本,其次考慮特殊情況,最后考慮出錯情況;如有可能還應該允許用戶“異常操作”。此外還應該提供“在線幫助”、狀態(tài)查詢等在基本交互行為之上的“通用”交互行為。10.4.2設想用戶界面用戶界面是用戶對系統(tǒng)的“第一感”,它往往對用戶是否喜歡一個系統(tǒng)起很重要的作用,因此在分析階段也不能完全忽略用戶界面。設計用戶界面時重要的是用戶和系統(tǒng)進行信息交換的方式。圖10.7 ATM的界面格式10.4.3畫事件跟蹤圖腳本為建立動態(tài)模型(狀態(tài)圖)提供了很好的基礎,但用自然語言書寫的腳本還不夠
11、簡明,并且會有二義性,因此在畫狀態(tài)圖前,我們往往先畫出事件跟蹤圖簡化的UML順序圖(Sequence Diagram,時序圖),為此需進一步明確事件(事件就是引起系統(tǒng)做動作或(和)轉換狀態(tài)的控制信息)及事件與對象的關系。1. 確定事件 事件包括系統(tǒng)與用戶(或外部設備)交互的所有信號、輸入、輸出、中斷、動作等,要注意的是(1)對象的動作也是事件 ;(2)對控制流產生相同效果的那些事件應作為一類事件。經(jīng)過分析要確定每類事件的發(fā)送對象和接受對象。2. 畫出事件跟蹤圖 從腳本中提取出各類事件,并確定每類事件的發(fā)送對象和接受對象,就可以用事件跟蹤圖把事件序列以及事件與對象的關系表示出來,事件跟蹤圖是擴充
12、的腳本,更是簡化了的UML順序圖。圖10.8ATM系統(tǒng)正常情況腳本的事件跟蹤圖(時序圖)10.4.4畫狀態(tài)圖狀態(tài)圖描述了事件與對象狀態(tài)(對象生命周期中的階段)的關系。UML用狀態(tài)圖來表示對象的動態(tài)行為,它確定了由事件序列引出的狀態(tài)序列。系統(tǒng)分析員應僅考慮系統(tǒng)內具有重要交互行為的哪些類,即每個主動發(fā)送事件的對象類的動態(tài)行為用一張狀態(tài)圖來表示,各個類的狀態(tài)圖通過共享事件合并起來,從而構成系統(tǒng)的動態(tài)模型。從一張事件跟蹤圖出發(fā)畫狀態(tài)圖時,要關注影響一類對象的事件,即考慮指向某條豎線(對象)的箭頭線,把這些事件作為狀態(tài)圖中的有向邊(箭頭線),邊上標以事件名,兩個事件之間的間隔就是一個狀態(tài)。圖10.9 A
13、TM類的狀態(tài)圖圖10.10總行類的狀態(tài)圖圖10.11分行類的狀態(tài)圖10.4.5審查動態(tài)模型各個類的狀態(tài)圖通過共享事件合并起來,就構成了系統(tǒng)的“動態(tài)模型”,應該細致審查動態(tài)模型的完整性和一致性10.5建立功能模型功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關系,以及有關的數(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定義服務 對象是由描述其屬性的數(shù)據(jù),以及可以對這些數(shù)據(jù)施加的操作,封裝在一起構成的獨立單元。 在確定類中的操作時,既要考慮該類實體的常規(guī)行為,又要考慮本系統(tǒng)中特殊的服務。1. 常規(guī)行為在分析階段可以認為,類中定義的每個屬性都是可以訪問的,也就是類中已經(jīng)定義了讀、寫該類每個屬性的操作,而無需顯式表示這些常規(guī)操作。2. 從事件導出的操作 狀態(tài)圖中若有發(fā)往對象的事件,該對象必須要有相應的操作。3. 與數(shù)據(jù)流圖中處理邏輯對應的操作 DFD中的每個處理邏輯都與一個對象(或幾個對象)上的操作相對應。4. 利用繼承減少冗余操作 應盡量利用繼承機
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農經(jīng)濟統(tǒng)計分析與研究方案集錦
- 客戶服務投訴處理表
- 防滲渠道施工方案
- 家裝施工方案范本
- 水電工法展示樣板施工方案
- 挖掘機打管樁施工方案
- 工廠環(huán)氧地坪工程施工方案
- 初一下人教版數(shù)學試卷
- 香港動力源國際有限公司股東全部權益價值資產評估報告
- 寧波復式屋頂花園施工方案
- 內科年終總結和工作計劃
- 浙江省大學生網(wǎng)簽協(xié)議書范文
- 政府合同范本(2篇)
- 深圳市保障性住房標準化設計圖集(一)
- 肺部感染臨床路徑
- 高中英語3500詞(亂序版)
- 新教材高中政治 4.2 實現(xiàn)中華民族偉大復興的中國夢說課稿 新人教版必修1
- 人美版美術 二年級下冊全冊教學設計(表格式)
- 機電控制及可編程序控制器技術課程設計報告
- 中移系統(tǒng)集成有限公司招聘筆試題庫2024
- 大學介紹清華大學宣傳
評論
0/150
提交評論