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

下載本文檔

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

文檔簡介

2024/2/27

軟件工程是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的一門專業(yè)核心課程。通過本課程的學(xué)習(xí),使學(xué)生掌握系統(tǒng)的軟件開發(fā)理論、技術(shù)和方法,使用正確的工程方法開發(fā)出成本低、可靠性好并在機(jī)器上能高效運(yùn)行的軟件,為今后從事軟件開發(fā)和維護(hù)打下堅(jiān)實(shí)的基礎(chǔ)。軟件工程2024/2/27

本章內(nèi)容主要內(nèi)容包括:軟件工程概述、軟件生存周期及軟件需求分析、軟件設(shè)計(jì)方法、軟件測試技術(shù)等。

通過本章的學(xué)習(xí),使學(xué)生能真正的從中了解軟件開發(fā)的整個(gè)過程。為了讓學(xué)生真正得以實(shí)踐,結(jié)合實(shí)際軟件開發(fā)項(xiàng)目,讓學(xué)生從問題定義開始,經(jīng)過可行性研究、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼直到最后要對自己開發(fā)的軟件還要進(jìn)行測試,這樣一個(gè)軟件開發(fā)過程,從而使學(xué)生掌握軟件開發(fā)的基本技能。第2章軟件工程目錄2.1軟件工程的基本概念2.2軟件開發(fā)過程2.3系統(tǒng)定義2.4軟件實(shí)現(xiàn)2.5軟件維護(hù)2.6軟件開發(fā)管理什么是軟件危機(jī)軟件不符合用戶的實(shí)際需要軟件價(jià)格昂貴軟件開發(fā)項(xiàng)目超支和延期軟件質(zhì)量低,可靠性差軟件缺少適當(dāng)?shù)奈臋n資料難于修改和維護(hù)軟件2.1軟件工程的基本概念2.1.1軟件危機(jī)及其形成原因軟件代價(jià)高計(jì)算機(jī)系統(tǒng)硬件/軟件成本變化趨勢在開發(fā)一個(gè)新型計(jì)算機(jī)系統(tǒng)或修改一個(gè)現(xiàn)有系統(tǒng)的過程中,最大部分的資金是用在軟件系統(tǒng)開發(fā)方面。IBM公司在1963年至1966年開發(fā)IBM360機(jī)操作系統(tǒng),這個(gè)項(xiàng)目花費(fèi)5000人-年的工作量,最多時(shí)投入1000人進(jìn)行開發(fā)工作,寫出近100萬行的源程序。盡管投入這么多的人力和物力,得到的結(jié)果卻非常糟糕。這個(gè)操作系統(tǒng)每發(fā)行一個(gè)新版本,都是修訂上一個(gè)版本中的1000個(gè)錯(cuò)誤。該項(xiàng)目負(fù)責(zé)人F.D.Brooks在總結(jié)該項(xiàng)目的沉痛教訓(xùn)時(shí)說:“正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深。最后無法逃脫滅頂?shù)臑?zāi)難。程序設(shè)計(jì)工作就像這樣一個(gè)泥潭,一批批程序員被迫在泥潭中拼命掙扎,誰也沒有料到竟會(huì)陷入這樣的困境。”開發(fā)IBM360機(jī)操作系統(tǒng)的沉痛歷史教訓(xùn)成為軟件開發(fā)項(xiàng)目的典型事例為人們所牢記。沉痛歷史教訓(xùn)!軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。這些問題絕不僅僅是不能正常運(yùn)行的軟件才具有的,實(shí)際上,幾乎所有軟件都不同程度地存在這些問題。概括地說,軟件危機(jī)包含下述兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。軟件危機(jī)的典型表現(xiàn)軟件危機(jī)的典型表現(xiàn):(1)對軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確;(2)用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生;(3)軟件產(chǎn)品的質(zhì)量往往靠不??;(4)軟件常常是不可維護(hù)的;(5)軟件通常沒有適當(dāng)?shù)奈臋n資料;(6)軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升;(7)軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢。

產(chǎn)生軟件危機(jī)原因----與軟件本身的特點(diǎn)有關(guān):1、軟件是邏輯部件:試制階段難衡量;開發(fā)質(zhì)量較難評價(jià),開發(fā)過程管理和控制較難;運(yùn)行過程才能暴露沒有檢測出來的事故,相當(dāng)于修改設(shè)計(jì),軟件維護(hù)困難;2、軟件規(guī)模龐大,有技術(shù)問題,也有管理方法問題。3、早期開發(fā)的個(gè)體化;忽視需求分析;認(rèn)為軟件開發(fā)寫程序;輕視維護(hù),對用戶不了解,4、對前期工作不能忽視,做好軟件定義時(shí)期的工作,這是降低成本,提高件質(zhì)量的關(guān)鍵。5、嚴(yán)重性:在軟件開發(fā)的不同階段修改付出代價(jià)(后期是前期的2-3個(gè)數(shù)量級),軟件維護(hù)是極端艱巨復(fù)雜的工作,占55%~70%)軟件危機(jī)的解決方法必須消除存在的錯(cuò)誤認(rèn)識、樹立軟件工程觀念用工程化方法和途徑來開發(fā)和維護(hù)軟件開發(fā)和使用更好的軟件工具應(yīng)該采取必要的管理措施總之:技術(shù)措施+組織管理措施1968年北約組織在前聯(lián)邦德國格密斯舉行的國際學(xué)術(shù)會(huì)議上正式提出并使用了“軟件工程”的概念,運(yùn)用工程學(xué)的基本原理和方法來組織和管理軟件生產(chǎn)。后來還發(fā)展了相關(guān)的心理學(xué)、生理學(xué)和經(jīng)濟(jì)學(xué)等方面的學(xué)科。軟件工程誕生了,它是解決軟件危機(jī)惟一有效的方法。2.1.2軟件工程的定義定義一:軟件工程是科學(xué)知識在設(shè)計(jì)和構(gòu)造計(jì)算機(jī)程序以及開發(fā)、運(yùn)作和維護(hù)這些程序所要求的有關(guān)文檔編制中的實(shí)際應(yīng)用。定義二:為了經(jīng)濟(jì)地獲得可靠的能在實(shí)際的計(jì)算機(jī)上運(yùn)行的軟件所確立和使用的健全的工程原理。定義三:對軟件開發(fā)、運(yùn)行、維護(hù)、退役的系統(tǒng)研究方法。(IEEE-1983)定義四:對軟件開發(fā)、運(yùn)行、維護(hù)的系統(tǒng)化的、有紀(jì)律的、可定量的方法的應(yīng)用,即對軟件的工程化的應(yīng)用。(IEEE-1990)定義五:軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門學(xué)科,它采用工程的概念、原理、技術(shù)和方法,把經(jīng)過時(shí)間考驗(yàn)而證明是正確的管理技術(shù)和與技術(shù)方法結(jié)合起來用于開發(fā)軟件。1968年在北大西洋公約組織會(huì)議上,軟件工程作為一個(gè)概念首次被提出。軟件工程包括3個(gè)要素:方法、工具和過程方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理“軟件工程”這個(gè)術(shù)語自1968年開始使用以來,許多專家、學(xué)者們先后提出了100多條關(guān)于軟件工程的“準(zhǔn)則”或“信條”。軟件工程專家B.W.Boehm綜合了這些意見,并總結(jié)了TRW公司多年來開發(fā)軟件的經(jīng)驗(yàn),于1983年在一篇論文中提出了軟件工程的7條基本原理。他認(rèn)為這7條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小原理集合。2.1.3七條基本原則B.W.Boehm提出的7條基本原理。1.用分階段的生命周期計(jì)劃嚴(yán)格管理統(tǒng)計(jì)發(fā)現(xiàn),在不成功的軟件項(xiàng)目中有一半左右是由于計(jì)劃不周造成的。2.堅(jiān)持進(jìn)行階段評審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進(jìn)行,因?yàn)榇蟛糠皱e(cuò)誤是在編碼之前造成的,根據(jù)Boehm等人的統(tǒng)計(jì),設(shè)計(jì)錯(cuò)誤占軟件錯(cuò)誤的63%,編碼錯(cuò)誤僅占37%;其次,錯(cuò)誤發(fā)現(xiàn)與改正得越早,所需付出的代價(jià)越小。3.實(shí)行嚴(yán)格的產(chǎn)品控制必須按照嚴(yán)格的規(guī)程對修改方案進(jìn)行評審,獲得通過以后才能實(shí)施;嚴(yán)格禁止隨意修改軟件。4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)采用先進(jìn)的技術(shù)不僅可以提高軟件開發(fā)和維護(hù)的效率,而且可以提高軟件產(chǎn)品的質(zhì)量。5.結(jié)果應(yīng)能清楚地審查為了提高軟件開發(fā)過程的可見性,更好地進(jìn)行管理,應(yīng)該根據(jù)軟件開發(fā)項(xiàng)目的總目標(biāo)及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使得階段結(jié)果能夠接受審查。6.開發(fā)小組的人員應(yīng)該少而精當(dāng)軟件開發(fā)小組人員數(shù)為N時(shí),可能的通信路徑有N(N-1)/2條,可見隨著人數(shù)N的增大,通信開銷將急劇增加。因此,組成少而精的開發(fā)小組是軟件工程的一條基本原理。7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性遵循上述6條基本原理,就能夠按照當(dāng)代軟件工程基本原理實(shí)現(xiàn)軟件的工程化生產(chǎn),但是,僅有上述6條原理并不能保證軟件開發(fā)與維護(hù)的過程能趕上時(shí)代前進(jìn)的步伐,能跟上技術(shù)的不斷進(jìn)步。承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性是軟件工程的第7條基本原理。2.1.4基本內(nèi)容軟件生存周期模型軟件分析系統(tǒng)分析、可行性分析、軟件開發(fā)計(jì)劃、需求分析軟件設(shè)計(jì)總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)軟件實(shí)現(xiàn)編程序,結(jié)構(gòu)化設(shè)計(jì)方法軟件測試軟件維護(hù)軟件管理成本估算、風(fēng)險(xiǎn)分析、進(jìn)度安排、人員組織、軟件質(zhì)量保證2.2軟件開發(fā)過程2.2.1軟件開發(fā)的主要階段三個(gè)主要階段軟件定義可行性分析和需求分析軟件開發(fā)總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)、集成測試和確認(rèn)測試

軟件維護(hù)

軟件使用、修改維護(hù)、退役2.2軟件開發(fā)過程2.2.2軟件生命周期模型定義軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護(hù),直到退役的全過程2.2軟件開發(fā)過程九個(gè)階段軟件生命周期每個(gè)階段的基本任務(wù)。1.問題定義這個(gè)階段要回答的關(guān)鍵問題是:“要解決的問題是什么?”2.可行性研究這個(gè)階段要回答的關(guān)鍵問題是:“對于上一個(gè)階段所確定的問題有行得通的解決辦法嗎?”3.需求分析這個(gè)階段的任務(wù)仍然不是具體地解決問題,而是準(zhǔn)確地確定“為了解決這個(gè)問題,目標(biāo)系統(tǒng)必須做什么”,主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。這個(gè)階段的一項(xiàng)重要任務(wù),是用正式文檔準(zhǔn)確地記錄對目標(biāo)系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明書(specification)。4.總體設(shè)計(jì)這個(gè)階段要回答的關(guān)鍵問題是:“概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”總體設(shè)計(jì)又稱為概要設(shè)計(jì)。首先,應(yīng)該設(shè)計(jì)出實(shí)現(xiàn)目標(biāo)系統(tǒng)的幾種可能的方案。通常至少應(yīng)該設(shè)計(jì)出低成本、中等成本和高成本等3種方案。軟件工程師應(yīng)該用適當(dāng)?shù)谋磉_(dá)工具描述每種方案,分析每種方案的優(yōu)缺點(diǎn),并在充分權(quán)衡各種方案的利弊的基礎(chǔ)上,推薦一個(gè)最佳方案。5.詳細(xì)設(shè)計(jì)總體設(shè)計(jì)階段以比較抽象概括的方式提出了解決問題的辦法,詳細(xì)設(shè)計(jì)階段的任務(wù)就是把解法具體化,也就是回答下面這個(gè)關(guān)鍵問題:“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?”詳細(xì)設(shè)計(jì)也稱為模塊設(shè)計(jì),在這個(gè)階段將詳細(xì)地設(shè)計(jì)每個(gè)模塊,確定實(shí)現(xiàn)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。6.編碼這個(gè)階段的關(guān)鍵任務(wù)是寫出正確的、容易理解的、容易維護(hù)的程序模塊。7.測試這個(gè)階段的關(guān)鍵任務(wù)是通過各種類型的測試使軟件達(dá)到預(yù)定的要求。8.軟件維護(hù)維護(hù)階段的關(guān)鍵任務(wù)是,通過各種必要的維護(hù)活動(dòng)使系統(tǒng)持久地滿足用戶的需要。2024/2/27特點(diǎn):上一階段的變換結(jié)果是下一階段的變換的輸入,相鄰兩個(gè)階段具有因果關(guān)系,緊密相聯(lián)。需求分析問題定義可性行研究計(jì)劃時(shí)期概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測試開發(fā)時(shí)期運(yùn)行與維護(hù)維護(hù)時(shí)期軟件生命周期瀑布模型瀑布模型的特點(diǎn)線性開發(fā)序列:每一階段任務(wù)必須通過評審才能進(jìn)入下一階段,直線前進(jìn)避免大的返工,允許局部的返工:有反饋的迭代(返工在所難免)瀑布模型的局限性明確全部需求困難甚至不現(xiàn)實(shí)開發(fā)周期過長、用戶不能及時(shí)提出修改意見軟件生命周期原型模型原型:是指模擬某種產(chǎn)品的原始模型1、原型系統(tǒng)僅包括未來系統(tǒng)的主要功能,以及系統(tǒng)的重要接口。2、為了盡快向用戶提供原型,開發(fā)原型系統(tǒng)時(shí)應(yīng)盡量使用

能縮短開發(fā)周期的語言和工具??焖僭湍P屯ǔS腥N類型:漸增式的原型:也稱增量模型。用于驗(yàn)證軟件需求的原型。用于驗(yàn)證設(shè)計(jì)方案的原型??焖僭湍P停≧apidPrototypeModel)是快速開發(fā)一個(gè)可以運(yùn)行的原型系統(tǒng)。原型模型的特點(diǎn)采用軟件重用技術(shù)和強(qiáng)有力的快速開發(fā)工具采用主動(dòng)的、正常的迭代避免了瀑布模型被迫的、不正常的返工有助于用戶和軟件開發(fā)人員對需求的定義和確認(rèn)原型模型的局限性不收斂于開發(fā)者預(yù)定目標(biāo)資源規(guī)劃和管理較為困難更新文檔麻煩2.2.3模塊化軟件開發(fā)原則抽象自頂向下逐步求精模塊化信息隱蔽與局部化模塊獨(dú)立啟發(fā)式規(guī)則模塊化模塊可以組合、分解、更換的單元,如過程、函數(shù)、子程序、宏等完成特定的子功能模塊化解決一個(gè)復(fù)雜問題時(shí),自頂向下逐層將軟件分解成若干模塊的過程模塊劃分的指導(dǎo)原則模塊可分解性:把問題分解為子問題的系統(tǒng)化機(jī)制模塊可組裝性:把現(xiàn)有的可重用模塊組裝成新系統(tǒng)模塊可理解性:一個(gè)模塊作為獨(dú)立單元無需參考其他模塊來理解模塊連續(xù)性:系統(tǒng)需求的微小修改只導(dǎo)致對個(gè)別模塊,而不是對整個(gè)系統(tǒng)的修改模塊保護(hù)性:一個(gè)模塊內(nèi)出現(xiàn)異常情況時(shí),它的影響局限在該模塊內(nèi)部模塊與成本的關(guān)系信息隱蔽與局部化信息隱蔽:一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù))對于不需要這些信息的其他模塊來說不可見(不能訪問)局部化:將關(guān)系密切的軟件元素的位置盡量靠近信息隱蔽與局部化有利于軟件的可維護(hù)性,可以防止誤操作和誤修改模塊獨(dú)立模塊獨(dú)立性:每個(gè)模塊只完成系統(tǒng)所要求的獨(dú)立子功能,與其他模塊的聯(lián)系少且簡單模塊獨(dú)立的好處:使軟件開發(fā)更容易、適合分工合作使軟件測試和維護(hù)更容易模塊獨(dú)立的度量內(nèi)聚:一個(gè)模塊內(nèi)部各元素之間彼此結(jié)合的緊密程度的度量耦合:不同模塊之間互連程度的度量2024/2/27(1)、內(nèi)聚(Cohesion)低功能內(nèi)聚信息內(nèi)聚通信內(nèi)聚過程內(nèi)聚時(shí)間內(nèi)聚邏輯內(nèi)聚巧合性內(nèi)聚高強(qiáng)弱

內(nèi)聚性模塊獨(dú)立性2024/2/27(2)、耦合

耦合性是程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)的度量它取決于各個(gè)模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及那些信息通過接口。低非直接耦合數(shù)據(jù)耦合標(biāo)記耦合控制耦合外部耦合公共耦合內(nèi)容耦合高弱強(qiáng)耦合性模塊獨(dú)立性啟發(fā)式規(guī)則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中模塊之間的調(diào)用關(guān)系應(yīng)當(dāng)按照層次化組織模塊的深度、寬度、扇出和扇入都應(yīng)適當(dāng)設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測

軟件結(jié)構(gòu)度量術(shù)語深度寬度扇出扇入(同一層最大模塊數(shù))(一個(gè)模塊直接調(diào)用的模塊數(shù))模塊的層數(shù)調(diào)用一個(gè)給定模塊的個(gè)數(shù)2.2.4軟件開發(fā)方法結(jié)構(gòu)化方法(StructuredMethod)面向?qū)ο蠓椒ǎ∣bject-OrientedMethod)

2.3系統(tǒng)定義2.3.1可行性分析可行性分析目的用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決

內(nèi)容技術(shù)可行性分析經(jīng)濟(jì)可行性分析社會(huì)可行性分析方案的選擇2024/2/27經(jīng)濟(jì)可行性:進(jìn)行成本效益分析,評估項(xiàng)目的開發(fā)成本?;谟?jì)算機(jī)系統(tǒng)的成本由四部分組成1、購置軟、硬件及有關(guān)設(shè)備費(fèi)用2、系統(tǒng)開發(fā)費(fèi)用3、系統(tǒng)安裝和維護(hù)費(fèi)用4、人員培訓(xùn)費(fèi)用費(fèi)用2024/2/27舉例:關(guān)于開發(fā)CAD系統(tǒng)的軟件開發(fā)成本及效益分析

12345

年6040200成本-效益(萬元)該系統(tǒng)節(jié)省經(jīng)費(fèi)該系統(tǒng)成本盈虧平衡點(diǎn)投資回收期---------成本及效益分析圖2024/2/27技術(shù)可行性:對系統(tǒng)的性能、可靠性、可維護(hù)性以及生產(chǎn)率等方面的信息進(jìn)行評價(jià)。通過技術(shù)可行性的分析,將為新系統(tǒng)提交技術(shù)可行性評估。以指明為完成系統(tǒng)的功能和性能需要什么技術(shù)?需要哪些材料、方法、算法、或者過程等技術(shù)可行性分析方法---數(shù)學(xué)模型和優(yōu)化技術(shù)、概率和統(tǒng)計(jì)、排隊(duì)論、控制論等方法。步驟確定項(xiàng)目規(guī)模和目標(biāo)研究正在運(yùn)行的系統(tǒng)建立新系統(tǒng)的高層邏輯模型導(dǎo)出和評價(jià)各種方案推薦可行方案編寫可行性分析報(bào)告2024/2/27可行性論證報(bào)告1、系統(tǒng)概述2、可行性分析3、擬訂開發(fā)計(jì)劃4、結(jié)論意見軟件開發(fā)計(jì)劃內(nèi)容資源計(jì)劃:人力資源、硬件資源、軟件資源

成本預(yù)算:估計(jì)總的開發(fā)成本

進(jìn)度安排:確定最終的軟件交付日期、在交付日期內(nèi)安排和分配工作量2.3.2需求分析需求分析需求分析目標(biāo)解決“做什么(Whattodo)”,而不是“怎么做(Howtodo)”既是軟件開發(fā)依據(jù),也是軟件驗(yàn)收標(biāo)準(zhǔn)與用戶充分溝通,去偽存真,去粗存精通信瓶頸:用戶vs

開發(fā)人員2024/2/27軟件需求說明書----SRS(SoftwareRequirementSpecification)主要包括以下的內(nèi)容:SRS引言數(shù)據(jù)描述數(shù)據(jù)流圖數(shù)據(jù)字典功能描述性能描述特殊需求需求分析任務(wù)確定軟件系統(tǒng)的綜合要求功能要求性能要求系統(tǒng)數(shù)據(jù)接口要求安全性保密性和可靠性要求系統(tǒng)運(yùn)行要求異常處理要求等分析軟件系統(tǒng)的數(shù)據(jù)要求建立系統(tǒng)的邏輯模型評估項(xiàng)目開發(fā)計(jì)劃:修改開發(fā)計(jì)劃需求分析工具層次方框圖(見圖2.3.1)Warnier圖(見圖2.3.2)IPO圖(見圖2.3.3)需求分析方法結(jié)構(gòu)化分析數(shù)據(jù)流圖數(shù)據(jù)字典加工邏輯描述工具判定表判定樹面向?qū)ο蠓治鼋Y(jié)構(gòu)化分析方法

面向數(shù)據(jù)流進(jìn)行需求分析的方法結(jié)構(gòu)化分析方法適合于數(shù)據(jù)處理類型軟件的需求分析具體來說,結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實(shí)現(xiàn)的軟件為止結(jié)構(gòu)化分析方法使用工具:數(shù)據(jù)流圖,數(shù)據(jù)詞典,判定表與判定樹數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖中的主要圖形元素?cái)?shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動(dòng)變換過程,是一種功能模型,只反映系統(tǒng)必須完成的邏輯功能。描述銀行取款過程的數(shù)據(jù)流圖數(shù)據(jù)流與數(shù)據(jù)加工之間的關(guān)系數(shù)據(jù)流圖的層次結(jié)構(gòu)為了表達(dá)數(shù)據(jù)處理過程的數(shù)據(jù)加工情況,需要采用層次結(jié)構(gòu)的數(shù)據(jù)流圖。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,并以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)系,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)分層數(shù)據(jù)流圖在多層數(shù)據(jù)流圖中,頂層流圖僅包含一個(gè)加工,它代表被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)底層流圖是指其加工不需再做分解的數(shù)據(jù)流圖,它處在最底層中間層流圖則表示對其上層父圖的細(xì)化。它的每一加工可能繼續(xù)細(xì)化,形成子圖。數(shù)據(jù)詞典(DD)

數(shù)據(jù)詞典與數(shù)據(jù)流圖配合,能清楚地表達(dá)數(shù)據(jù)處理的要求,數(shù)據(jù)字典的任務(wù)是:對于數(shù)據(jù)流圖中出現(xiàn)的所有被命名的圖形元素在字典中作為一個(gè)詞條加以定義,使得每一個(gè)圖形元素的名字都有一個(gè)確切的解釋。詞條描述對于在數(shù)據(jù)流圖中每一個(gè)被命名的圖形元素,均加以定義,其內(nèi)容有:名字,別名或編號,分類,描述,定義,位置,其它等2024/2/27數(shù)據(jù)流名:說明:簡要介紹作用即它產(chǎn)生的原因和結(jié)果。數(shù)據(jù)流來源:即該數(shù)據(jù)流來自何方。數(shù)據(jù)流去向:去向何處。數(shù)據(jù)流組成:數(shù)據(jù)結(jié)構(gòu)。每個(gè)數(shù)據(jù)量流通量:數(shù)據(jù)量、流通量。(1)數(shù)據(jù)流詞條的描述

數(shù)據(jù)流名:發(fā)票說明:用作學(xué)生已付書款的依據(jù)數(shù)據(jù)流來源:來自加工“審查并開發(fā)票”數(shù)據(jù)流去向:流向加工“開領(lǐng)書單”。數(shù)據(jù)流組成:學(xué)號+姓名+書號+單價(jià)總價(jià)+書費(fèi)合計(jì)審查并開發(fā)票發(fā)票購書單

2024/2/27數(shù)據(jù)元素名:類型:數(shù)字(離散值、連續(xù)值),文字(編碼類型)長度:取值范圍:相關(guān)的數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu)(2)

數(shù)據(jù)元素詞條的描述

年=“1900”..“3000”月=“01”..“12”日=“01”..“31”摘要=1{字母}4金額=“00000000.01”..“999999999.99”……2024/2/27(3)數(shù)據(jù)文件詞條的描述

數(shù)據(jù)文件名:簡述:存放的是什么數(shù)據(jù)。輸入數(shù)據(jù):輸出數(shù)據(jù):數(shù)據(jù)文件組成:數(shù)據(jù)結(jié)構(gòu)。存儲(chǔ)方式:順序,直接,關(guān)鍵碼。存取頻率:

…審查并開發(fā)票學(xué)生發(fā)票購書單各班學(xué)生用書表教材存量表2024/2/27加工名:加工編號:反映該加工的層次簡要描述:加工邏輯及功能簡述輸入數(shù)據(jù)流:取值范圍:相關(guān)的數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu)

…(4)

加工邏輯詞條的描述

1.3審查并開發(fā)票學(xué)生發(fā)票購書單各班學(xué)生用書表教材存量表2024/2/27名稱:外部實(shí)體名簡要描述:什么外部實(shí)體有關(guān)數(shù)據(jù)流:數(shù)目:(5)外部實(shí)體詞條描述

1銷售購書單領(lǐng)書單缺書單進(jìn)書通知2采購進(jìn)書通知缺書登記表教材存量表學(xué)生保管員對數(shù)據(jù)流圖的每一個(gè)基本加工,必須有一個(gè)基本加工邏輯說明基本加工邏輯說明必須描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則加工邏輯說明必須描述實(shí)現(xiàn)加工的策略而不是實(shí)現(xiàn)加工的細(xì)節(jié)加工邏輯說明中包含的信息應(yīng)是充足的,完備的,有用的,沒有重復(fù)的多余信息基本加工邏輯說明用于寫加工邏輯說明的工具?結(jié)構(gòu)化語言?判定表?判定樹2024/2/27加工邏輯說明組成輸入數(shù)據(jù)加工邏輯輸出數(shù)據(jù)加工邏輯說明描述工具結(jié)構(gòu)化語言判定表判定樹

描述把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工過程,是加工說明的主體。(1)結(jié)構(gòu)化語言結(jié)構(gòu)化語言的詞匯表由命令動(dòng)詞數(shù)據(jù)詞典中定義的名字有限的自定義詞邏輯關(guān)系詞IF_THEN_ELSE、

CASE_OF、WHILE_DO、

REPEAT_UNTIL等組成。是一種介于自然語言和形式化語言之間的語言語言的正文用基本控制結(jié)構(gòu)進(jìn)行分割,加工中的操作用自然語言短語來表示其基本控制結(jié)構(gòu)有三種:簡單陳述句結(jié)構(gòu):避免復(fù)合語句;重復(fù)結(jié)構(gòu):WHILE_DO

或REPEAT_UNTIL結(jié)構(gòu)。判定結(jié)構(gòu):IF_THEN_ELSE

或CASE_OF結(jié)構(gòu);2024/2/27自然語言+結(jié)構(gòu)化形式結(jié)構(gòu)化語言選擇結(jié)構(gòu)如果<條件><策略>

If<condition><policy>如果<條件>

則<策略1>

否則<策略2>情況1<條件><策略1>……情況n<條件><策略n>If<condition>

then<policy1>Otherwise<policy2>case1<condition><policy1>……casen<condition><policyn>循環(huán)結(jié)構(gòu)對

…,<策略>重復(fù)以下<策略>直至<條件>Foreach…,<policy>Repeatthefollowing:<policy>Until<condition>商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”IF發(fā)貨單金額超過$500THENIF欠款超過了60天THEN

在償還欠款前不予批準(zhǔn)

ELSE(欠款未超期)發(fā)批準(zhǔn)書,發(fā)貨單

ENDIFELSE(發(fā)貨單金額未超過$500)

IF欠款超過60天THEN

發(fā)批準(zhǔn)書,發(fā)貨單及賒欠報(bào)告

ELSE(欠款未超期)發(fā)批準(zhǔn)書,發(fā)貨單

ENDIFENDIF(2)判定表如果數(shù)據(jù)流圖的加工需要依賴于多個(gè)邏輯條件的取值,使用判定表來描述比較合適,由四個(gè)部分組成:條件定義、條件取值的組合、動(dòng)作定義、在各種取值的組合下應(yīng)執(zhí)行的動(dòng)作。以“檢查發(fā)貨單”為例(3)判定樹判定樹也是用來表達(dá)加工邏輯的一種工具。有時(shí)侯它比判定表更直觀。2.4軟件實(shí)現(xiàn)2.4.1總體設(shè)計(jì)總體設(shè)計(jì):又稱概要設(shè)計(jì)解決“如何做(Howtodo)”設(shè)計(jì)供選擇的方案推薦最佳方案設(shè)計(jì)軟件結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫用戶界面設(shè)計(jì)制定測試計(jì)劃編寫總體設(shè)計(jì)階段的文檔評審總體設(shè)計(jì)方案總體設(shè)計(jì)的圖形工具層次圖HIPO圖結(jié)構(gòu)圖總體設(shè)計(jì)的設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)自頂向下基于數(shù)據(jù)流的設(shè)計(jì)方法——數(shù)據(jù)流圖面向?qū)ο笤O(shè)計(jì)2.4.2詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì):又稱過程設(shè)計(jì)解決每個(gè)模塊“如何做(Howtodo)”為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)設(shè)計(jì)出模塊內(nèi)的局部數(shù)據(jù)結(jié)構(gòu)確定模塊的接口細(xì)節(jié)為每個(gè)模塊式設(shè)計(jì)一組測試用例編寫詳細(xì)設(shè)計(jì)說明書詳細(xì)設(shè)計(jì)的工具程序流程圖(圖2.4.5和圖2.4.6)易上手、非結(jié)構(gòu)化、無法表示數(shù)據(jù)結(jié)構(gòu)盒圖(N-S圖)(圖2.4.7)結(jié)構(gòu)化、功能域明確PAD圖-問題分析圖(圖2.4.8)結(jié)構(gòu)化、可用于數(shù)據(jù)結(jié)構(gòu)、易自動(dòng)生成過程設(shè)計(jì)語言(PDL:ProcedureDesignLanguage)又稱偽碼,半形式化、易編輯、易自動(dòng)生成、沒有圖形描述直觀2024/2/27A1、順序型一、程序流程圖B幾個(gè)連續(xù)的加工依次序排列expFTAB2、選擇型由某個(gè)判斷式的取值決定選擇兩個(gè)加工中的一個(gè)。2024/2/273、當(dāng)型循環(huán)型當(dāng)循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加工。expFTS4、直到型循環(huán)型重復(fù)執(zhí)行特定的加工,直到循環(huán)控制條件成立時(shí)。expFTS2024/2/275、多情況選擇型列出多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。exp=1FTS1exp=2exp=nS2TSnTFF2024/2/27-----具有嵌套形式的程序流程圖X1FTaX4cTfTFF入口bX2X3deghiX5X6FTFT=1=2=32024/2/27標(biāo)準(zhǔn)化程序流程圖規(guī)定符號X1

起止端點(diǎn)輸入/輸出一般處理準(zhǔn)備或預(yù)處理預(yù)定義處理?xiàng)l件判斷循環(huán)上界循環(huán)下界文件或文檔外接內(nèi)接流程線虛線省略線并行方式注解或注釋2024/2/27順序型二、N-S

圖AB選擇型-------NassiandShneideman

BpFTA

ApFT

p=1=2…=n

A1

A2

Andowhile(p)Sdountil(p)S當(dāng)型循環(huán)型直到型循環(huán)型多分支選擇型2024/2/27零件號100011000210003100041000510006庫存量100012508866920203450建立零件庫(s數(shù)組),i=0輸入零件號xdowhile(x!=s[0][i])i++i++x==s[0][i])

Y

Ns[0][i]輸出s[1][i]

輸入錯(cuò)誤!

繼續(xù)查詢?

Y

N

跳出循環(huán)

2024/2/27三、PAD

圖直到型循環(huán)型ABAB

pA

pWhileP

SUntilP

S當(dāng)型循環(huán)型順序型選擇型A1

pA2An

=1

=2

=n多分支選擇型循環(huán)型-------ProblemAnalysisDiagram2024/2/27s[17]~s[22]=0whilenum(1-1000)

輸入

age

age

=17

s[17]++

s[18]++

=18

s[19]++

=19

s[20]++

=20

s[21]++

=21

s[22]++

=22whilei(17-22)

輸出

s[i]beginend舉例2024/2/27四、PDL-------ProgramDdesign

LanguagePDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語言。稱為設(shè)計(jì)程序用語言。它是一種偽代碼(Pseudocode)

PDL-----關(guān)鍵詞+自然語言2024/2/27(1)、數(shù)據(jù)說明:格式:TYPE<變量名>AS<限定詞1><限定詞2>其功能是定義數(shù)據(jù)的類型和作用域說明:1.變量名:是一個(gè)模塊內(nèi)部使用的變量或模塊間共用的全局變量名。2.限定詞1:標(biāo)明數(shù)據(jù)類型3.限定詞2:標(biāo)明該變量的作用域

TYPEnumberASSTRING

LENGTH(12)2024/2/27(2)、程序塊:PDL的過程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為一個(gè)單個(gè)的實(shí)體來執(zhí)行。

BEGIN<塊名><一組偽代碼語句>END2024/2/27(3)、子程序結(jié)構(gòu):把PDL中的過程稱為子程序。

PROCEDURE<子程序名><一組屬性>

INTERFACE

<參數(shù)表><程序塊或一組偽代碼語句>END2024/2/27(4)、基本控制結(jié)構(gòu):

IF<條件>

THEN

<程序塊/偽代碼語句組>;ELSE<程序塊/偽代碼語句組>;ENDIF---選擇型結(jié)構(gòu)

2024/2/27

DOWHILE<條件描述>

<程序塊/偽代碼語句組>;ENDDO

REPEATUNTIL<條件描述>

<程序塊/偽代碼語句組>;ENDREP---重復(fù)型結(jié)構(gòu)

2024/2/27

DOLOOP<條件描述>

<程序塊/偽代碼語句組>;EXITWHENENDLOOP

DOFOR<下標(biāo)=下標(biāo)表,表達(dá)式>

<程序塊/偽代碼語句組>;ENDFOR---重復(fù)型結(jié)構(gòu)

2024/2/27-----多路選擇結(jié)構(gòu)

CASEOF<case變量名>;

WHEN

<case條件1>SELECT<程序塊/偽代碼語句組>;WHEN

<case條件2>SELECT<程序塊/偽代碼語句組>;……

DEFAULT:

<缺省或錯(cuò)誤case:<程序塊/偽代碼語句組>;ENDCASE2024/2/27

READ/WRITETO<設(shè)備><I/O表>

---輸入/輸出結(jié)構(gòu)

2024/2/27EnteravectorSetMaximumtothevalueofthefirstelementinthevector

DO

foreachsecondonetothelast

IFvalueofTHENelementisgreaterthantheMaximumvalueSetMaximumtovalueoftheelement

ENDDOPrinttheMaximumvalueInputarrayAMax=A(1)DOforI=2toNIFMax<A(I)SetMax=A(I)ENDIFENDDOPrintMax詳細(xì)設(shè)計(jì)的方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法:以數(shù)據(jù)結(jié)構(gòu)為中心結(jié)構(gòu)化設(shè)計(jì)方法以數(shù)據(jù)流為中心,建立良好的程序結(jié)構(gòu),將系統(tǒng)設(shè)計(jì)成由相對獨(dú)立、功能單一的模塊組成的結(jié)構(gòu)。面向?qū)ο笤O(shè)計(jì)方法以對象為中心2.4.3編碼編碼(實(shí)現(xiàn)):程序設(shè)計(jì)(Programming)編碼任務(wù)選擇一種程序設(shè)計(jì)語言將詳細(xì)設(shè)計(jì)文檔“翻譯”為程序(源程序代碼)調(diào)試編碼原則高效+技巧

安全+可靠時(shí)間、空間效率

可用性、可維護(hù)性、可移植性良好的編程風(fēng)格可以減少軟件錯(cuò)誤階段性標(biāo)志:源程序代碼編程風(fēng)格源程序文檔化:標(biāo)識符名,注釋,視覺組織

數(shù)據(jù)說明:變量名,排列順序,注釋語句構(gòu)造:易讀>效率,避免復(fù)雜的語句

輸入和輸出:校驗(yàn),允許缺省值,輸出加注釋

效率:追求效率要建立在不損害程序可讀性或可靠性基礎(chǔ)之上。要先使程序正確、再提高效率,要先使程序清晰,再提高程序效率結(jié)構(gòu)化程序設(shè)計(jì)采用自頂向下、逐步求精的設(shè)計(jì)方法;采用單入口單出口的控制結(jié)構(gòu);只包含順序、選擇和循環(huán)三種控制結(jié)構(gòu);2.4.4測試Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人測試人員/開發(fā)人員2:51:9Exchange2000和Windows2000的人員結(jié)構(gòu)軟件測試人員的任務(wù),就是站在使用者的角度上,通過不斷地使用和攻擊剛開發(fā)出來的軟件產(chǎn)品盡量多地找出產(chǎn)品存在的問題,也就是我們所稱的

Bug。軟件測試軟件測試:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程

測試目標(biāo)最大限度地發(fā)現(xiàn)錯(cuò)誤成功的測試是暴露出尚為發(fā)現(xiàn)的錯(cuò)誤測試關(guān)鍵:測試方案的設(shè)計(jì)——測試用例和測試功能測試原則盡早地和不斷地進(jìn)行軟件測試程序員應(yīng)避免檢查自己的程序要預(yù)先確定測試用例設(shè)計(jì)的測試用例應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件充分注意測試中的群集現(xiàn)象—發(fā)現(xiàn)的錯(cuò)誤多,殘存錯(cuò)誤數(shù)目就多,對這樣的程序段要重點(diǎn)測試嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性應(yīng)當(dāng)對每個(gè)測試結(jié)果做全面檢查妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告

測試階段單元測試、集成測試、系統(tǒng)測試、驗(yàn)收測試。是“從小到大”、“由內(nèi)至外”、“循序漸進(jìn)”的測試過程,體現(xiàn)了“分而治之”的思想。單元測試的粒度最小,一般由開發(fā)小組采用白盒方式來測試,主要測試單元是否符合“設(shè)計(jì)”。集成測試界于單元測試和系統(tǒng)測試之間,起到“橋梁作用”,一般由開發(fā)小組采用白盒加黑盒的方式來測試,既要驗(yàn)證“設(shè)計(jì)”又要驗(yàn)證“需求”。系統(tǒng)測試的粒度最大,一般由獨(dú)立測試小組采用黑盒方式來測試,主要測試系統(tǒng)是否符合“需求規(guī)格說明書”。驗(yàn)收測試與系統(tǒng)測試非常相似,主要區(qū)別是測試人員不同,驗(yàn)收測試由用戶執(zhí)行。測試分類單元測試(又稱模塊測試)定義:對軟件設(shè)計(jì)的最小單位(程序模塊)進(jìn)行的測試方法:采用白盒測試法輔之以黑盒測試法內(nèi)容:模塊接口測試、局部數(shù)據(jù)結(jié)構(gòu)測試、路徑測試、錯(cuò)誤處理測試、邊界測試時(shí)期:編碼階段組裝測試(又稱集成測試)定義:在單元測試的基礎(chǔ)上將所有模塊按照設(shè)計(jì)要求組裝為完整的系統(tǒng)方法:漸增式測試和非漸增式測試內(nèi)容:各模塊的接口時(shí)期:編碼完成階段確認(rèn)測試定義:驗(yàn)證軟件的功能、性能及其他特性是否與用戶的要求一致方法:

測試、β測試內(nèi)容:有效性測試和驗(yàn)收測試階段:即將交付使用 測試是在開發(fā)機(jī)構(gòu)的監(jiān)督下,由個(gè)別用戶在確認(rèn)測試階段后期對軟件進(jìn)行測試,目的是評價(jià)軟件的FLURPS(功能、局域化、可使用性、可靠性、性能和支持),注重界面和特色。

測試由支持軟件預(yù)發(fā)行的客戶對FLURPS進(jìn)行測試,主要目的是測試系統(tǒng)的可支持性。FunctionTesting功能測試

LocalAreaTesting局域化測試

UsabilityTesting可使用性測試

RegressionTesting回歸測試

PerformanceTesting性能測試

SupportabilityTesting可支持性測試測試和測試系統(tǒng)測試定義:把通過確認(rèn)測試的軟件作為整個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè)元素與其他元素結(jié)合在一起在實(shí)際運(yùn)行(使用)環(huán)境下,對計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試2024/2/27軟件測試設(shè)計(jì)的方法

軟件的測試設(shè)計(jì)與軟件產(chǎn)品的設(shè)計(jì)一樣,是一項(xiàng)需要花費(fèi)許多人力和時(shí)間的工作,我們希望以最少量的時(shí)間和人力,最大可能地發(fā)現(xiàn)最多的錯(cuò)誤。測試技術(shù)1、白盒測試(WhiteBoxTesting)2、黑盒測試(BlackBoxTesting)前提:完全了解程序的結(jié)構(gòu)和處理過程方法:窮盡測試、邏輯覆蓋邏輯覆蓋的標(biāo)準(zhǔn)語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋

白盒測試也叫玻璃盒測試或結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試。對軟件的過程性細(xì)節(jié)做細(xì)致的檢查。這一方法是把測試對象看作一個(gè)打開的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,來設(shè)計(jì)或選擇測試用例,對程序所有邏輯路徑進(jìn)行測試。白盒測試法最徹底的白盒測試法應(yīng)該覆蓋程序的每一條路徑和每一個(gè)語句。然而,由于程序具有判斷、循環(huán)等多種結(jié)構(gòu),所以,路徑的組合數(shù)量將是非常大的,要想覆蓋路徑的每一種組合是不可能的,有選擇地執(zhí)行程序中某些最具有代表性的通路是對窮盡測試的唯一可行的替代方法。用于白盒測試的測試技術(shù)有:

邏輯覆蓋測試循環(huán)測試基本路徑測試等。1.邏輯覆蓋測試●邏輯覆蓋——是一組覆蓋方法的總稱,它是根據(jù)程序的內(nèi)部邏輯結(jié)構(gòu)來設(shè)計(jì)測試用例的●依據(jù)測試目標(biāo)的不同,邏輯覆蓋又具體分

語句覆蓋判定覆蓋條件覆蓋判定―條件覆蓋條件組合覆蓋等幾種。語句覆蓋——指選擇足夠多的測試用例,保證程序中的每一條語句至少執(zhí)行一次,是一種很弱的邏輯覆蓋標(biāo)準(zhǔn)。判定覆蓋又稱為分支覆蓋——指選擇足夠多的測試用例,保證程序中的每一個(gè)判定的真值與假值各取得一次,也就是說使得每個(gè)判定框的每一個(gè)分支至少執(zhí)行一次。比語句覆蓋強(qiáng),但是對程序邏輯的覆蓋程度仍然不高。條件覆蓋——是指不僅每個(gè)語句至少執(zhí)行一次,而且應(yīng)該選擇足夠多的測試用例,使得判定表達(dá)式中的每一個(gè)條件都取得各種可能的結(jié)果。

條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗古卸ū磉_(dá)式中每個(gè)條件都取得了兩個(gè)不同的結(jié)果,而判定覆蓋卻只是關(guān)心整個(gè)判定表達(dá)式的值。判定-條件覆蓋。很多情況下,按照判定覆蓋選取的測試用例不一定能夠滿足條件覆蓋標(biāo)準(zhǔn),反之,條件覆蓋選取的測試用例也不一定能夠滿足判定覆蓋標(biāo)準(zhǔn)。判定―條件覆蓋就是同時(shí)滿足這兩種覆蓋要求的邏輯覆蓋,也就是選取足夠多的測試用例,使每個(gè)判定的取真值分支與取假值分支至少各執(zhí)行一次,并使程序的每一個(gè)判定中的每個(gè)條件取得各種可能值。條件組合覆蓋——是更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它要求選取足夠多的測試用例,使得每個(gè)判定表達(dá)式中條件的各種組合都至少出現(xiàn)一次。路徑覆蓋——選取足夠多測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次。路徑覆蓋是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)。2.循環(huán)測試●循環(huán)測試注重測試循環(huán)結(jié)構(gòu)的有效性?!裨诮Y(jié)構(gòu)化的程序設(shè)計(jì)中,通常只有3種循環(huán):

簡單循環(huán) 嵌套循環(huán) 串接循環(huán)2.循環(huán)測試●假設(shè)n是允許通過循環(huán)的最大次數(shù)。簡單循環(huán)測試可以采用:

跳過循環(huán); 只通過循環(huán)一次; 通過循環(huán)兩次;

通過循環(huán)m次,其中m<n-1; 通過循環(huán)n-1次、n次、n+1次。2.循環(huán)測試●如果將簡單循環(huán)測試的方法直接用于嵌套循環(huán)測試,可能的測試次數(shù)會(huì)隨著嵌套循環(huán)的層數(shù)的增加按幾何級數(shù)增長,導(dǎo)致不現(xiàn)實(shí)的測試數(shù)目?!馚.Beizer提出了一種能減少測試數(shù)目的方法:從最內(nèi)層循環(huán)開始測試,把所有其他循環(huán)都設(shè)置為最小值;對最內(nèi)層循環(huán)使用簡單循環(huán)測試,而使外層循環(huán)的迭代參數(shù)(例如:循環(huán)計(jì)數(shù)器)取最小值;由內(nèi)向外,對下一個(gè)循環(huán)進(jìn)行測試,但保持所有外層循環(huán)為最小值,其他嵌套循環(huán)為“典型”值;繼續(xù)進(jìn)行下去,直到測試完所有循環(huán)。2.循環(huán)測試●如果串接循環(huán)的各個(gè)循環(huán)都彼此獨(dú)立,則可以使用簡單循環(huán)測試的方法進(jìn)行;●但若在兩個(gè)串接循環(huán)中,第一個(gè)循環(huán)的循環(huán)計(jì)數(shù)器的值是第二個(gè)循環(huán)計(jì)數(shù)器的初始值,則這兩個(gè)循環(huán)并不是獨(dú)立的,這時(shí),建議使用嵌套循環(huán)測試方法來測試串接循環(huán)。3.基本路徑測試●在實(shí)際問題中,一個(gè)不是很復(fù)雜的程序,其路徑個(gè)數(shù)都可能是一個(gè)龐大的數(shù)字,要覆蓋所有的路徑是不可能的,●因此,只能把覆蓋的路徑數(shù)壓縮到一定的限度內(nèi)進(jìn)行測試。3.基本路徑測試●基本路徑測試是TomMcCabe提出的一種白盒測試技術(shù),其基本思想是:以軟件過程性描述為基礎(chǔ)(例如,詳細(xì)設(shè)計(jì)的程序流程圖),通過分析它的控制流程計(jì)算復(fù)雜度,導(dǎo)出基本路徑集合,并設(shè)計(jì)一組測試用例,確保程序中的每個(gè)語句至少執(zhí)行一次,每一條路徑都通過一次。2.4軟件實(shí)現(xiàn)黑盒測試定義:只檢查程序功能是否能按照需求規(guī)格說明書的規(guī)定正常運(yùn)行,程序是否能接收輸入數(shù)據(jù)并產(chǎn)生正確的輸出信息,并且保持外部信息的完整性。

方法:等價(jià)類劃分邊界值分析錯(cuò)誤推測2024/2/27一、等價(jià)分類法所謂等價(jià)分類,就是把輸入數(shù)據(jù)的可能值劃分為若干等價(jià)類(等價(jià)類是指某個(gè)輸入域的子集合。在該集合中,各個(gè)輸入數(shù)據(jù)對于揭露程序中的錯(cuò)誤都是等價(jià)的)。因此,可以把全部輸入數(shù)據(jù)合理地劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測試的輸入條件,這樣就可以少量的代表性測試數(shù)據(jù),來取得較好的測試結(jié)果。2024/2/27是指對于程序的規(guī)格說明來說,是合理的

有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它可以檢驗(yàn)程序是否實(shí)現(xiàn)預(yù)先規(guī)定的功能和性能。有效等價(jià)類2024/2/27是指對于程序的規(guī)格說明來說,是不合理的,是無意義的輸入數(shù)據(jù)構(gòu)成的集合。程序員主要利用這一類測試用例來檢查程序中功能和性能的實(shí)現(xiàn)是否不符合規(guī)格說明要求。無效等價(jià)類2024/2/271、如果輸入條件規(guī)定了取值范圍,或者是值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。確定等價(jià)類的原則例如:…

…序號值可以從1到999…

…一個(gè)有效等價(jià)類:1≤序號值≤999

兩個(gè)無效等價(jià)類:序號值<1

序號值>999

2024/2/272、如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。例如:在

C語言中對變量標(biāo)識符規(guī)定為“以字母打頭的

…串”。所有以字母打頭的構(gòu)成為有效等價(jià)類;而不在此集合內(nèi)(不以字母打頭)歸于無價(jià)等價(jià)。2024/2/273、如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。2024/2/274、如果規(guī)定了輸入數(shù)據(jù)是一組值,而且程序要對每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為每一個(gè)輸入值確立一個(gè)有效等價(jià)類此外再針對這組確立一個(gè)無效等價(jià)類,它應(yīng)是所有不允許輸入值的集合。例如:在教師分房方案中規(guī)定對教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個(gè)有效等價(jià)類為教授、副教授、講師和助教,以及1個(gè)無效等價(jià)類它應(yīng)是所有不符合以上身份的人員的輸入值的集合。2024/2/275、如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確定一個(gè)有效等價(jià)類(符合規(guī)則),和若干個(gè)無效等價(jià)類(從不同角度違反則)。

例如:在C語言中規(guī)定了“一個(gè)語句必須以分號‘;’作為結(jié)束”,這時(shí),可以確定一個(gè)有效等價(jià)類,以“;”結(jié)束,而若干個(gè)無效等價(jià)類應(yīng)以“:,、”等。2024/2/276、如果確知,已劃分的等價(jià)類中各元素在程序中的處理方式不同,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小的等價(jià)類。2024/2/27二、邊界值分析法采用邊界值分析法來選擇測試用例,可使得被測程序能在邊界值及其附近運(yùn)行,從而更有效地暴露程序中潛藏的錯(cuò)誤。2024/2/27三、錯(cuò)誤猜測法所謂猜測,就是猜測被測程序在哪些地方容易出錯(cuò),然后針對可能的薄弱環(huán)節(jié)來設(shè)計(jì)測試用例。顯然它比前兩種方法更多地依靠測試人員的直覺

溫馨提示

  • 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

提交評論