




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件工程導論第18課,第12章 面向對象實現(xiàn),第12章 面向對象實現(xiàn),2項主要工作: (1)把面向對象設計結果翻譯成用某種程序語言書寫的面向對象程序, (2)測試并調試面向對象程序 采用的語言的特點和程序設計風格影響程序的可靠性、可重用性和維護 封裝、繼承、多態(tài)給測試帶來新特點,要進一步探索更有效的測試方法,12.1 程序設計語言,面向對象設計的結果可以用面向對象語言,也可以用非面向對象語言實現(xiàn)。 非面向對象語言實現(xiàn)困難比較多。 語言選擇要考慮功能的強大,便于實現(xiàn)面向對象概念,可重用性和可維護性 好的語言會有以下優(yōu)點:,12.1 程序設計語言,1 一致的表示方法 一致的表示方法應該從問題域到O
2、OA,OOD,OOP始終穩(wěn)定不變。 有利于在軟件開發(fā)過程中始終使用統(tǒng)一的概念,有利于維護人理解軟件的各種配置。 2 可重用性 OOA,OOD,OOP的結果都可以重用。,12.1 程序設計語言,3 可維護性 實際情況是:維護人員最終面對的只有源程序本身,沒有文檔。 在選擇編程語言時,要選擇能最好地表達問題域語義的,便于維護人員理解程序和維護 最好選用面向對象語言,12.1.2 面向對象語言的技術特點,面向對象語言 20世紀50年代 LISP語言 動態(tài)聯(lián)編 20世紀60年代 SIMULA語言 類,繼承 20世紀70年代 Modula_2, Ada 抽象 20世紀80年代 Smalltalk, Ei
3、ffel 過程語言上增加面向對象機制 C+ 面向對象語言的技術特點如下:,1 支持類與對象概念的機制,用戶動態(tài)創(chuàng)建對象,用指針引用動態(tài)創(chuàng)建的對象。 系統(tǒng)必須進行動態(tài)內存管理,分配和釋放內存。不釋放會用盡內存。 自動回收,有時系統(tǒng)回收不太好。 C+采用析構函數的方式釋放內存。,2 實現(xiàn)整體-部分(聚集)結構的機制,2種方法實現(xiàn)整體-部分結構 使用指針的方式,和獨立的關聯(lián)方式 3 實現(xiàn)一般特殊結構的機制(泛化) 實現(xiàn)繼承機制,解決名字沖突的機制。 名字沖突就是重名問題, 盡是避免名字沖突,4 實現(xiàn)屬性和服務的機制,實現(xiàn)屬性的機制考慮問題:支持實例連接的機制,屬性的可見性控制,對屬性值的約束。 服務
4、考慮的因素:支持消息連接的機制,控制服務可見性的機制,動態(tài)聯(lián)編。 動態(tài)聯(lián)編:系統(tǒng)在運行過程中,當需要執(zhí)行一個特定服務的時候,選擇實現(xiàn)該服務的適當算法。虛函數是動態(tài)聯(lián)編。,5 類型檢查,弱類型:僅要求每個變量或屬性隸屬于一個對象 強類型:語法規(guī)定每個變量或屬性必須準確地隸屬于某個特定的類 Smalltalk是無類型語言,C+是強類型 強類型的優(yōu)點:有利于在編譯時發(fā)現(xiàn)錯誤; 增加了優(yōu)化的可能性。,6 類庫,大多數面向對象語言都提供實用的類庫。 編譯系統(tǒng)提供類庫。 類庫增加重用性 類庫中包含通用的數據結構類,把這些類稱為包容類 關聯(lián)類,接口類,用戶界面類,7 效率,面向對象的程序效率并不低。 類庫中
5、的算法和數據結構更先進,代碼更精巧。 類的動態(tài)聯(lián)編查找方法經過優(yōu)化,速度快。 8 持久保存對象 保存數據的方法,保存數據用于傳遞數據,恢復數據。 人工進行數據保存,保存數據的類,9 參數化類,一些軟件元素,功能相同,處理對象不同。 參數化類就是使用一個或多個類型去參數化一個類的機制。 程序員先定義一個參數化的類模板,然后把數據類型作為參數傳遞進去,從而把這個模板應用在不同的應用程序中。 Effel語言中有參數化類,C+提供了類模板。,10開發(fā)環(huán)境,開發(fā)環(huán)境包括的基本軟件工具: 編輯程序,編譯程序,解釋程序、瀏覽工具、調試器。 編譯程序代碼效率比解釋程序高 編譯先翻譯成中間語言程序,再翻譯成目標
6、代碼 傳統(tǒng)的系統(tǒng)構造工具(例如UNIX的make)落后了。 例:C+的Visual Studio,12.1.3 選擇面向對象語言,開發(fā)人員選擇面向對象語言時考慮的因素: 1 將來能否占主導地位 2 可重用性 3 類庫和開發(fā)環(huán)境 考慮類庫中具有哪些有價值的類, 開發(fā)環(huán)境具有方便的編輯工具和瀏覽工具 4 其他因素 培訓、技術支持,開發(fā)工具、開發(fā)平臺、 發(fā)行平臺、對機器性能和內存的要求,集成已有軟件的容易程度。,12.2 程序設計風格,良好的程序設計風格有利于維護、擴充,重用。 為適應面向對象方法所特有的概念而必須遵循的一些新準則。 可重用性,可擴展性,12.2.1 提高可重用性,在編碼階段主要是代
7、碼重用 2種代碼重用: 內部重用即本項目內的代碼重用 外部重用即新項目重用舊項目的代碼 內部重用:找出相似部分,用繼承共享它們 外部重用:要精心設計 下面是實現(xiàn)重用的準則:,1 提高方法的內聚,一個方法應該只完成單個功能,如果一個方法涉及多個功能,要進行分解。 2 減小方法的規(guī)模 如果某個方法過大,應該把它分解成幾個小方法。 3 保持方法的一致性 功能相似的方法有一致的名字、參數特征、返回值類型、使用條件、出錯條件等。,4 把策略與實現(xiàn)分開,兩種方法 做出決策,提供變元,并且管理全局資源的方法稱為策略方法。 完成具體操作的方法稱為實現(xiàn)方法。 策略方法檢查系統(tǒng)運行狀態(tài),處理出錯情況。 實現(xiàn)方法完
8、成特定處理、實現(xiàn)算法 為提高可重用性,不要把策略和實現(xiàn)放在同一個方法中,算法的核心部分放在實現(xiàn)方法中。在策略方法中提取出具體參數,調用實現(xiàn)方法。,5 全面覆蓋,針對輸入條件的各種組合,對所有能出現(xiàn)的組合寫出方法。 一個方法要能處理正常值,并能處理空值、極限值、界外值等異常情況。 6 盡量不使用全局變量 盡量降低方法與外界耦合的程度,不使用全局變量是降低耦合的一項主要措施。,7 利用繼承機制,繼承是實現(xiàn)共享和提高重用程度的主要途徑 (1)調用子過程。把公共的代碼分離出來,構成一個被其他方法調用的公共方法,在基類中定義這個公共方法,供派生類調用。 (2)分解因子。從不同類的相似方法中分解出不同的因
9、子(即不同的代碼),把余下的代碼作為公用方法的公共代碼。在抽象基類中定義公用方法,與多態(tài)性結合,讓派生類繼承公用方法。,(3) 使用委托,當邏輯上不存在一般-特殊關系時,為重用已有的代碼,可以利用委托機制。(把一類對象作為另一類對象的屬性,從而在兩類對象間建立組合關系) (4)把代碼封裝在類中。把可以重用的代碼封裝在類中。,12.2.2 提高可擴充性,下面是有利于提高可擴充性的準則: 1 封裝實現(xiàn)策略 把類的實現(xiàn)策略(包括描述屬性的數據結構,修改屬性的算法等)封裝起來,對外只提供公有接口。 2 不要用一個方法遍歷多條關聯(lián)鏈 不要使程序過分復雜、不易理解、不易修改擴充。,3 避免使用多分支語句,
10、不要用DO_CASE語句根據對象類型選擇行為。要利用多態(tài)性機制,根據對象當前的類型,自動決定應有的行為。 精心確定公有方法 修改公有方法的代價比較高,為提高可修改性,降低維護成本,必須精心設計和定義公有方法。私有方法只在類內使用,利用私有方法實現(xiàn)公有方法。,12.2.3 提高健壯性,健壯性就是硬件故障、輸入的數據無效或操作錯誤等意外環(huán)境下,系統(tǒng)能做出適當響應的程度。 健壯性不可忽略。 健壯性是不何忽略的質量指標。 為提高健壯性的幾條準則,1 預防用戶的操作錯誤,軟件系統(tǒng)必須具有處理用戶操作錯誤的能力。當用戶輸入錯誤時,給出錯誤提示。 2 檢查參數的合法性 對公有方法,尤其要檢查參數的合法性 3
11、 不要預先確定限制條件 不預先設定數據結構的最大容量需求。最好用動態(tài)內存分配。,4 先測試后優(yōu)化,應該在為提高效率而進行優(yōu)化前,先測試程序的性能。 仔細研究,哪些部分需要重點測試。 經過測試,合理地確定為提高性能應該著重優(yōu)化的關鍵部分。,12.3 測試策略,小型測試-大型測試 單元測試-集成測試-確認測試-系統(tǒng)測試 測試面向對象軟件時,不能再孤立地測試單個操作。,12.3.1 面向對象的單元測試,最小的測試單元是封裝起來的類和對象。 一個類可以包含一組不同的操作,一個特定的操作可以存在于一組不同的類中。 測試面向對象軟件時,不能再孤立地測試單個操作,而應該把操作作為類的一部分來測試。 例子:超
12、類中定義的一個操作,多個子類調用,測試時,要全部測試這些子類,12.3.2 面向對象的集成測試,自項向下、自底向上、漸增式的集成方法不能用 面向對象軟件的集成測試主要有下述2種: (1)基于線程的測試(thread based testing). 把響應系統(tǒng)的一個輸入或一個事件所需要的那些類集成起來,分別集成并測試每個線程,同時應用回歸測試以保證沒有產生副作用。,12.3.2 面向對象的集成測試,獨立類:不使用服務器類的那些類 (2)基于使用的測試(use based testing). 首選測試獨立類,把獨立類都測試完后,再測試使用獨立類的下一個層次的類(稱為依賴類)。對依賴類一層一層的測試
13、下去,直至把整個軟件系統(tǒng)構造完為止。 注意測試不同類之間的協(xié)作錯誤,采用集群測試的方法。,12.3.3 面向對象的確認測試,確認測試:保證軟件確實滿足用戶需求而進行的測試。驗證系統(tǒng)功能和性能的有效性。 面向對象的確認測試檢查用戶的輸入和輸出。為了導出測試用例,須認真研究動態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯誤的場景。 可用黑盒測試方法設計測試用例。,12.4 設計測試用例,面向對象軟件的測試用例的設計方法,還處于研究、發(fā)展階段。 關注重點:設計適當的操作序列以檢查類的狀態(tài)。 12.4.1 測試類的方法 面向對象軟件的小型測試著重測試單個類和類中封裝的方法。 測試方法:隨機
14、測試、劃分測試、基于故障的測試。,1 隨機測試,將完成行為的各種操作,隨機地產生它們的操作序列,以該操作序列測試系統(tǒng)。 例子:銀行應用系統(tǒng)的帳戶類有下列操作: Open, setup, deposit, withdraw, balance, summarize, creditLimit, close. 限制是:第1個操作是open, 最后一個是close 隨機產生的測試用例: 1:open setup deposit deposit balance summarize withdraw close 2: open setup deposit withdraw deposit balance c
15、reditLimit withdraw close,2 劃分測試,目的:減少測試類時需要的測試用例的數量 先分為輸入,輸出類 劃分類別的方法 (1) 基于狀態(tài)的劃分 根據類操作改變類狀態(tài)的能力來劃分類操作 例子: P1: open setup deposit deposit withdraw withdraw close P2: open setup deposit summarize creditLimit withdraw close,(1) 基于狀態(tài)的劃分 根據類操作改變類狀態(tài)的能力來劃分類操作 例子: 狀態(tài)操作:deposit, withdraw 非狀態(tài)操作: balance, sum
16、marize, creditLimit 改變狀態(tài)測試P1: open setup deposit deposit withdraw withdraw close 不改變狀態(tài)測試P2: open setup deposit summarize creditLimit withdraw close,(2)基于屬性的劃分,根據類操作使用的屬性來劃分操作 例子:基于balance定義劃分 使用balance操作 修改balance操作 與balance無關的操作 (3)基于功能的劃分 根據類操作完成的功能來劃分操作 例子:初始化(open, setup),計算(deposit, withdraw) 查
17、詢(balance, summarize,creditLimit), 終止(close),3 基于故障的測試,首選推測軟件中可能有的錯誤,然后設計出最可能發(fā)現(xiàn)這些錯誤的測試用例。 推測錯誤:仔細研究分析模型和設計模型,12.4.2 集成測試方法,對類間協(xié)作進行測試 和測試單個類相似,可以使用隨機測試、劃分測試、基于情景的測試、行為測試 1 多類測試 生成多個類的隨機測試用例的步驟: (1)對每個客戶類,使用類操作符列表來生成一系列隨機測試序列。這些操作符向服務器類實例發(fā)送消息。,(2)對所生成的每個消息,確定協(xié)作類和在服務器對象中的對應操作。 (3)對服務器對象中的每個操作符,確定傳遞的消息。
18、 (4)對每個消息,確定下一層被調用的操作符,并把這些操作符結合進測試序列中。,測試用例: R3:verifyAcct verifyPIN depositRep 為找到測試涉及的協(xié)作者,考慮每個操作相關聯(lián)的消息。 Bank & ValidationInfo 執(zhí)行verifyAcct, verifyPIN Bank & Account 執(zhí)行depositReq 協(xié)作的新測試用例是: R4: verifyAcctbank validAcctvalidation verifyPINbank validPINvalidation depositReq depositaccount,2 從動態(tài)模型導出測試用例,使用類的狀態(tài)圖導出測試類的動態(tài)行為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國防銹干燥劑市場分析及競爭策略研究報告
- 2025至2030年中國鋼結構支架市場分析及競爭策略研究報告
- 2025至2030年中國超級純合成發(fā)動機油市場分析及競爭策略研究報告
- 2025至2030年中國自動感應干手器市場分析及競爭策略研究報告
- 2025至2030年中國紫菜米餅市場分析及競爭策略研究報告
- 2025至2030年中國監(jiān)控卡多媒體疊加系統(tǒng)市場分析及競爭策略研究報告
- 2025至2030年中國玻璃塞夾具市場分析及競爭策略研究報告
- 2025至2030年中國液壓下錨機市場分析及競爭策略研究報告
- 2025至2030年中國氮氣發(fā)生器市場分析及競爭策略研究報告
- 2025至2030年中國扣鎖型快速接頭市場分析及競爭策略研究報告
- 部編版小學語文四年級上冊第三單元整體設計交流課件
- 年產30萬噸水泥粉磨站建設工程可行性研究報告
- 邊際貢獻分析
- 2017人教版一年級語文下冊識字表
- 《高度參與的課堂 提高學生專注力的沉浸式教學》讀書筆記思維導圖PPT模板下載
- GB/T 28046.1-2011道路車輛電氣及電子設備的環(huán)境條件和試驗第1部分:一般規(guī)定
- 外科病應急預案嵌頓疝病人應急預案
- 孤獨癥康復教育人員上崗培訓練習題庫及答案
- 機械設備投入計劃及保證措施
- 東南大學附屬中大醫(yī)院ECMO操作記錄單
- 每月防火檢查及記錄表(每月一次)
評論
0/150
提交評論