《《軟件工程基礎(chǔ)》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《軟件工程基礎(chǔ)》PPT課件(33頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、軟件工程基礎(chǔ),,1.1 軟件的概念 軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、相關(guān)數(shù)據(jù)及其說明文檔。其中,程序是按照事先設(shè)計的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)維護和使用相關(guān)的各種圖文資料。,1 軟件的基本概念,軟件的特點: 1)軟件是一種邏輯實體,具有抽象性; 2)軟件沒有明顯的制造過程; 3)軟件在使用過程中,沒有磨損、老化的問題; 4)軟件對硬件和環(huán)境有著不同程度的依賴性; 5)軟件是復(fù)雜的,而且以后會更復(fù)雜; 6)軟件的成本相當昂貴; 7)軟件工作牽涉到很多社會因素。,1.2 軟件危機 軟件危機是指在計算機軟件的開發(fā)和
2、維護過程中所遇到的一系列嚴重問題。包含兩方面的問題: 一是如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的需求;二是如何維護數(shù)量不斷膨脹的軟件產(chǎn)品。,軟件危機的主要表現(xiàn): 1)對軟件開發(fā)成本和進度的估計不準確; 2)用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生; 3)軟件產(chǎn)品的質(zhì)量往往不可靠; 4)軟件的可維護程度非常低; 5)軟件的成本不斷提高; 6)軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長。,1.3 軟件工程 軟件工程包括軟件開發(fā)技術(shù)和軟件工程管理。軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、開發(fā)過程、軟件工具和軟件工程環(huán)境。軟件工程管理包括軟件管理學(xué)、軟件工程經(jīng)濟學(xué)、軟件心理學(xué)等。軟件工程的目標
3、是:在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。,1.4 軟件生命周期 通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用的過程稱為軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等幾個階段。,1.5 軟件開發(fā)工具與軟件環(huán)境 軟件開發(fā)工具對過程和方法提供了自動的或半自動的支持。當這些工具被集成起來使一個工具產(chǎn)生的信息可以被另一個工具使用時,一個支持軟件開發(fā)的系統(tǒng)就建立起來了,稱為計算機輔助軟件工程(CASE)。CASE集成了軟件、硬件和一個軟件工程數(shù)據(jù)庫,從而創(chuàng)建
4、了一個軟件工程開發(fā)環(huán)境。,2.1 結(jié)構(gòu)化分析方法 結(jié)構(gòu)化分析方法(SA)是面向數(shù)據(jù)流進行需求分析的方法。采用“抽象”和“分解”兩個基本手段,用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,由頂向下逐層分解,直到找到滿足功能需要的所有可實現(xiàn)的軟件元素為止。,2 結(jié)構(gòu)化分析方法,2.2 數(shù)據(jù)流圖(DFD) 數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來描述數(shù)據(jù)流從輸入到輸出的移動變換過程的圖形化技術(shù),是一種圖形化的系統(tǒng)模型,表示信息系統(tǒng)的主要需求,即輸入、輸出、過程和數(shù)據(jù)存儲。典型的數(shù)據(jù)流圖有兩種:變換型和事務(wù)型。數(shù)據(jù)流圖中的基本元素有:外部實體(方框)、數(shù)據(jù)流(單項箭頭)、加工(橢圓)和數(shù)據(jù)存儲(
5、雙橫線)。,百貨商店業(yè)務(wù)管理系統(tǒng)數(shù)據(jù)流程圖,顧客,,商店業(yè)務(wù)處理,供貨廠,稅務(wù)局,,,,,,,,,,,,,,,,貸款收據(jù),貸款,訂單,發(fā)貨票,訂貨單,稅款,供貨單,稅單,2.3 數(shù)據(jù)字典(DD) 數(shù)據(jù)字典是對數(shù)據(jù)的信息的集合,是結(jié)構(gòu)化分析的核心。他對數(shù)據(jù)流圖中的各個元素做完整的定義和說明,是數(shù)據(jù)流圖的補充工具,它通常包括幾個方面的信息:名稱、別名、何處使用/如何使用、內(nèi)容描述和補充信息數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型。,2.4 軟件需求規(guī)格說明書 軟件需求規(guī)格說明書是需求分析階段的最后結(jié)果。軟件需求包括:功能需求、性能需求、環(huán)境需求、可靠性需求、安全保密需求、用戶界面需求、資源使用
6、需求、成本消耗需求和開發(fā)進度需求。軟件需求規(guī)格說明書包含內(nèi)容如下: 概述(任務(wù)概述) 數(shù)據(jù)描述 功能要求 性能需求 參考文獻目錄 附錄,舉例,計算機中的軟件包括____。程序、數(shù)據(jù)和文檔 軟件工程的方法得以實施的主要保證是____。 A.軟件用戶的參與 B.開發(fā)人員的素質(zhì) C.硬件環(huán)境 D.軟件開發(fā)工具和環(huán)境 軟件工程研究的主要內(nèi)容是軟件開發(fā)技術(shù)和_____兩個方面。
7、軟件工程管理 結(jié)構(gòu)化分析的基本思想是采用___的方法,能有效的控制系統(tǒng)開發(fā)的復(fù)雜性。自頂向下逐層分解 數(shù)據(jù)字典是軟件需求分析階段的重要工具之一,其基本功能是____。 A.數(shù)據(jù)通信 B.數(shù)據(jù)庫設(shè)計 C.數(shù)據(jù)維護 D.數(shù)據(jù)定義 在下列文檔中,屬于結(jié)構(gòu)化分析階段的文檔有____。 A.軟件設(shè)計說明書 B.可行性分析報告 C.項目計劃 D.需求規(guī)格說明,3.1 結(jié)構(gòu)化設(shè)計方法 結(jié)構(gòu)化設(shè)計方法(SD)就是采用最佳的可能方法設(shè)計系統(tǒng)的各個組成部分以及各成分內(nèi)部聯(lián)系的技術(shù)。軟件設(shè)計分兩步完成:總體設(shè)計和詳細設(shè)計。結(jié)構(gòu)化設(shè)計是一種面向數(shù)據(jù)流的設(shè)計方法,可以與SA方法銜接。 總體設(shè)計 詳細設(shè)計,3 結(jié)構(gòu)化
8、設(shè)計方法,3.2 總體設(shè)計 總體設(shè)計的基本任務(wù): 基于功能層次結(jié)構(gòu)建立系統(tǒng); 采用某種設(shè)計方法,將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu); 確定每個模塊的功能; 建立與已確定的軟件需求的對應(yīng)關(guān)系; 確定模塊間的調(diào)用關(guān)系; 確定模塊間的接口,即模塊之間傳遞的信息; 評估模塊劃分的質(zhì)量。,軟件設(shè)計的基本原理 1)模塊化 2)抽象 3)信息隱蔽 4)模塊獨立性,軟件的結(jié)構(gòu) 軟件的結(jié)構(gòu)是一種層次化的表示,它指出了各個模塊之間的關(guān)系。 深度: 表示從根模塊到最低層模塊的層數(shù)。 寬度:表示控制的總分布。 扇出數(shù):由一個模塊直接控制的其它模塊數(shù)。 扇入數(shù):有多少模塊直接控制一個給定的模塊。 上級模塊:控制其它模塊的
9、模塊。 從屬模塊:被另一模塊控制的模塊。,總體設(shè)計的優(yōu)化準則: 1)改進軟件結(jié)構(gòu),提高模塊獨立性; 2)模塊的規(guī)模要適中; 3)模塊的作用范圍應(yīng)該保持在模塊的控制范圍內(nèi); 4)軟件結(jié)構(gòu)的深度、寬度、扇入、扇出要適當; 5)降低模塊接口的復(fù)雜度; 6)設(shè)計單入口單出口的模塊; 7)模塊的功能可預(yù)測。,3.3 詳細設(shè)計 從軟件開發(fā)的工程化觀點來看,在使用程序設(shè)計語言編制程序以前,需要對所采用算法的邏輯關(guān)系進行分析,設(shè)計出全部必要的過程細節(jié),并給予清晰的表達。在過程設(shè)計階段,要決定各個模塊的實現(xiàn)算法并精確地表達這些算法。,詳細設(shè)計的任務(wù) 1)為每個模塊確定采用的算法,選擇某種適當?shù)墓ぞ弑磉_算法的過程
10、,寫出模塊詳細過程性描述; 2)對模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進行設(shè)計; 3)確定模塊的接口細節(jié)。 詳細設(shè)計的工具 表達過程規(guī)格說明的工具叫做詳細設(shè)計工具,常用的有:程序流程圖(PFD)、N-S流程圖、問題分析圖(PAD圖)和語言工具(PDL)。,4.1 軟件測試的目的和準則 1)測試是為了發(fā)現(xiàn)程序中的錯誤而去執(zhí)行的過程; 2)一個好的測試用例(test case)在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤; 3)一次成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)錯誤的測試。 測試絕不能證明程序是正確的,測試用于查找程序中的錯誤,但不能證明程序中沒有錯誤。,4 軟件的測試,4.2 軟件測試方法 軟件測試方法和技術(shù)可從不同角度分類。 按
11、照是否需要執(zhí)行被測試軟件的角度,可分為靜態(tài)測試和動態(tài)測試.,靜態(tài)測試一般是指人工評審軟件文檔或程序,借以發(fā)現(xiàn)其中的錯誤,由于被評審的文檔或程序不必運行,所以稱為靜態(tài)測試。包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等。 動態(tài)測試就是通過運行軟件來檢驗軟件中的動態(tài)行為和運行結(jié)果的正確性,也就是通常所說的上機測試。,按照功能,測試可分為白盒測試和黑盒測試。 白盒測試:也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,它與程序內(nèi)部結(jié)構(gòu)有關(guān),要利用程序結(jié)構(gòu)的實現(xiàn)細節(jié)設(shè)計測試用例。此方法把測試對象看作一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試。 白盒測試的主要
12、方法有邏輯覆蓋、基本路徑測試等。邏輯覆蓋泛指一系列以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計技術(shù)。基本路徑測試是指根據(jù)軟件過程性描述中的控制流程確定程序的環(huán)路復(fù)雜性度量,用此度量定義基本路徑集合,并由此導(dǎo)出一組測試用例對每一條獨立路徑進行測試。,黑盒測試:也稱功能測試或數(shù)據(jù)驅(qū)動測試,測試時不考慮程序內(nèi)部結(jié)構(gòu)和實現(xiàn)方式,僅檢驗程序結(jié)果與說明書的一致性。黑盒測試不關(guān)心程序內(nèi)部的邏輯, 而只是根據(jù)程序的功能來說明測試用例。 黑盒測試的主要方法有等價類劃分法、邊界值分析法和錯誤推測法。 邏輯覆蓋泛指一系列以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計技術(shù)?;韭窂綔y試是指根據(jù)軟件過程性描述中的控制流程確定程序
13、的環(huán)路復(fù)雜性度量,用此度量定義基本路徑集合,并由此導(dǎo)出一組測試用例對每一條獨立路徑進行測試。,4.3 軟件測試的實施 測試過程按4個步驟進行,即單元測試、集成測試、確認測試和系統(tǒng)測試。 單元測試:集中對用源代碼實現(xiàn)的每個程序單元進行測試,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能。 集成測試:把已測試過的模塊組裝起來,主要對與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進行測試。增量測試(自底向上,自頂向下,兩者結(jié)合),非增量測試, 確認測試:是要檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各處需求,以及軟件配置是否完全、正確。 系統(tǒng)測試:是把通過確認測試的軟件作為整個基于計算機系統(tǒng)的一個元素,與計算機硬
14、件、外設(shè)、某此支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素結(jié)合在一起,在實際運行環(huán)境下,對計算機系統(tǒng)進行一系列的集成測試和確認測試。,舉例,軟件設(shè)計遵循軟件工程的基本目標,即模塊化、模塊獨立性、信息隱蔽和____。抽象 面向數(shù)據(jù)流的設(shè)計方法中,一般將信息流分為____。 A.數(shù)據(jù)流和控制流 B.交換流和控制流 C.交換流和事物流 D.數(shù)據(jù)流和事物流 軟件測試可分為單元測試、集成測試、確認測試和____。 系統(tǒng)測試 對軟件是否達到用戶所期望的要求測試是____。 A.集成測試 B.系統(tǒng)測試 C.驗收測試 D.有效性測視 模塊劃分的指導(dǎo)思想是信息隱蔽和____。模塊獨立性 軟件測試的目的是____。 A.
15、證明軟件的正確性 B.發(fā)現(xiàn)軟件中的所有錯誤 C.盡可能多的發(fā)現(xiàn)軟件系統(tǒng)中的錯誤 D.證明軟件中存在錯誤,5.1 調(diào)試的概念 在對程序進行成功測試之后將進行程序調(diào)試(通常稱為Debug,即排錯)。程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多的發(fā)現(xiàn)軟件中的錯誤,發(fā)現(xiàn)錯誤后,程序調(diào)試借助于一定的調(diào)試工具去找出軟件錯誤的具體位置,并改正錯誤。,5 程序的調(diào)試,程序調(diào)試的基本步驟 1)錯誤定位; 2)修改設(shè)計和代碼,以排除錯誤; 3)進行回歸測試,防止引入新的錯誤。 調(diào)試原則 1)確定錯誤的性質(zhì)和位置的原則; 2)修改錯誤的原則;,5.2 軟件調(diào)試的方法 1)強行排錯法; 2)回溯法排錯; 3)歸納法排錯; 4)演繹法排錯。,舉例,軟件調(diào)試在軟件生命周期的____階段進行。開發(fā) 軟件調(diào)試的目的在于____。 A.發(fā)現(xiàn)錯誤 B.更改錯誤 C.提高軟件的性能 D.測試軟件的功能 軟件調(diào)試的方法有強行排除法、回溯法、演繹法和____。歸納法 軟件調(diào)試應(yīng)該由____來完成。 A.與源程序無關(guān)的程序員 B.不了解軟件計劃的機構(gòu) C.源程序的編制人員 C.設(shè)計該軟件的機構(gòu) 集成測試分為兩個具體方法,它們是____。 A.非增量方式與增量方式 B.白盒法和黑盒法 C.確認測試和系統(tǒng)測試 D.歸納法和演繹法,