計(jì)算機(jī)基礎(chǔ)(第2版)課件第6章 軟件工程基礎(chǔ)_第1頁
計(jì)算機(jī)基礎(chǔ)(第2版)課件第6章 軟件工程基礎(chǔ)_第2頁
計(jì)算機(jī)基礎(chǔ)(第2版)課件第6章 軟件工程基礎(chǔ)_第3頁
計(jì)算機(jī)基礎(chǔ)(第2版)課件第6章 軟件工程基礎(chǔ)_第4頁
計(jì)算機(jī)基礎(chǔ)(第2版)課件第6章 軟件工程基礎(chǔ)_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章軟件工程基礎(chǔ)6軟件工程基礎(chǔ)6.1軟件工程的基本概念6.2結(jié)構(gòu)化分析方法6.3結(jié)構(gòu)化設(shè)計(jì)方法6.4軟件測(cè)試6.5程序的調(diào)試6.1軟件工程的基本概念軟件定義與軟件特點(diǎn)軟件危機(jī)與軟件工程軟件過程與軟件生命周期軟件工程的目標(biāo)與原則軟件開發(fā)工具與軟件開發(fā)環(huán)境6.1.1軟件定義與軟件特點(diǎn)計(jì)算機(jī)軟件(Software)是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程序設(shè)計(jì)語灣描述的、適合計(jì)算機(jī)執(zhí)行的指令(語甸)序列。數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu),文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料。可見軟件由兩部分組成:一是機(jī)器可執(zhí)行的程序和數(shù)據(jù);二是機(jī)器不可執(zhí)行的,與軟件開發(fā)、運(yùn)行、維護(hù)、使用等有關(guān)的文檔。6.1.1軟件定義與軟件特點(diǎn)軟件開發(fā)、生產(chǎn)、維護(hù)和使用等方面與計(jì)算機(jī)硬件相比存在明顯的差異。深人理解軟件的定義需要了解軟件的特點(diǎn)。1.軟件是一種邏輯實(shí)休,而不是物理實(shí)體,具有抽象性。軟件的這個(gè)特點(diǎn)使它與其他工程對(duì)象有看明顯的差異。人們可以把它記錄在紙上或存儲(chǔ)介質(zhì)上,但卻無法看到軟件本身的形態(tài),必須通過觀察、分析、思考、判斷,才能了解它的功能,性能等特性。2.軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程。一旦研制開發(fā)成功,可以大量拷貝同一內(nèi)容的副本。所以對(duì)軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下功夫。3.軟件在運(yùn)行,使用期間不存在磨損、老化同題。軟件雖然在生存周期后期不會(huì)因?yàn)槟胬匣珵榱诉m應(yīng)硬件、環(huán)境以及需求的變化要進(jìn)行修改,而這些修改又會(huì)不可避免地引人錯(cuò)誤,導(dǎo)致軟件失率升高,從而使得軟件退化。4.軟件的開發(fā)、運(yùn)行對(duì)計(jì)算機(jī)系統(tǒng)具有依賴性,受計(jì)算機(jī)系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題。5.軟件復(fù)雜性高,成本昂貴。軟件是人類有史以來生產(chǎn)的復(fù)雜度最高的工業(yè)嚴(yán)品軟件涉及人類社會(huì)的各行各業(yè)、方方面面,軟件開發(fā)常常涉及其他領(lǐng)域的專門知識(shí)、就件開發(fā)需要役入大量、高強(qiáng)度的腦力勞動(dòng)、成本高,風(fēng)險(xiǎn)大。6.軟件開發(fā)涉及諸多的社會(huì)因素。許多軟件的開發(fā)和運(yùn)行涉及教件用戶的機(jī)構(gòu)設(shè)置、體制問題以及管理方式等,甚至涉及人們的觀念和心理、軟件知識(shí)產(chǎn)權(quán)及法律等問題。6.1.1軟件定義與軟件特點(diǎn)軟件根據(jù)應(yīng)用目標(biāo)的不同,分類是多種多祥的。軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應(yīng)用軟件是為解決特定領(lǐng)域的應(yīng)用而開發(fā)的軟件。例媽、事務(wù)處理軟件,工程與科學(xué)計(jì)算軟件,實(shí)時(shí)處理軟件,嵌入式軟件,人工智能軟修等應(yīng)增性質(zhì)不同的各種軟件。系統(tǒng)軟件是計(jì)算機(jī)管理自身資源,提高計(jì)算機(jī)使用效率并服務(wù)手其他程序的軟件。如操作系統(tǒng),編譯程序,匯編程序,網(wǎng)絡(luò)軟件,數(shù)據(jù)庫管理系繞等,支撐軟件是介于系統(tǒng)軟件和應(yīng)用軟件之間,協(xié)助用戶開發(fā)軟件的工具性軟件,包括輔助和支持開發(fā)和維護(hù)應(yīng)用軟件的工具軟件,如需求分析工具軟件,設(shè)計(jì)工具軟件,編碼工具軟件,測(cè)試工具軟件,維護(hù)工具軟件等,也包括輔助管理人員控制開發(fā)進(jìn)程和項(xiàng)目管理的工具軟件,如計(jì)劃進(jìn)度管理工具軟件,過程控制工具軟件,質(zhì)量管理及配置管理工具軟件等。6.1.2軟件危機(jī)與軟件工程軟件工程概念的出現(xiàn)源自軟件危機(jī)。20世紀(jì)60年代未以后,“軟件危機(jī)”這個(gè)詞額繁出現(xiàn)。所謂軟件危機(jī)是泛指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。實(shí)際上,幾乎所有的軟件都不同程度地存在這些問題。隨著計(jì)算機(jī)技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大,計(jì)算機(jī)硬件性能/價(jià)格比和質(zhì)量穩(wěn)步提高軟件規(guī)模越來越大,復(fù)雜程度不斷增加,軟件成本逐年上升,質(zhì)量沒有可靠的保證,軟件已成為計(jì)算機(jī)科學(xué)發(fā)展的“瓶頸”。6.1.2軟件危機(jī)與軟件工程具體地說,在軟件開發(fā)和維護(hù)過程中,軟件危機(jī)主要表現(xiàn)如下。1.軟件需求的增長(zhǎng)得不到滿足。,用戶對(duì)系統(tǒng)不滿意的情況經(jīng)常發(fā)生。2.軟件開發(fā)成本和進(jìn)度無法控制:開發(fā)成本超出預(yù)算,開發(fā)周期大火超過規(guī)定日期的情況經(jīng)常發(fā)生。3.軟件質(zhì)量難以保證,4.軟件不可維護(hù)或維護(hù)程度非常低。5.軟件的成本不斷提高。6.軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長(zhǎng)。6.1.2軟件危機(jī)與軟件工程為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識(shí)到軟件工程是使計(jì)算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念,開辟了工程學(xué)的新興領(lǐng)域——軟件工程學(xué)。軟件工程就是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法。關(guān)于軟件工程的定義,在《信息技術(shù)軟件工程術(shù)語》(GB/T11457-2006)中將其定義為“應(yīng)用汁算機(jī)科學(xué)理論和技術(shù)以及工程管理原則和方法,按預(yù)算和進(jìn)度,實(shí)現(xiàn)滿是用戶要求的軟件產(chǎn)品的定義、開發(fā)、發(fā)布和維護(hù)的工程或進(jìn)行研究的學(xué)科”。6.1.2軟件危機(jī)與軟件工程1968年在北大西洋公約組織會(huì)議(NATO會(huì)議)上,討論擺脫軟件危機(jī)的辦法,軟件工程(SolwareEngincering)作為一個(gè)概念首次被提出,這在軟件技術(shù)發(fā)展史上是一件大事。其后的幾十年里,各種有關(guān)軟件工程的技術(shù)、思想、方法和概念不斷地被提出,軟件工程逐步發(fā)展成為一門獨(dú)立的科學(xué)。在會(huì)議上,德國(guó)人FritzBauer認(rèn)為:“軟件工程是建立并使用完善的工程化原則以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法?!?993年,IEEE(InslituleofElectrical&ElectronicEngineers,電氣和電子工程師學(xué)會(huì))給出了一個(gè)更加綜合的定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中”。此后,IEEE多次給出軟件工程的定義。這些軟件工程的定義都是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則。6.1.2軟件危機(jī)與軟件工程軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)事段;工具支持軟件的開發(fā)、管理、文檔生成:過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。軟件工程的進(jìn)步和學(xué)科的發(fā)展是近幾十年軟件產(chǎn)業(yè)迅速發(fā)展的重要原動(dòng)力。從根本.上來說,其目的是研究軟件的開發(fā)技術(shù),軟件工程的名稱意味著用工業(yè)化的開發(fā)方法來替代小作坊式的開發(fā)模式。但是,幾十年的軟件開發(fā)和軟件發(fā)展的實(shí)踐證明,軟件開發(fā)是既不同于其他工業(yè)工程,也不同于科學(xué)研究的一組活動(dòng)。軟件不是自然界的有形物體,它作為人類智慧的產(chǎn)物有其本身的特點(diǎn),所以鈦件工程的方法、概念、目標(biāo)等都在發(fā)膜、有的與最初的想法省了一定的差距。但是認(rèn)識(shí)和學(xué)習(xí)過去和現(xiàn)在的發(fā)腿演變,真正掌握軟件開發(fā)技術(shù)的成就,并為進(jìn)一步發(fā)展軟件開發(fā)技術(shù),以適應(yīng)時(shí)代對(duì)軟件的更高期望是有重大意義的。6.1.3軟件過程與軟件生命周期ISO9000定義:軟件過程是把輸入轉(zhuǎn)化為輸出的一組使此相關(guān)的資源和活動(dòng)。定義給出了軟件過程的兩方面內(nèi)涵。其一,軟件過程是指為獲得軟件產(chǎn)品,在軟件工具支持下由軟件工程師完成的一系列軟件工程活動(dòng)。軟件過程通常包含4種基本活動(dòng)。(1)P(Plan)——軟件規(guī)格說明。規(guī)定軟件的功能及其運(yùn)行時(shí)的限制。(2)D(Do)—一軟件開發(fā)或軟件設(shè)計(jì)與實(shí)現(xiàn),生產(chǎn)滿足規(guī)格說明的軟件。(3)C(Check)——軟件確認(rèn)。確認(rèn)軟件能夠滿足客戶提出的要求。(4)A(Action)——軟件演進(jìn)。為滿足客戶的變更要求,軟件必須在使用的過程中演進(jìn)。事實(shí)上,軟件過程是一個(gè)軟件開發(fā)機(jī)構(gòu)針對(duì)某類軟件產(chǎn)品為自己規(guī)定的工作步驟,它應(yīng)當(dāng)是科學(xué)的、合理的,否則必將影響軟件產(chǎn)品的質(zhì)量。6.1.3軟件過程與軟件生命周期通常把用戶的要求轉(zhuǎn)變成軟件產(chǎn)品的過程叫作軟件開發(fā)過程。此過程包括對(duì)用戶的要求進(jìn)行分析,解釋成軟件需求,把需求變換成設(shè)計(jì),把設(shè)計(jì)用代碼來實(shí)現(xiàn)并進(jìn)行代碼測(cè)試,有些軟件還需要進(jìn)行代碼安裝和交付運(yùn)行。其二,從軟件開發(fā)的觀點(diǎn)看,它就是使用適當(dāng)?shù)馁Y源(包括人員、計(jì)算機(jī)硬件、軟件具、時(shí)間等),為開發(fā)軟件進(jìn)行的一組開發(fā)活動(dòng),在過程結(jié)束時(shí)將輸入(用戶要求)鈴化為輸出(軟件產(chǎn)品)。所以,軟件過程是將軟件工程的方法和工具綜合起來,以達(dá)到合理、及時(shí)地進(jìn)行計(jì)算機(jī)軟件開發(fā)的目的。軟件過程應(yīng)確定方法使用的順序、要求交付的文檔資料、為保證質(zhì)量和適應(yīng)變化所需要的管理、軟件開發(fā)各個(gè)階段完成的任務(wù)。6.1.3軟件過程與軟件生命周期2.軟件生命周期(SollwareLifesCyele)通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說、軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命用期。一般包括可行性研究與需求分析、設(shè)計(jì)、編碼、測(cè)試、交付使用以及維護(hù)等活動(dòng),如圖6-1所示。這些活動(dòng)可以有重復(fù),執(zhí)行時(shí)也可以有迭代。還可以將教件生命周期分為如圖6-1所示的軟件定義、軟開發(fā)及軟件運(yùn)行維護(hù)三個(gè)階段。軟件定義階段的任務(wù)是確定軟件開發(fā)工作必須完成的目標(biāo);確定工程的可行性。軟件開發(fā)階段的任務(wù)是具體完成設(shè)計(jì)和實(shí)現(xiàn)定義階段所定義的軟件,通常包括總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試。其中總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)又稱為系統(tǒng)設(shè)計(jì),編碼和測(cè)試又稱為系統(tǒng)實(shí)現(xiàn)。6.1.3軟件過程與軟件生命周期軟件生命周期中各階段的基本任務(wù)。(1)可行性研究與計(jì)劃制計(jì)。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制訂完成開發(fā)任務(wù)的實(shí)施計(jì)劃。(2)需求分析。對(duì)待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,編寫軟件規(guī)格說明書及初步的用戶手冊(cè),提交評(píng)審。(3)軟件設(shè)計(jì)。系統(tǒng)設(shè)計(jì)人員和程序設(shè)計(jì)人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。在系統(tǒng)比較復(fù)雜的情況下,設(shè)計(jì)階段可分解成概要設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。編寫概要設(shè)計(jì)說明書、詳細(xì)設(shè)計(jì)說明書和測(cè)試計(jì)劃初稿,提交評(píng)審。(4)編碼。編碼是把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代碼,即完成源程序的編碼,編寫用戶手冊(cè)、操作手冊(cè)等面向用戶的文檔,編寫單元測(cè)試計(jì)劃。(5)軟件測(cè)試。在設(shè)計(jì)測(cè)試用例的基礎(chǔ)上,檢驗(yàn)軟件的各個(gè)組成部分。編寫測(cè)試分析報(bào)告。(6)運(yùn)行和維護(hù)。將已空付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。6.1.4軟件工程的目標(biāo)與原則1.軟件工程的目標(biāo)軟件工程的目標(biāo)是在給定成本、進(jìn)度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。軟件工程需要達(dá)到的基本目標(biāo)應(yīng)是付出較低的開發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護(hù)費(fèi)用;能按時(shí)完成開發(fā),及時(shí)交付使用。6.1.4軟件工程的目標(biāo)與原則基于軟件工程的目標(biāo),軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括軟件開發(fā)技術(shù)和軟件工程管理。(1)軟件開發(fā)技術(shù)軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境,其主體內(nèi)容是軟件開發(fā)方法學(xué)。軟件開發(fā)方法學(xué)是根據(jù)不同的軟件類型,按不同的觀點(diǎn)和原則,對(duì)軟件開發(fā)中應(yīng)遵循的策略、原則、步驟和必須產(chǎn)生的文檔資料都做出規(guī)定,從而使軟件的開發(fā)能夠進(jìn)人規(guī)范化和工程化的階段,以克服早期的手工方法生產(chǎn)中的隨意性和非規(guī)范性做法。編大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)6.1.4軟件工程的目標(biāo)與原則(2)軟件工程管理軟件工程管理包括軟件管理學(xué)、軟件工程經(jīng)濟(jì)學(xué)、軟件心理學(xué)等內(nèi)容。軟件工程管理是軟件按工程化生產(chǎn)時(shí)的重要環(huán)節(jié),它要求按照預(yù)先制訂的計(jì)劃、進(jìn)度和預(yù)算執(zhí)行,以實(shí)現(xiàn)預(yù)期的經(jīng)濟(jì)效益和社會(huì)效益。統(tǒng)計(jì)數(shù)據(jù)表明,多數(shù)軟件開發(fā)項(xiàng)目的尖敗,并不是由于軟件開發(fā)技術(shù)方面的原因,它們的失敗是由于不適當(dāng)?shù)墓芾碓斐傻?。因此,人們?duì)軟件項(xiàng)目管理重要性的認(rèn)識(shí)有待提高,軟件管理學(xué)包括人員組織、進(jìn)度安排、質(zhì)量保證、配置管理、項(xiàng)目計(jì)劃等。軟件工程經(jīng)濟(jì)學(xué)是研究軟件開發(fā)中成本的估算,成本效益分析的方法和技術(shù),用經(jīng)濟(jì)學(xué)的基本原理來研究軟件工程開發(fā)中的經(jīng)濟(jì)效益問題。軟件心理學(xué)是軟件工程領(lǐng)域具有挑戰(zhàn)性的一個(gè)全新的研究視角,它是從個(gè)體心理、人類行為、組織行為和企業(yè)文化等角度來研究軟件管理和軟件工程的。6.1.4軟件工程的目標(biāo)與原則2.軟件工程的原則(1)抽象。抽取事物最基本的特性和行為,忽略非本質(zhì)細(xì)節(jié)。采用分層次抽象,自頂向下,逐層細(xì)化的辦法控制軟件開發(fā)過程的復(fù)雜性。(2)信息隱蔽。采用封裝技術(shù),將程序模塊的實(shí)現(xiàn)細(xì)節(jié)隱藏起來,使模塊接口盡量簡(jiǎn)單?!ぃ?)模塊化。模塊是程序中相對(duì)獨(dú)立的成分,一個(gè)獨(dú)立的編程單位,應(yīng)有良好的接口定義,模塊的大小要適中,模塊過大會(huì)使模塊內(nèi)部的復(fù)雜性增加,不利于對(duì)模塊的理解和修改,也不利于模塊的調(diào)試和重用。模塊太小會(huì)導(dǎo)致整個(gè)系統(tǒng)表示過于復(fù)雜,不利于控制系統(tǒng)的復(fù)雜性。(4)局部化。要求在一個(gè)物理模塊內(nèi)集中邏輯上相互關(guān)聯(lián)的計(jì)算資源,保證模塊間具有松散的耦合關(guān)系,模塊內(nèi)部有較強(qiáng)的內(nèi)聚性,這有助于控制解的復(fù)雜性。(5)確定性。軟件開發(fā)過程中所有概念的表達(dá)應(yīng)是確定的、無歧義且規(guī)范的。這有助于人與人的交互不會(huì)產(chǎn)生誤解和遺漏,以保證整個(gè)開發(fā)工作的協(xié)調(diào)一致。(6)一致性。包括程序、數(shù)據(jù)和文檔的整個(gè)軟件系統(tǒng)的各模塊應(yīng)使用已知的概念、符號(hào)和術(shù)語;程序內(nèi)外部接口應(yīng)保持…致,系統(tǒng)規(guī)格說明與系統(tǒng)行為應(yīng)保持…致。(7)完備性。軟件系統(tǒng)不丟失任何重要成分,完全實(shí)現(xiàn)系統(tǒng)所需的功能。(8)可驗(yàn)證性。開發(fā)大型軟件系統(tǒng)需要對(duì)系統(tǒng)自頂向下,逐層分解。系統(tǒng)分解應(yīng)遵循容易檢查、測(cè)評(píng)、評(píng)審的原則,以確保系統(tǒng)的正確性。6.1.5軟件開發(fā)工具與軟件開發(fā)環(huán)境1.軟件開發(fā)工具早期的軟件開發(fā)除了一般的程序設(shè)計(jì)語言外,尚缺少工具的支持、致使編程工作量大,質(zhì)量和進(jìn)度難以保證,導(dǎo)致人們將很多的精力和時(shí)間花費(fèi)在程序的編制和測(cè)試上,而在更重要的軟件的需求和設(shè)計(jì)上反而得不到必要的精為和時(shí)間投入。軟件開發(fā)工具的完善和發(fā)展將促進(jìn)軟件開發(fā)方法的進(jìn)步和完善。促選教開開發(fā)的高速度和高質(zhì)量。軟件開發(fā)工具的發(fā)展是從單項(xiàng)工具的開發(fā)逐步向集成工具發(fā)展畫。教件那發(fā)工具為軟件,工程方法提供了自動(dòng)的或半自動(dòng)的軟件支持環(huán)境。6.1.5軟件開發(fā)工具與軟件開發(fā)環(huán)境2.飲件開發(fā)環(huán)境軟件開發(fā)環(huán)境或稱軟件工程環(huán)境是全面支持軟件開發(fā)全過程的軟件工具集合。這些軟件工具按照一定的方法或模式組合起來,支持教件生命滿期內(nèi)的各個(gè)階段和各項(xiàng)任務(wù)的完成。計(jì)算機(jī)輔助軟件工程(CompmterAieedSafrumeEmeimecrimg,CASE)是器前軟件并發(fā)壞境中富有特色的研究工作和發(fā)聘方向。CASE將各種軟件工具,開發(fā)機(jī)器和一個(gè)存放開發(fā)過程信息中心數(shù)據(jù)庫組合起來、形成軟件工程環(huán)境:CASE的成功產(chǎn)品將最大限度地降低軟件開發(fā)的技術(shù)難度并使軟件開發(fā)的質(zhì)量得到保證。結(jié)構(gòu)化分析方法軟件開發(fā)方法是軟件開發(fā)過程所遵循的方法和步驟,其月的在于有效地得到一些工作產(chǎn)品,即程序和文檔,并且滿足質(zhì)量要求。軟件開發(fā)方法包括分析方法,設(shè)計(jì)方法和程序設(shè)計(jì)方法。結(jié)構(gòu)化方法經(jīng)過30多年的發(fā)展,已經(jīng)成為系統(tǒng)、成熟的軟件開發(fā)方法之一。結(jié)構(gòu)化方法包括已經(jīng)形成了配套的結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計(jì)方法和結(jié)構(gòu)化編程方法。其核心和基礎(chǔ)是結(jié)構(gòu)化程序設(shè)計(jì)理論。5.1程序設(shè)計(jì)方法與風(fēng)格3.語句的結(jié)構(gòu)程序應(yīng)該簡(jiǎn)單易懂,語句構(gòu)造應(yīng)該簡(jiǎn)單直接,不應(yīng)該為提高效率而把語句復(fù)雜化?!銘?yīng)注意如下。(1)在一行內(nèi)只寫一條語句;(2)程序編寫應(yīng)優(yōu)先考慮清晰性;(3)除非對(duì)效率有特殊要求,程序編寫要做到清晰第…、效率第二:(4)首先要保證程序正確,然后才要求提高速度;(5)避免使用臨時(shí)變量而使程序的可讀性下降;(6)避免不必要的轉(zhuǎn)移;(7)盡可能使用庫函數(shù);(8)避免采用復(fù)雜的條件語句;(9)盡量減少使用“否定”條件的條件語句;(10)數(shù)據(jù)結(jié)構(gòu)要有利于程序的簡(jiǎn)化;(11)要模塊化,使模塊功能盡可能單一化;(12)利用信息隱蔽,確保每一個(gè)模塊的獨(dú)立性;(13)從數(shù)據(jù)出發(fā)去構(gòu)造程序;(14)不要修補(bǔ)不好的程序,要重新編寫。6.2結(jié)構(gòu)化分析方法需求分析和需求分析方法結(jié)構(gòu)化分析方法6.2.1需求分析與需求分析方法軟件需求是指用戶對(duì)目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。滿求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求的過程。需求分析將創(chuàng)建所需的數(shù)據(jù)模型、功能模型和控制模型。(1)需求的定義1997年IEEE在《軟件工程標(biāo)準(zhǔn)詞匯表》中對(duì)需求定義如下。①用戶解決問題或達(dá)到目標(biāo)所需的條件或權(quán)能;②系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn)、規(guī)范或其他正式規(guī)定文檔所需具有的條件或權(quán)能:③一種反映①或②所描述的條件或權(quán)能的文檔說明。6.2.1需求分析與需求分析方法該定義從兩方面闡述了需求的含義:一是從用戶角度所要求的系統(tǒng)應(yīng)具有的功能,是系統(tǒng)的外部行為;二是從系統(tǒng)開發(fā)者角度所要求的系統(tǒng)應(yīng)具有的功能,是系統(tǒng)的內(nèi)部特性。定義還強(qiáng)調(diào)了需求一定要文檔化?!缎畔⒓夹g(shù)軟件工程術(shù)語》(GD/T11457-2006)采用了IEEE的定義。由需求的定義可知,需求及需求分析的內(nèi)容包括提煉、分析和仔細(xì)審查已收集到的需求:確保所有利益相關(guān)者都明白其含義并找出其中的錯(cuò)誤,遺漏或其他不足的地方:從用戶最初的非形式化需求到滿足用戶對(duì)軟件產(chǎn)品的要求的映射;對(duì)用戶意圖不斷進(jìn)行提示和判斷。6.2.1需求分析與需求分析方法(2)需求分析階段的工作需求分析階段的工作,可以概括為四個(gè)方面。①需求獲取。需求獲取的日的是確定對(duì)日標(biāo)系統(tǒng)的各方面需求。涉及的主要任務(wù)是建立獲取用戶需求的方法框架,并支持和監(jiān)控需求狀取的過穩(wěn)。需求獲取涉及的關(guān)鍵問題有對(duì)同題空間的理解;人與人之間的通信;不斷變化的需求。需求獲取是在同用戶的交流過程中不斷收集、積累用戶的各種信息,并且通過認(rèn)真理解用戶的各現(xiàn)要求,匣清那些模糊的需求,排除不合理的,從而較全面地提煉系統(tǒng)的功能性與非功能性需求:…般功能性與非功能性需求包括系統(tǒng)功能、物理環(huán)境、用戶界面、用戶因素、資源、安全性、質(zhì)量保證及其他約束。要特別注意的是,在需求獲取過程中,容易產(chǎn)生諸如與用戶存在交流障礙,相互誤解,缺乏共問語言,理解不完整,忽視需求變化,混希目標(biāo)和需求等問題,這些問題都將直接影響到需求分析和系統(tǒng)后續(xù)開發(fā)的成敗。②需求分析。對(duì)獲取的需求進(jìn)行分析和綜合,最終給出系統(tǒng)的解決方案和目標(biāo)系統(tǒng)的邏輯模型。③編寫需求規(guī)格說明書。需求規(guī)格說明書作為需求分析的階段成果,可以為用戶、分析人員和設(shè)計(jì)人員之間的交流提供方使,可以直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),又可以作為控制軟件開發(fā)進(jìn)程的依據(jù)。④需求評(píng)審。在需求分析的最后一步,對(duì)需求分析階段的工作進(jìn)行復(fù)審,驗(yàn)證需求文檔的一致性、可行性、完整性和有效性。6.2.1需求分析與需求分析方法2.需求分析方法常見的需求分析方法如下。(1)結(jié)構(gòu)化分析方法。主要包括面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(StructuredAnalysis.SA),面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法(JacksonSystcmDevc-lopmenlMcthod、JSD),面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法(DataStrucluredSyslemDevelopmentMethod、DSSD)。(2)面向?qū)ο蟮姆治龇椒ǎ∣bject-OrientedMethod.00A)。從需求分析建立的模型的特性來分,需求分析方法又分為靜態(tài)分析方法和動(dòng)態(tài)分析方法。6.2.2結(jié)構(gòu)化分析方法1.關(guān)于結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法是結(jié)構(gòu)化程序設(shè)計(jì)理論在軟件需求分析階段的運(yùn)用。它是20世紀(jì)70年代中期倡導(dǎo)的基于功能分新的分折方法,其目的是幫助弄清用戶對(duì)軟件的錯(cuò)求。對(duì)丁面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法,按照DeMarco的定義,結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、結(jié)構(gòu)化英語、判定表和判定樹等二工具,來建立·種新的、稱為結(jié)構(gòu)化規(guī)格說明的目標(biāo)文檔。結(jié)構(gòu)化分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。6.2.2結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析的步驟如下。(1)通過對(duì)用戶的調(diào)查,以軟件的需求為線索,獲得當(dāng)前系統(tǒng)的具體模型;(2)去掉具體模型中非本質(zhì)因素,抽象出當(dāng)前系統(tǒng)的邏輯模型:(3)根據(jù)計(jì)算機(jī)的特點(diǎn)分析當(dāng)前系統(tǒng)與日標(biāo)系統(tǒng)的差別,建立日標(biāo)系統(tǒng)的邏輯模型:(4)完善目標(biāo)系統(tǒng)并補(bǔ)充細(xì)節(jié),寫出目標(biāo)系統(tǒng)的軟件需求規(guī)格說明;(5)評(píng)審直到確認(rèn)完全符合用戶對(duì)軟件的需求。6.2.2結(jié)構(gòu)化分析方法對(duì)復(fù)雜系統(tǒng)的表達(dá)應(yīng)采用控制復(fù)雜度策略,需要按照問題的層次結(jié)構(gòu)逐步分解細(xì)化.使用分層的數(shù)據(jù)流圖表達(dá)這種結(jié)構(gòu)關(guān)系,分層的數(shù)據(jù)流圖的形式如圖6-3所示。為保證構(gòu)造的數(shù)據(jù)流圖表達(dá)完整、準(zhǔn)確、規(guī)范,應(yīng)通過以下數(shù)據(jù)流圖的構(gòu)造規(guī)則和注意事項(xiàng)。①對(duì)加工處理建立唯一、層次性的編號(hào),且每個(gè)加工處理通常要求既有輸入又有輸出。②數(shù)據(jù)存儲(chǔ)之間不應(yīng)該有數(shù)據(jù)流。③數(shù)據(jù)流圖的一致性。它包括數(shù)據(jù)守恒和數(shù)據(jù)存儲(chǔ)文件的使用,即某個(gè)處理用以產(chǎn)生輸出的數(shù)據(jù)沒有輸入,即出現(xiàn)遺漏,另……種是……個(gè)處理的某些輸入并沒有在處理中使用以產(chǎn)生輸出;數(shù)據(jù)存儲(chǔ)(文件)應(yīng)被數(shù)據(jù)流圖中的處理讀和寫,而不是僅讀不寫或僅寫不讀。④父圖、子圖關(guān)系與平衡規(guī)則。相鄰兩層DFD之間具有父子關(guān)系,子圖代表了父圖中某個(gè)加工的詳細(xì)描述,父圖表示了子圖間的接口。子圖個(gè)數(shù)不大于父圖中的處理個(gè)數(shù)。所有子圖的輸入、輸出數(shù)據(jù)流和父圖中相應(yīng)處理的輸入、輸出數(shù)據(jù)流必須一致。6.2.2結(jié)構(gòu)化分析方法(2)數(shù)據(jù)字典((DataDictionary,DD)數(shù)據(jù)字典是結(jié)構(gòu)化分析方法的核心。數(shù)據(jù)字典是對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對(duì)于輸人、輸出、存儲(chǔ)成分和中間計(jì)算結(jié)果有共同的理解。數(shù)據(jù)字典把不同的需求文檔和分析模型緊密地結(jié)合在一起,與各模型的圖形表示配合,能清楚地表達(dá)數(shù)據(jù)處理的要求。概括地說,數(shù)據(jù)字典的作用是對(duì)DFD中出現(xiàn)的被命名的圖形元緊的確切解釋。通常數(shù)據(jù)字典包含的信息有名稱、別名、何處使用/如何使用、內(nèi)容描述、補(bǔ)充信息等。例如,對(duì)加工的描述應(yīng)包括加工名、反映該加工層次的加工編號(hào)、加工邏輯及功能簡(jiǎn)述、輸入輸出數(shù)據(jù)流等。6.2.2結(jié)構(gòu)化分析方法(3)判定樹使用判定樹進(jìn)行描述時(shí),應(yīng)先從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹。6.2.2結(jié)構(gòu)化分析方法(4)判定表判定表與判定樹相似,當(dāng)數(shù)據(jù)流圖中的加工要依賴于多個(gè)邏輯條件的取值,即完成該加工的一組動(dòng)作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。判定表由四部分組成、如圖6-6所示。其中標(biāo)識(shí)為①的左上部稱基本條件項(xiàng),列出了各種可能的條件。標(biāo)識(shí)為②的右上部稱條件項(xiàng),它列出了各種可能的條件組合。標(biāo)識(shí)為③的左下部稱基本動(dòng)作項(xiàng),它列出了所有的操作。標(biāo)識(shí)為④的右下部稱動(dòng)作項(xiàng),它列出在對(duì)應(yīng)的條件組合下所選的操作。6.2.3軟件需求規(guī)格說明書1.軟件需求規(guī)格說明書的作用軟件需求規(guī)格說明書的作用如下。(1)便于用戶、開發(fā)人員進(jìn)行理解和交流。(2)反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)。(3)作為確認(rèn)測(cè)試和驗(yàn)收的依據(jù)。(4)為成本估算和編制計(jì)劃進(jìn)度提供基礎(chǔ)。(5)軟件不斷改進(jìn)的基礎(chǔ)。6.2.3軟件需求規(guī)格說明書2.軟件需求規(guī)格說明書的內(nèi)容軟件需求規(guī)格說明應(yīng)重點(diǎn)描述軟件的目標(biāo),軟件的功能需求、性能需求、外部接I屬性及約束條件等。功能需求是軟件需求規(guī)格說明,給出軟件要執(zhí)行什么功能的詳盡描述。性能需求是指定量地描述軟件系統(tǒng)應(yīng)滿足的具體性能需求,即各種軟件功能的速度、響應(yīng)時(shí)間、恢復(fù)時(shí)間。外部接口指軟件如何與人、系統(tǒng)的硬件及其他硬件和其他軟件進(jìn)行交互。屬性是指與軟件有關(guān)的質(zhì)量屬性,如正確性、可用性、可靠性、安全性、可維護(hù)性等,約束條件包括影響軟件實(shí)現(xiàn)的各種設(shè)計(jì)約束,如使用的標(biāo)準(zhǔn)、編程語言、數(shù)據(jù)庫完整性方針、資源限制、運(yùn)行環(huán)境等方面的要求。6.2.3軟件需求規(guī)格說明書3.軟件需求規(guī)格說明的特點(diǎn)軟件需求規(guī)格說明是確保軟件質(zhì)量的有力措施,衡量軟件需求規(guī)格說明書質(zhì)量好壞的標(biāo)準(zhǔn)。標(biāo)準(zhǔn)的優(yōu)先級(jí)及標(biāo)準(zhǔn)的內(nèi)涵如下。(1)正確性。體現(xiàn)待開發(fā)系統(tǒng)的真實(shí)要求。(2)無歧義性。對(duì)每一個(gè)需求只有…種解釋,其陳述具有唯…性。(3)完整性。包括全部有意義的需求,功能的、性能的、設(shè)計(jì)的、約束的,屬性或外部接口等方面的需求。(4)可驗(yàn)證性。描述的每一個(gè)需求都是可以驗(yàn)證的,即存在有限代價(jià)的有效過程驗(yàn)證確認(rèn)。(5)一致性。各個(gè)需求的描述不矛盾。(6)可理解性。需求說明必須簡(jiǎn)明易懂,盡量少包含計(jì)算機(jī)的概念和術(shù)語。以便用戶和軟件人員都能接受它。(7)可修改性。SRS的結(jié)構(gòu)風(fēng)格在需求有必要改變時(shí)是易于實(shí)現(xiàn)的。(8)可追蹤性。每一個(gè)需求的來源、流向是清晰的,當(dāng)產(chǎn)生和改變文件編制時(shí),可以方便地引證每一個(gè)需求。6.3

結(jié)構(gòu)化設(shè)計(jì)方法軟件設(shè)計(jì)的基本概念概要設(shè)計(jì)詳細(xì)設(shè)計(jì)6.3.1軟件設(shè)計(jì)的基本概念軟件設(shè)計(jì)是軟件工程的重要階段,是……個(gè)把軟件需求轉(zhuǎn)換為軟件表示的過程。軟件設(shè)讓的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即軟件設(shè)計(jì)是確定系統(tǒng)的物理模型。軟件設(shè)計(jì)的重要性和地位概括為以下兒點(diǎn)。(1)軟件開發(fā)階段(設(shè)計(jì)、編碼、測(cè)試)占據(jù)軟件項(xiàng)目開發(fā)總成本絕大部分,是在軟件開發(fā)中形成質(zhì)量的關(guān)鍵環(huán)節(jié);(2)軟件設(shè)計(jì)是開發(fā)階段最重要的步驟,是將需求準(zhǔn)確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的唯……途徑;(3)軟件設(shè)計(jì)做出的決策,最終影響軟件實(shí)現(xiàn)的成??;(4)設(shè)計(jì)是軟件工程和軟件維護(hù)的基礎(chǔ)。6.3.1軟件設(shè)計(jì)的基本概念2.軟件設(shè)計(jì)的基本原理軟件設(shè)計(jì)過程中應(yīng)遵循軟件工程的基本原理。軟件設(shè)計(jì)的基本原理和有關(guān)概念可概橋如下。(1)抽象人類在認(rèn)識(shí)復(fù)雜問題時(shí)使用的很有效的思維工具是抽象。抽象是把事物本質(zhì)的共同特性提取出來而暫時(shí)忽略它們的細(xì)節(jié)及它們之間的差異。軟件設(shè)計(jì)中考慮模塊化解決方案時(shí),可以定義多個(gè)抽象級(jí)別。抽象的層次從軟件的總體設(shè)計(jì)到評(píng)細(xì)設(shè)計(jì)到編碼逐層降低。軟件工程過程的每一步都是對(duì)軟件求解的上一層抽象的一次精化。(2)逐步求精和模塊化逐步求精和模塊化概念與抽象密切相關(guān)。逐步求精是人們解決復(fù)雜問題時(shí)常采用的一種方法,即化緊為簡(jiǎn),分而治之,將大而復(fù)雜的問題分解成許多容易解決的小問題,則原來的問題就容易解決。在軟件設(shè)計(jì)中,這種逐步求精就是對(duì)模塊的劃分?!ぐ銓ⅰ瓊€(gè)軟件系統(tǒng)模塊化劃分后形成的結(jié)構(gòu)是模塊的分層結(jié)構(gòu)。(3)信息隱蔽和局部化信息隱藏是指所設(shè)計(jì)的模塊使得其所包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊是不能訪問的。局部化與信息隱蔽概念密切相關(guān)。所謂局部化,是指把…些關(guān)系密切的軟件元素物理地放得彼此靠近,例如,在模塊中使用局部數(shù)據(jù)就是如此。實(shí)際上,隱蔽的不是有關(guān)模塊的一切信息,而是模塊的實(shí)現(xiàn)細(xì)節(jié)。局部化有助于實(shí)現(xiàn)信息隱蔽。6.3.1軟件設(shè)計(jì)的基本概念(4)模塊獨(dú)立性模塊獨(dú)立性的概念是抽象、模塊化、信息隱蔽和局部化的直接結(jié)果,模塊的獨(dú)立性是指軟件模塊的編寫和修改應(yīng)使其具有獨(dú)立功能,且與其他模塊的關(guān)聯(lián)盡可能少。換句話講,設(shè)計(jì)軟件結(jié)構(gòu)時(shí),應(yīng)使得每個(gè)模塊僅完成一個(gè)相對(duì)獨(dú)立的特定子功能,并且與其他模塊關(guān)聯(lián)最少且接口簡(jiǎn)單。模塊的獨(dú)立程度是評(píng)價(jià)設(shè)計(jì)好壞的重要度量標(biāo)準(zhǔn),模塊的獨(dú)立程度有兩個(gè)定性標(biāo)準(zhǔn)度量,即模塊間的耦合性和模塊內(nèi)的內(nèi)聚性。耦合性是對(duì)模塊間互相連接的緊密程度的度量。一個(gè)模塊的耦合性越強(qiáng)(越高)則該模塊的獨(dú)立性越弱(越低)。所以軟件設(shè)計(jì)應(yīng)該建立模塊之間耦合程度盡可能低的系統(tǒng),這樣對(duì)某一模塊的設(shè)計(jì)、編碼、測(cè)試和維護(hù)就不需要對(duì)系統(tǒng)其他模塊有很多的了解。6.3.1軟件設(shè)計(jì)的基本概念模塊的內(nèi)聚性越高,模塊間的耦合性就越低,可見模塊的幫合性和內(nèi)聚性是相互關(guān)聯(lián)的。因此,好的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚、低耦合。3.結(jié)構(gòu)化設(shè)計(jì)方法與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是結(jié)構(gòu)化設(shè)計(jì)方法。結(jié)構(gòu)化設(shè)計(jì)就是采用最佳的可能方法設(shè)計(jì)系統(tǒng)的各個(gè)組成部分以及各成分之間的內(nèi)部聯(lián)系的技術(shù)。也就是說,結(jié)構(gòu)化設(shè)計(jì)是這樣一個(gè)過程、它決定用哪些方法把哪些部分聯(lián)系起來,才能解決好某個(gè)具體、有清楚定義的問題。結(jié)構(gòu)化設(shè)計(jì)方法的基本思想是將軟件設(shè)計(jì)成由相對(duì)獨(dú)立、單一功能的模塊組成的結(jié)構(gòu)。下面重點(diǎn)以面向數(shù)據(jù)流的結(jié)構(gòu)化方法為例討論結(jié)構(gòu)化設(shè)計(jì)方法。6.3.2概要設(shè)計(jì)1.概要設(shè)計(jì)的任務(wù)軟件概要設(shè)計(jì)(總體設(shè)計(jì))的基本任務(wù)如下。(1)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu),而在概要設(shè)計(jì)階段,需要進(jìn)一步分解,劃分為模塊以及模塊的層次結(jié)構(gòu)。劃分的具體過程如下。①采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊。②確定每個(gè)模塊的功能。③確定模塊之間的調(diào)用關(guān)系。④確定模塊之間的接口,即模塊之間傳遞的信息。⑤評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。6.3.2概要設(shè)計(jì)(2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)是實(shí)現(xiàn)需求定義和規(guī)格說明過程中提出的數(shù)據(jù)對(duì)象的邏輯表示。數(shù)據(jù)設(shè)計(jì)的具體任務(wù)是確定輸入、輸出文件的詳細(xì)數(shù)據(jù)結(jié)構(gòu);結(jié)合算法設(shè)計(jì),確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作;確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊,限制和確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍;需要與操作系統(tǒng)或調(diào)度程序接口所必需的控制表進(jìn)行數(shù)據(jù)交換時(shí),確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則;數(shù)據(jù)的保護(hù)性設(shè)計(jì):防衛(wèi)性、一致性、冗余性設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)中應(yīng)注意掌握以下設(shè)計(jì)原則。6.3.2概要設(shè)計(jì)①用于功能和行為的系統(tǒng)分析原則也應(yīng)用于數(shù)據(jù)。②應(yīng)該標(biāo)識(shí)所有的數(shù)據(jù)結(jié)構(gòu)以及其上的操作。③應(yīng)當(dāng)建立數(shù)據(jù)字典,并用于數(shù)據(jù)設(shè)計(jì)和程序設(shè)計(jì)。④低層的設(shè)計(jì)決策應(yīng)該推遲到設(shè)計(jì)過程的后期。③只有那些需要直接使用數(shù)據(jù)結(jié)構(gòu)、內(nèi)部數(shù)據(jù)的模塊才能看到該數(shù)據(jù)的表示。⑥應(yīng)該開發(fā)一個(gè)由有用的數(shù)據(jù)結(jié)構(gòu)和應(yīng)用于其上的操作組成的庫。⑦軟件設(shè)計(jì)和程序設(shè)計(jì)語言應(yīng)該支持抽象數(shù)據(jù)類型的規(guī)格說明和實(shí)現(xiàn)。6.3.2概要設(shè)計(jì)(3)編寫概要設(shè)計(jì)文檔在概要設(shè)計(jì)階段,需要編寫的文檔有概要設(shè)計(jì)說明書、數(shù)據(jù)庫設(shè)計(jì)說明書、集成測(cè)試計(jì)劃等。(4)概要設(shè)計(jì)文檔評(píng)審在概要設(shè)計(jì)中,對(duì)設(shè)計(jì)部分是否完整地實(shí)現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計(jì)方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性,各部分之間的一致性等都要進(jìn)行評(píng)審,以免在以后的設(shè)計(jì)中出現(xiàn)大的問題而返工。常用的軟件結(jié)構(gòu)設(shè)計(jì)工具是結(jié)構(gòu)圖(StructareChart,SC),也稱程序結(jié)構(gòu)圖。使用結(jié)構(gòu)圖描述軟件系統(tǒng)的層次和分塊結(jié)構(gòu)關(guān)系,它反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn)以及模塊與模塊之間的聯(lián)系與通信,是未來程序中的控制層次體系。6.3.3詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的任務(wù),是為軟件結(jié)構(gòu)圖中的每一個(gè)模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。表達(dá)工具可以由設(shè)計(jì)人員自由選擇,但它應(yīng)該具有描述過程細(xì)節(jié)的能力,而且能夠使程序員在編程時(shí)便于直接翻譯成程序設(shè)計(jì)語言的源程序。本節(jié)重點(diǎn)對(duì)過程設(shè)計(jì)進(jìn)行討論。

在過程設(shè)計(jì)階段,要對(duì)每個(gè)模塊規(guī)定的功能以及算法的設(shè)計(jì),給出適當(dāng)?shù)乃惴ú妒觥<创_定模塊內(nèi)部的詳細(xì)執(zhí)行過程,包括局部數(shù)據(jù)組織、控制流、每一步具體處理要求和各種實(shí)現(xiàn)細(xì)節(jié)等。其目的是確定應(yīng)該怎樣來具體實(shí)現(xiàn)所要求的系統(tǒng)。

常見的過程設(shè)計(jì)工具如下。

圖形工具:程序流程圖,N-S圖,PAD圖。

表格工具:判定表。

語言工具:PDL(偽碼)。

下面討論其中幾種主要的工具。6.4軟件測(cè)試軟件測(cè)試的目的和定義軟件測(cè)試的準(zhǔn)則軟件測(cè)試方法與技術(shù)綜述軟件測(cè)試的策略6.4.1軟件測(cè)試的目的和意義1990年在IEEE610.12標(biāo)準(zhǔn)中給出了軟件測(cè)試的定義。

(1)在規(guī)定條件下運(yùn)行系統(tǒng)或構(gòu)件的過程:在此過程中觀察和記錄結(jié)果,并對(duì)系統(tǒng)或構(gòu)件的某些方面給出評(píng)價(jià)。

(2)軟件項(xiàng)目的過程:檢測(cè)現(xiàn)有狀況和所需狀況的不同(bug),并評(píng)估軟件項(xiàng)目的特性。

《信息技術(shù)軟件工程術(shù)語》(CB/T11457-2006)中采用了IEEE的定義。定義表明軟件測(cè)試是一個(gè)過程,其目的是評(píng)價(jià)系統(tǒng)或構(gòu)件的某些方面,以評(píng)估是否滿足規(guī)定的需求;評(píng)估項(xiàng)目的特點(diǎn),以驗(yàn)證期望的結(jié)果與實(shí)際的結(jié)果之間有無差別,換句話說,該定義說明了軟件測(cè)試是一項(xiàng)驗(yàn)證和評(píng)估活動(dòng),其目的是基于滿足規(guī)定的需求來保證軟件的質(zhì)量。6.4.1軟件測(cè)試的目的和意義關(guān)于軟件測(cè)試的目的,Grenforl

J.

Myers

在《The

Ant

of

Softrare

Testing》…書3中給出了更深刻的闡述:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程;一個(gè)好的測(cè)試用例是指很可能找到迄今為止尚來發(fā)現(xiàn)的錯(cuò)誤的用例;一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。

Myers的觀點(diǎn)告訴人們測(cè)試要以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能。6.4.2

軟件測(cè)試的準(zhǔn)則鑒于軟件測(cè)試的重要性,要做好軟件測(cè)試,設(shè)計(jì)出有效的測(cè)試方案和好的測(cè)試用例,軟件測(cè)試人員需要充分理解和運(yùn)用軟件測(cè)試的一些基本準(zhǔn)則。

1.所有測(cè)試都應(yīng)追溯到需求

軟件測(cè)試的目的是發(fā)現(xiàn)錯(cuò)誤,而最嚴(yán)重的錯(cuò)誤不外乎是導(dǎo)致程序無法滿足用戶需求的錯(cuò)誤。

2.嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性

軟件測(cè)試應(yīng)當(dāng)制訂明確的測(cè)試計(jì)劃并按照計(jì)劃執(zhí)行。測(cè)試計(jì)劃應(yīng)包括所測(cè)軟件的功能、輸人和輸出、測(cè)試內(nèi)容、各項(xiàng)測(cè)試的目的和進(jìn)度安排、測(cè)試資料、測(cè)可工共、測(cè)試用例的選擇、資源要求、測(cè)試的控制方式和過程等。

3.充分注意測(cè)試中的群集現(xiàn)象

經(jīng)驗(yàn)農(nóng)明,程序中存在錯(cuò)誤的概率與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。這一現(xiàn)象說明,為了提高測(cè)試效率,測(cè)試人員應(yīng)該集中對(duì)付那些錯(cuò)誤群集的程序。6.4.2

軟件測(cè)試的準(zhǔn)則4.程序員應(yīng)避免檢查自己的程序

為了達(dá)到好的測(cè)試效果,應(yīng)該由獨(dú)立的第三方來構(gòu)造測(cè)試。因?yàn)閺男睦韺W(xué)角度講,程序人員或設(shè)計(jì)方在測(cè)試自己的程序時(shí),要采取客觀的態(tài)度是程度不同地存在障礙的。

5.窮舉測(cè)試不可能

所謂窮舉測(cè)試是指把程序所有可能的執(zhí)行路徑都進(jìn)行檢查的測(cè)試。但是,即使規(guī)模較小的程序,其路徑排列數(shù)也是相當(dāng)大的,在實(shí)際測(cè)試過程中不可能窮盡每…·種組合。這說明,測(cè)試只能證明程序中有錯(cuò)誤,不能證明程序中沒有錯(cuò)誤。

6.妥善保存測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便6.4.3

軟件測(cè)試方法與技術(shù)綜述軟件測(cè)試的方法和技術(shù)是多種多樣的。對(duì)于軟件測(cè)試方法和技術(shù),可以從不同的角度加以分類。

若從是否需要執(zhí)行被測(cè)軟件的角度,可以分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試方法。若按照功能劃分,可以分為白盒測(cè)試和黑盒測(cè)試方法。

1.靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試

(1)靜態(tài)測(cè)試

靜態(tài)測(cè)試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等。靜態(tài)測(cè)試可以由人工進(jìn)行,充分發(fā)揮人的邏輯思繼優(yōu)勢(shì),也可以借助軟件工具自動(dòng)進(jìn)行。經(jīng)驗(yàn)表明,使用人工測(cè)試能夠有效地發(fā)現(xiàn)30%到70%的邏輯設(shè)計(jì)和編碼錯(cuò)誤。6.4.3

軟件測(cè)試方法與技術(shù)綜述代碼檢查主要檢查代碼和設(shè)計(jì)的…·致性,包括代碼的邏輯表達(dá)的正確性、代碼結(jié)構(gòu)的合理性等方面。這項(xiàng)工作可以發(fā)現(xiàn)違背程序編寫標(biāo)準(zhǔn)的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風(fēng)格的問題,包括變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結(jié)構(gòu)檢查等內(nèi)容。代碼檢查包括代碼審查、代碼走查、桌面檢查、靜態(tài)分析等具體方式。6.4.3

軟件測(cè)試方法與技術(shù)綜述代碼審查:小組集體閱讀、討論檢查代碼。

代碼走查:小組成員通過用“腦“研究、執(zhí)行程序來檢查代碼。

桌面檢查:由程序員自己檢查自己編寫的程序。程序員在程序通過編譯之后,進(jìn)行單光測(cè)試之前,對(duì)源代碼進(jìn)行分析、檢驗(yàn),并補(bǔ)充相關(guān)文檔,目的是發(fā)現(xiàn)程序的錯(cuò)誤。

靜態(tài)分析:對(duì)代碼的機(jī)械性、程式化的特性分析方法,包括控制流分析、數(shù)據(jù)流分析、接口分析、裝達(dá)式分析。6.4.3

軟件測(cè)試方法與技術(shù)綜述(2)動(dòng)態(tài)測(cè)試

靜態(tài)測(cè)試不實(shí)際運(yùn)行軟件,主要通過人工進(jìn)行。動(dòng)態(tài)測(cè)試是基于計(jì)算機(jī)的測(cè)試,是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程?;蛘哒f,是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果)、并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。

設(shè)計(jì)高效、合理的測(cè)試用例是動(dòng)態(tài)測(cè)試的關(guān)鍵。測(cè)試用例(TetCase)是為測(cè)試設(shè)計(jì)的數(shù)據(jù)。

調(diào)試用例由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù)期輸出結(jié)果兩部分組成。測(cè)試用例的格式為[(輸入值集),(輸出值集)]。6.4.3

軟件測(cè)試方法與技術(shù)綜述2.白盒測(cè)試方法與測(cè)試用例設(shè)計(jì)

白盒測(cè)試方法也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是根據(jù)軟件產(chǎn)品的內(nèi)部工作過程,檢查內(nèi)部成分,以確認(rèn)每種內(nèi)部操作符合設(shè)計(jì)規(guī)格要求。白盒測(cè)試把測(cè)試對(duì)象看作…個(gè)打開的盒子,允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息來設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有的邏輯路徑進(jìn)行測(cè)試。通過在不同點(diǎn)檢查程序的狀態(tài)來了解實(shí)際的運(yùn)行狀態(tài)是否與預(yù)期的一致。所以白盒測(cè)試是在程序內(nèi)部進(jìn)行,主要用于完成軟件內(nèi)部操作的驗(yàn)證。6.4.3

軟件測(cè)試方法與技術(shù)綜述白盒測(cè)試的基本原則是保證所測(cè)模塊中每一獨(dú)立路徑至少執(zhí)行一次;保證所測(cè)模塊所有判斷的每一分支至少執(zhí)行一次;保證所測(cè)模塊每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;驗(yàn)證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。

按照白盒測(cè)試的基本原則,“白盒”法是窮舉路徑測(cè)試。在使用這一方案時(shí),測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測(cè)試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字,但即使每條路徑都測(cè)試了仍然可能有錯(cuò)誤。第一,窮舉路徑測(cè)試決不能資出程序是否違反了設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序;第二,窮舉路徑測(cè)試不可能衰出程序中因遺漏路徑而出錯(cuò);第三,窮舉路徑測(cè)試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。6.4.3

軟件測(cè)試方法與技術(shù)綜述白盒測(cè)試的主要方法有邏輯覆蓋、基本路徑測(cè)試等。

(1)邏輯覆蓋測(cè)試

邏輯覆蓋是泛指一系列以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測(cè)試用例設(shè)計(jì)技術(shù)。通常所指的程序中的邏輯表示有判斷、分支、條件等幾種表示方式。(2)基本路徑測(cè)試

基本路徑測(cè)試的思想和步驟是根據(jù)軟件過程性描述中的控制流程確定程序的環(huán)路復(fù)雜性度量,用此度量定義基本路徑集合,并由此導(dǎo)出一組測(cè)試用例對(duì)每一條驗(yàn)立執(zhí)行路徑進(jìn)行測(cè)試。6.4.3

軟件測(cè)試方法與技術(shù)綜述3.黑盒測(cè)試方法與測(cè)試用例設(shè)計(jì)

黑盒測(cè)試方法也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。黑盒測(cè)試是對(duì)軟件已經(jīng)實(shí)現(xiàn)的功能是否滿足需求進(jìn)行測(cè)試和驗(yàn)證。黑金測(cè)試完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求和功能規(guī)格說明,檢查程序的功能是否符合它的功能說明。所以,黑盒測(cè)試是在軟件接口處進(jìn)行,完成功能驗(yàn)證,黑盒測(cè)試只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫或文件)的完整性。6.4.3

軟件測(cè)試方法與技術(shù)綜述黑盒測(cè)試主要診斷系統(tǒng)功能不對(duì)或遺漏之處、界面上的錯(cuò)誤、數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤、外部數(shù)據(jù)庫訪問錯(cuò)誤、性能錯(cuò)誤、初始化和終止條件鉛誤等。

黑盒測(cè)試方法主要有等價(jià)類劃分法、邊界值分析法、錯(cuò)識(shí)推測(cè)法、因果圖等,主要用于軟件確認(rèn)測(cè)試。(1)等價(jià)類劃分法

等價(jià)類劃分法是一種典型的黑盒測(cè)試方法。它是將程序的所有可能的輸入數(shù)據(jù)劃分成若于部分(若干等價(jià)類),然后從每個(gè)等價(jià)類中選取數(shù)據(jù)作為測(cè)試用例,對(duì)每……個(gè)等價(jià)類,各個(gè)輸入數(shù)據(jù)對(duì)發(fā)現(xiàn)程序中的錯(cuò)誤的概率都是相等的,因此,只需從每個(gè)等價(jià)類中選取…些有代表性的測(cè)試用例進(jìn)行測(cè)試而發(fā)現(xiàn)錯(cuò)誤。6.4.3

軟件測(cè)試方法與技術(shù)綜述使用等價(jià)類劃分法設(shè)計(jì)測(cè)試方案,首先需要?jiǎng)澐州斎爰系牡葍r(jià)類。等價(jià)類包括以下內(nèi)容。

①有效等價(jià)類:合理、有意義的輸入數(shù)據(jù)構(gòu)成的集合。可以檢驗(yàn)程序中符合規(guī)定的功能和性能。

②無效等價(jià)類:不合理、無意義的輸入數(shù)據(jù)構(gòu)成的集合??梢詸z驗(yàn)程序中不符合規(guī)定的功能和性能。

為此,需要研究程序的功能說明,從而確定輸入數(shù)據(jù)的有效等價(jià)類和無效等價(jià)類。

6.4.3

軟件測(cè)試方法與技術(shù)綜述劃分等價(jià)類常用的幾條原則如下。

①若輸入條件規(guī)定了確切的取值范圍,則可劃分出一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類;

②若輸人條件規(guī)定了輸入值的集合(或有“必須如何”的條件),可確定…個(gè)有效等價(jià)類和·個(gè)無效等價(jià)類;

③若輸入條件是一個(gè)布爾量,則可確定…個(gè)有效等價(jià)類和…個(gè)無效等價(jià)類;

④若輸人數(shù)據(jù)是…組值,且程序要對(duì)每個(gè)值進(jìn)行分別處理。可為每個(gè)輸入值確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類;

若規(guī)定了輸入數(shù)據(jù)必須遵守一定的規(guī)則,則可確定一個(gè)有效等價(jià)類和若干個(gè)無效等價(jià)類;

④若已劃分的等價(jià)類中各元素在程序中處理方式不同,則需要將該等價(jià)類進(jìn)一步劃分,即劃分成更小的等價(jià)類。

6.4.3

軟件測(cè)試方法與技術(shù)綜述(2)邊界值分析法

邊界值分析法是對(duì)各種輸入、輸出范圍的邊界情況設(shè)計(jì)測(cè)試用例的方法。

經(jīng)驗(yàn)表明,程序錯(cuò)誤最容易出現(xiàn)在輸入或輸出范圍的邊界處、而不是在輸人范圍的內(nèi)部。因此,針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。

使用邊界值分析方法設(shè)計(jì)測(cè)試用例,確定邊界情況應(yīng)考慮選取正好等于、剛剛大于,或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),這樣發(fā)現(xiàn)程序中錯(cuò)誤的概率會(huì)比較大。

6.4.3

軟件測(cè)試方法與技術(shù)綜述邊界值分析方法的使用要注意以下幾點(diǎn)。

①如果輸人條件規(guī)定了取值范圍或數(shù)據(jù)個(gè)數(shù),則可選擇正好等于邊界值、剛剛在邊界范圍內(nèi)和剛剛超越邊界外的值進(jìn)行測(cè)試;

②針對(duì)規(guī)格說明的每個(gè)輸入條件,使用上述原則:

③對(duì)于有序數(shù)列,選擇第一個(gè)和最后一個(gè)作為測(cè)試數(shù)據(jù)。6.4.4

軟件測(cè)試的策略軟件測(cè)試過程一般按4個(gè)步驟進(jìn)行,即單元測(cè)試、集成測(cè)試、驗(yàn)收測(cè)試(確認(rèn)測(cè)試)和系統(tǒng)測(cè)試。通過這些步驟的實(shí)施來驗(yàn)證軟件是否合格,能否交付用戶使用。

1.單元測(cè)試

單元測(cè)試是對(duì)軟件設(shè)計(jì)的最小單位——模塊(程序單元)進(jìn)行正確性檢驗(yàn)的測(cè)試。單元測(cè)試的目的是發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯(cuò)誤。

單元測(cè)試的依據(jù)是詳細(xì)設(shè)計(jì)說明書和源程序。

單元測(cè)試的技術(shù)可以采用靜態(tài)分析和動(dòng)態(tài)測(cè)試。對(duì)動(dòng)態(tài)測(cè)試通常以白盒動(dòng)態(tài)測(cè)試為主,輔之以黑盒測(cè)試。6.4.4

軟件測(cè)試的策略單元測(cè)試主要針對(duì)模塊的下列5個(gè)基本特性進(jìn)行。

①模塊接口測(cè)試——測(cè)試通過模塊的數(shù)據(jù)流。例如,檢查模塊的輸入?yún)?shù)和輸出參數(shù),全局量、文件屬性與操作等都屬于模塊接口測(cè)試的內(nèi)容。

②局部數(shù)據(jù)結(jié)構(gòu)測(cè)試。例如,檢查局部數(shù)據(jù)說明的一致性,數(shù)據(jù)的初始化,數(shù)據(jù)類型的一致以及數(shù)據(jù)的下溢、上溢等。

③重要的執(zhí)行路徑的檢查。

④出錯(cuò)處理測(cè)試。檢查模塊的錯(cuò)誤處理功能。

⑤影響以上各點(diǎn)及其他相關(guān)點(diǎn)的邊界條件測(cè)試。6.4.4

軟件測(cè)試的策略2.集成測(cè)試

集成測(cè)試是測(cè)試和組裝軟件的過程。它是把模塊在按照設(shè)計(jì)要求組裝起來的同時(shí)進(jìn)行測(cè)試,主要目的是發(fā)現(xiàn)與接口有關(guān)的錯(cuò)誤。集成測(cè)試的依據(jù)是概要設(shè)計(jì)說明書。

集成測(cè)試所涉及的內(nèi)容包括軟件單元的接口測(cè)試、全局?jǐn)?shù)據(jù)結(jié)構(gòu)測(cè)試、邊界條件和非法輸入的測(cè)試等。6.4.4

軟件測(cè)試的策略集成測(cè)試時(shí)將模塊組裝成程序通常采用兩種方式:非增量方式組裝與增量方式組裝。非增量方式,即非漸增式集成,也稱為一次性組裝方式,是將已經(jīng)測(cè)試好的每一個(gè)軟件單元一次組裝在一起再進(jìn)行整體測(cè)試。6.4.4

軟件測(cè)試的策略增量方式,即漸增式集成,是將已經(jīng)測(cè)試好的模塊逐步組裝成較大系統(tǒng),在組裝過程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過程中產(chǎn)生的問題。最后通過增值,逐步組裝到所要求的軟件系統(tǒng)。

增量方式包括自頂向下,自底向上,自顧向下與自底向上相結(jié)合的混合增量方法。6.4.4

軟件測(cè)試的策略(1)自頂問下的增量方式

將模塊按系統(tǒng)程序結(jié)構(gòu),從主控模塊(主程序)開始,沿控制層次自頂向下地逐個(gè)把模塊連接起來。自頂向下的增量方式在測(cè)試過程中能較早地驗(yàn)證主要的控制和判斷點(diǎn)。

自頂向下集成的過程與步驟如下。

①主控模塊作為測(cè)試驅(qū)動(dòng)器。直接附屬于主控模塊的各模塊全都用樁模塊代替;

②按照一定的組裝次序,每次用一個(gè)真模塊取代一個(gè)附屬的樁模塊;

③當(dāng)裝入每個(gè)真模塊時(shí)都要進(jìn)行測(cè)試;

④做完每一組測(cè)試后再用一個(gè)真模塊代替另一個(gè)樁模塊;可以進(jìn)行回歸測(cè)試(重新再做過去做過的全部或部分測(cè)試),以便確定沒有新的錯(cuò)誤發(fā)生。6.4.4

軟件測(cè)試的策略(2)自底向上的增量方式

自底向上集成測(cè)試方法是從軟件結(jié)構(gòu)中最底層的、最基本的軟件單元開始進(jìn)行集成和測(cè)試。

在模塊的測(cè)試過程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。由于在逐步向上組裝過程中下層模塊總是存在的,因此,不再需要樁模塊,但是需要調(diào)用這些模塊的驅(qū)動(dòng)模塊。

自底向上集成的過程與步驟如下。

①低層的模塊組成簇,以執(zhí)行某個(gè)特定的軟件子功能。

②編寫…個(gè)驅(qū)動(dòng)模塊作為測(cè)試的控制程序,和被測(cè)試的簇連在一起,負(fù)責(zé)安排測(cè)試用例的輸入及輸出。

③對(duì)簇進(jìn)行測(cè)試。6.4.4

軟件測(cè)試的策略(3)混合增量方式

自頂向下增量的方式和自底向上增量的方式各有優(yōu)缺點(diǎn),一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。

自頂向下測(cè)試的主要優(yōu)點(diǎn)是能較早顯示出整個(gè)程序的輪廓,主要缺點(diǎn)是,當(dāng)測(cè)試上層模時(shí)使用樁模塊較多,很難模擬出真實(shí)模塊的全部功能,使部分測(cè)試內(nèi)容被迫推遲,直至換上真實(shí)模塊后再補(bǔ)充測(cè)試。

自底向上測(cè)試從下層模塊開始,設(shè)計(jì)測(cè)試用例比較容易,但是在測(cè)試的早期不能顯示出程序的輪廓。

針對(duì)自顧向下和自底向上測(cè)試方法各自的優(yōu)點(diǎn)和不足,人們提出了自項(xiàng)向下和自底向上相結(jié)合、從兩頭向中間通近的混合式組裝方法,被形象稱為“三明治“集成方法。這種方式,結(jié)合考慮軟件總體結(jié)構(gòu)的良好設(shè)計(jì)原則,在程序結(jié)構(gòu)的高層使用自頂向下方式,在程序結(jié)構(gòu)的低層使用自底向上方式。在這種方法中,樁模塊和驅(qū)動(dòng)模塊都需要,但是其開發(fā)工作比較小,不過相應(yīng)的其代價(jià)就是一定程度上增加了定位的難度。6.4.4

軟件測(cè)試的策略3.驗(yàn)收測(cè)試

驗(yàn)收測(cè)試分為Alpha

測(cè)試和Beta測(cè)試,可能還包括第二方測(cè)試。而確認(rèn)測(cè)試…般指的是Bela測(cè)試,這里主要講確認(rèn)測(cè)試。

確認(rèn)測(cè)試的任務(wù)是驗(yàn)證軟件的功能和性能及其他特性是否滿足了需求規(guī)格說明中確定的各種需求,以及軟件配置是否完全、正確。

確認(rèn)測(cè)試的實(shí)施首先運(yùn)用黑盒測(cè)試方法,對(duì)軟件進(jìn)行有效性測(cè)試,即驗(yàn)證被測(cè)軟件是否滿足需求規(guī)格說明確認(rèn)的標(biāo)準(zhǔn)。復(fù)審的目的在于保證軟件配置齊全、分類有序,以及軟件配置所有成分的完備性、一致性、準(zhǔn)確性和可操作性,并且包括軟件維護(hù)所必需的細(xì)節(jié)。6.4.4

軟件測(cè)試的策略4.系統(tǒng)測(cè)試

系統(tǒng)測(cè)試是將通過測(cè)試確認(rèn)的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元案,與計(jì)算機(jī)硬件。

外設(shè)、支持軟件,數(shù)據(jù)和人員等其他系統(tǒng)元素組合在…起,在實(shí)際運(yùn)行(使用)環(huán)境下對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的集成測(cè)試和確認(rèn)測(cè)試。由此可知,系統(tǒng)測(cè)試必須在目標(biāo)環(huán)境下運(yùn)行,其功用在十評(píng)估系統(tǒng)環(huán)境下軟件的性能,發(fā)現(xiàn)和捕提軟件中潛在的錯(cuò)誤。

系統(tǒng)測(cè)試的目的是在真實(shí)的系統(tǒng)工作環(huán)境下檢驗(yàn)軟件是否能與系統(tǒng)正確連接,發(fā)現(xiàn)軟件與系統(tǒng)需求不一致的地方。

系統(tǒng)測(cè)試的具體實(shí)施一般包括功能測(cè)試、性能測(cè)試、操作測(cè)試、配置測(cè)試、外部接口測(cè)試、安全性測(cè)試等。6.5程序的測(cè)試基本概念軟件調(diào)試方法6.5.1

基本概念1.程序調(diào)試的基本步驟

從錯(cuò)誤的外部表現(xiàn)形式入手,研究有關(guān)部分的程序,確定程序中出錯(cuò)位置,找出錯(cuò)誤的內(nèi)在原因。確定錯(cuò)誤位置占據(jù)了軟件調(diào)試絕大部分的工作量。

(1)錯(cuò)誤定位

從技術(shù)角度來看,錯(cuò)誤的特征和查找錯(cuò)誤的難度如下。

①現(xiàn)象與原因所處的位置可能相距很遠(yuǎn)。就是說,現(xiàn)象可能出現(xiàn)在程序的……個(gè)部位.而原因可能在離此很遠(yuǎn)的另一個(gè)位置。高耦合的程序結(jié)構(gòu)中這種情況更為明顯。

②當(dāng)糾正其他錯(cuò)誤時(shí),這一錯(cuò)誤所表現(xiàn)出的現(xiàn)象可能會(huì)消失或暫時(shí)性消失,但并未實(shí)際排除。

③現(xiàn)象可能并不是由錯(cuò)誤引起的(如舍人誤差)。

④現(xiàn)象可能是由于一些不容易發(fā)現(xiàn)的人為錯(cuò)誤引起的。

⑤錯(cuò)誤現(xiàn)象可能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論