第六章軟件工程_第1頁
第六章軟件工程_第2頁
第六章軟件工程_第3頁
第六章軟件工程_第4頁
第六章軟件工程_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六章軟件工程6.1軟件工程概述

6.1.1基本概念*6.1.2生命周期6.2結(jié)構(gòu)化分析與設(shè)計(jì)方法

6.2.1結(jié)構(gòu)化分析與設(shè)計(jì)體系結(jié)構(gòu)*6.2.2模塊評價(jià)體系6.3測試與調(diào)試的基本技術(shù)

6.3.1測試

6.3.3調(diào)試6.4軟件開發(fā)的新方法

6.4.1原型方法

6.4.2瀑布方法

6.4.3面向?qū)ο蠹夹g(shù)一、軟件工程的基本概念“軟件工程”一詞是1968年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在當(dāng)時(shí)聯(lián)邦德國召開的專門討論解決“軟件危機(jī)”的國際會(huì)議上正式提出并使用的,并由此誕生了一門新興學(xué)科——軟件工程學(xué)?!败浖こ虒W(xué)”是一門交叉學(xué)科,它涉及計(jì)算機(jī)科學(xué)、管理科學(xué)、工程學(xué)和數(shù)學(xué)。計(jì)算機(jī)科學(xué)培養(yǎng)的是計(jì)算機(jī)科學(xué)家,而軟件工程則是培養(yǎng)軟件工程師。1.什么是軟件工程

軟件工程IEEE定義:軟件工程是以系統(tǒng)的、規(guī)范的、定量的方法應(yīng)用于軟件的開發(fā)、運(yùn)營和維護(hù),以及這些方法的研究。軟件工程學(xué):研究軟件開發(fā)和維護(hù)的普遍原理與技術(shù)的一門工程學(xué)科。2.軟件工程的目標(biāo)軟件工程的基本目標(biāo)是:開發(fā)盡可能多的軟件產(chǎn)品;提高軟件的生產(chǎn)效率;滿足應(yīng)用的功能需要;降低軟件開發(fā)成本。3.軟件工程的指導(dǎo)思想

為解決軟件危機(jī),把“軟件”這種特殊商品的生產(chǎn)、管理過程納入傳統(tǒng)工程管理的軌道;用計(jì)算機(jī)科學(xué)中的最新成果應(yīng)用于軟件工程中用管理學(xué)的原理和方法進(jìn)行軟件生產(chǎn)管理用工程學(xué)的觀點(diǎn)進(jìn)行核算,制定工程進(jìn)度和實(shí)施方案用數(shù)學(xué)方法建立軟件的可靠模型和各種有效算法采用科學(xué)的方法進(jìn)行軟件的開發(fā)和管理4.軟件工程基本原理著名軟件工程專家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小準(zhǔn)則集合。自1968年提出“軟件工程”的概念以來,專家學(xué)者又陸續(xù)突出了100多條關(guān)于軟件工程的準(zhǔn)則。軟件工程七條基本原理(1)用分階段的生命周期計(jì)劃嚴(yán)格管理(2)堅(jiān)持進(jìn)行階段評審(3)實(shí)行嚴(yán)格的產(chǎn)品控制(4)采用現(xiàn)代程序設(shè)計(jì)技術(shù)(5)結(jié)果應(yīng)能清楚地審查(6)開發(fā)小組人員少而精(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性計(jì)劃、評審、控制、新、形、精、學(xué)5.軟件工程應(yīng)用范圍大型程序要由若干個(gè)程序員小組承擔(dān)開發(fā),相互關(guān)系極其復(fù)雜,因此,必須自始至終堅(jiān)持SE方法。個(gè)人程序、中小型或一般程序同開發(fā)人員之間的關(guān)聯(lián)較小,應(yīng)用SE方法收效甚微。應(yīng)用程序分類分類程序規(guī)模模塊數(shù)開發(fā)時(shí)間開發(fā)人數(shù)極小500行以下10~201~4周1人小1K~2K行25~501~6月1人中5K~50K行250~10001~2年2~5人大50K~100K行1000以上2~3年5~20人甚大1M行4~5年100~1000人極大1M~10M行5~10年2000~50006.傳統(tǒng)軟件工程模式70年代,計(jì)算機(jī)技術(shù)水平不高,開發(fā)工具少而且性能差。對于大型復(fù)雜問題的求解方法有很大的局限性影響。軟件工程采用的方法:把軟件生存周期劃分成若干個(gè)階段,每個(gè)階段的任務(wù)相對獨(dú)立,而且比較簡單,便于不同人員分工協(xié)作,從而降低整個(gè)軟件開發(fā)工程的困難程度。在實(shí)現(xiàn)每個(gè)階段的任務(wù)時(shí),采用的是系統(tǒng)化的技術(shù)方法——結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)技術(shù)。傳統(tǒng)軟件工程模式的缺點(diǎn):強(qiáng)調(diào)了分階段實(shí)施模塊化、結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)和方法,而忽視了人在軟件開發(fā)過程中的地位和作用。7.現(xiàn)代軟件工程模式

現(xiàn)代軟件工程是在傳統(tǒng)軟件工程模式的基礎(chǔ)上,為了強(qiáng)調(diào)人在系統(tǒng)開發(fā)中的作用,同時(shí)為了適應(yīng)軟件新技術(shù)的發(fā)展趨勢而提出的。其基本要點(diǎn)是:以人為主,充分利用軟件開發(fā)方法及軟件開發(fā)工具;開發(fā)人員的組織管理對軟件開發(fā)成功與否至關(guān)重要;基于軟件組件的軟件開發(fā)技術(shù)。各種功能的可重用軟件組件不斷問世。這使得在軟件開發(fā)過程中編程工作量日趨減少,取而代之的是在設(shè)計(jì)好系統(tǒng)體系結(jié)構(gòu)后,利用軟件組件構(gòu)造或重構(gòu)軟件系統(tǒng)。由于軟件組件是標(biāo)準(zhǔn)化設(shè)計(jì)、成品化生產(chǎn)的,極易構(gòu)造使用,從而大大簡化了設(shè)計(jì)、編程、測試各個(gè)環(huán)節(jié)的工作量,提高了工作效率和生產(chǎn)效率。由于在軟件開發(fā)過程中最大限度地采用軟件組件,使得軟件開發(fā)過程變?yōu)橄到y(tǒng)分析、系統(tǒng)構(gòu)造、系統(tǒng)測試的集成過程。6.1.2軟件生命周期

一、定義

為了更有效、更科學(xué)地組織和管理軟件生產(chǎn);根據(jù)某一軟件從被提出并著手開始實(shí)現(xiàn),直到軟件完成其使命為止的全過程劃分為一些階段;稱這一全過程為軟件生命周期。軟件生命周期組成軟件生命周期問題定義可行性研究需求分析系統(tǒng)設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測試維護(hù)有機(jī)組合二、各個(gè)階段任務(wù)問題定義可行性研究需求分析軟件定義期系統(tǒng)設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測試軟件開發(fā)期

運(yùn)行維護(hù)軟件維護(hù)期一般分為三個(gè)階段:1.軟件定義期

(1)問題定義

(1)這一階段的主要目的是確定問題的性質(zhì)、工程目標(biāo)以及規(guī)模。

(2)應(yīng)力求使軟件開發(fā)人員、用戶以及使用部門負(fù)責(zé)人對問題的性質(zhì)、工程目標(biāo)與規(guī)模取得完全一致的看法。(2)可行性研究

(1)可行性研究的目的是進(jìn)一步研究問題定義階段所定義的問題是否可解。

(2)通過復(fù)查系統(tǒng)的目標(biāo)和規(guī)模,并研究現(xiàn)在正使用的系統(tǒng),從而導(dǎo)出試探性的解。

(3)從各方面分析物理系統(tǒng)的可行性,推薦一個(gè)可行方案,供有關(guān)部門審批。

(3)需求分析

任務(wù):根據(jù)可行性研究階段提交的文檔,特別是從數(shù)據(jù)流圖,對目標(biāo)系統(tǒng)提出清晰、準(zhǔn)確和具體的要求,即要明確系統(tǒng)必須做什么的問題。(3)需求分析

確定對系統(tǒng)的綜合要求:功能要求、性能要求、運(yùn)行要求。1對系統(tǒng)的數(shù)據(jù)要求進(jìn)行分析:數(shù)據(jù)元素的分類和規(guī)范化,描繪實(shí)體之間的關(guān)系圖。2推導(dǎo)出系統(tǒng)的詳細(xì)模型系統(tǒng)。3修正開發(fā)計(jì)劃,并建立模型系統(tǒng)。42.軟件開發(fā)期

(1)系統(tǒng)設(shè)計(jì)

任務(wù)是劃分出構(gòu)成系統(tǒng)的各物理元素(如程序、文件、數(shù)據(jù)庫、人工過程與文檔等)以及設(shè)計(jì)出軟件的結(jié)構(gòu)(如確定模塊及模塊間的關(guān)系)功能分解推薦最佳方案選擇合理方案提出可選擇方案設(shè)計(jì)軟件結(jié)構(gòu)16

5

4

3

2

制定測試計(jì)劃系統(tǒng)設(shè)計(jì)過程(2)詳細(xì)設(shè)計(jì)1任務(wù)是對系統(tǒng)做出精確的描述3結(jié)果是測試對象、測試結(jié)果符合預(yù)期結(jié)果2目標(biāo)是要保證程序易讀易理解、易測試、易修改和易維護(hù)(3)編碼

編碼是將系統(tǒng)設(shè)計(jì)與詳細(xì)設(shè)計(jì)階段中的結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫的程序。編碼過程中有幾個(gè)因素對提高軟件質(zhì)量有重大的影響。(3)編碼①選擇適當(dāng)?shù)某绦蛟O(shè)計(jì)語言。②使程序內(nèi)部有良好的文檔資料、規(guī)范的數(shù)據(jù)格式說明、簡單清晰的語句結(jié)構(gòu)和合理的輸入輸出格式。③充分利用已有的軟件工具來幫助編碼,以提高編碼的效率和減少程序中的錯(cuò)誤。(4)測試1.軟件測試是保證軟件可靠性的主要手段,它是軟件開發(fā)過程中最艱巨也是最繁重的工作。

2.測試的目的是要盡量發(fā)現(xiàn)程序中的錯(cuò)誤,但絕不能證明程序的正確性。(4)測試與調(diào)試

3.調(diào)試不同于測試,調(diào)試主要是推斷錯(cuò)誤的原因,從而進(jìn)一步改正錯(cuò)誤。

4.測試和調(diào)試是軟件測試階段的兩個(gè)密切相關(guān)的過程,通常是交替進(jìn)行的。

3.軟件維護(hù)期

維護(hù)是軟件生命周期的最后一個(gè)階段,也是持續(xù)時(shí)間最長、付出代價(jià)最大的階段。軟件工程學(xué)的目的就在于提高軟件的可維護(hù)性,同時(shí)也要設(shè)法降低維護(hù)的代價(jià)。軟件維護(hù)分類(1)為糾正使用中出現(xiàn)的錯(cuò)誤而進(jìn)行的改正性維護(hù)。(2)為適應(yīng)環(huán)境變化而進(jìn)行的適應(yīng)性維護(hù)。(3)為改進(jìn)原有軟件而進(jìn)行的完善性維護(hù)。(4)為將來的可維護(hù)和可靠而進(jìn)行的預(yù)防性維護(hù)。6.2結(jié)構(gòu)化分析與設(shè)計(jì)方法結(jié)構(gòu)化開發(fā)方法是傳統(tǒng)的軟件系統(tǒng)開發(fā)方法。結(jié)構(gòu)化開發(fā)方法的基本思想:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)?;疽c(diǎn)是:自頂向下逐步求精模塊化設(shè)計(jì)結(jié)構(gòu)化編碼主程序員組織結(jié)構(gòu)化設(shè)計(jì)SD6.2.1結(jié)構(gòu)化方法的體系結(jié)構(gòu)結(jié)構(gòu)化方法的體系結(jié)構(gòu)是:結(jié)構(gòu)化分析(SA—StructuredAnalysis)結(jié)構(gòu)化設(shè)計(jì)(SD—StructuredDesign)結(jié)構(gòu)化程序設(shè)計(jì)(SP—StructuredProgramming)一、結(jié)構(gòu)化分析SASA方法是建立在自頂向下、逐步求精思想基礎(chǔ)上的分析方法,SA方法是分析方法,基礎(chǔ)是自頂向下、逐步求精要點(diǎn):分解和抽象:把復(fù)雜問題自頂向下逐層分解,再從分解出的對象中抽象出相對簡單的子問題。經(jīng)過一系列分解和抽象,到最底層的問題已經(jīng)是很容易求解的了。二、結(jié)構(gòu)化設(shè)計(jì)SDSD方法是由IBM公司的Constentine等人花了十幾年時(shí)間研究出來的一種程序設(shè)計(jì)方法,發(fā)表于1974年。簡述:SD是一種用于概要設(shè)計(jì)的方法,與SA方法配合使用。(SD是用于概要設(shè)計(jì)的方法)目標(biāo):建立一個(gè)結(jié)構(gòu)良好的軟件系統(tǒng)。SD方法的基礎(chǔ):是數(shù)據(jù)流程圖,因此也稱為面向數(shù)據(jù)流的設(shè)計(jì)方法。三、結(jié)構(gòu)化程序設(shè)計(jì)SPSP的思想最早是由著名計(jì)算機(jī)科學(xué)家E.W.Dijkstra提出的。1966年Bohm和Jacopin證明了只用三種基本結(jié)構(gòu)就能實(shí)現(xiàn)任何一個(gè)入口,一個(gè)出口的程序;1977年IBM公司的Mills又進(jìn)一步提出:“程序應(yīng)該只有一個(gè)入口和一個(gè)出口。在長期程序設(shè)計(jì)的實(shí)踐中,SP方法不斷得以完善,使之成為開發(fā)傳統(tǒng)應(yīng)用領(lǐng)域應(yīng)用系統(tǒng)的主要方法之一??偨Y(jié):軟件開發(fā)的基本原則自頂向下的系統(tǒng)結(jié)構(gòu)開發(fā)原則這種方法的基本思想是,對一個(gè)復(fù)雜系統(tǒng)進(jìn)行分解,由高度抽象到逐步具體的方法,形成一個(gè)樹形結(jié)構(gòu)。在樹形結(jié)構(gòu)中,每一層次都設(shè)計(jì)成獨(dú)立的模塊,每個(gè)模塊又都可以調(diào)用它的下屬模塊,因此,這是一種逐層分解的方式,也稱為層次結(jié)構(gòu)。這種系統(tǒng)結(jié)構(gòu)的優(yōu)點(diǎn)是,關(guān)系明了、簡單,各層次中的模塊之間聯(lián)系比較少,各模塊相對獨(dú)立,易于理解,便于修改。6.2.2.模塊獨(dú)立性評價(jià)

系統(tǒng)設(shè)計(jì)的質(zhì)量主要反映在模塊的獨(dú)立性上。評價(jià)模塊獨(dú)立性的主要標(biāo)準(zhǔn)有兩個(gè):一是模塊之間的耦合,它表明兩個(gè)模塊之間互相獨(dú)立的程度;二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。要求模塊之間的耦合盡可能地弱,即模塊盡可能獨(dú)立,而要求模塊的內(nèi)聚程度盡量地高。耦合和內(nèi)聚是一個(gè)問題的兩個(gè)方面,耦合程度弱的模塊,其內(nèi)聚程度一定高。一、耦合模塊之間的耦合反映了模塊的獨(dú)立性,也反映了系統(tǒng)分解后的復(fù)雜程度。為了使系統(tǒng)各模塊之間相互影響盡可能地少,使系統(tǒng)簡單而易理解,應(yīng)減少模塊之間的耦合程度。影響模塊之間耦合的主要因素有兩個(gè):一是模塊之間的連接形式,二是模塊接口的復(fù)雜性。其中模塊之間的連接形式是影響模塊獨(dú)立性的最重要因素。模塊耦合的程度

按照耦合程度從弱到強(qiáng),可以將模塊的耦合分為以下五級(jí)。①數(shù)據(jù)耦合②同構(gòu)耦合③控制耦合④公用耦合⑤內(nèi)容耦合二、內(nèi)聚

內(nèi)聚是對一個(gè)模塊內(nèi)部元素之間功能上相互聯(lián)系強(qiáng)度的測量。模塊內(nèi)聚度又稱為模塊強(qiáng)度。一個(gè)模塊的內(nèi)聚度越高,與其他模塊之間的耦合程度也就越弱。內(nèi)聚度分類內(nèi)聚度從高到低可分為以下7類。①功能內(nèi)聚②序列內(nèi)聚③通信內(nèi)聚④過程內(nèi)聚⑤時(shí)間內(nèi)聚⑥邏輯內(nèi)聚⑦偶然內(nèi)聚6.3軟件測試概述

6.3.1測試測試的重要性軟件測試的重要性及其與可靠性的密切聯(lián)系怎樣強(qiáng)調(diào)也不過分。這是一個(gè)典型事例:在美國的一次飛往火星的火箭發(fā)射中,因控制程序中的一個(gè)循環(huán)語句“DO5I=1,3”被誤認(rèn)為是賦值語句“DO5I=1.3”,一點(diǎn)之差,使火箭發(fā)生爆炸,損失一千萬美元。目的發(fā)現(xiàn)軟件中隱藏的各種差錯(cuò)。要糾正一種錯(cuò)誤的看法:認(rèn)為“測試是為了說明程序沒有問題”。恰恰相反,沒有找出錯(cuò)誤的測試被認(rèn)為是失敗的測試;而”成功的測試是能夠發(fā)現(xiàn)隱藏的差錯(cuò)的測試“。如果為了證實(shí)程序是正確的而進(jìn)行測試,就會(huì)設(shè)計(jì)一些不易暴露錯(cuò)誤的測試方案;如果為了發(fā)現(xiàn)程序中的錯(cuò)誤而進(jìn)行測試,就會(huì)力求設(shè)計(jì)最能暴露錯(cuò)誤的測試方案。結(jié)論:

由于測試目標(biāo)是為了找出程序中的錯(cuò)誤,因此,由程序設(shè)計(jì)者本人進(jìn)行測試是不明智的。通常,測試分兩個(gè)階段;程序模塊編好后,程序員本人對該程序進(jìn)行必要的測試,稱為“單元測試”,在整個(gè)系統(tǒng)都完成后,由專職測試人員對整個(gè)系統(tǒng)進(jìn)行的測試稱為“系統(tǒng)綜合測試”。二、測試心理學(xué)分析測試

為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程調(diào)試

找出程序中的錯(cuò)誤原因、位置并加以糾正可靠性

在給定時(shí)間內(nèi),軟件不發(fā)生錯(cuò)誤的概率黑盒測試法

不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程的測試,也稱為功能測試、數(shù)據(jù)驅(qū)動(dòng)測試。只檢查程序功能是否滿足系統(tǒng)功能和規(guī)格說明書的要求,不管內(nèi)部如何處理和如何實(shí)現(xiàn)。白盒測試法

按程序的內(nèi)部邏輯結(jié)構(gòu)和處理過程進(jìn)行的測試,稱為結(jié)構(gòu)測試、邏輯驅(qū)動(dòng)測試。三、測試基本概念四、測試用例測試的關(guān)鍵問題是如何設(shè)計(jì)測試用例;它的組成:

測試用例=指定功能+測試數(shù)據(jù)+預(yù)期效果測試的基本原則:

1)在執(zhí)行程序前應(yīng)該對期望的結(jié)果有明確的描述,測試后應(yīng)對輸出進(jìn)行仔細(xì)的檢查。(正確?)

2)不僅要選擇合理的輸入數(shù)據(jù)作為測試用例,還應(yīng)選用不合理的輸入數(shù)據(jù)作為測試用例。

3)除了檢查程序是否做了應(yīng)做的工作之外,還應(yīng)檢查程序是否做了不應(yīng)做的事。

4)應(yīng)該長期保留所有的測試用例,直到該系統(tǒng)被廢棄不用為止。測試用例的設(shè)計(jì)設(shè)計(jì)測試用例的基本目標(biāo)是:確定一組最有可能發(fā)現(xiàn)某個(gè)錯(cuò)誤或某類錯(cuò)誤的測試數(shù)據(jù)。測試方法:語句覆蓋判定覆蓋條件覆蓋條件組合覆蓋邊值分析五、邏輯(路徑)覆蓋(白盒法)

按程序的內(nèi)部邏輯結(jié)構(gòu)進(jìn)行測試,為了衡量測試的覆蓋程度,建立下列標(biāo)準(zhǔn)(從低到高):語句覆蓋:每個(gè)語句都至少執(zhí)行一次判定覆蓋:對判別語句的每個(gè)分支至少要經(jīng)過一次條件覆蓋:每個(gè)條件可能的值至少出現(xiàn)一次,及條件表達(dá)式中各個(gè)條件取兩個(gè)不同的值判定/條件覆蓋:使判定的”真“、”假“各執(zhí)行一次,還要使判定中每個(gè)條件取兩種不同的值條件組合覆蓋:使每個(gè)判定中的條件的各種組合都出現(xiàn)一次舉例

有一要測試的程序如下:

sub(a,b,x)

floata,b,x;

{floaty;if(a>1&&b=0)y=x/a;if(a=2||x>1)x=x+1;}結(jié)束程序邏輯結(jié)構(gòu)圖開始

a>1&&b=0?

a=2||x>1?y=x/ax=x+1ABCDE1.語句覆蓋

執(zhí)行程序中的每個(gè)語句。為使程序中的每個(gè)語句都至少執(zhí)行一次,只需設(shè)計(jì)一個(gè)通過路徑ACE的輸入數(shù)據(jù)即可。選擇輸入數(shù)據(jù)為:a=2,b=0,x=3就可達(dá)到“語句覆蓋”的標(biāo)準(zhǔn)。2.判定覆蓋

對判別語句的每個(gè)分支至少要經(jīng)過一次,為達(dá)到”判定覆蓋“的標(biāo)準(zhǔn),則要經(jīng)過路徑:ACD和ABE,為此,選用輸入數(shù)據(jù)為:a=3,b=0,x=0,走ACD路徑a=2,b=1,x=3,走ABE路徑

判定覆蓋比語句覆蓋嚴(yán)格。但還比較弱,例如,ABD路徑就沒走到。若把“X>1”錯(cuò)寫成“X<1”,還是檢查不出來,它只有50%的機(jī)會(huì)去檢查X的值。3.條件覆蓋使判別中每個(gè)條件可能的值至少出現(xiàn)一次,及條件表達(dá)式中各個(gè)條件取兩個(gè)不同的值。程序中有4個(gè)條件:a>1,b=0,a=2,x>1。為達(dá)到“條件覆蓋”標(biāo)準(zhǔn),需選用數(shù)據(jù),使得在A點(diǎn)有a>1,a<=1,b=0,b<>0

在B點(diǎn)有a=2,a<>2,x>1,x<=1

為此選擇下列兩組測試數(shù)據(jù):a=2,b=0,x=4走ACE路徑a=1,b=1,x=1走ABD路徑“條件覆蓋”比“判定覆蓋”強(qiáng),因?yàn)橐姑總€(gè)條件都取到兩個(gè)不同的結(jié)果,而判定覆蓋不能保證這一點(diǎn)。4.判別組合覆蓋

使每個(gè)判定中的條件的各種組合都出現(xiàn)一次。滿足條件組合覆蓋的測試數(shù)據(jù)一定滿足判定、條件、條件/判定覆蓋。各種可能的組合共有八種:a>1,b=0a>1,b<>0a<=1,b=0a<=1,b<>0a=2,x=1a=2,x<=1a<>2,x>1a<>2,x<=1下面4組測試數(shù)據(jù)可以覆蓋上面8種條件組合:a=2,b=0,x=4覆蓋a=2,b=1,x=1覆蓋a=1,b=0,x=2覆蓋a=1,b=0,x=1覆蓋5.邊界值分析法經(jīng)驗(yàn)證明,在邊界處,程序最容易出問題。例如,在下標(biāo)、數(shù)據(jù)結(jié)構(gòu)、數(shù)組、循環(huán)等的邊界附近。有下列啟發(fā)式規(guī)則:若輸入條件規(guī)定值的個(gè)數(shù),則分別選取值的最大個(gè)數(shù)、最小個(gè)數(shù)以及接近最大、最小的個(gè)數(shù)作為測試用例;對輸入條件規(guī)定有值的范圍,則選用范圍邊界數(shù)及剛超出范圍的無效數(shù)作為測試用例;若輸入/輸出是有序集,則注意第一個(gè)和最后一個(gè);對三角函數(shù)的自變量,注意特殊角度的值。通常設(shè)計(jì)測試用例總是將等價(jià)法和邊值法結(jié)合使用。6.模塊測試

可先用白盒法測試模塊的內(nèi)部邏輯,再用黑盒法測試外部預(yù)期的結(jié)果。程序交出后,由測試工程師再以黑盒法為主進(jìn)行測試。模塊測試測試評價(jià)模塊的下述特征:

模塊接口局部數(shù)據(jù)結(jié)構(gòu)重要的執(zhí)行通路出錯(cuò)處理通道影響上述各方面特征的邊界條件7.組裝測試組裝測試分為:漸增式和非漸增式。漸增式

逐漸將要測試的下一個(gè)模塊加進(jìn)到已測試好的模塊中進(jìn)行的測試。非漸增式

先測試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求組裝在一起的測試。6.3.2調(diào)試技術(shù)

輸出存儲(chǔ)器內(nèi)容

特點(diǎn):效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容。加打印語句

特點(diǎn):顯示的是程序的動(dòng)態(tài)信息,大量的輸出,時(shí)間慢,可能引出新的問題。用調(diào)試工具

特點(diǎn):動(dòng)態(tài)調(diào)試,可自動(dòng)執(zhí)行,是現(xiàn)代程序調(diào)試的有效工具。6.4軟件開發(fā)新技術(shù)6.4.1原型方法

原型法(prototypingapproach)是對軟件生命周期法的改進(jìn)。原型法鼓勵(lì)用戶與軟件開發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論