




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第6 章 面向?qū)ο蟮能浖O(shè)計(jì) 本章學(xué)習(xí)內(nèi)容:1理解面向?qū)ο筌浖O(shè)計(jì)的基本原理2 掌握系統(tǒng)設(shè)計(jì)的過程與方法3掌握詳細(xì)設(shè)計(jì)的內(nèi)容與過程4了解面向?qū)ο蟮膶?shí)現(xiàn)技術(shù)5了解面向?qū)ο鬁y試的概念與方法第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.1 面向?qū)ο筌浖O(shè)計(jì)概述 6.1.1 面向?qū)ο笤O(shè)計(jì)準(zhǔn)則 模塊化抽象 信息隱蔽 低耦合 高內(nèi)聚 可重用 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.1.2 面向?qū)ο笤O(shè)計(jì)的過程 1系統(tǒng)設(shè)計(jì) (1)首先進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì),使系統(tǒng)具有良好的穩(wěn)定性、開放性和可擴(kuò)充性(2)如果系統(tǒng)復(fù)雜,應(yīng)將系統(tǒng)劃分為若干個(gè)子系統(tǒng)(3)給系統(tǒng)分配處理機(jī)和任務(wù)(4)根據(jù)數(shù)據(jù)結(jié)構(gòu)、文件和數(shù)據(jù)庫選擇實(shí)現(xiàn)數(shù)據(jù)存儲的基本策略(5)標(biāo)識
2、全局資源和確定控制訪問這些資源的機(jī)制(6)選擇實(shí)現(xiàn)軟件控制方法(7)考慮邊界條件(8)建立折衷的優(yōu)先權(quán)第6 章 面向?qū)ο蟮能浖O(shè)計(jì)2詳細(xì)設(shè)計(jì) (1)細(xì)化、補(bǔ)充類的屬性和操作(2)設(shè)計(jì)類操作的實(shí)現(xiàn)算法(3)優(yōu)化數(shù)據(jù)訪問路徑(4)實(shí)現(xiàn)外部交互式的控制(5)調(diào)整類結(jié)構(gòu),增加繼承性(6)設(shè)計(jì)類之間的關(guān)聯(lián)的實(shí)現(xiàn)方式(7)確定對象屬性的精確表示(8)把類和關(guān)聯(lián)打包歸納到模塊中 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.2 系統(tǒng)設(shè)計(jì) 6.2.1邏輯體系架構(gòu)設(shè)計(jì)1層次模式分析 (1)分層模式 表示層:圖形用戶界面、窗口等。應(yīng)用邏輯層:管理業(yè)務(wù)過程的任務(wù)和規(guī)則。對象存儲層:持久化存儲機(jī)制,例如,文件系統(tǒng)、數(shù)據(jù)庫等。 第6
3、 章 面向?qū)ο蟮能浖O(shè)計(jì)(2)設(shè)計(jì)要求 層與層之間的耦合應(yīng)盡可能地松散; 級別相同、職責(zé)類似的元素應(yīng)該被組織到同一層中;復(fù)雜的模塊應(yīng)被繼續(xù)分解為粒度更細(xì)的層或子系統(tǒng);應(yīng)盡量將可能發(fā)生變化的元素封裝到一層中;每一層應(yīng)當(dāng)只調(diào)用下一層提供的功能服務(wù),而不能跨層調(diào)用;一層絕不能使用上一層提供的功能服務(wù),即不能在層與層之間造成雙向依賴。第6 章 面向?qū)ο蟮能浖O(shè)計(jì)(3)避免循環(huán)依賴 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)2子系統(tǒng)劃分 設(shè)計(jì)準(zhǔn)則: 子系統(tǒng)應(yīng)具有良好的接口,通過接口和系統(tǒng)的其他部分通信;除了少數(shù)的“通信類”外,子系統(tǒng)中的類應(yīng)只和該子系統(tǒng)中的其他類協(xié)作;子系統(tǒng)的數(shù)量不宜太多;可以在子系統(tǒng)內(nèi)部再次劃分,以
4、降低復(fù)雜度。 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.2.2 物理體系結(jié)構(gòu)建模用構(gòu)件圖和部署圖來描述系統(tǒng)的物理體系結(jié)構(gòu) 1構(gòu)件圖構(gòu)件圖就是描述構(gòu)件類及其它們之間的關(guān)系。 (1)構(gòu)件間的依賴關(guān)系:主要是依賴關(guān)系,用來表示一個(gè)構(gòu)件需要另一些構(gòu)件才能有完整的定義。(2)接口:是一個(gè)構(gòu)件提供給其他構(gòu)件的一組操作 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)例:第6 章 面向?qū)ο蟮能浖O(shè)計(jì)2部署圖 部署圖描述了處理器、設(shè)備和軟件構(gòu)件運(yùn)行時(shí)的體系結(jié)構(gòu)。(1)結(jié)點(diǎn):是某種計(jì)算資源的物理對象,包括計(jì)算機(jī)、設(shè)備(如打印機(jī)、通信設(shè)備)等(2) 連接:連接用一條直線表示,它指出結(jié)點(diǎn)之間存在著某種通信路徑,并指出通過哪條通信路徑可使這些結(jié)點(diǎn)
5、間交換對象或發(fā)送消息 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)舉例:第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.2.3 基于構(gòu)件的建模1構(gòu)件的特性獨(dú)立部署單元 可作為第三方的組裝單元 沒有(外部的)可見狀態(tài) 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)2設(shè)計(jì)基于類的構(gòu)件(1)基本設(shè)計(jì)原則1)開閉原則:指的是一個(gè)模塊在擴(kuò)展性方面應(yīng)該是開放的,而在更改性方面應(yīng)該是封閉的。即在設(shè)計(jì)模塊的時(shí)候,應(yīng)該盡量使得模塊可以擴(kuò)展,并且在擴(kuò)展時(shí)不需要對模塊的源代碼進(jìn)行修改。第6 章 面向?qū)ο蟮能浖O(shè)計(jì)2設(shè)計(jì)基于類的構(gòu)件(1)基本設(shè)計(jì)原則 2)Liskov替換原則:指的是子類可以替換父類出現(xiàn)在父類能出現(xiàn)的任何地方。例如,類ClassA要使用ClassB,
6、ClassC是ClassB的子類。如果在運(yùn)行時(shí),用ClassC代替ClassB,則ClassA仍然可以使用原來ClassB中提供的方法,而不需要做任何改動。第6 章 面向?qū)ο蟮能浖O(shè)計(jì)3)依賴倒置原則:指的是依賴關(guān)系應(yīng)該是盡量依賴接口(或抽象類),而不是依賴于具體類。在面向?qū)ο蟮脑O(shè)計(jì)中,高層的類往往與領(lǐng)域的業(yè)務(wù)有關(guān),這些類只依賴于一些抽象的類或接口,當(dāng)具體的實(shí)現(xiàn)細(xì)節(jié)改變時(shí),不會對高層的類產(chǎn)生影響。4)接口分離原則:指的是在設(shè)計(jì)時(shí)采用多個(gè)與特定客戶類有關(guān)的接口比采用一個(gè)通用的接口要好。即一個(gè)類要給多個(gè)客戶類使用,那么可以為每個(gè)客戶類創(chuàng)建一個(gè)接口,然后這個(gè)類實(shí)現(xiàn)所有這些接口,而不要只創(chuàng)建一個(gè)接口,
7、其中包含了所有客戶類需要的方法,然后這個(gè)類實(shí)現(xiàn)這個(gè)接口。第6 章 面向?qū)ο蟮能浖O(shè)計(jì)(2)構(gòu)件級設(shè)計(jì)指導(dǎo)方針1) 保持高內(nèi)聚性。內(nèi)聚性指構(gòu)件或類只封裝那些相互關(guān)系密切,以及與構(gòu)件或類自身有密切關(guān)系的屬性和操作。按內(nèi)聚程度由高到低的排列順序是:功能內(nèi)聚、分層內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、過程內(nèi)聚、暫時(shí)內(nèi)聚和實(shí)用內(nèi)聚。2)保持低耦合性。耦合是構(gòu)件或類之間彼此聯(lián)系程度的一種定性度量。隨著構(gòu)件或類相互依賴越來越多,構(gòu)件之間的耦合度亦會增加。按耦合程度由高到低的排列順序是:內(nèi)容耦合、控制耦合、印記耦合、數(shù)據(jù)耦合、例程調(diào)用耦合、類型使用耦合、包含或?qū)腭詈?、外部耦合。? 章 面向?qū)ο蟮能浖O(shè)計(jì)3實(shí)施構(gòu)件級設(shè)
8、計(jì)的步驟1)標(biāo)識出所有與問題域相對應(yīng)的設(shè)計(jì)類。2)確定所有與基礎(chǔ)設(shè)施域相對應(yīng)的設(shè)計(jì)類。在分析模型中并沒有描述這些類,但此時(shí)應(yīng)對它們進(jìn)行描述,例如,GUI構(gòu)件、操作系統(tǒng)構(gòu)件、對象和數(shù)據(jù)管理構(gòu)件等。3)細(xì)化所有不能作為復(fù)用構(gòu)件的設(shè)計(jì)類。詳細(xì)描述實(shí)現(xiàn)類所需要的所有接口、屬性和操作。第6 章 面向?qū)ο蟮能浖O(shè)計(jì)具體包括以下過程:在類或構(gòu)件的協(xié)作時(shí)說明消息的細(xì)節(jié)為每個(gè)構(gòu)件確定適當(dāng)?shù)慕涌诩?xì)化屬性并且定義相應(yīng)的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu) 詳細(xì)描述每個(gè)操作中的處理流 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)4)說明持久數(shù)據(jù)源(數(shù)據(jù)庫和文件)并確定管理數(shù)據(jù)源所需要的類5)開發(fā)并細(xì)化類或構(gòu)件的行為表示 6)細(xì)化部署圖以提供額外的實(shí)現(xiàn)
9、細(xì)節(jié) 7)考慮每一個(gè)構(gòu)件級設(shè)計(jì)表示,并且時(shí)刻考慮其他選擇 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.3 詳細(xì)設(shè)計(jì) 6.3.1 系統(tǒng)詳細(xì)設(shè)計(jì)1細(xì)化和重組類2增加遺漏的屬性,指定屬性的類型和可見性 3分配職責(zé),定義執(zhí)行每個(gè)職責(zé)的方法 通用職責(zé)分配軟件模式 :(1)專家模式:應(yīng)該將職責(zé)分配給信息專家(2)創(chuàng)建者模式:如果類A和類B滿足下列條件中的一個(gè),就可以把創(chuàng)建B對象的職責(zé)分配給A對象 。A聚合了B對象;A包含了B對象;第6 章 面向?qū)ο蟮能浖O(shè)計(jì)A的一個(gè)屬性記錄了B對象;A要經(jīng)常使用B對象B對象被創(chuàng)建時(shí),A要傳遞初始化數(shù)據(jù)給B對象(3)低耦合 (4)高內(nèi)聚 (5)控制者模式:要求把協(xié)調(diào)處理系統(tǒng)消息的職責(zé)分
10、配給不同的控制類(6)多態(tài):當(dāng)某一個(gè)職責(zé)在不同的派生類中表現(xiàn)為不同的行為時(shí),我們就可以使用多態(tài)模式,即利用一個(gè)同名的多態(tài)方法把該職責(zé)分配給不同的派生類,讓他們履行不同的行為 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)(7)純虛構(gòu)模式:有時(shí)我們可以虛構(gòu)一個(gè)人造類,把一組高度內(nèi)聚的職責(zé)分配給它,該人造類只是虛構(gòu)出來的,不代表現(xiàn)實(shí)世界中的任何實(shí)體,這就是純虛構(gòu)模式。(8)中介者模式:把一些職責(zé)分配給一個(gè)虛構(gòu)的中介類,讓該中介類來協(xié)調(diào)多個(gè)類的協(xié)作關(guān)系(9)不要和陌生人說話:這個(gè)模式要求一個(gè)類盡量只和它的直接對象交互,避免和間接對象進(jìn)行交互,這樣,它就可以和最少的類產(chǎn)生耦合,使整個(gè)系統(tǒng)的耦合度保持最低。第6 章 面向
11、對象的軟件設(shè)計(jì)6.4 面向?qū)ο筌浖?shí)現(xiàn) 面向?qū)ο髮?shí)現(xiàn)階段的主要任務(wù):選擇合適的面向?qū)ο蟮木幊陶Z言與開發(fā)環(huán)境;基于選定的語言和開發(fā)環(huán)境編碼實(shí)現(xiàn)詳細(xì)設(shè)計(jì)中所得到的對象、算法、公式和規(guī)則等;將編寫好的各個(gè)類代碼模塊根據(jù)類的相互關(guān)系集成;對軟件進(jìn)行測試和調(diào)試,完成各個(gè)部分和整個(gè)系統(tǒng)。第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.4.1程序設(shè)計(jì)語言 1面向?qū)ο笳Z言的技術(shù)特點(diǎn)(1)支持類與對象概念的機(jī)制 (2)實(shí)現(xiàn)整體部分結(jié)構(gòu)的機(jī)制 (3)實(shí)現(xiàn)一般特殊結(jié)構(gòu)的機(jī)制 (4)對于實(shí)現(xiàn)屬性和服務(wù)的機(jī)制 (5)類型檢查 (6)類庫 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)(7)效率(8)持久保存對象(9)參數(shù)化類 (10)開發(fā)環(huán)境2面向?qū)ο?/p>
12、語言的選擇 (1)可復(fù)用性 (2)類庫和開發(fā)環(huán)境 (3)其他因素 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.4.2 程序設(shè)計(jì)風(fēng)格 1提高可重用性 (1)提高方法的內(nèi)聚 (2)減小方法的規(guī)模 (3)保持方法的一致性 (4)把策略與實(shí)現(xiàn)分開 (5)全面覆蓋 (6) 盡量不使用全局信息 (7)利用繼承機(jī)制 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)2提高可擴(kuò)充性 (1)封裝實(shí)現(xiàn)策略 (2)不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈 (3)避免使用多分支語句 (4)精心確定公有方法 3提高健壯性 (1)預(yù)防用戶的操作錯(cuò)誤 (2)檢查參數(shù)的合法性 (3)不要預(yù)先確定限制條件 (4)先測試后優(yōu)化 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)6.4.3 面向?qū)?/p>
13、象軟件測試 1面向?qū)ο蟮膯卧獪y試 (1)類層測試 (2)對象集群層測試 2面向?qū)ο蟮募蓽y試 (1)基于線程的測試 (2)基于使用的測試 3面向?qū)ο筌浖母呒墱y試 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)4面向?qū)ο筌浖y試用例 (1)基于故障的測試用例設(shè)計(jì)是通過對面向?qū)ο蠓治雠c設(shè)計(jì)模型的分析,找出可能存在的故障,以此假設(shè)故障來設(shè)計(jì)測試用例,并通過這些測試用例確定這些可能的故障是否存在?;诠收系臏y試用例不能發(fā)現(xiàn)有錯(cuò)誤的功能描述,或者子系統(tǒng)間交互引起的問題。(2)基于用例的測試用例設(shè)計(jì)關(guān)注用戶“做什么”而不是軟件“做什么”。通過測試用例獲得用戶必須完成的任務(wù),并以此為依據(jù)設(shè)計(jì)所涉及的各個(gè)類的測試用例。 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)設(shè)計(jì)面向?qū)ο筌浖y試用例的步驟是:(1)先選定檢測的類 (2)確定測試覆蓋標(biāo)準(zhǔn) (3)利用類圖確定待測試類的所有關(guān)聯(lián) (4)根據(jù)程序中的對象設(shè)計(jì)測試用例,確認(rèn)使用什么輸入激發(fā)類的狀態(tài)、使用類的服務(wù)和期望產(chǎn)生什么行為等。 第6 章 面向?qū)ο蟮能浖O(shè)計(jì)5基于場景的測試設(shè)計(jì) 基于場景的測試關(guān)注用戶“做什么”而不是軟件“做什么”。它意味著捕獲用戶必須完成的任務(wù)(通過使用實(shí)例),然后應(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國熱鋅鍍鋼材行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國汽車減振器沖壓件行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國抗菌保健衛(wèi)生巾行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國小果配花行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國電腦繞線機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國直流遙控組件數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國玻璃加工中心銑頭數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國沙鑄鋁件數(shù)據(jù)監(jiān)測研究報(bào)告
- 地庫頂板凸形模具施工方案
- 2025至2030年中國導(dǎo)電銀膏數(shù)據(jù)監(jiān)測研究報(bào)告
- GB/T 26189.2-2024工作場所照明第2部分:室外作業(yè)場所的安全保障照明要求
- 《電商直播》 課件 項(xiàng)目一 走入電商直播
- 七上 U2 過關(guān)單 (答案版)
- 2024年貴銀金融租賃公司招聘筆試參考題庫附帶答案詳解
- 杭州市主城區(qū)聲環(huán)境功能區(qū)劃分圖
- 楊氏太極拳37式拳譜
- 臥式設(shè)備安裝
- EN1779-歐洲無損檢測標(biāo)準(zhǔn)
- 人教版七年級數(shù)學(xué)下冊全冊同步測試含答案(共128頁)
- 配煤入洗與精煤回收率的提高之間的關(guān)系研究與應(yīng)用
- 復(fù)旦校內(nèi)辦事指南
評論
0/150
提交評論