第十二章 軟件工程 面向?qū)ο髮崿F(xiàn)_第1頁
第十二章 軟件工程 面向?qū)ο髮崿F(xiàn)_第2頁
第十二章 軟件工程 面向?qū)ο髮崿F(xiàn)_第3頁
第十二章 軟件工程 面向?qū)ο髮崿F(xiàn)_第4頁
第十二章 軟件工程 面向?qū)ο髮崿F(xiàn)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程

第十二章面向?qū)ο髮崿F(xiàn)第十二章面向?qū)ο髮崿F(xiàn)12.1程序設(shè)計語言12.2程序設(shè)計風(fēng)格12.3測試策略12.4設(shè)計測試用例概述所謂面向?qū)ο髮崿F(xiàn),主要包括下述兩項工作:把面向?qū)ο笤O(shè)計結(jié)果翻譯成用某種程序設(shè)計語言書寫的面向?qū)ο蟪绦驕y試并調(diào)試面向?qū)ο蟪绦蛎嫦驅(qū)ο蟪绦虻馁|(zhì)量基本上由面向?qū)ο笤O(shè)計的質(zhì)量決定,但是,所采用的編程語言的特點和程序設(shè)計風(fēng)格也將對程序的可靠性、可重用性和可維護性產(chǎn)生深遠(yuǎn)影響。目前,測試仍然是保證軟件可靠性的主要措施,對于面向?qū)ο蟮能浖碚f,情況也是如此:面向?qū)ο鬁y試的目標(biāo),也是用盡可能低的測試成本發(fā)現(xiàn)盡可能多的軟件錯誤。但是,面向?qū)ο蟪绦蛑刑赜械姆庋b、繼承和多態(tài)等機制,也給面向?qū)ο鬁y試帶來一些新特點。12.1程序設(shè)計語言1.1面向?qū)ο笳Z言的優(yōu)點一致的表示方法可重用性可維護性1.2面向?qū)ο笳Z言的技術(shù)特點支持類與對象概念的機制實現(xiàn)集聚結(jié)構(gòu)的機制實現(xiàn)泛化結(jié)構(gòu)的機制實現(xiàn)屬性和服務(wù)的機制類型檢查機制類庫效率持久保持對象的機制參數(shù)化類的機制開發(fā)環(huán)境12.1.3選擇面向?qū)ο笳Z言的實際因素將來能否占主導(dǎo)地位可重用性類庫和開發(fā)環(huán)境售后服務(wù)對運行環(huán)境的需求集成已有軟件的難易程度12.2程序設(shè)計風(fēng)格1.提高可重用性為提高軟件的可重用性,應(yīng)該遵守下述準(zhǔn)則:提高方法的內(nèi)聚減少方法的規(guī)模保持方法的一致性把策略與實現(xiàn)分開全面覆蓋輸入條件的各種可能組合盡量不使用全局信息充分利用繼承機制通過調(diào)用公用方法實現(xiàn)代碼重用12.1程序設(shè)計風(fēng)格2.提高可擴充性提高可重用性的準(zhǔn)則同樣也能提高程序的可擴充性。此外,下述的面向?qū)ο蟪绦蛟O(shè)計準(zhǔn)則也有助于提高程序的可擴充性:封裝類的實現(xiàn)細(xì)節(jié)不要用一個方法遍歷多條聯(lián)鏈避免使用多分支語句精心選擇和定義公有方法通過因子分解實現(xiàn)代碼重用12.1程序設(shè)計風(fēng)格3.提高健壯性通常需要在健壯性和效率之間做出適當(dāng)?shù)恼壑?。為提高健壯性?yīng)該遵守下述準(zhǔn)則:預(yù)防用戶的錯誤操作檢查參數(shù)的合法性不要預(yù)先設(shè)定數(shù)據(jù)結(jié)構(gòu)的限制條件先測試后優(yōu)化12.3面向?qū)ο蟮臏y試策略測試軟件的基本策略是,從“小型測試”開始,逐步過渡到“大型測試”,即從單元測試開始,逐步進(jìn)入集成測試,最后進(jìn)行確認(rèn)測試和系統(tǒng)測試。1.面向?qū)ο蟮膯卧獪y試對于面向?qū)ο蟮能浖碚f,單元測試的含義發(fā)生了很大變化現(xiàn)在,最小的可測試單元是封裝起來的類和對象。一個類通常包含一組不同的操作,而一個特定的操作也可能存在于一組不同的類中。因此,測試面向?qū)ο蟮能浖r,不能再孤立地測試單個操作,而應(yīng)該把操作作為類的一部分來測試。12.3面向?qū)ο蟮臏y試策略2.面向?qū)ο蟮募蓽y試因為在面向?qū)ο蟮能浖胁淮嬖趯哟蔚目刂平Y(jié)構(gòu),傳統(tǒng)的自頂向下和自底向上的集成策略就沒有意義了。此外,由于構(gòu)成類成分彼此間存在或直接的交互,因此一次集成一個操作到類中(傳統(tǒng)的漸增式集成方法),通常是不可能的。面向?qū)ο筌浖募蓽y試主要有下述兩種策略:基于線程的測試基于使用的測試12.3面向?qū)ο蟮臏y試策略3.面向?qū)ο蟮拇_認(rèn)測試在確認(rèn)測試或系統(tǒng)測試層次,不再考慮類之間互相連接的細(xì)節(jié)。和傳統(tǒng)的確認(rèn)測試一樣,面向?qū)ο筌浖拇_認(rèn)測試也集中檢查用戶可見的動作和用戶可識別的輸出。為了導(dǎo)出確認(rèn)測試用例,測試人員應(yīng)該認(rèn)真研究動態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯誤的情景。12.4設(shè)計測試用例與傳統(tǒng)軟件測試(由軟件的輸入—處理—輸出視圖或?qū)崿F(xiàn)模塊的算法驅(qū)動測試用例的設(shè)計)不同,面向?qū)ο鬁y試關(guān)注于設(shè)計適當(dāng)?shù)牟僮餍蛄幸詸z查類的狀態(tài)。4.1測試類的技術(shù)設(shè)計測試用例以測試、單個類的技術(shù),主要有隨機測試、劃分測試和基于故障的測試等3種。1.隨機測試讓類實例隨機地執(zhí)行一些類內(nèi)定義的操作,以測試類狀態(tài)。如果應(yīng)用系統(tǒng)的性質(zhì)對操作的應(yīng)用施加了一些限制,則可在最小操作序列的基礎(chǔ)上隨機增加一些操作,作為測試該類的測試用例。12.4設(shè)計測試用例2.劃分測試與測試傳統(tǒng)軟件時采用等價劃分方法類似,測試類時采用劃分測試方法也可以減少所需要的測試用例的數(shù)量。首先,把輸入和輸出分類,然后設(shè)計測試用例以測試劃分出的每個類別。劃分類別的方法主要有下述3種:基于狀態(tài)劃分——這種方法根據(jù)類操作改變類狀態(tài)的能力來劃分類操作,然后設(shè)計測試用例,分別測試改變狀態(tài)的操作和不改變狀態(tài)的操作。基于屬性劃分——這種方法根據(jù)類操作使用某個關(guān)鍵屬性的情況來劃分類操作。通常,把類操作劃分成使用屬性、修改屬性、不使用也不修改屬性等3類,然后設(shè)計測試用例,分別測試每類操作?;诠δ軇澐帧@種方法根據(jù)類操作完成的功能來劃分類操作,然后為每個類別的操作設(shè)計測試序列。12.4設(shè)計測試用例3.基于故障的測試這種方法與傳統(tǒng)的錯誤推測法類似,也是首先推測軟件中可能有的錯誤,然后設(shè)計出最可能發(fā)現(xiàn)這些錯誤的測試用例為了推測出軟件中可能有的錯誤,應(yīng)該仔細(xì)研究分析模型和設(shè)計模型,而且在很大程度上要依靠測試人員的經(jīng)驗和直覺。如果推測得比較準(zhǔn)確,則使用基于故障的測試方法能夠用相當(dāng)?shù)偷墓ぷ髁堪l(fā)現(xiàn)大量錯誤;反之,如果推測不準(zhǔn),這種方法的效果并不比隨機測試技術(shù)的效果好。4.2集成測試技術(shù)開始集成面向?qū)ο蟮能浖?,測試用例的設(shè)計變得更加復(fù)雜。在這個測試階段,必須對類間協(xié)作進(jìn)行測試。和測試單個類相似,測試類協(xié)作可以使用隨機測試方法和劃分測試方法,以及基于情景的測試和行為測試來完成。12.4設(shè)計測試用例1.多類測試(1)隨機測試??梢允褂孟铝胁襟E來生成多個類的隨機測試用例。對每個客戶類,使用類操作符列表來生成一系列隨機測試序列。這些操作符向服務(wù)類實例發(fā)送消息。對所生成的每個消息,確定協(xié)作類和在服務(wù)器對象中的對應(yīng)操作符。對服務(wù)器對象中的每個操作符(已經(jīng)被來自客戶對象的消息調(diào)用),確定傳遞的消息。對每個消息,確定下一層被調(diào)用的操作符,并把這些操作符結(jié)合進(jìn)測試序列中。12.4設(shè)計測試用例(2)劃分測試。多個類的劃分測試方法,類似于單個類的劃分測試方法。但是,對于多類測試來說,應(yīng)該擴充測試序列以包括那些通過發(fā)送給協(xié)作類的消息而被調(diào)用的操作。另一種劃分測試方法,根據(jù)與特定類的接口來劃分類操作還可以用基于狀態(tài)的劃分,進(jìn)一步精細(xì)劃分類操作。銀行系統(tǒng)的類-協(xié)作圖12.4設(shè)計測試用例12.4設(shè)計測試用例2.從動態(tài)模型導(dǎo)出測試用例類的狀態(tài)圖有助于導(dǎo)出測試該類(及與其協(xié)作的那些類)的動態(tài)行為的測試用例。設(shè)計出的測試用例應(yīng)該覆蓋該類的所有狀態(tài),也就是說,操作序列應(yīng)該使得該類實例遍歷所有允許的狀態(tài)轉(zhuǎn)換。在類的行為導(dǎo)致與一個或多個類協(xié)作的情況下,應(yīng)該使用多張狀態(tài)圖以跟蹤系統(tǒng)的行為流。12.4設(shè)計測試用例account類的狀態(tài)轉(zhuǎn)換圖小結(jié)面向?qū)ο髮崿F(xiàn):把面向?qū)ο笤O(shè)計結(jié)果翻譯成用某種程序設(shè)計語言書寫的面向?qū)ο蟪绦驕y試并調(diào)試面向?qū)ο蟪绦?/p>

1.系統(tǒng)可行性分析軟件工程中的一些觀念討論

1.為什么應(yīng)該盡量使用面向?qū)ο笳Z言來實現(xiàn)面向?qū)ο蠓治龊驮O(shè)計的結(jié)果?2.什么是強類型語言?這類語言有哪些優(yōu)點?3.用動態(tài)聯(lián)編實現(xiàn)多態(tài)性是否會顯著降低程序的運行效率?4.為什么說參數(shù)化類有助于提高可重用性?5.把策略方法與實現(xiàn)方法分開后,為什么能提高可重用性?6.面向?qū)ο筌浖哪男┨攸c使得測試和維護變得比較容易?哪些特點使得測試和維護變得比較困難?作業(yè)

7.試用C++語言編程實現(xiàn)下述簡單圖形程序的類繼承結(jié)構(gòu)。在顯示器屏幕上圓心坐標(biāo)為(250,10

溫馨提示

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

評論

0/150

提交評論