




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、3.1 3.1 軟件工程概述軟件工程概述3.2 3.2 結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法3.3 3.3 結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計方法3.4 3.4 軟件測試軟件測試3.5 3.5 程序調(diào)試程序調(diào)試3.1軟件工程概述軟件工程概述 3.1.1軟件定義與軟件的特點軟件定義與軟件的特點 計算機軟件計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合程序、數(shù)據(jù)及相關(guān)文檔的完整集合。軟件的特點:軟件的特點: 軟件是一種邏輯實體,而不是物理實體,具有抽象性; 軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程。一旦研制成功,可以多次拷貝; 軟件在運行、使用期間不存在磨損、老化問題; 軟
2、件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制; 軟件復(fù)雜性高,成本昂貴; 軟件開發(fā)涉及許多的社會因素。 軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(工具軟件)撐軟件(工具軟件)。 3.1.2軟件危機與軟件工程軟件危機與軟件工程 軟件工程概念的出現(xiàn)源自軟件危機。所謂軟件危機是泛指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。實際上,幾乎所有的軟件都不同程度地存在這些問題。 為了消除軟件危機,通過認真研究解決軟件危機的方法,認識到軟件工程是使計算機軟件走向工程科學的途徑,逐步形成了軟件工程的概念,開辟了工程學的新興領(lǐng)域-軟件工程學。軟件工程就是試軟件
3、工程就是試圖用工程、科學和數(shù)學的原理與方法研制、維護計圖用工程、科學和數(shù)學的原理與方法研制、維護計算機軟件的有關(guān)技術(shù)及管理方法算機軟件的有關(guān)技術(shù)及管理方法。 關(guān)于軟件工程的定義軟件工程的定義,國標(GB)中指出,軟件工程是應(yīng)用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。 軟件工程包括軟件工程包括3 3個要素個要素,即方法、工具和過程方法、工具和過程。方法是完成軟件工程項目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。 軟件工程的核心思想軟件工程的核心思想是把軟件產(chǎn)品(就像其他工業(yè)產(chǎn)品一樣)看作是一個工程產(chǎn)品來處理。把需求計劃
4、、可行性研究、工程審核、質(zhì)量監(jiān)督等工程化的概念引入到軟件生產(chǎn)當中,以期達到工程項目的工程項目的三個基本要素:進度、經(jīng)費和質(zhì)量的目標三個基本要素:進度、經(jīng)費和質(zhì)量的目標。 3.1.3軟件工程過程與軟件生命周期軟件工程過程與軟件生命周期 1.1.軟件工程過程軟件工程過程 軟件工程過程是指為獲得軟件產(chǎn)品,在軟件工具支持下由軟件工程師完成的一系列軟件工程活動?;谶@個方面, 軟件工程過程通常包括:軟件規(guī)格說明、軟件開發(fā)、軟件確認、軟件演進4種基本活動。 2.軟件生命周期軟件生命周期 軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期軟件生命周期。如圖16-1所示,從該圖中,還可以看到軟
5、件生命周期,也可以分為軟件定義軟件定義、軟件開軟件開發(fā)及軟件運行維護發(fā)及軟件運行維護三個階段。通常,軟件生命周期的主要六個活動階段是:可行性研究與計劃制定、需求分析、軟件設(shè)計、軟件實現(xiàn)、軟件測試、運行和維護。 圖16-1 軟件生命周期3.1.4軟件工程的目標與原則軟件工程的目標與原則 1. 軟件工程的目標軟件工程的目標 指在給定成本、進度的前提下,開發(fā)出具有有效性、具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品需求的產(chǎn)品。 基于軟件工程的目標,
6、軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)軟件開發(fā)技術(shù)和軟件工程管理軟件工程管理。 2.軟件工程的原則軟件工程的原則 為了達到軟件工程目標,在軟件開發(fā)過程中,必須遵循的基本原則基本原則是:抽象、信息隱蔽、模塊化、抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性及可驗證性局部化、確定性、一致性、完備性及可驗證性。 3.1.5軟件開發(fā)工具與軟件開發(fā)環(huán)境軟件開發(fā)工具與軟件開發(fā)環(huán)境 1. 軟件開發(fā)工具軟件開發(fā)工具 軟件開發(fā)工具的發(fā)展是從單項工具的開發(fā)逐步向集單項工具的開發(fā)逐步向集成工具發(fā)展成工具發(fā)展的,軟件開發(fā)工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。同時,軟件開發(fā)的有效
7、應(yīng)用也必須得到相應(yīng)工具的支持,否則方法將難以有效的實施。 2.軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境 該環(huán)境是全面支持軟件開發(fā)全過程的軟件工具集合全面支持軟件開發(fā)全過程的軟件工具集合。這些軟件工具按照一定的方法或模式組合起來,支持軟件生命周期內(nèi)的各個階段和各項任務(wù)的完成。計算計算機輔助軟件工程機輔助軟件工程是當前軟件開發(fā)環(huán)境的發(fā)展方向。 3.2結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法 結(jié)構(gòu)化方法包括已經(jīng)形成了配套的結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化編程方法。結(jié)構(gòu)化分析方法是結(jié)構(gòu)化程序設(shè)計理論在軟件需求分析階段的運用。3.2.13.2.1需求分析與需求分析方法需求分析與需求分析方法 1. 需求分析需求分析 軟件需求是
8、指用戶對目標軟件系統(tǒng)在功能、行為、性能、設(shè)計約束等方面的期望。需求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求的過程。需求分析將創(chuàng)建所需的數(shù)據(jù)模型、功能模型和控制模型。 1 1)需求分析的定義)需求分析的定義 IEEE軟件工程標準詞匯表對需求分析定義對需求分析定義如下: 用戶解決問題或達到目標所需的條件或權(quán)能; 系統(tǒng)或系統(tǒng)部件要滿足合同、標準、規(guī)范或其他正式規(guī)定文檔所需具有的條件或權(quán)能; 一種反映 或所描述的條件或權(quán)能的文檔說明 2 2)需求分析階段的工作)需求分析階段的工作 需求分析階段的工作,可以概括為四個方面:需求需求獲取、需求分析、編寫需求規(guī)格說明書獲取、需求分析、編寫需求規(guī)格說明書 、
9、需求評審、需求評審。 2. 需求分析方法需求分析方法 常見的需求分析方法有結(jié)構(gòu)化分析結(jié)構(gòu)化分析方法方法和面向?qū)γ嫦驅(qū)ο蟮姆治龇椒ㄏ蟮姆治龇椒▋煞N。 1 1)結(jié)構(gòu)化分析方法)結(jié)構(gòu)化分析方法 該方法主要包括的內(nèi)容內(nèi)容如下:面向數(shù)據(jù)流的結(jié)構(gòu)面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法;面向數(shù)據(jù)結(jié)構(gòu)的化分析方法;面向數(shù)據(jù)結(jié)構(gòu)的JacksonJackson方法;面向方法;面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法。 2 2)面向?qū)ο蟮姆治龇椒ǎ┟嫦驅(qū)ο蟮姆治龇椒?該方法正處于發(fā)展之中,目前尚不大成熟與完善。 16.2.216.2.2結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法 1. 結(jié)構(gòu)化分析方法綜述結(jié)構(gòu)化分析
10、方法綜述 結(jié)構(gòu)化分析方法是20世紀70年代中期倡導(dǎo)的基于功能分解的分析方法,其目的是幫助弄清用戶對軟件的需求。 結(jié)構(gòu)化分析方法的實質(zhì)實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。結(jié)構(gòu)化分析的步驟:(1)通過對用戶調(diào)查,又軟件的需求為線索,獲得當前系統(tǒng)的具體模型(2)去年具體模型中非本質(zhì)因素,抽象出邏輯模型(3)根據(jù)特點分析當前與目標系統(tǒng)的差距,建立目標系統(tǒng)的邏輯模型(4)完善目標系統(tǒng)并之補充細節(jié),寫出目標系統(tǒng)的軟件需求規(guī)格說明(5)評審直到確認完全符合用戶對軟件的需求 2. 結(jié)構(gòu)化分析的常用工具結(jié)構(gòu)化分析的常用工具 1 1)數(shù)據(jù)
11、流圖)數(shù)據(jù)流圖 數(shù)據(jù)流圖是描述數(shù)據(jù)處理過程的工具,是需求的邏輯模型的圖形表示,它從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。直接支持系統(tǒng)的功能建模。 數(shù)據(jù)流圖中的主要圖形元素如圖16-2所示。圖16-2 數(shù)據(jù)流圖中的主要元素 建立數(shù)據(jù)流圖的步驟如下: 1) 由外向里;先畫系統(tǒng)的輸入輸出,然后畫系統(tǒng)的內(nèi)部。 2) 自頂向下;順序完成頂層、中間層、底層數(shù)據(jù)流圖。 3) 逐層分解。例如例如,某銀行取款業(yè)務(wù)的數(shù)據(jù)流圖,如圖16-3所示。 圖16-3 銀行取款業(yè)務(wù)的數(shù)據(jù)流圖 2 2)數(shù)據(jù)字典)數(shù)據(jù)字典 數(shù)據(jù)字典是對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,并包含對數(shù)據(jù)元素精確的、嚴
12、格的定義,使用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結(jié)果有共同的理解。數(shù)據(jù)字典把不同的需求文檔和分析模型緊密地結(jié)合在一起,與各模型的圖形表示配合,能清楚地表達數(shù)據(jù)處理的要求。 在數(shù)據(jù)字典的編制過程中,常使用定義式方式描述數(shù)據(jù)結(jié)構(gòu)。常用的定義式符號= 表示“等于”,“定義為”,“由什么構(gòu)成”| 表示“或”+ 表示“與”,“和” 例如,例如,銀行取款業(yè)務(wù)的數(shù)據(jù)流圖中,存儲文件“存折”的數(shù)據(jù)字典定義如下:存折=戶名+所號+賬戶+開戶日+性質(zhì)+(印密)+1存取行50 存折由六數(shù)據(jù)項組成存折由六數(shù)據(jù)項組成, ,密印可選,存取密印可選,存取1 1至至5050處處戶名=2字母24 戶名由戶名由2
13、2至至2424個字母組成個字母組成所號=“001”.“999” 所號可為所號可為“001001”、“002002”、“999999”nm 表示“重復(fù)”,即括號中的項要重復(fù)若干次,n,m是重復(fù)次數(shù)的上下限() 表示“可選”,即括號中的項可以沒有* 表示“注釋”. 連接符賬號=“00000001”.“99999999”開戶日=年 + 月 + 日 開戶日由年月日構(gòu)成開戶日由年月日構(gòu)成性質(zhì)=“1” .“6” 有六類儲戶,如有六類儲戶,如1 1示普通戶、示普通戶、5 5示工資戶示工資戶印密=“0” 印密在存折上不顯示印密在存折上不顯示存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核日期=年+月+日年
14、=“00”.“99”月=“01”.“12”日=“01”.“31” 摘要=1字母4支出=金額 金額=“0000000.01”.“9999999.99”操作=“00001”.“99999” 3)判定樹)判定樹 使用判定樹進行描述時,應(yīng)先從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹。 例如例如,某貨物托運管理系統(tǒng)中,對發(fā)貨情況的處理要依賴檢查發(fā)貨單,檢查發(fā)貨單受貨物托運金額、欠款等條件的約束,可以使用類似分段函數(shù)的形式來描述這些約束和處理。對這種約束條件的描述,如果使用自然語言,表達易出現(xiàn)不準確
15、和不清晰。如果使用如圖使用如圖16-416-4所示例子中的判定樹來描述所示例子中的判定樹來描述,則簡捷清晰。 圖16-4 “檢查發(fā)貨單”判定樹 4 4)判定表)判定表 判定表與判定樹相似,當數(shù)據(jù)流圖中的加工要依賴于多個邏輯條件的取值,使用判定表描述比較適宜。 判定表由四部分組成,如圖16-5所示。 圖16-5 判定表組成 圖16-6為“檢查發(fā)貨單”判定表,其中“”表示滿足對應(yīng)條件項時執(zhí)行的操作。 圖中的基本條件項基本條件項,列出了各種可能的條件;條條件項件項,列出了各種可能的條件組合;基本動作項基本動作項,它列出了所有的操作;動作項動作項,它列出在對應(yīng)的條件組合下所選的操作。 1234條件 發(fā)
16、貨單金額 $500 $500 $500 $500 賒欠情況 60天 60天 60天60天 操作不發(fā)出批準書 發(fā)出批準書 發(fā)出發(fā)貨單 發(fā)出賒欠報告 圖16-6 “檢查發(fā)貨單”判定表 判定表或判定樹是以圖形式形式清晰描述數(shù)據(jù)流圖的加工邏輯。利用它們便于直接映射到程序代碼。 16.2.3 軟件需求規(guī)格說明書軟件需求規(guī)格說明書 軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。1.軟件需求規(guī)格說明書的作用軟件需求規(guī)格說明書的作用 軟件需求規(guī)格說明書的作用是: 便于用戶、開發(fā)人員進行理解和交流。 反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)。 作為確認測試和驗收的依據(jù)。2
17、.軟件需求規(guī)格說明書的內(nèi)容軟件需求規(guī)格說明書的內(nèi)容軟件需求規(guī)格說明書所包括的內(nèi)容和書寫框架如下: 一、概述二、數(shù)據(jù)描述 . 數(shù)據(jù)流圖 . 數(shù)據(jù)字典 . 數(shù)據(jù)接口說明 . 內(nèi)部接口三、功能描述 . 功能 . 處理說明 . 設(shè)計的限制 四、 性能描述 . 性能參數(shù) . 測試種類 . 預(yù)期的軟件響應(yīng) . 應(yīng)考慮的特殊問題五、參考文獻目錄 六、附錄其中,概述是從系統(tǒng)的角度描述軟件的目標和任務(wù)。 3.3 結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計方法 3.3.1軟件設(shè)計的基本概念軟件設(shè)計的基本概念 1. 軟件設(shè)計的基礎(chǔ)軟件設(shè)計的基礎(chǔ) 軟件設(shè)計是一個把軟件需求轉(zhuǎn)換為軟件表示的過程。其基本目標是用比較抽象概括的方式確定目標系
18、統(tǒng)如何完成預(yù)定的任務(wù)。 從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計、過程設(shè)計。 軟件設(shè)計的一般過程是:軟件設(shè)計是一個迭代的過程;先進行高層次的結(jié)構(gòu)設(shè)計;后進行低層次的過程設(shè)計;穿插進行數(shù)據(jù)設(shè)計和接口設(shè)計。 2. 軟件設(shè)計的基本原理軟件設(shè)計的基本原理 軟件設(shè)計遵循軟件工程的基本目標和原則,在軟件設(shè)計中應(yīng)遵循以下原則: 1 1)抽象抽象:把事物本質(zhì)的共同特性提取出來而不考慮其他細節(jié)。 2 2)模塊化模塊化:指把一個待開發(fā)的軟件分解成若干小的簡單的部分。如VBA中的子過程、函數(shù)過程等。 3 3)信息隱蔽信息隱蔽:指在一個模塊內(nèi)包含的信息,對于不需要這些信息的其他模塊來說是不能訪問的
19、。 4 4)模塊獨立性模塊獨立性:指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少、接口簡單。 模塊的獨立程度是評價設(shè)計好壞的重要度量標準。衡量軟件的模塊獨立性使用耦合性和內(nèi)聚性兩個定性的度量標準。 內(nèi)聚性:內(nèi)聚性:內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。一個模塊的內(nèi)聚性越強則該模塊的獨立性越強。 耦合性:耦合性:耦合性是模塊間互相連接的緊密程度的度量。取決于各個模塊之間接口的復(fù)雜度等。一個模塊與其他模塊的耦合性越強,則其模塊獨立性就越弱 3.3.結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計方法 結(jié)構(gòu)化設(shè)計方法的基本思想是將軟件設(shè)計成由相對獨立、單一功能的模塊組成的結(jié)構(gòu)。 3.3.
20、2 概要設(shè)計概要設(shè)計 1.1.概要設(shè)計的任務(wù)概要設(shè)計的任務(wù) 軟件概要設(shè)計的基本任務(wù)是:設(shè)計軟件系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)設(shè)計、編寫概要設(shè)計文檔和概要設(shè)計文檔評審。 1 1)設(shè)計軟件系統(tǒng)結(jié)構(gòu))設(shè)計軟件系統(tǒng)結(jié)構(gòu) 在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu),而在概要設(shè)計階段,需要進一步分解,劃分為模塊以及模塊的層次結(jié)構(gòu)。 2 2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)設(shè)計)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)設(shè)計 數(shù)據(jù)設(shè)計是實現(xiàn)需求定義和規(guī)格說明過程中提出的數(shù)據(jù)對象的邏輯表示。 3)編寫概要設(shè)計文檔)編寫概要設(shè)計文檔 在概要設(shè)計階段,需要編寫的文檔有:概要設(shè)計說明書、數(shù)據(jù)設(shè)計說明書、集成測試計劃等。 4)概要設(shè)計文檔評審)概要設(shè)計文檔評審 在概要設(shè)
21、計中,對設(shè)計部分是否完整地實現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性、各部分之間的一致性等都要進行評審,以免在以后的設(shè)計中出現(xiàn)大的問題而返工。 常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖,也稱程序結(jié)構(gòu)圖。結(jié)構(gòu)圖的基本圖符如圖16-7所示。根據(jù)結(jié)構(gòu)化設(shè)計思想,結(jié)構(gòu)圖構(gòu)成的基本形式如圖16-8所示。 一般模塊一般模塊 數(shù)據(jù)信息數(shù)據(jù)信息 控制信息控制信息圖圖 16-7 結(jié)構(gòu)圖基本符號結(jié)構(gòu)圖基本符號 基本形式 順序形式 重復(fù)形式 選擇形式 圖 16-8 結(jié)構(gòu)圖構(gòu)成的基本形式 A A B B C D A B A B C 2. 面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方
22、法 面向數(shù)據(jù)流的設(shè)計方法定義了一些不同的映射方法, 利用這些映射方法可以把數(shù)據(jù)流圖變換成結(jié)構(gòu)圖表示的軟件結(jié)構(gòu)。下面先了解數(shù)據(jù)流圖表示的數(shù)據(jù)處理的類型,然后針對不同類型分別進行分析處理。 1 1)數(shù)據(jù)流類型)數(shù)據(jù)流類型 典型的數(shù)據(jù)流類型有兩種: 變換型和事務(wù)型變換型和事務(wù)型。 變換型:變換型:變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。變換型數(shù)據(jù)處理問題的工作過程大致分為三步,如圖16-9所示。變換型數(shù)據(jù)流圖映射的結(jié)構(gòu)圖如圖16-10所示。 輸入 中心變換 輸出 圖 16-9 變換型數(shù)據(jù)流結(jié)構(gòu)的
23、組成取得數(shù)據(jù)變換數(shù)據(jù)輸出數(shù)據(jù) B C B C 圖16-10 變換型數(shù)據(jù)流系統(tǒng)結(jié)構(gòu)圖主控模塊輸入數(shù)據(jù)變換中心輸出數(shù)據(jù)事務(wù)型:事務(wù)型:在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流, 它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。事務(wù)型數(shù)據(jù)流如圖16-11 所示。在一個事務(wù)型數(shù)據(jù)流中,事務(wù)中心接收數(shù)據(jù),分析每個事務(wù)以確定它的類型,根據(jù)事務(wù)類型選取一條活動通路。事務(wù)型數(shù)據(jù)流圖映射的機構(gòu)圖如圖16-12所示。 輸入流 圖16-11 事務(wù)型數(shù)據(jù)流結(jié)構(gòu)事 務(wù) 處 理 中心事務(wù)n事務(wù)1事務(wù)2 圖16-12 事務(wù)型數(shù)據(jù)流系統(tǒng)結(jié)構(gòu)圖 事務(wù)中心 事務(wù)調(diào)度 輸出結(jié)果 讀入分析輸入流 事務(wù)1
24、 事務(wù)2 事務(wù)n 2 2)面向數(shù)據(jù)流設(shè)計方法的設(shè)計過程)面向數(shù)據(jù)流設(shè)計方法的設(shè)計過程 第第1步:步:分析、確認數(shù)據(jù)流圖的類型,區(qū)分是事務(wù)型還是變換型。 第第2 2步:步:說明數(shù)據(jù)流的邊界。 第第3步:步:把數(shù)據(jù)流圖映射為程序結(jié)構(gòu)。對于事務(wù)流區(qū)分事務(wù)中心和數(shù)據(jù)接收通路,將它映射成事務(wù)結(jié)構(gòu),對于變換流,區(qū)分輸出和輸入分支,并將其映射成變換結(jié)構(gòu)。 第第4 4步:步:根據(jù)設(shè)計準則對產(chǎn)生的結(jié)構(gòu)進行細化和求精 3.3.3 詳細設(shè)計詳細設(shè)計 詳細設(shè)計的任務(wù),是為系統(tǒng)結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。常見工具有:圖形工具:圖形工具:程序流程圖、N-S
25、、PAD、HIPO;表格工具:表格工具:判定表;語言工具:語言工具:PDL(偽碼)。 下面討論其中幾種主要的工具: 1.1.程序流程圖程序流程圖 程序流程圖是一種傳統(tǒng)的、應(yīng)用廣泛的軟件過程設(shè)計表示工具,通常也稱為程序框圖。 構(gòu)成程序流程圖的最基本圖符及含義如圖16-13 所示;5種控制結(jié)構(gòu)(順序、選擇、先判斷循環(huán)、后判斷循環(huán)、多分支選擇結(jié)構(gòu))見圖16-14。 或 控制流 加工步驟 邏輯條件 圖 16-13 程序流程圖的基本圖符 通過把程序流程圖的5種基本控制結(jié)構(gòu)相互組合或嵌套,可以構(gòu)成任何復(fù)雜的程序流圖。 F =1 T F T T =n F 順序結(jié)構(gòu) 選擇結(jié)構(gòu) 先判斷重復(fù) 后判斷重復(fù) 多分支選
26、擇 圖16-14 程序流程圖構(gòu)成的5種控制結(jié)構(gòu) 2. N-S圖圖 N-SN-S圖的基本圖符及表示的圖的基本圖符及表示的5 5種基本控制結(jié)構(gòu)如圖種基本控制結(jié)構(gòu)如圖16-1516-15所示。所示。 例如,例如,下面是簡單托運貨物運費計算的問題。 設(shè)貨物重量x,客戶信息y,輸入x,y后,計算運費的具體要求是:如果0 x15,則用公式1計算,循環(huán)3次完成同樣的“記帳” 和“輸出”操作。然后程序結(jié)束; 如果015,則用公式2計算后,循環(huán)3次完成同樣的“記帳”和 “輸出”操作。然后程序結(jié)束。 該問題程序的程序N-S圖描述如圖16-16所示。 3. PAD圖圖 PAD圖是問題分析圖的英文縮寫。PAD圖的基本
27、圖符及表示的5 種基本控制結(jié)構(gòu),如圖16-17所示。上述托運貨物運費計算問題程序的PAD圖如圖16-18所示。 4. 過程設(shè)計語言(過程設(shè)計語言(PDL) PDL 也稱為結(jié)構(gòu)化的英語和偽碼,它是一種混合語言,采用英語的詞匯和結(jié)構(gòu)化程序設(shè)計語言。 用PDL表示的基本控制結(jié)構(gòu)中常用詞匯如下: 順序:順序: 條件:條件:IF/THEN/ELSE/ENDIF 循環(huán):循環(huán):DO WHILE/ENDDO 循環(huán):循環(huán):REPEAT UNTIL/ENDREPEAT 分支:分支:CASE_OF/WHEN/SELECT/WHEN/ SELECT/ENDCASE 例如,例如,上述托運貨物運費計算問題的程序描述如下,
28、它是類似C語言的PDL。 count( );/* 計算運費計算運費 */ 輸入x;輸入y;if (0 x15) 公式2計算;call sub;sub( ); for ( i=1,3,i+) do 記賬;輸出;3.4 軟件測試軟件測試 軟件測試是保證軟件質(zhì)量的重要手段,其主要過程涵蓋了整個軟件生命期的過程,包括需求定義階段的需求測試、編碼階段的單元測試、集成測試以及后期的確認測試、系統(tǒng)測試,驗證軟件是否合格、能否交付用戶使用等。 3.4.1軟件測試的目的軟件測試的目的 軟件測試的目的如下: 軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程; 一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例; 一
29、個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。 顯然,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。 3.4.2 軟件測試的準則軟件測試的準則 軟件測試要設(shè)計出有效的測試方案和好的測試用例,軟件測試人員要充分理解和運用如下軟件測試準則: 1 1)所有測試都應(yīng)追溯到需求; 2 2)嚴格執(zhí)行測試計劃,排除測試的隨意性; 3 3)充分注意測試中的群集現(xiàn)象(指錯誤群集的程序); 4 4)程序員應(yīng)避免檢查自己的程序; 5 5)窮舉測試(指把程序所有可能的執(zhí)行路徑都進行檢查的測試)不可能; 6 6)妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。 3.4.3 軟件測試技術(shù)與方法
30、綜述軟件測試技術(shù)與方法綜述 軟件測試的方法和技術(shù)是多種多樣的。若從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試方法。若按照功能劃分可以分為白盒測試和黑盒測試方法。 1. 1.靜態(tài)測試靜態(tài)測試 靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等。靜態(tài)測試可以由人工進行,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進行。經(jīng)驗表明,使用人工測試能夠有效地發(fā)現(xiàn)30% 到70% 的邏輯設(shè)計和編碼錯誤。 2.2.動態(tài)測試動態(tài)測試 動態(tài)測試是基于計算機的測試,是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程?;蛘哒f,是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例,并利用這些用例去運行程序,
31、以發(fā)現(xiàn)程序錯誤的過程。 測試用例的格式為:測試用例的格式為:(輸入值集輸入值集),(),(輸出值集輸出值集) 2.2.白盒測試方法與測試用例設(shè)計白盒測試方法與測試用例設(shè)計 該方法是根據(jù)軟件產(chǎn)品的內(nèi)部工作過程檢查內(nèi)部根據(jù)軟件產(chǎn)品的內(nèi)部工作過程檢查內(nèi)部成分,以確認每種內(nèi)部操作符合設(shè)計規(guī)格要求成分,以確認每種內(nèi)部操作符合設(shè)計規(guī)格要求。白盒測試把測試對象看作一個打開的盒子,允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息來設(shè)計或選擇測試用例,對程序所有的邏輯路徑進行測試。 白盒測試的主要方法有邏輯覆蓋、基本路徑測試邏輯覆蓋、基本路徑測試等。 1 1)邏輯覆蓋測試)邏輯覆蓋測試 邏輯覆蓋是泛指一系列以程序內(nèi)
32、部的邏輯結(jié)構(gòu)為泛指一系列以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計技術(shù)。通?;A(chǔ)的測試用例設(shè)計技術(shù)。通常邏輯覆蓋有5種。 語句覆蓋:語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。例例16-1 16-1 按照語句覆蓋的測試要求,對圖16-19的程序流程圖對應(yīng)的程序,設(shè)計測試用例1和測試用例2。 語句覆蓋是邏輯覆蓋中基本的覆蓋,尤其對單元測試來說。但是語句覆蓋往往沒有關(guān)注判斷中的條件有可能隱含的錯誤。 begin 輸入i,j i j x=j x=i 輸出i,j,xend測試用例1: 輸入 輸出(i,j) (i,j,x)(8,8) (8,8,8)測試用例2: 輸入 輸出(i,j)
33、 (i,j,x)(8,16) (8, 16,16)圖圖16-1916-19 例16-1的程序流程圖與測試用例 判斷判斷- -條件覆蓋:條件覆蓋:設(shè)計足夠的測試用例,使判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷的所有可能取值分支至少執(zhí)行一次。 路徑覆蓋:路徑覆蓋:執(zhí)行足夠的測試用例,使程序中所有可能的路徑都至少經(jīng)歷一次。 判斷覆蓋:判斷覆蓋:使設(shè)計的測試用例,保證程序中每個判斷的每個取值分支(T或F)至少經(jīng)歷一次。 條件覆蓋:條件覆蓋:設(shè)計的測試用例保證程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。 2 2)基本路徑測試)基本路徑測試 基本路徑測試根據(jù)軟件過程性描述中的控制流程確定
34、程序的環(huán)路復(fù)雜性度量,用此度量定義基本路徑集合,并由此導(dǎo)出一組測試用例對每一條獨立執(zhí)行路徑進行測試。例例3-53-5設(shè)有如圖 16-23所示的程序流程圖表示的程序。 a T c F T b F d e f 圖 16-23 程序流程圖A 1B =0輸出A輸出B輸出A與Bend 對圖16-23 確定程序的環(huán)路復(fù)雜度為3。方法是:環(huán)路復(fù)雜度=程序流程圖中的判斷框個數(shù)+1 。這里環(huán)路復(fù)雜度的值即為設(shè)計測試用例的基本路徑數(shù),表 16-3列出的一組測試用例,覆蓋的基本路徑是: abf, acef, acdf。 測試用例 通過路徑 (A=-3, B=0), (輸出略) ( abf) ( A=4, B=0),
35、 (輸出略) (acef) ( A=4, B=4), (輸出略) (acdf) 表 16-3 例16-5的測試用例 3. 黑盒測試方法與測試用例設(shè)計黑盒測試方法與測試用例設(shè)計 黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行測試和驗證進行測試和驗證。黑盒測試完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只依據(jù)程序的需求和功能規(guī)格說明,檢查程序的功能是否符合它的功能說明。 黑盒測試方法主要有等價類劃分法、邊界值分析法、錯誤推測法等,主要用于軟件確認測試。 1 1)等價類劃分法)等價類劃分法 等價類劃分法是將程序的所有可能的輸入數(shù)據(jù)劃分成若干部分(若干等價類),然
36、后從每個等價類中選取數(shù)據(jù)作為測試用例。使用該方法,需要劃分輸入集合的等價類。等價類包括: 有效等價類:有效等價類:合理、有意義的輸入數(shù)據(jù)構(gòu)成的集合。可以檢驗程序中符合規(guī)定的功能、性能。 無效等價類:無效等價類:不合理、無意義的輸入數(shù)據(jù)構(gòu)成的集合。可以檢驗程序中不符合規(guī)定的功能、性能 為此,需要研究程序的功能說明,從而確定輸入數(shù)據(jù)的有效等價類和無效等價類,進而選取適當?shù)臏y試用例。如,P249例16-6。 2 2)邊界值分析法)邊界值分析法 邊界值分析法是對各種輸入、輸出范圍的邊界情況設(shè)計測試用例的方法。 經(jīng)驗表明,程序錯誤最容易出現(xiàn)在輸入或輸出范圍的邊界處,而不是在輸入范圍的內(nèi)部。因此針對各種邊
37、界情況設(shè)計測試用例,可以查出更多的錯誤。 3 3)錯誤推測法)錯誤推測法 我們可以靠經(jīng)驗和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子,這就是錯誤推測法。16.4.416.4.4軟件測試的實施軟件測試的實施 軟件測試過程一般按4個步驟進行,即單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試。通過這些步驟的實施來驗收是否合格,能否交付用戶使用。 1. 1.單元測試單元測試 單元測試是對軟件設(shè)計的最小單位-模塊(程序單元),進行正確性檢驗的測試。單元測試的目的是發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯誤。 單元測試是針對某個模塊的,這樣的模塊通常并不是一個獨立的程序,因此模塊不能
38、自己運行,而要靠輔助其他模塊調(diào)用或驅(qū)動。也就是說,單元測試要考慮它和外界的聯(lián)系,必須在一定的環(huán)境下運行。 在進行單元測試之前需要編寫驅(qū)動模塊和樁模塊(支持模塊),驅(qū)動模塊的作用是模擬系統(tǒng)調(diào)用測試模塊,相當于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測模塊,輸出實際測試結(jié)果。樁模塊的作用是模擬模塊調(diào)用的其他模塊,是一個模擬子程序,如圖16-24所示。 驅(qū)動模塊被測單元樁模塊A樁模塊B樁模塊C圖16-24 單元測試的測試環(huán)境 2. 集成測試集成測試 單元測試之后,應(yīng)按要求把模塊組裝起來,進行集成測試。集成測試又稱組裝測試或聯(lián)合測試。 集成測試時,將模塊組裝成程序通常采用的非增量方式組裝與增量方式
39、組裝。 增量方式包括:自頂向下、自底向上、自頂向下與自底向上相結(jié)合的混合增量方法。 1)自頂向下的增量方式)自頂向下的增量方式 將模塊按系統(tǒng)程序結(jié)構(gòu),從主控模塊(主程序)開始,沿控制層次自頂向下地逐個把模塊連接起來。該方式在測試過程中能較早地驗證主要的控制和判斷點。 2)自底向上的增量方式)自底向上的增量方式 自底向上集成測試方法是從軟件結(jié)構(gòu)中最底層軟件單元開始進行集成和測試。在模塊的測試過程中,需要從子模塊得到的信息可以直接運行子模塊得到。由于在逐步向上組裝過程中,下層模塊總是存在的,因此不在需要樁模塊,但需要調(diào)用這些模塊的驅(qū)動模塊。 自頂向下和自底向上測試各有優(yōu)缺點,有時可以將兩者結(jié)合起來
40、進行測試。 3.3.確認測試確認測試 集成測試結(jié)束后,得到的是一個完整的軟件系統(tǒng),這時,需要進行確認測試。確認測試(即有效性測試)的任務(wù)是驗證軟件的功能、性能及其他特性是否滿足了需求規(guī)格說明中確定的各種需求,以及軟件配置是否完全、正確。 4.4.系統(tǒng)測試系統(tǒng)測試 系統(tǒng)測試是將通過測試確認的軟件,作為整個基于計算機系統(tǒng)的一個元素,與計算機硬件、外設(shè)、支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素組合在一起,在實際運行環(huán)境下對計算機系統(tǒng)進行一系列的集成測試和確認測試。 系統(tǒng)測試的目的是在真實的系統(tǒng)工作環(huán)境下,檢驗軟件是否能與系統(tǒng)正確連接,發(fā)現(xiàn)軟件與系統(tǒng)需求不一致的地方。 3.5 程序調(diào)試程序調(diào)試 3.5.1
41、基本概念基本概念 在對程序進行成功測試之后,將進入程序調(diào)試(通常稱Debug, 即排錯)。程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。 程序調(diào)試活動由兩部分組成,其一是根據(jù)錯誤的跡象確定程序中錯誤的確切性質(zhì)、原因和位置;其二是對程序進行修改,排除這個錯誤。 1. 1.程序調(diào)試的基本步驟程序調(diào)試的基本步驟 1 1)錯誤定位 2 2)修改設(shè)計和代碼,以排除錯誤 3 3)進行回歸測試,防止引進新的錯誤 2.2.程序調(diào)試的原則程序調(diào)試的原則 因為調(diào)試活動由對程序中錯誤的定性、定位和排錯兩部分組成,因此調(diào)試原則從以下兩個方面考慮: 1 1)確定錯誤的性質(zhì)和位置時的注意事項; 2 2)修改錯誤的原則。 16.
42、5.2 軟件調(diào)試方法軟件調(diào)試方法 調(diào)試的關(guān)鍵在于推斷程序內(nèi)部的錯誤位置及原因。從是否跟蹤和執(zhí)行程序的角度來看,軟件調(diào)試可以分為靜態(tài)調(diào)試和動態(tài)調(diào)試。 主要的調(diào)試方法有強行排錯法、回溯法和原因排除法。主要的調(diào)試方法有強行排錯法、回溯法和原因排除法。 1. 1.強行排錯法強行排錯法 其過程可概括為,設(shè)置斷點、程序暫停、觀察程序狀態(tài)、繼續(xù)運行程序。這是目前使用較多、效率較低的調(diào)試方法。涉及的調(diào)試技術(shù)主要是設(shè)置斷點和監(jiān)視表達式。例如: 通過內(nèi)存全部打印來排錯; 在程序特定部位設(shè)置打印語句(即斷點法); 自動調(diào)試工具。 2. 2.回溯法回溯法 該方法適合于小規(guī)模程序的排錯。即一旦發(fā)現(xiàn)了錯誤,先分析錯誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。然后,從發(fā)現(xiàn)“癥狀”的地方開始,沿程序的控制流程,逆向跟蹤源程序代碼,直到找到錯誤根源或確定錯誤產(chǎn)生的范圍。 3. 3.原因排除法原因排除
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安外國語大學《服裝工業(yè)樣板》2023-2024學年第二學期期末試卷
- 天津城市職業(yè)學院《電機原理與電機拖動》2023-2024學年第二學期期末試卷
- 河南機電職業(yè)學院《工程倫理1》2023-2024學年第二學期期末試卷
- 新疆司法警官職業(yè)學院《中學教案分析實踐》2023-2024學年第二學期期末試卷
- 山東電力高等專科學?!陡叻肿踊A(chǔ)》2023-2024學年第二學期期末試卷
- 長沙文創(chuàng)藝術(shù)職業(yè)學院《經(jīng)濟法實務(wù)》2023-2024學年第二學期期末試卷
- 湖南高爾夫旅游職業(yè)學院《化工原理(一)》2023-2024學年第二學期期末試卷
- 深圳信息職業(yè)技術(shù)學院《現(xiàn)代大地測量學》2023-2024學年第二學期期末試卷
- 江西衛(wèi)生職業(yè)學院《硬件描述語言與數(shù)字系統(tǒng)設(shè)計》2023-2024學年第二學期期末試卷
- 東莞城市學院《單片機課程設(shè)計》2023-2024學年第二學期期末試卷
- 國開(遼寧)2024年《中國傳統(tǒng)文化概觀》形考1-4答案
- 債權(quán)投資協(xié)議范本標準版
- DZ∕T 0221-2006 崩塌、滑坡、泥石流監(jiān)測規(guī)范(正式版)
- 醫(yī)學檢驗項目管理制度
- DBJ-T 15-98-2019 建筑施工承插型套扣式鋼管腳手架安全技術(shù)規(guī)程
- MOOC 統(tǒng)計學-南京審計大學 中國大學慕課答案
- 高考作文標準方格紙-A4-可直接打印
- 《陸上風電場工程設(shè)計概算編制規(guī)定及費用標準》(NB-T 31011-2019)
- 毛澤東詩詞鑒賞
- 肛腸科的中醫(yī)特色護理【醫(yī)院中醫(yī)護理及保健知識】
- 《高溫熔融金屬吊運安全規(guī)程》(AQ7011-2018)
評論
0/150
提交評論