




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第六章軟件工程基礎(chǔ)6.1軟件工程概述6.2軟件詳細設(shè)計6.3結(jié)構(gòu)化分析與設(shè)計方法6.4測試與調(diào)試基本技術(shù)1第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.1軟件工程概述6.1.1軟件工程的概念6.1.2軟件生命周期6.1.3軟件支援環(huán)境2第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)軟件工程出現(xiàn)的原因軟件危機軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題?,F(xiàn)象一:軟件開發(fā)成本和進度的估計不準確,交付時間一再拖延,造成開發(fā)成本超出預(yù)算。案例:1995年,新丹佛國際化機場自動化行李系統(tǒng)的軟件出現(xiàn)故障,導(dǎo)致機場延期16個月才正式啟用,并且大部分行李采用人工分揀,系統(tǒng)成本超出預(yù)算32億美元。原因:軟件復(fù)雜程度高,開發(fā)周期長,并且各種變化不斷,因此軟件項目按期完成交付的很少。3第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)現(xiàn)象二:“已完成”的軟件不滿足用戶的需求案例:1984年,經(jīng)過18個月的開發(fā),一個耗資2億美元的系統(tǒng)支付給了美國威斯康星州的一家健康保險公司。但該系統(tǒng)不能滿足用戶的正常工作需求,只好追加了6千萬美金,又花了3年時間才解決了問題。原因:軟件開發(fā)人員不是用戶業(yè)務(wù)的專家,用戶不懂計算機軟件技術(shù),因此,軟件人員按照自己的理解開發(fā)出得軟件往往不能滿足用戶的業(yè)務(wù)需求。4第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)現(xiàn)象三:軟件產(chǎn)品的質(zhì)量沒有保證案例:1996年6月4日,Ariane5火箭首次發(fā)射,在升空大約40秒且高度不到4千米處,火箭突然發(fā)生爆炸,該事件造成了50億美元的損失。事故原因是在Ariane5中使用了Ariane4火箭的程序代碼,在將64位浮點數(shù)轉(zhuǎn)換為16位帶符號整數(shù)的程序中,更快的運算引擎導(dǎo)致了Ariane5中的64位數(shù)據(jù)要比Ariane4中更長,直接誘發(fā)了溢出條件,最終導(dǎo)致了航天計算機的崩潰。原因:軟件質(zhì)量和可靠性的評估非常困難。這些投資巨大、技術(shù)一流、管理規(guī)范、測試充分的軟件也難保不出現(xiàn)質(zhì)量問題。5第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)現(xiàn)象四:軟件通常沒有適當?shù)奈臋n資料或文檔與最終交付的軟件產(chǎn)品不符。原因:軟件幾乎不可能一版保證成功,而是經(jīng)歷反復(fù)修改,其中的文檔很難與每次的修改保持一致,錯誤的文檔就像錯誤的地圖一樣危險?,F(xiàn)象五:軟件的可維護程度低。原因:軟件開發(fā)過程中,起著重要作用的是開發(fā)者的邏輯思維過程。如果若干年后,由其他人來修改,必須要理解開發(fā)者當時的思維過程,因此說讀懂別人的程序比重新編寫的難度更大。6第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)軟件危機出現(xiàn)的原因主要有兩個方面:其一是軟件本事的特點;其二是軟件開發(fā)過程不成熟。軟件開發(fā)過程不成熟的主要表現(xiàn)為:忽視軟件開發(fā)前期的調(diào)研與分析工作,沒有統(tǒng)一、規(guī)范的方法論指導(dǎo),輕視文檔管理和質(zhì)量保證工作,缺乏相關(guān)人員之間的溝通。7第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)簡陋的小屋—太簡單!不要設(shè)計8第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)新農(nóng)村別墅造型圖—復(fù)雜!需要設(shè)計了9第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)別墅的設(shè)計—設(shè)計圖紙、施工圖紙10第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)設(shè)計和施工說明11第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)典型helloworld程序—太簡單!不要設(shè)計
#include<stdio.h>
intmain()
{
printf(“helloworld!”);//輸出helloworld!
return0;
}12第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)圖書館圖書信息管理軟件—復(fù)雜!需要設(shè)計13第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.1.1軟件工程的概念軟件工程學是研究軟件開發(fā)和維護的普遍原理與技術(shù)的一門工程學科。所謂軟件工程是指,采用工程的概念、原理、技術(shù)和方法指導(dǎo)軟件的開發(fā)與維護。把經(jīng)過實踐考驗而證明正確的管理方法和先進的軟件開發(fā)技術(shù)結(jié)合起來,運用到軟件開發(fā)和維護過程中,來解決軟件危機。14第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)軟件定義期:包括問題定義、可行性研究和需求分析三個階段;軟件開發(fā)期:包括系統(tǒng)設(shè)計、詳細設(shè)計、編碼和測試四個階段;軟件維護期:即運行維護階段。6.1.2軟件生命周期15第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)1.軟件定義期(1)問題定義確定問題的性質(zhì)、工程目標以及規(guī)模。分析員應(yīng)提交書面報告給用戶與使用部門負責人進行審查。(2)可行性研究進一步研究上一階段所定義的問題是否可解。最后還要提交必要的文檔。16第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(3)需求分析①確定對系統(tǒng)的綜合要求,即功能要求、性能要求、運行要求以及將來可能會提出的一些要求。②對系統(tǒng)的數(shù)據(jù)要求進行分析。主要包括數(shù)據(jù)元素的分類和規(guī)范化,描繪實體之間的關(guān)系圖,進行事務(wù)分析與數(shù)據(jù)庫模型的建立。③在前面分析的基礎(chǔ)上,推導(dǎo)出系統(tǒng)的詳細模型系統(tǒng)。④修正開發(fā)計劃,并建立模型系統(tǒng)。文檔內(nèi)容:①系統(tǒng)的功能說明②系統(tǒng)對數(shù)據(jù)的要求③用戶系統(tǒng)描述17第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)2.軟件開發(fā)期(1)系統(tǒng)設(shè)計①提出可選擇方案;②選擇合理方案;③推薦最佳方案;④功能分解;⑤設(shè)計軟件結(jié)構(gòu);⑥制定測試計劃;⑦提交文檔。18第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)詳細設(shè)計(3)編碼①選擇適當?shù)某绦蛟O(shè)計語言;②使程序內(nèi)部有良好的文檔資料、規(guī)范的數(shù)據(jù)格式說明、簡單清晰的語句結(jié)構(gòu)和合理的輸入輸出格式,這些都可以大大提高程序的可讀性,而且也可以改進程序的可維護性;③充分利用已有的軟件工具來幫助編碼,以提高編碼的效率和減少程序中的錯誤。(4)測試19第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)3.軟件維護期
①為糾正使用中出現(xiàn)的錯誤而進行的改正性維護;②為適應(yīng)環(huán)境變化而進行的適應(yīng)性維護;③為改進原有軟件而進行的完善性維護;④為將來的可維護和可靠而進行的預(yù)防性維護。20第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.1.3軟件支援環(huán)境一個完備的軟件支援環(huán)境應(yīng)有功能:
(1)能夠支援軟件生命的全周期。
(2)能夠支援大型軟件工程項目。
(3)能夠支援軟件配置管理。一般的軟件支援環(huán)境由以下幾部分組成。
(1)環(huán)境數(shù)據(jù)庫
(2)接口軟件
(3)工具組21第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.2軟件詳細設(shè)計6.2.1程序流程圖6.2.2NS圖6.2.3問題分析圖PAD6.2.4判定表6.2.5過程設(shè)計語言PDL22第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)詳細設(shè)計詳細設(shè)計也叫過程設(shè)計,應(yīng)該在軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計之后進行。主要是設(shè)計模塊內(nèi)的算法實現(xiàn)細節(jié)。詳細設(shè)計的任務(wù)不是編寫代碼,而是要為編寫程序代碼設(shè)計“圖紙”,有程序員按“圖紙”用某種高級程序設(shè)計語言編寫程序代碼。詳細設(shè)計的目的不僅僅是保證所涉及的模塊功能正確,更重要的是保證所設(shè)計的處理過程易于理解,具有良好的可靠性和可維護性。23第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.2.1程序流程圖程序流程圖中常用的圖形符號24第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)結(jié)構(gòu)化程序設(shè)計限制五種基本控制結(jié)構(gòu)(1)順序結(jié)構(gòu)反映了若干個模塊之間連續(xù)執(zhí)行的順序。(2)在選擇結(jié)構(gòu)中,由某個條件P的取值來決定執(zhí)行兩個模塊之間的哪一個。(3)在當型循環(huán)結(jié)構(gòu)中,只有當某個條件成立時才重復(fù)執(zhí)行特定的模塊(稱為循環(huán)體)。(4)在直到型循環(huán)結(jié)構(gòu)中,重復(fù)執(zhí)行一個特定的模塊,直到某個條件成立時才退出該模塊的重復(fù)執(zhí)行。(5)在多情況選擇結(jié)構(gòu)中,根據(jù)某控制變量的取值來決定選擇多個模塊中的哪一個。25第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)26第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)程序流程圖的主要缺點:(1)程序流程圖本質(zhì)上不是逐步求精的好工具,它會使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。(2)程序流程圖不易表示層次結(jié)構(gòu)。(3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)和模塊調(diào)用關(guān)系等重要信息。(4)程序流程圖中用箭頭代表控制流,因此,程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計的思想,隨意進行轉(zhuǎn)移控制。27第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.2.2NS圖NS圖基本特點:
(1)功能域比較明確,可以從框圖中直接反映出來。
(2)不可能任意轉(zhuǎn)移控制,符合結(jié)構(gòu)化原則。
(3)很容易確定局部和全程數(shù)據(jù)的作用域。
(4)很容易表示嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。28第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)1.順序結(jié)構(gòu)29第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)2.選擇結(jié)構(gòu)(1)兩路分支結(jié)構(gòu)30第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)多路分支結(jié)構(gòu)31第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)3.循環(huán)結(jié)構(gòu)(1)當型循環(huán)結(jié)構(gòu)32第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)直到型循環(huán)結(jié)構(gòu)33第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.2.3問題分析圖PAD(ProblemAnalysisDiagram)
PAD圖的五種基本控制結(jié)構(gòu)34第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.2.4判定表一張判定表由以下四部分組成:左上部列出所有條件;左下部是所有可能的動作;右上部是表示各種條件組合的一個矩陣;右下部是和每種條件組合相對應(yīng)的動作。判定表右半部的每一列實際上就是一個規(guī)則,規(guī)定了與特定的條件組合相對應(yīng)的動作。35第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)假設(shè)某大學要從學生中挑選男子籃球隊隊員,基本條件是各門課程的平均分在70分以上,身高超過1.80米,體重超過75公斤。需要從學生登記表中挑選出符合上述條件的男同學,并列出他們的姓名和住址,以便進一步選拔。36第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)37第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.2.5過程設(shè)計語言PDLPDL特點:(1)關(guān)鍵字的固定語法,提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的特點。(2)用自然語言的自由語法來描述處理部分。(3)具有數(shù)據(jù)說明的手段。(4)具有模塊定義和調(diào)用的機制,提供各種接口描述模式。38第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)PDL優(yōu)點:(1)可以作為注釋直接插在源程序中間。這樣做的好處是,能促使維護人員在修改源程序代碼的同時也修改PDL注釋,有助于保持文檔和程序的一致性,提高了文檔的質(zhì)量。(2)可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書寫和編輯工作。(3)利用已有的自動處理程序,可以自動由PDL生成程序代碼。39第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.3結(jié)構(gòu)化分析與設(shè)計方法6.3.1應(yīng)用軟件開發(fā)的原則和方法6.3.2結(jié)構(gòu)化分析方法6.3.3結(jié)構(gòu)化設(shè)計方法40第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.3.1應(yīng)用軟件開發(fā)的原則和方法1.應(yīng)用軟件開發(fā)的基本原則
(1)自頂向下的系統(tǒng)結(jié)構(gòu)開發(fā)原則
(2)模塊化結(jié)構(gòu)開發(fā)原則41第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)2.應(yīng)用軟件的開發(fā)方法(1)非自動形式的開發(fā)方法①系統(tǒng)流程圖法(systemflowchart)②結(jié)構(gòu)化分析方法(SA方法)③結(jié)構(gòu)化設(shè)計方法(SD方法)④數(shù)據(jù)結(jié)構(gòu)法(Jackson法)⑤層次輸入-處理-輸出方法(HIPO方法)42第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)半自動形式的開發(fā)方法①SREM方法②PSL/PSA方法
PSL是一種問題說明語言(ProblemStatementLanguage)
PSA是一種問題說明分析器(ProblemStatementAnalyzer)
MICRO_PSL/PSA系統(tǒng)(3)自動形式的系統(tǒng)開發(fā)方法主要以HOS(HigherOrderSoftware公司)方法為代表。43第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.3.2結(jié)構(gòu)化分析方法SA(StructualAnalysis)1.SA方法的特點(1)分解和抽象44第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)45第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)文檔的規(guī)范化①一套分層的數(shù)據(jù)流程圖,用于描述系統(tǒng)的邏輯關(guān)系。②一本數(shù)據(jù)字典,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件。③一組小說明,描述各個加工處理應(yīng)完成的工作。④其他補充材料,描述尚未說明或需要進一步交代的問題。(3)面向用戶(4)系統(tǒng)的邏輯設(shè)計和物理設(shè)計分開進行46第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)2.數(shù)據(jù)流程圖(1)數(shù)據(jù)流程圖的概念①用數(shù)據(jù)流程圖描述系統(tǒng)中信息的變換和傳遞過程,并輔以其他形式的說明,如數(shù)據(jù)字典、判定表和判定樹等。②將數(shù)據(jù)流程圖轉(zhuǎn)換成相應(yīng)的軟件結(jié)構(gòu)。
數(shù)據(jù)流程圖簡稱DFD(DataFlowDiagram)47第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)研究生業(yè)務(wù)活動數(shù)據(jù)流程圖48第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)數(shù)據(jù)流程圖的組成符號49第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(3)畫數(shù)據(jù)流程圖的方法①自頂向下逐層分解②由外向里逐漸深化50第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)3.數(shù)據(jù)字典在數(shù)據(jù)字典中,通常有四種類型的條目。(1)基本數(shù)據(jù)項條目例如,學生“年齡”這個數(shù)據(jù)項的定義如下:數(shù)據(jù)項名稱:學生年齡數(shù)據(jù)類型:整型數(shù)據(jù)長度:一個字節(jié)取值范圍:16~3051第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)數(shù)據(jù)流條目課程目錄=課程名+學時+學分+教員+課表其中“教員”又可以列為一個子目錄,表示為教員=姓名+年齡+職稱“課表”也可以列為一個子目錄,表示成課表=星期幾+第幾節(jié)+教室
52第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)數(shù)據(jù)流條目的各數(shù)據(jù)項可以分為以下三種:①必有項,即數(shù)據(jù)流條目中必定包含的數(shù)據(jù)項;②必選項,即在某幾項中必定出現(xiàn)其中一項或幾項;③任選項,即可選可不選的數(shù)據(jù)項。在表示數(shù)據(jù)流條目時,一般要用到以下一些符號:=含義是“定義為”或“等價為”+含義是連接,表示幾個數(shù)據(jù)項的合成
[]表示必選項
()表示任選項
{}表示重復(fù)(有時用上下標表示重復(fù)次數(shù))例如,考試成績={學號+姓名}1100
+[平均分+方差]53第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(3)文件條目(4)加工條目(即數(shù)據(jù)處理條目)54第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.3.3結(jié)構(gòu)化設(shè)計方法1.結(jié)構(gòu)化設(shè)計方法的特點結(jié)構(gòu)化設(shè)計方法簡稱SD(StructuredDesign)
(1)如何將系統(tǒng)劃分為一個個模塊;
(2)模塊之間傳遞什么數(shù)據(jù);
(3)模塊之間如何進行調(diào)用;
(4)如何評價模塊結(jié)構(gòu)的質(zhì)量。55第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)2.結(jié)構(gòu)圖結(jié)構(gòu)圖簡稱SC(StructuredChart)圖56第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)計算工資的結(jié)構(gòu)圖57第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(1)模塊(2)調(diào)用(3)模塊間信息傳遞(4)輔助符號58第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)3.由數(shù)據(jù)流程圖導(dǎo)出結(jié)構(gòu)圖(1)變換型從變換型DFD導(dǎo)出結(jié)構(gòu)圖59第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(a)數(shù)據(jù)流程圖60第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(b)結(jié)構(gòu)圖61第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)事務(wù)型從事務(wù)型DFD導(dǎo)出結(jié)構(gòu)圖示意圖62第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(a)數(shù)據(jù)流程圖模型63第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(b)結(jié)構(gòu)圖64第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)4.模塊獨立性評價(1)耦合模塊之間的耦合反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。為了使系統(tǒng)各模塊之間相互影響盡可能地少,使系統(tǒng)簡單而易理解,應(yīng)減少模塊之間的耦合程度。①數(shù)據(jù)耦合②同構(gòu)耦合③控制耦合④公用耦合⑤內(nèi)容耦合65第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)66第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)內(nèi)聚內(nèi)聚是對一個模塊內(nèi)部元素之間功能上相互聯(lián)系強度的測量。模塊內(nèi)聚度又稱為模塊強度。一個模塊的內(nèi)聚度越高,與其他模塊之間的耦合程度也就越弱。①功能內(nèi)聚②序列內(nèi)聚③通信內(nèi)聚④過程內(nèi)聚⑤時間內(nèi)聚⑥邏輯內(nèi)聚⑦偶然內(nèi)聚67第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)邏輯內(nèi)聚模塊的分解68第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)69第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)決定內(nèi)聚程度的判定樹70第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.4測試與調(diào)試基本技術(shù)6.4.1測試6.4.2調(diào)試71第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)據(jù)新華社洛杉磯2002年6月報道,美國一家研究所公布的調(diào)查結(jié)果表明,軟件錯誤使美國每年損失高達595億美元。同時指出,如能做好檢測工作,即在軟件開發(fā)的早期發(fā)現(xiàn)漏洞并進行彌補每年能給美國企業(yè)節(jié)省成本222億美元。然而,目前軟件中一半以上的錯誤是在開發(fā)的后期或者售后使用中才被發(fā)現(xiàn)的。72第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)測試的工作量一般性軟件其測試工作量大約占整個開發(fā)工作量的40%系統(tǒng)軟件或關(guān)系到人的生命財產(chǎn)安全的重要軟件,其測試工作量通??赡苓_到整個開發(fā)工作量的3—5倍73第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)6.4.1測試1.測試的基本概念
測試具有以下三個重要特征。(1)測試的挑剔性測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進行的,其目的是設(shè)法暴露程序中的錯誤和缺陷。①測試是程序執(zhí)行的過程,目的在于發(fā)現(xiàn)錯誤;②一個好的測試在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;③一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤。74第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)完全測試的不可能性
測試只能說明程序有錯,而不能證明程序無錯,希望通過有限次的測試就能發(fā)現(xiàn)程序中的所有錯誤是不可能的,即完全測試是不可能的。由于測試的這一特征,程序也不可能具有百分之百的可靠性。75第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(3)測試的經(jīng)濟性①沒有語法錯誤;②運行有結(jié)果;③對典型數(shù)據(jù)能得到正確的結(jié)果;④對典型的有效數(shù)據(jù)能得到正確的結(jié)果,對無效數(shù)據(jù)有防范措施;⑤對一切能出現(xiàn)的數(shù)據(jù)不出錯。76第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)2.測試的過程
(1)程序的靜態(tài)分析
(2)程序的動態(tài)分析
(3)自動測試工具77第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)靜態(tài)測試:主要通過代碼審查和靜態(tài)分析,檢查源代碼中存在的問題。過程:代碼審查由有經(jīng)驗的程序設(shè)計人員根據(jù)軟件詳細設(shè)計說明書,閱讀程序來發(fā)現(xiàn)源程序中類型、引用、參數(shù)傳遞、表達式等不必運行程序就能夠發(fā)現(xiàn)的錯誤。特點:這種方法不需要專門的測試工具和設(shè)備,一旦發(fā)現(xiàn)錯誤就能定位,但是此方法具有一定的局限性。靜態(tài)分析主要對程序進行控制流分析、數(shù)據(jù)流分析、接口分析和表達式分析等
78第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)動態(tài)測試:在指定的環(huán)境上運行被測程序,輸入測試數(shù)據(jù),獲得測試結(jié)果,將獲得的測試結(jié)果與預(yù)期的結(jié)果進行比較,發(fā)現(xiàn)程序的錯誤。過程:設(shè)計測試用例,運行被測程序。特點:需要有程序的運行環(huán)境,必要時要編寫測試驅(qū)動程序和樁程序。79第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)3.測試的層次(1)模塊測試①模塊接口②局部數(shù)據(jù)結(jié)構(gòu)③重要路徑④錯誤處理的能力⑤I/O錯80第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)模塊測試的結(jié)構(gòu)81第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)整體測試整體測試可分為漸增式與非漸增式兩種。非漸增式的整體測試是將經(jīng)過單獨測試的所有模塊連接到一起進行測試。漸增式的整體測試往往是與模塊測試同步進行的,即在對模塊逐步裝配的過程中同時進行的。這種測試方式可以減少模塊測試時要設(shè)計的驅(qū)動模塊或承接模塊,又可以及時、準確地發(fā)現(xiàn)結(jié)構(gòu)錯誤的位置。漸增式的整體測試一般可以分為“自頂向下”和“自底向上”兩種。①“自頂向下”漸增式測試②“自底向上”漸增式測試82第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(3)高級測試①功能測試功能測試又稱有效性測試,主要是用黑箱法測試軟件功能是否與用戶一致。②系統(tǒng)測試把軟件元素與硬件元素結(jié)合在一起進行測試。③驗收測試主要檢查程序的操作與原設(shè)計要求以及用戶要求是否一致。這類測試常以用戶為主體進行。④安裝測試主要檢查軟件在安裝時產(chǎn)生的問題。83第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)4.測試的方法
設(shè)計和使用測試用例基本原則:①設(shè)計測試用例時,應(yīng)同時確定程序運行的預(yù)期結(jié)果。②測試用例不僅要選用合理的輸入數(shù)據(jù),也要選用不合理的輸入數(shù)據(jù)。③除了需要檢查程序是否做了應(yīng)該做的事,還要檢查程序是否做了不應(yīng)該做的事。④千萬不要幻想程序是正確的。⑤要保留有用的測試用例,以便再測試時使用。⑥測試用例要系統(tǒng)地進行設(shè)計,不可隨意湊合。84第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(1)白箱法白箱測試用例的設(shè)計準則有:語句覆蓋,分支覆蓋,條件覆蓋和組合條件覆蓋。①語句覆蓋語句覆蓋準則是企圖用足夠多的測試用例,使程序中的每個語句都執(zhí)行一遍,以便盡可能多地發(fā)現(xiàn)程序中的錯誤。這是一個非常弱的測試方法。因為每條語句都執(zhí)行一次,仍然會有許多錯誤測試不出來。85第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)某程序段如下:
…IF(a>1andb=0)THENx=x/aIF(a=2orx>1)THENx=x+1…86第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)每條語句都執(zhí)行一次,程序中第二個判定OR寫成AND仍然不能被發(fā)現(xiàn)錯誤87第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)②分支覆蓋分支覆蓋準則也稱為判定覆蓋準則。它要求通過足夠多的測試用例,使程序中的每個分支至少通過一次。88第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)89第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)③條件覆蓋條件覆蓋準則是通過執(zhí)行足夠多的測試用例,使每個判定中的每個條件都能取到兩種不同的結(jié)果(“真”與“假”)。用以下兩個測試用例便可以使每個條件都能取到“真”值和“假”值:
a=2,b=1,x=1(“a>1”為真,“b=0”為假,“a=2”為真,“x>1”為假)
a=1,b=0,x=3(“a>1”為假,“b=0”為真,“a=2”為假,“x>1”為真)90第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)④組合條件覆蓋組合條件覆蓋準則要求通過足夠多的測試用例,使每個判定中各條件的各種可能組合至少出現(xiàn)一次。例如,第一個判定框中的兩個條件有以下四種組合:條件組合1a>1,b=0;
條件組合2a>1,b≠0;
條件組合3a≤1,b=0;
條件組合4a≤1,b≠0。第二個判定框中的兩個條件也有以下四種組合條件組合5a=2,x>1;
條件組合6a=2,x≤1;
條件組合7a≠2,x>1;
條件組合8a≠2,x≤1.91第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)下面的四個測試用例就可以覆蓋上述八種可能的條件組合:
a=2,b=0,x=3(覆蓋條件組合1和5)
a=2,b=1,x=1(覆蓋條件組合2和6)
a=1,b=0,x=3(覆蓋條件組合3和7)
a=1,b=1,x=1(覆蓋條件組合4和8)92第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)93第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(2)黑箱法常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法。①等價分類法等價分類法是把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干等價類,使每一類中的一個典型數(shù)據(jù)在測試中的作用與這一類中所有其他數(shù)據(jù)的作用相同。在實際進行測試時,可以從每個等價類中只取一組數(shù)據(jù)作為測試用例。等價分類法分為兩步:一是劃分等價類(包括有效等價類和無效等價類);二是從每個等價類中選取測試用例。劃分等價類的基本方法:根據(jù)程序的功能說明,找出所有的輸入條件,然后為每一個輸入條件劃分等價類。94第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)95第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)·如果輸入條件規(guī)定了值的范圍,則可以確定一個有效等價類和兩個無效等價類;·如果輸入條件規(guī)定了值的個數(shù),則可以確定一個有效等價類和兩個無效等價類;·如果輸入條件規(guī)定了一個輸入值的有窮集,且確信程序?qū)γ總€輸入值單獨處理,則可以對集合中的每一個輸入值確定一個有效等價類,同時可以確定一個無效等價類;·如果輸入條件規(guī)定了“必須如何”的條件,則可以確定一個有效等價類和一個無效等價類;·如果確信某一等價類中的各元素在程序中的處理方式是有區(qū)別的,則應(yīng)把這個等價類分成更小的等價類。96第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)②邊值分析法·如果輸入條件規(guī)定了值的范圍,則要對這個范圍的邊界情況以及稍超出范圍的無效情況進行測試;例如,輸入范圍是1到10的整數(shù),則測試用例的取值:
0,1,10,11·如果輸入條件規(guī)定了值的個數(shù),則要分別對值的最大個數(shù)、最小個數(shù)、稍多于最大個數(shù)和稍少于最小個數(shù)的情況進行測試;例如,要求的記錄個數(shù)是1到255,則設(shè)計的記錄個數(shù)分別為:0,1,255,256·對于輸出條件使用上述兩條;·如果輸入和輸出是有序集,則應(yīng)把注意力集中在第一和最后一個元素上。97第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)③因果圖法④錯誤推測法例如,要測試一個排序程序,特別需要檢查的情況有:
·輸入表為空;
·輸入表只含有一個元素;
·輸入表中所有元素相同;
·輸入表實際有序。98第6章應(yīng)用軟件設(shè)計與開發(fā)技術(shù)(3)綜合策略①如果程序功能說明中包含有輸入條件的組合,便應(yīng)從因果圖開始,以減少組合情況。②在任何情況下都要用邊值分析法,通過分析輸入和輸出條件的邊界值,補充一些測試用例。③判別輸入/輸出的有效和無效等價類,進一步補充測試用例。④利用錯誤推測法補充一些測試用例。⑤查看上述測試用例的覆蓋程度,對未滿足的覆蓋標準,增加一些測試用例。99第6章應(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 禽類產(chǎn)品消費心理分析考核試卷
- 船舶改裝工程技術(shù)的研究與試驗發(fā)展考核試卷
- 自行車導(dǎo)航技術(shù)應(yīng)用考核試卷
- 遼寧省葫蘆島市建昌縣2025屆五年級數(shù)學第二學期期末達標檢測模擬試題含答案
- 山東省臨沂市蘭山區(qū)部分校2025屆中考第七次適應(yīng)性訓(xùn)練生物試題含解析
- 仲元中學高一下學期期中考試語文試題
- 上海對外經(jīng)貿(mào)大學《中學學科教學設(shè)計數(shù)學》2023-2024學年第二學期期末試卷
- 天津市六校2024-2025學年高三高考模擬沖刺卷(提優(yōu)卷)(一)歷史試題含解析
- 南京醫(yī)科大學康達學院《輪滑》2023-2024學年第二學期期末試卷
- 陜西省西安市交大附中達標名校2025屆初三二診模擬考試生物試題含解析
- 主動邀請患者參與醫(yī)療安全
- 2024年天津市武清區(qū)國有資產(chǎn)經(jīng)營投資有限公司招聘筆試參考題庫附帶答案詳解
- 社會穩(wěn)定風險評估 投標方案(技術(shù)方案)
- 高檔KTV裝修工程施工組織設(shè)計方案
- 住院-住院證明
- 第13課《警惕可怕的狂犬病》 課件
- 高中英語高考讀后續(xù)寫巧用動作鏈專項練習(附參考答案和解析)
- 腦機接口與人工智能-第1篇
- MSOP(測量標準作業(yè)規(guī)范)測量SOP
- 小升初放棄學校分配申請書范文
- “三個代表”重要思想
評論
0/150
提交評論