軟件工程課件:第11、12章 軟件設(shè)計與實現(xiàn)_第1頁
軟件工程課件:第11、12章 軟件設(shè)計與實現(xiàn)_第2頁
軟件工程課件:第11、12章 軟件設(shè)計與實現(xiàn)_第3頁
軟件工程課件:第11、12章 軟件設(shè)計與實現(xiàn)_第4頁
軟件工程課件:第11、12章 軟件設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第11章 面向?qū)ο笤O(shè)計11.1 面向?qū)ο笤O(shè)計的準則 1. 模塊化 面向?qū)ο蟮能浖_發(fā)模式,支持了系統(tǒng)模塊化的原則:對象就是模塊。它把數(shù)據(jù)結(jié)構(gòu)和操作(方法)緊密地結(jié)合在一起構(gòu)成模塊。2. 抽象 類實際上是一種抽象數(shù)據(jù)類型,它對外開放的公共接口構(gòu)成了類的規(guī)格說明(協(xié)議),這種接口規(guī)定了外界可以使用的合法操作符,利用這些操作符可以對類的實例中包含的數(shù)據(jù)進行操作。 3. 信息隱蔽 在面向?qū)ο蠓椒ㄖ?,信息隱蔽通過對象的封裝性實現(xiàn):類結(jié)構(gòu)分離了類的接口與類的實現(xiàn),從而支持了信息隱蔽。 4. 弱耦合 弱的耦合可以提高軟件模塊的獨立性,避免某一部分模塊發(fā)生變化對其它模塊有較大的影響。一般來說,對象間的耦合有兩

2、大類: A交互耦合:對象間的耦合通過信息連接來實現(xiàn)。應(yīng)使交互耦合盡量松散。 B繼承偶合:與交互耦合相反,應(yīng)該提高繼承耦合的程度。因為通過繼承關(guān)系結(jié)合起來的基類和派生類,結(jié)合得越緊密越好。5. 強內(nèi)聚面向?qū)ο笤O(shè)計中存在三種內(nèi)聚: A服務(wù)內(nèi)聚:一個服務(wù)應(yīng)該完成一個且完成一個功能。 B類內(nèi)聚:一個類應(yīng)該只有一個用途,它的屬性和服務(wù)應(yīng)該是高內(nèi)聚的。 C一般特殊內(nèi)聚:即基類派生類的內(nèi)聚。 6. 可重用 使用已經(jīng)存在的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)相似系統(tǒng)時創(chuàng)建的類),可以提高軟件重用性,提高軟件生產(chǎn)率。 人們在面向?qū)ο蠓椒ㄖ幸卜e累了一些經(jīng)驗,總結(jié)出幾條啟發(fā)規(guī)則: 1. 設(shè)計結(jié)果應(yīng)該清晰易懂; 1

3、)用詞一致; 2)使用已有的協(xié)議; 3)減少消息模式的數(shù)目; 4)避免模糊的定義。11.2 啟發(fā)規(guī)則 2. 一般特殊結(jié)構(gòu)的深度應(yīng)適當:中等規(guī)模的系統(tǒng)中,類等級層次數(shù)應(yīng)保持為72。不是必要情況,不應(yīng)該隨意創(chuàng)建派生類;3. 設(shè)計簡單的類:設(shè)計小而簡單的類,便于開發(fā)和管理; 1)避免包含過多的屬性; 2)有明確的定義; 3)盡量簡化對象之間的合作關(guān)系; 4)不要提供太多服務(wù)。4. 使用簡單的協(xié)議:設(shè)計簡單的類接口,發(fā)送的消息中參數(shù)要少。5. 使用簡單的服務(wù):編寫實現(xiàn)每一個服務(wù)時,避免復(fù)雜的語句和結(jié)構(gòu);6. 把設(shè)計變動減至最小。11.3 軟件重用11.3.1 概述 1. 重用 重用的三個層次: 1)知

4、識重用; 2)方法和標準的重用; 3)軟件成分的重用。2. 軟件成分的重用級別: 1)代碼重用 a. 源代碼剪貼; b. 源代碼包含; c. 繼承; 2)設(shè)計結(jié)果重用 3)分析結(jié)果重用 3. 典型的可重用軟件成分 1)項目計劃; 2)成本計劃; 3)體系結(jié)構(gòu); 4)需求模型和規(guī)格說明; 5)設(shè)計; 6)源代碼; 7)用戶文檔和技術(shù)文檔;8)用戶界面; 9)數(shù)據(jù); 10)測試用例。11.4 系統(tǒng)分解類與對象層人機交互部分問題域部分任務(wù)管理部分數(shù)據(jù)管理部分主題層結(jié)構(gòu)層屬性層服務(wù)層圖11.2 典型的面向?qū)ο笤O(shè)計模型11.5 設(shè)計問題域子系統(tǒng) 在設(shè)計問題域部分時,僅需要從實現(xiàn)的角度對問題域模型(對象模

5、型、動態(tài)模型、功能模型)作一些補充、修改,主要是增添、合并或分解類與對象、屬性和服務(wù),調(diào)整繼承關(guān)系等。1. 調(diào)整需求2. 重用已有的類3. 組合問題域的類4. 增添基類以定義公共函數(shù)集合5. 調(diào)整繼承層次 1)使用多重繼承機制 2)使用單繼承機制6. ATM系統(tǒng)實例11.6 設(shè)計人機交互子系統(tǒng) 在面向?qū)ο蠓治鲋?,已?jīng)對用戶界面需求作了初步分析,在面向?qū)ο笤O(shè)計過程中,要對系統(tǒng)人機交互部分進行詳細設(shè)計,其中包括指定窗口和報表的形式、設(shè)計命令層次等等。 設(shè)計人機交互子系統(tǒng)的策略: 1)分類用戶; 2)描述用戶; 3)設(shè)計命令層次; 4)設(shè)計人機交互類。11.7 設(shè)計任務(wù)管理子系統(tǒng) 任務(wù)可視作進程(P

6、rocess)1. 分析并發(fā)性 基于動態(tài)模型分析并發(fā)性,如果對象間不存在交互,或不同時接受事件,則是并發(fā)的。 并發(fā)任務(wù)可以在不同的處理器上實現(xiàn),也可以在單個處理器上利用多任務(wù)操作系統(tǒng)實現(xiàn)。2. 設(shè)計任務(wù)管理子系統(tǒng) 1)確定事件驅(qū)動型任務(wù):主要完成通信工作 工作過程:睡眠等待來自數(shù)據(jù)線的中斷任務(wù)喚醒、接收數(shù)據(jù)通知相應(yīng)對象繼續(xù)睡眠 2)確定時鐘驅(qū)動型任務(wù) 每隔一定時間觸發(fā)執(zhí)行某些任務(wù)。 3)確定優(yōu)先任務(wù)4)確定關(guān)鍵任務(wù)5)確定協(xié)調(diào)任務(wù) 當同時運行的任務(wù)較多時(3個以上),一般設(shè)計協(xié)調(diào)任務(wù),會增加系統(tǒng)開銷,但有利于封裝不同任務(wù)間的協(xié)調(diào)控制。6)盡量減少任務(wù)數(shù)7)確定資源需求 計算系統(tǒng)載荷(單位時間處

7、理業(yè)務(wù)數(shù)),估算所需CPU性能。11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)11.8.1 選擇數(shù)據(jù)存儲管理模式 1. 文件管理系統(tǒng) 2. 關(guān)系數(shù)據(jù)庫管理系統(tǒng) 3. 面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)11.8.2 設(shè)計數(shù)據(jù)管理子系統(tǒng) 1. 設(shè)計數(shù)據(jù)格式 2. 設(shè)計相應(yīng)的服務(wù)11.8.3 ATM系統(tǒng)實例 采用成熟的商品化關(guān)系數(shù)據(jù)庫。根據(jù)數(shù)據(jù)庫范式設(shè)計,保持數(shù)據(jù)一致性、完整性。 處理并發(fā)事務(wù)時,每個事務(wù)作為一個不可分割的批操作來處理,由事務(wù)封鎖帳戶,直至事務(wù)結(jié)束。11.9 設(shè)計類中的服務(wù)11.10 設(shè)計關(guān)聯(lián)11.11 設(shè)計優(yōu)化第12章 面向?qū)ο髮崿F(xiàn)12.1.1 面向?qū)ο笳Z言的優(yōu)點 使用面向?qū)ο笳Z言時,編譯程序可以自動把面向?qū)ο?/p>

8、概念映射到目標程序中。 使用非面向?qū)ο笳Z言編寫面向?qū)ο蟪绦?,則必須由程序員自己把面向?qū)ο蟾拍钣成涞匠绦蛑小?1980年的smalltalk-80發(fā)展了Simula-67的對象和類的概念,并引入了方法、消息、元類及協(xié)議等概念,所以有人將smalltalk80稱為第一個面向?qū)ο笳Z言。 但是,使面向?qū)ο髲V泛流行的是C+。12.1.2 面向?qū)ο笳Z言的技術(shù)特點選擇面向?qū)ο笳Z言時應(yīng)考慮的技術(shù)特點: 1. 支持類與對象概念的機制 2. 實現(xiàn)整體部分(聚集)結(jié)構(gòu)的機制 3. 實現(xiàn)一般特殊(泛化)結(jié)構(gòu)的機制 4. 實現(xiàn)屬性和服務(wù)的機制 5. 類型檢查6. 類庫7. 效率8. 持久保存對象9. 參數(shù)化類10. 開

9、發(fā)環(huán)境12.1.3 選擇面向?qū)ο笳Z言 1. 將來能否占主導地位 2. 可重用性 3. 類庫和開發(fā)環(huán)境 4. 其他因素 有否提供技術(shù)支持?提供開發(fā)人員什么開發(fā)平臺?對及其性能的需求?集成已有軟件的容易程度。 12.2 程序設(shè)計風格12.2.1 提高可重用性12.2.2 提高可擴充性12.2.3 提高健壯性12.3 測試策略12.3.1 面向?qū)ο蟮膯卧獪y試基類:操作A:X子類:操作A1:XA2:XA3:X有必要在每個子類中測試操作 X 不孤立地測試單個操作(函數(shù)),而是把操作作為類的一部分進行測試。12.3.2 面向?qū)ο蟮募蓽y試 兩種不同的測試策略: 1)基于線程的測試(thread based

10、 testing) 將響應(yīng)系統(tǒng)的一個輸入或一個事件所需要的哪些類集成起來測試。 2)基于使用的測試(use based testing) 先測試獨立類,再測試使用獨立類的下一層次的類(依賴類),重復(fù)直至完畢。12.3.3 面向?qū)ο蟮拇_認測試 主要是根據(jù)動態(tài)模型和描述系統(tǒng)行為的腳本來設(shè)計確認測試用例。12.4 設(shè)計測試用例12.4.1 測試類的方法1. 隨機測試 ATM系統(tǒng)中account(帳戶)類的操作有:Open(打開)、Setup(建立)、Deposit(存款)、Withdraw(取款)、Balance(余額)、Summarize(清單)、CreditLimit(透支限額)、Close(關(guān)

11、閉)。 可以隨機地產(chǎn)生一系列不同的操作序列:測試用例1:Open.Setup.Deposit.Balance.Summarize.Withdraw.Close測試用例2: Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close2. 劃分測試(類似于等價類劃分)1)基于狀態(tài)的劃分 改變Account類狀態(tài)的操作: deposit, withdraw; 不改變Account類狀態(tài)的操作: balance, summarize, creditLimit 測試用例: 1.open.setup.deposit.deposit.withdraw.with

12、draw.close; 2.open.setup.balance.summarize.creditLimit.close;2)基于屬性的劃分 根據(jù)類操作使用的屬性來劃分操作。 例,按屬性Balance分可三類: 使用Balance的操作; 修改Balance的操作; 不使用也不修改balance的操作。3)基于功能的劃分 依據(jù)類操作完成的功能來劃分類操作。 例,初始化操作:open,setup 計算操作:deposit,withdraw 查詢操作:balance, summarize, creditLimit 3. 基于故障的測試 一般依靠經(jīng)驗和直覺,類似于錯誤推測測試法。12.4.2 集成測試方法 測試類協(xié)作可以使用隨機測試方法、劃分測試方法、行為測試等。 1. 多類測試 p3022. 從動態(tài)模型導出測試用例EmptyacctsetupacctworkingacctnonworkingacctdeadacctopenSetup acctDeposit(initial)closeWithdraw (final)depositwithdrawBalanceCreditAcct InfoAccount類的狀態(tài)轉(zhuǎn)換圖應(yīng)使Account類實例遍歷所有允許的狀態(tài)轉(zhuǎn)換:測試用例1: open. setupacct. deposit(initial).

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論