數(shù)據(jù)庫與軟件工程-軟件工程概述課件_第1頁
數(shù)據(jù)庫與軟件工程-軟件工程概述課件_第2頁
數(shù)據(jù)庫與軟件工程-軟件工程概述課件_第3頁
數(shù)據(jù)庫與軟件工程-軟件工程概述課件_第4頁
數(shù)據(jù)庫與軟件工程-軟件工程概述課件_第5頁
已閱讀5頁,還剩361頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

軟件工程概述數(shù)據(jù)庫與軟件工程第二部分1軟件工程概述數(shù)據(jù)庫與軟件工程第二部分12軟件工程綜述軟件生存周期軟件質(zhì)量與質(zhì)量保證軟件工程管理軟件開發(fā)環(huán)境目錄2軟件工程綜述目錄3軟件發(fā)展的三個階段軟件工程相關概念軟件工程目標軟件工程三要素軟件工程綜述3軟件發(fā)展的三個階段軟件工程綜述什么是計算機軟件?計算機軟件指計算機系統(tǒng)中的程序及其文檔程序是計算任務的處理對象和處理規(guī)則的描述計算任務:任何以計算機為處理工具的任務處理對象:數(shù)據(jù)(如數(shù)據(jù)、文字、圖形、圖像、聲音等,它們只是表示,而無含義)或信息(數(shù)據(jù)及有關的含義)處理規(guī)則一般指處理的動作和步驟。程序必須裝入計算機內(nèi)才能工作文檔是為了便于了解程序所需的闡明性資料,文檔一般是給人看的,不一定裝入計算機4什么是計算機軟件?計算機軟件指計算機系統(tǒng)中的程序及其文檔45軟件的特點:抽象性—不是實物。嚴密性—是邏輯產(chǎn)品。智力性—思維過程。持久性—無時間損壞。一次性—創(chuàng)造性的產(chǎn)物。難以度量—難定量測量。易出錯—信息轉(zhuǎn)移造成。必須維護—糾錯和變更。5軟件的特點:6軟件發(fā)展的三個階段程序設計時代(50-60年代)

軟件指程序,軟件開發(fā)關注程序編寫,用匯編及機器語言程序系統(tǒng)時代(60-70年代)

軟件指程序及說明書,軟件開發(fā)包括程序設計和測試,用高級語言軟件工程時代(70年代以后)軟件開發(fā)包括軟件生命期,用軟件語言(包括需求定義語言、軟件功能語言、軟件設計語言、程序設計語言等)6軟件發(fā)展的三個階段程序設計時代(50-60年代)程序系統(tǒng)7軟件工程相關概念軟件危機:在軟件開發(fā)過程中遇到的問題找不到解決的辦法,致使問題積累起來形成了日益尖銳的矛盾。危機實例(1):1963年美國飛往火星的火箭探測器爆炸,造成1000萬美元(數(shù)億美元)的損失。原因是用于控制火星探測器的計算機軟件FORTRAN程序:

DO5I=1,3

誤寫為:DO5I=1.3危機實例(2):1967年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船在返航時,由于軟件忽略一個小數(shù)點,在進入大氣層時因打不開降落傘而燒毀。

宇航員:弗拉迪米爾·科馬洛夫7軟件工程相關概念軟件危機:在軟件開發(fā)過程中遇到的問題找不到8軟件工程相關概念軟件危機:危機實例(3):人員傷亡:由于計算機軟件被廣泛應用于包括醫(yī)院等與生命息息相關的行業(yè)。這也使得軟件的錯誤導致人員傷亡成為了可能。

Therac-25的意外:(在軟件工程界被大量引用的案例)

在1985年六月到1987年一月之間,六個已知的醫(yī)療事故來自于Therac-25錯誤地超過劑量,導致患者死亡或嚴重輻射灼傷8軟件工程相關概念軟件危機:危機實例(3):9軟件工程相關概念軟件危機:危機實例(4):IBM公司1963-1966年開發(fā)IBM360操作系統(tǒng),項目花了5000人-年的工作量,最多時有1000人投入開發(fā)工作,寫出100萬行源程序,但發(fā)行的每一新版本都是上一版1000個錯誤的修正。事后負責人F.D.Brooks總結教訓時說:“……正象一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷的越深。最后無法逃脫滅頂?shù)臑碾y。程序設計工作正像這樣一個泥潭,一批批程序員被迫在泥潭中拼命掙扎,……誰也沒料到問題竟會陷入這樣的困境……”9軟件工程相關概念軟件危機:危機實例(4):10軟件危機的表現(xiàn)對軟件開發(fā)成本和進度的估計常常很不正確用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生軟件產(chǎn)品的質(zhì)量往往靠不住軟件常常是不可維護的軟件通常沒有適當?shù)奈臋n資料軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升軟件開發(fā)生產(chǎn)率提高的速度遠遠跟不上計算機應用迅速普及深入的趨勢10軟件危機的表現(xiàn)對軟件開發(fā)成本和進度的估計常常很不正確11軟件危機的原因軟件是邏輯產(chǎn)品,開發(fā)進度、成本難以估計缺乏或不完整、不一致的文檔給維護帶來困難用戶對軟件需求的描述往往不夠精確,有遺漏,有二義軟件開發(fā)人員對需求的理解與用戶的本來愿望有差異大型軟件項目需多人協(xié)同完成,缺乏管理經(jīng)驗開發(fā)人員不能有效地、獨立自主地處理大型軟件的全部關系缺乏有力的方法學和工具的支持軟件項目的特殊性和人類智力的局限性11軟件危機的原因軟件是邏輯產(chǎn)品,開發(fā)進度、成本難以估計12克服軟件危機的途徑消除錯誤的概念和做法推廣使用成功的開發(fā)技術和方法使用軟件工具和軟件工程支持環(huán)境加強軟件管理擺脫軟件危機的出路:軟件開發(fā)的工程化和標準化12克服軟件危機的途徑消除錯誤的概念和做法擺脫軟件危機的出13軟件工程相關概念軟件工程:軟件工程是用科學知識和技術原理來定義、開發(fā)、維護軟件的一門綜合性的交叉學科,軟件工程是開發(fā)與維護軟件的規(guī)范化系統(tǒng)方法。它綜合應用計算機科學、數(shù)學及管理科學等原理開發(fā)軟件的工程。計算機科學、數(shù)學用于構造模型與算法;工程科學用于制定規(guī)范、設計范型、評估成本及確定權衡;管理科學用于用于計劃、資源、質(zhì)量、成本等管理。

13軟件工程相關概念軟件工程:軟件工程是用科學知識和技術原理14軟件工程的目標能按時完成開發(fā)任務,及時交付使用;付出較低的開發(fā)成本,達到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護費用;開發(fā)的軟件可靠性高。14軟件工程的目標能按時完成開發(fā)任務,及時交付使用;15軟件工程三要素軟件工程方法軟件工具軟件工程過程

為軟件開發(fā)提供“如何做”的技術。如怎樣定項目計劃、怎樣實施需求分析、如何測試等。為軟件工程方法提供自動或半自動軟件支撐環(huán)境。如軟件開發(fā)工具、測試工具等。軟件開發(fā)的不同階段可使用不同的工具。將軟件工程劃分為若干階段,分配方法和工具,定義每個階段的先后順序和完成標志。15軟件工程三要素軟件工程方法為軟件開發(fā)提供“如何做”的技術16軟件生存周期生存周期概念生存周期各階段生存周期模型16軟件生存周期生存周期概念17軟件生存周期軟件生存周期(softwarelifecycle)又稱為軟件生命期。是指從形成開發(fā)軟件概念起,所開發(fā)的軟件使用以后,直到失去使用價值消亡為止的整個過程。一般來說,整個生存周期包括計劃、開發(fā)、運行三個時期,每一個時期又劃分為若干階段。每個階段有明確的任務,這樣使規(guī)模大、結構復雜和管理復雜的軟件開發(fā)變得容易控制和管理。軟件生存周期概念17軟件生存周期軟件生存周期(softwarelifec18軟件生命周期軟件生命期各階段軟件計劃與可行性研究軟件系統(tǒng)需求分析軟件設計軟件編碼軟件測試與調(diào)試軟件運行與維護軟件生命期一般包括以下各階段:

18軟件生命周期軟件生命期各階段軟件計劃與可行性研究軟件生命19軟件-建筑計劃與可行性研究系統(tǒng)需求分析軟件設計軟件編碼軟件測試與調(diào)試軟件運行與維護19軟件-建筑計劃與可行性研究20一、軟件計劃與可行性研究目的確定軟件項目是否能夠開發(fā)?是否值得去開發(fā)?輸出:可行性研究報告成本—效益分析項目開發(fā)計劃

20一、軟件計劃與可行性研究目的確定軟件項目是否能夠開發(fā)?21一、軟件計劃與可行性研究初步確定項目的規(guī)模和目標,確定項目的約束和限制。分析員進行簡要的需求分析,抽象出邏輯結構,建立邏輯模型。從邏輯模型出發(fā),經(jīng)過壓縮的設計,找出幾種可供選擇的解決辦法。過程21一、軟件計劃與可行性研究初步確定項目的規(guī)模和目標,確定項22一、軟件計劃與可行性研究對每種解決方法,可從以下三個方面分析研究每種解決方法的可行性。

1.技術可行性

2.經(jīng)濟可行性

3.社會可行性內(nèi)容22一、軟件計劃與可行性研究對每種解決方法,可從以下三個23軟件可行性研究1.技術可行性對要開發(fā)項目的功能、性能、限制條件進行分析,確定在現(xiàn)有的資源條件下,技術風險有多大,項目是否能實現(xiàn)。資源:已有的或可以獲得的硬件、軟件資源現(xiàn)有技術人員的技術水平已有的工作基礎。技術可行性分析通常包括風險分析、資源分析和技術分析三個方面的可行性23軟件可行性研究1.技術可行性三個方面的可行性24風險分析:分析在給定的約束條件下設計和實現(xiàn)系統(tǒng)的風險。采用不成熟的技術可能造成技術風險人員流動可能給項目帶來風險成本和人員估算不合理造成的預算風險風險分析的目的是找出風險,評價風險的大小,并有效地控制和緩解風險。24風險分析:分析在給定的約束條件下設計和實現(xiàn)系統(tǒng)的風險。25資源分析:論證是否具備系統(tǒng)開發(fā)所需的各類人員、軟件、硬件等資源和相應的工作環(huán)境。例如,有一支開發(fā)過類似項目的開發(fā)和管理的團隊,或者開發(fā)人員比較熟悉系統(tǒng)所處的領域,并有足夠的人員保證,所需的硬件和支撐軟件能通過合法的手段獲取,那么從技術角度看,可以認為具備設計和實現(xiàn)系統(tǒng)的條件。25資源分析:論證是否具備系統(tǒng)開發(fā)所需的各類人員、軟件、硬件26技術分析:分析當前的科學技術是否支持系統(tǒng)開發(fā)的各項活動。在技術分析過程中,分析員收集系統(tǒng)的性能、可靠性、可維護性和生產(chǎn)率方面的信息,分析實現(xiàn)系統(tǒng)功能、性能所需的技術、方法、算法或過程,從技術角度分析可能存在的風險,以及這些技術問題對成本的影響。技術可行性分析時通常需進行系統(tǒng)建模,必要時可建造原型和進行系統(tǒng)模擬26技術分析:分析當前的科學技術是否支持系統(tǒng)開發(fā)的各項活動。27軟件可行性研究2.經(jīng)濟可行性進行開發(fā)成本的估算以及了解取得效益的評估,確定要開發(fā)的項目是否值得投資開發(fā)?經(jīng)濟可行性:成本—效益分析公司經(jīng)營長期策略開發(fā)所需的成本和資源潛在的市場前景三個方面的可行性27軟件可行性研究2.經(jīng)濟可行性三個方面的可行性28基于計算機的系統(tǒng)的成本主要包括:購置硬件、軟件(如數(shù)據(jù)庫管理系統(tǒng)、第三方開發(fā)的構件等)和設備(如傳感器等)的費用系統(tǒng)的開發(fā)費用系統(tǒng)安裝、運行和維護費用人員培訓費用28基于計算機的系統(tǒng)的成本主要包括:29效益經(jīng)濟效益使用基于計算機的系統(tǒng)后可增加的收入和可節(jié)省的運行費用(如操作人員數(shù)、工作時間、消耗的物資等)。社會效益使用基于計算機的系統(tǒng)后對社會產(chǎn)生的影響(如提高了辦事效益,使用戶滿意等),通常社會效益只能定性地估計。在進行成本效益分析時通常只統(tǒng)計五年內(nèi)的經(jīng)濟效益。

經(jīng)濟效益通常可用貨幣的時間價值、投資回收期和純收入來度量。29效益30貨幣的時間價值(以利率計算的機會成本)設:當前金額為P,年利率為i,n年后的金額為F,則計算時,累計經(jīng)濟效益應折合成當前金額例如,一個基于計算機的系統(tǒng)使用后,每年產(chǎn)生的經(jīng)濟效益為10萬,如果年利率為5%,那么,五年內(nèi)該系統(tǒng)的累計經(jīng)濟效益是43.2948萬,而不是50萬。30貨幣的時間價值(以利率計算的機會成本)31投資回收期:累計的經(jīng)濟效益正好等于投資數(shù)(成本)所需的時間純收入:累計經(jīng)濟效益–

投資數(shù)當純收入大于零時,該工程值得投資開發(fā)當純收入小于零時,該工程不值得投資(除非它有明顯的社會效益)當純收入等于零時,通常也不值得投資顯然,純收入越大越好31投資回收期:累計的經(jīng)濟效益正好等于投資數(shù)(成本)所需的時32軟件可行性研究3.社會可行性要開發(fā)的項目是否存在任何侵犯、妨礙等責任問題?要開發(fā)項目的運行方式在用戶組織內(nèi)是否行得通?現(xiàn)有管理制度、人員素質(zhì)、操作方式是否可行?三個方面的可行性32軟件可行性研究3.社會可行性三個方面的可行性33中華人民共和國著作權法計算機軟件保護條例保密法等33中華人民共和國著作權法34可行性分析的結論可以立即開始進行需要推遲到某些條件(例如資金、人力、設備等)落實之后才能開始進行需要對開發(fā)目標進行某些修改之后才能開始進行因為某種原因(如,技術不成熟、經(jīng)濟上不合算等)不能進行34可行性分析的結論可以立即開始進行35軟件可行性研究1.復查項目規(guī)模和目標2.研究正在使用的系統(tǒng)3.得到新系統(tǒng)的概括的邏輯模型4.導出和評價各種方案5.推薦可行的方案6.編寫可行性研究報告可行性研究的具體步驟35軟件可行性研究1.復查項目規(guī)模和目標可行性研究的具體步驟36軟件可行性研究可行性研究報告內(nèi)容1.引言。

2.可行性研究前提。

3.對現(xiàn)有系統(tǒng)的分析。

4.所建議系統(tǒng)的技術可行性分析。

5.所建議系統(tǒng)的經(jīng)濟可行性分析。

6.社會因素的可行性分析。

7.其他可供選擇方案。

8.結論意見。36軟件可行性研究可行性研究報告內(nèi)容1.引言。37二、軟件系統(tǒng)需求分析需求分析概念需求分析的基本任務結構化分析方法BDS37二、軟件系統(tǒng)需求分析需求分析概念BDS38數(shù)據(jù)庫建設的基本規(guī)律三分技術,七分管理,十二分基礎數(shù)據(jù)管理數(shù)據(jù)庫建設項目管理企業(yè)(即應用部門)的業(yè)務管理基礎數(shù)據(jù)收集、入庫更新新的數(shù)據(jù)38數(shù)據(jù)庫建設的基本規(guī)律39二、軟件系統(tǒng)需求分析需求分析概念需求分析的基本任務結構化分析方法39二、軟件系統(tǒng)需求分析需求分析概念40需求的定義IEEEStandardGlossaryofSoftwareEngineeringTerminology用戶解決一個問題或達到一個目標所需要的一種狀況或能力系統(tǒng)為了滿足一種約定、標準、規(guī)格說明或其它正式文件而必須滿足或擁有的一種狀況或能力以上兩種狀態(tài)或能力的文檔化表示主觀需求客觀需求需求文檔40需求的定義IEEEStandardGlossary41功能性需求和非功能性需求功能性需求系統(tǒng)需要提供的服務或功能:如圖書檢索系統(tǒng)對特定輸入的處理方式:如對非法輸入的提示系統(tǒng)在特定環(huán)境下的行為:如長時間無操作時的屏保非功能性需求對系統(tǒng)功能或服務附加的質(zhì)量約束,例如響應時間、容錯性、安全性等——客戶所關心的(外部質(zhì)量)從系統(tǒng)開發(fā)和維護角度出發(fā)的質(zhì)量屬性,例如可理解性、可擴展性、可配置性等——軟件開發(fā)或維護者所關心的(內(nèi)部質(zhì)量、軟件所特有)41功能性需求和非功能性需求功能性需求42二、軟件系統(tǒng)需求分析是指開發(fā)人員要準確理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應的形式功能規(guī)約(需求規(guī)格說明)的過程。結構化分析方法和面向?qū)ο蠓治龇椒?/p>

1.需求分析概念42二、軟件系統(tǒng)需求分析是指開發(fā)人員要準確理解用戶的要求,43是要準確地定義新系統(tǒng)的目標,滿足用戶需要。回答系統(tǒng)必須“做什么”的問題。本階段要進行以下幾方面的工作:(1)分析人員和用戶對問題識別,雙方商定對問題的綜合需求。包括:功能需求、性能需求、環(huán)境需求和用戶界面需求。另外還有可靠性、安全性、保密性、可移植性、可維護性等方面的需求.

這些需求一般通過雙方交流、調(diào)查研究來獲取,并達到共同的理解。2.需求分析的基本任務43是要準確地定義新系統(tǒng)的目標,滿足用戶需要。回答系統(tǒng)必須“44(2)分析與綜合,導出軟件的邏輯模型。

分析人員對獲取的需求,進行一致性的分析檢查,在分析、綜合中逐步細化軟件功能,劃分成各個子功能。包括:對數(shù)據(jù)域進行分解,并分配到各個子功能上,以確定系統(tǒng)的構成及主要成分,并用圖文結合的形式,建立起新系統(tǒng)的邏輯模型。(3)編寫文檔。文檔:需求規(guī)格說明書初步用戶使用手冊確認測試計劃2.需求分析的基本任務44(2)分析與綜合,導出軟件的邏輯模型。2.需求分析的基453.結構化分析方法

SA方法利用圖形等半形式化的描述方式表達需求,用它們形成需求說明書中的主要部分。描述工具是:(1)數(shù)據(jù)流圖(DFD)(2)描述加工邏輯的工具:結構化語言、判定表、判定樹(3)數(shù)據(jù)字典

結構化分析(StructuredAnalysis,簡稱SA),是面向數(shù)據(jù)流進行需求分析的方法。SA是一種建?;顒?,該方法使用簡單易讀符號,根據(jù)軟件內(nèi)部數(shù)據(jù)傳遞、變換的關系,自頂向下逐層分解,描繪出滿足功能需求的軟件模型。453.結構化分析方法SA方法利用圖形等半形式化463.結構化分析方法

(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖(DataFlowDiam),是SA方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。數(shù)據(jù)流圖的作用:需求分析時,作為自頂向下的工具描述系統(tǒng)組成部分為技術員、用戶間交流提供有力方法463.結構化分析方法(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖473.結構化分析方法

(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖由數(shù)據(jù)流、加工(又稱為數(shù)據(jù)處理)、數(shù)據(jù)存儲(又稱為文件)、數(shù)據(jù)源點或終點四種基本成分組成。數(shù)據(jù)流圖實例:銀行取款過程數(shù)據(jù)流:加工:數(shù)據(jù)存儲:數(shù)據(jù)源點、終點:473.結構化分析方法(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖48描述銀行取款過程的數(shù)據(jù)流圖48描述銀行取款過程的數(shù)據(jù)流圖49基本加工邏輯說明

對數(shù)據(jù)流圖的每一個基本加工,必須有一個基本加工邏輯說明描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則描述實現(xiàn)加工的策略而不是實現(xiàn)加工的細節(jié)包含的信息應是充足的,完備的,有用的,無冗余的49基本加工邏輯說明對數(shù)據(jù)流圖的每一個基本加工,必須有一個50(2)用于寫加工邏輯說明的工具

結構化英語判定表判定樹3.結構化分析方法

50(2)用于寫加工邏輯說明的工具結構化英語3.結構化511)結構化英語結構化英語的詞匯表由英語命令動詞數(shù)據(jù)詞典中定義的名字有限的自定義詞邏輯關系詞

IF_THEN_ELSE、

CASE_OF、

WHILE_DO、

REPEAT_UNTIL等組成。511)結構化英語結構化英語的詞匯表由52是一種介于自然語言和形式化語言之間的語言語言的正文用基本控制結構進行分割,加工中的操作用自然語言短語來表示其基本控制結構有三種:簡單陳述句結構:避免復合語句;重復結構:while_do

repeat_until結構。判定結構:if_then_else

case_of結構;52是一種介于自然語言和形式化語言之間的語言53商店業(yè)務處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$500then

if

欠款超過了60天then

在償還欠款前不予批準

else

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

else

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

if

欠款超過60天then

發(fā)批準書,發(fā)貨單及賒欠報告

else

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

53商店業(yè)務處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$5542)判定表如果數(shù)據(jù)流圖的加工需要依賴于多個邏輯條件的取值,使用判定表來描述比較合適條件定義條件取值的組合動作定義在各種取值的組合下應執(zhí)行的動作542)判定表如果數(shù)據(jù)流圖的加工需要依賴于多個邏輯條件的取值55以“檢查發(fā)貨單”為例55以“檢查發(fā)貨單”為例563)判定樹判定樹也是用來表達加工邏輯的一種工具。有時侯它比判定表更直觀。檢查發(fā)貨單金額>$500金額$500

欠款>60天不發(fā)出批準書

欠款60天發(fā)貨單發(fā)出批準書、

欠款>60天發(fā)出批準書、發(fā)貨單及賒欠報告

欠款60天發(fā)出批準書、發(fā)貨單563)判定樹判定樹也是用來表達加工邏輯的一種工具。有時侯它57(3)數(shù)據(jù)字典數(shù)據(jù)詞典(DataDictionary,簡稱DD)就是用來定義數(shù)據(jù)流圖中的各個成分的具體含義的。對數(shù)據(jù)流圖中出現(xiàn)的每一個數(shù)據(jù)流、文件、加工給出詳細定義。3.結構化分析方法

數(shù)據(jù)字典主要有四類條目:數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲、基本加工。數(shù)據(jù)項是組成數(shù)據(jù)流和數(shù)據(jù)存儲的最小元素。57(3)數(shù)據(jù)字典數(shù)據(jù)詞典(DataDictionary58(3)數(shù)據(jù)字典數(shù)據(jù)字典詞條內(nèi)容表3.結構化分析方法

數(shù)據(jù)項/數(shù)據(jù)流/數(shù)據(jù)文件名稱:別名:取消及定義:組成:組織:備注:58(3)數(shù)據(jù)字典數(shù)據(jù)字典詞條內(nèi)容表3.結構化分析方法59實例:計算機售書系統(tǒng)模型

(3)數(shù)據(jù)字典3.結構化分析方法

59實例:計算機售書系統(tǒng)模型(3)數(shù)據(jù)字典3.結構化分60售書系統(tǒng)數(shù)據(jù)流詞條實例:發(fā)票

數(shù)據(jù)流名:發(fā)票別名:購書發(fā)票組成:學號+姓名+{書號+單價+數(shù)量+總價}+書費合計備

注:(3)數(shù)據(jù)字典3.結構化分析方法

60售書系統(tǒng)數(shù)據(jù)流詞條實例:發(fā)票數(shù)據(jù)流名:發(fā)票(3)數(shù)據(jù)61數(shù)據(jù)文件詞條實例:各班學生用書表文件名:各班學生用書表別名:組成:{系編號+專業(yè)和班級編號+年級+{書號}}組織:按系、專業(yè)和班編號從小到大排列備注:(3)數(shù)據(jù)字典3.結構化分析方法

61數(shù)據(jù)文件詞條實例:各班學生用書表文件名:各班學生用書表(62三、軟件設計軟件概要設計2.軟件詳細設計主要完成軟件系統(tǒng)結構設計和確定各組成部分之間的相互關系。

主要確定每個模塊的具體執(zhí)行過程,也稱為過程設計。62三、軟件設計軟件概要設計主要完成軟件系統(tǒng)結構設計和確定各631.軟件概要設計概要設計基本任務概要設計基本原理631.軟件概要設計概要設計基本任務64(1)概要設計基本任務進行軟件系統(tǒng)總體結構設計進行軟件中所使用的數(shù)據(jù)結構及數(shù)據(jù)庫的設計

編寫概要設計文檔

進行概要設計的評審

64(1)概要設計基本任務進行軟件系統(tǒng)總體結構設計65(1)概要設計基本任務1)軟件系統(tǒng)總體結構設計采用某種設計方法,將一個復雜的系統(tǒng)按功能劃分成模塊。確定每個模塊的功能。確定模塊之間的調(diào)用關系。確定模塊之間的接口,即模塊之間傳遞的信息。評價模塊結構的質(zhì)量。

65(1)概要設計基本任務1)軟件系統(tǒng)總體結構設計采用某種66(1)概要設計基本任務2)

數(shù)據(jù)結構及數(shù)據(jù)庫的設計。

對數(shù)據(jù)結構的設計,采用逐步細化的方法,對需求分析階段獲得的數(shù)據(jù)字典中的數(shù)據(jù)的結構特性等加以細化。對數(shù)據(jù)庫的設計是指數(shù)據(jù)存儲文件的設計,主要進行概念設計、邏輯設計、物理設計三方面設計。

66(1)概要設計基本任務2)數(shù)據(jù)結構及數(shù)據(jù)庫的設計。對67(1)概要設計基本任務3)概要設計文檔主要包括:

概要設計說明書。數(shù)據(jù)庫設計說明書。進一步補充需求分析階段編寫的用戶手冊。修訂測試計劃,對測試策略、方法、步驟提出明確要求。67(1)概要設計基本任務3)概要設計文檔主要包括:概68(1)概要設計基本任務4)進行概要設計的評審

對設計部分是否完整地實現(xiàn)了需求中規(guī)定的功能、性能等要求設計方案的可行性內(nèi)外部接口定義的正確性、有效性各部分之間的一致性68(1)概要設計基本任務4)進行概要設計的評審:對69(2)概要設計的基本原理l)模塊化2)抽象3)信息隱藏4)模塊獨立性69(2)概要設計的基本原理l)模塊化70(2)概要設計的基本原理

l)模塊化在軟件的體系結構中,模塊是可組合、分解和更換的單元。模塊具有以下幾種基本屬性:接口、功能、狀態(tài)、邏輯。其中:功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內(nèi)部特性。模塊化是指解決一個復雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。每個模塊完成一個特定的子功能,所有的模塊按某種方法組裝起來,成為一個整體,完成整個系統(tǒng)所要求的功能。

70(2)概要設計的基本原理

l)模塊化在軟件的71(2)概要設計的基本原理

2)抽象抽象是指獲取事物本質(zhì)的共同的特性而暫不考慮它的細節(jié),不考慮其他因素。抽象是認識復雜現(xiàn)象過程中使用的思維工具軟件工程過程中的每一步部可以看作是對軟件解決方法的抽象層次的一次細化。71(2)概要設計的基本原理

2)抽象抽象是指獲72(2)概要設計的基本原理

3)抽象信息隱藏信息隱藏指在設計和確定模塊時,使得一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說,是不能訪問的?!半[藏”:模塊化是通過定義一組相互獨立的模塊來實現(xiàn)系統(tǒng),這些獨立的模塊彼此之間僅僅交換那些為了完成系統(tǒng)功能所必需的信息,而將那些自身的實現(xiàn)細節(jié)與數(shù)據(jù)“隱藏”起來。通過抽象,可以確定組成軟件的過程實體。通過信息隱藏,可以定義模塊的過程細節(jié)和局部數(shù)據(jù)結構的存取限制。72(2)概要設計的基本原理

3)抽象信息隱藏信73(2)概要設計的基本原理

4)模塊獨立性模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。如何衡量軟件的獨立性呢?根據(jù)模塊的外部特征和內(nèi)部特征,提出了兩個定性的度量標準——耦合性和內(nèi)聚性。將軟件系統(tǒng)劃分模塊時,盡量做到高內(nèi)聚低耦合,提高模塊的獨立性,為設計高質(zhì)量的軟件結構奠定基礎。

73(2)概要設計的基本原理

4)模塊獨立性模塊獨74(2)概要設計的基本原理

4)模塊獨立性__耦合性耦合性也稱塊間聯(lián)系。指軟件系統(tǒng)結構中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性、調(diào)用的方式及傳遞的信息。模塊的耦合性有以下七種類型:非直接耦合、數(shù)據(jù)耦合、標記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合,它們的耦合程度由低到高。

74(2)概要設計的基本原理

4)模塊獨立性__耦75(2)概要設計的基本原理

4)模塊獨立性__內(nèi)聚性又稱塊內(nèi)聯(lián)系。指模塊的功能強度的度量,即一個模塊內(nèi)部各個元素彼此結合的緊密程度的度量。若一個模塊內(nèi)各元素(語句之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就很高。內(nèi)聚性有以下七類類型:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚,它們的內(nèi)聚程度由低到高。75(2)概要設計的基本原理

4)模塊獨立性__內(nèi)762.概要設計軟件結構:表示程序的總體結構,指程序的控制層次體系(多少模塊,多少層次,調(diào)用關系)762.概要設計軟件結構:表示程序的總體結構,指程序的控制77一個問題可以有多種結構來表示77一個問題可以有多種結構來表示78軟件結構的術語深度:控制的層次數(shù)寬度:控制的總跨度,即最多模塊一層的模塊數(shù)扇出:一個模塊直接控制的模塊數(shù)扇入:一個模塊被幾個模塊直接控制78軟件結構的術語79軟件結構的術語從屬:A模塊控制B模塊,則B從屬A統(tǒng)率:A模塊控制B模塊,則A統(tǒng)率B79軟件結構的術語80C1和C2中,C1’和C,C2’和C,可能是偶然性塊內(nèi)聯(lián)系,把它們從各自的模塊分離出來,C1’,C2’和C的塊內(nèi)聯(lián)系增大,模塊獨立性增強,塊間聯(lián)系看起來增大一些,又通過模塊的合并,得到圖(c)(d)塊內(nèi)聯(lián)系大,塊間聯(lián)系相應小些(模塊個數(shù)少)。80C1和C2中,C1’和C,C2’和C,可能是偶然性塊內(nèi)聯(lián)81模塊調(diào)用個數(shù)最好不要超過五個一個模塊具有過多的調(diào)用模塊或被調(diào)用模塊,那么它往往包含過多的功能,這就是這個模塊太復雜除特殊情況外(case,開關),應避免這種結構,用增加層次以減少調(diào)用個數(shù)。五個是經(jīng)驗得來的81模塊調(diào)用個數(shù)最好不要超過五個82結構化設計技術(SD)?SD是IBM公司提出的,是長期程序設計的經(jīng)驗總結。?下面將介紹如何建立系統(tǒng)的模塊結構。數(shù)據(jù)流圖的類型?SD是以數(shù)據(jù)流為基礎來設計軟件的模塊結構,那么我們首先要找出數(shù)據(jù)流圖的一些規(guī)律,從而導出軟件的初始結構。82結構化設計技術(SD)?SD是IBM公司提出的,是長期程831、變換類型數(shù)據(jù)流圖定義:具體較明顯的輸入,變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖。831、變換類型數(shù)據(jù)流圖定義:具體較明顯的輸入,變換(或稱主842、事務型數(shù)據(jù)流圖定義:圖中某個加工將它的輸入數(shù)據(jù)流分離成一串發(fā)散的數(shù)據(jù)流,形成許多活動的路徑(分支),并根據(jù)輸入的值選擇其中的一個路徑,具有這樣特征的數(shù)據(jù)流圖。事務中心:把輸入數(shù)據(jù)流分離成一串發(fā)散數(shù)據(jù)流的加工。842、事務型數(shù)據(jù)流圖定義:圖中某個加工將它的輸入數(shù)據(jù)流分離853、設計步驟:總述——模型——實例第一步:復查基本系統(tǒng)模型

這一步將看到軟件的原型,傳統(tǒng)方法往往是從這一步開始的。

在做這一步時,要對以前建立的基本數(shù)據(jù)模型,再作最后的審查,是否有遺漏的輸入或輸出。第二步:復查并精化數(shù)據(jù)流圖

對數(shù)據(jù)流圖的最后復審求精要慎重,一定要保證數(shù)據(jù)流圖的正確性。不同的選擇導出的軟件初始模塊圖的合理性有些差異。853、設計步驟:總述——模型——實例863、設計步驟:總述——模型——實例第三步:確定數(shù)據(jù)流圖的類型:變換型與事務型。變換設計:從變換型數(shù)據(jù)流圖導出軟件模塊結構的過程。如何劃分輸入、主加工、輸出三個部分??從兩頭向中間,先找出邏輯輸入和邏輯輸出,找到它們即可劃分出三個部分。863、設計步驟:總述——模型——實例變換設計:878788第四步:設計上層模塊結構:自頂向下的設計方法。頂層:主模塊,對應于主加工。一層:標準的一層,對應于變換數(shù)據(jù)流圖的三個部分,三個模塊88第四步:設計上層模塊結構:自頂向下的設計方法。89第五步:設計軟件的中下層模塊結構(基于數(shù)據(jù)流圖)。89第五步:設計軟件的中下層模塊結構(基于數(shù)據(jù)流圖)。90第六步:對初始模塊求精,得到合理的軟件結構。90第六步:對初始模塊求精,得到合理的軟件結構。912.軟件詳細設計(1)詳細設計基本任務(2)結構化程序設計方法912.軟件詳細設計(1)詳細設計基本任務92(1)詳細設計基本任務為每個模塊進行詳細的算法設計。為模塊內(nèi)的數(shù)據(jù)結構進行設計。對數(shù)據(jù)庫進行物理設計,即確定數(shù)據(jù)庫的物理結構。其他設計。根據(jù)軟件系統(tǒng)的類型,還可能要進行以下設計:代碼設計、輸入輸出格式設計、人機對話設計。編寫詳細設計說明書。為每一個模塊設計一組測試用例。評審。對處理過程的算法和數(shù)據(jù)庫的物理結構都要評審。92(1)詳細設計基本任務為每個模塊進行詳細的算法設計。93(2)結構化程序設計方法

結構化程序設計是E.W.Dijikstra在1965年提出的。它的主要觀點是采用自頂向下、逐步求精的程序設計方法;使用三種基本控制結構構造程序,任何程序都可由順序、選擇、重復三種基本控制結構構造。詳細描述處理過程常用三種工具:圖形、表格和語言。

圖形:程序流程圖、N-S圖、PAD圖表格:判定表語言:過程設計語言(PDL)

93(2)結構化程序設計方法結構化程序設計是E.W.Di94四、軟件編碼軟件編碼是將詳細設計得到的處理過程的描述轉(zhuǎn)換為基于某種計算機語言的程序,即源程序代碼。需注意根據(jù)項目的應用領域選擇適當?shù)木幊陶Z言、編程的軟硬件環(huán)境以及編碼的程序設計風格等事項

94四、軟件編碼軟件編碼是將詳細設計得到的處理過程的描述轉(zhuǎn)95四、軟件編碼FourthGenerationLanguages1stgenerationlanguagesmachinelanguages(binary)2ndgenerationlanguagesassemblers3rdgenerationlanguageshigh-levellanguagesFORTRAN,COBOL,C,C++…eachstatementindendedtobe~5-10assemblerstmts4thgenerationlanguages(4GLS)eachstatementindendedtobe~30-50assemblerstmtseasier/fastertoprogramreducescostsdeclarative–saywhatyouwant,nothowtodoit(e.g.,SQLStructuredQueryLanguage)successhasbeenmixedpositivesfastresponsefromDPdept.workwellforDBappsnegativesslow&inefficient95四、軟件編碼FourthGenerationLan96程序風格程序?qū)嶋H上也是一種供人閱讀的文章,有一個文章的風格問題。應該使程序具有良好的風格。

源程序文檔化

數(shù)據(jù)說明

語句結構

輸入/輸出方法96程序風格程序?qū)嶋H上也是一種供人閱讀的文章,有一個文章的風97源程序文檔化

標識符的命名

安排注釋

程序的視覺組織97源程序文檔化標識符的命名98標識符的命名符號名即標識符,包括模塊名、變量名、常量名、標號名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。名字應能反映它所代表的對象,應有一定實際意義。名字不是越長越好,應當選擇精煉的意義明確的名字。必要時可使用縮寫名字,但這時要注意縮寫規(guī)則要一致,并且要給每一個名字加注釋。在一個程序中,一個變量只應用于一種用途。98標識符的命名符號名即標識符,包括模塊名、變量名、常量名、99程序的注釋夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋決不是可有可無的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個源程序的1/3到1/2,甚至更多。注釋分為序言性注釋和功能性注釋。99程序的注釋夾在程序中的注釋是程序員與日后的程序讀者之間通100序言性注釋通常置于每個程序模塊的開頭部分,它應當給出程序的整體說明,對于理解程序本身具有引導作用。有些軟件開發(fā)部門對序言性注釋做了明確而嚴格的規(guī)定,要求程序編制者逐項列出。有關項目包括:程序標題;有關本模塊功能和目的的說明;主要算法;接口說明:包括調(diào)用形式,參數(shù)描述,子程序清單;100序言性注釋通常置于每個程序模塊的開頭部分,它應當給出程101序言性注釋有關數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關信息;模塊位置:在哪一個源文件中,或隸屬于哪一個軟件包;開發(fā)簡歷:模塊設計者,復審者,復審日期,修改日期及有關說明等。101序言性注釋有關數(shù)據(jù)描述:重要的變量及其用途,約束或限制102功能性注釋功能性注釋嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了下面的語句會怎么樣。而不要解釋下面怎么做。要點:描述一段程序,而不是每一個語句;用縮進和空行,使程序與注釋容易區(qū)別;注釋要正確。102功能性注釋功能性注釋嵌在源程序體中,用以描述其后的語句103程序的視覺組織恰當?shù)乩每崭?,可以突出運算的優(yōu)先性,避免發(fā)生運算的錯誤。自然的程序段之間可用空行隔開;移行也叫做向右縮格。它是指程序中的各行不必都在左端對齊,都從第一格起排列。這樣做使程序完全分不清層次關系。對于選擇語句和循環(huán)語句,把其中的程序段語句向右做階梯式移行。使程序的邏輯結構更加清晰。103程序的視覺組織恰當?shù)乩每崭瘢梢酝怀鲞\算的優(yōu)先性,避104數(shù)據(jù)說明在設計階段已經(jīng)確定了數(shù)據(jù)結構的組織及其復雜性。在編寫程序時,則需要注意數(shù)據(jù)說明的風格。為了使程序中數(shù)據(jù)說明更易于理解和維護,必須注意以下幾點。

1.數(shù)據(jù)說明的次序應當規(guī)范化

2.說明語句中變量安排有序化

3.使用注釋說明復雜數(shù)據(jù)結構104數(shù)據(jù)說明在設計階段已經(jīng)確定了數(shù)據(jù)結構的組織及其復雜性。105數(shù)據(jù)說明1.數(shù)據(jù)說明的次序應當規(guī)范化數(shù)據(jù)說明次序規(guī)范化,使數(shù)據(jù)屬性容易查找,也有利于測試,排錯和維護。原則上,數(shù)據(jù)說明的次序與語法無關,其次序是任意的。但出于閱讀、理解和維護的需要,最好使其規(guī)范化,使說明的先后次序固定。2.說明語句中變量安排有序化當多個變量名在一個說明語句中說明時,應當對這些變量按字母的順序排列。帶標號的全程數(shù)據(jù)也應當按字母的順序排列。105數(shù)據(jù)說明1.數(shù)據(jù)說明的次序應當規(guī)范化106數(shù)據(jù)說明3.使用注釋說明復雜數(shù)據(jù)結構如果設計了一個復雜的數(shù)據(jù)結構,應當使用注釋來說明在程序?qū)崿F(xiàn)時這個數(shù)據(jù)結構的固有特點。106數(shù)據(jù)說明3.使用注釋說明復雜數(shù)據(jù)結構107語句結構在設計階段確定了軟件的邏輯流結構,但構造單個語句則是編碼階段的任務。語句構造力求簡單,直接,不能為了片面追求效率而使語句復雜化。1、在一行內(nèi)只寫一條語句2、程序編寫首先應當考慮清晰性

程序編寫首先應當考慮清晰性,不要刻意追求技巧性,使程序編寫得過于緊湊。3、程序要能直截了當?shù)卣f明程序員的用意。107語句結構在設計階段確定了軟件的邏輯流結構,但構造單個語108語句結構4.除非對效率有特殊的要求,程序編寫要做到清晰第一,效率第二。不要為了追求效率而喪失了清晰性。事實上,程序效率的提高主要應通過選擇高效的算法來實現(xiàn)。5.首先要保證程序正確,然后才要求提高速度。反過來說,在使程序高速運行時,首先要保證它是正確的。6.避免使用臨時變量而使可讀性下降。7.讓編譯程序做簡單的優(yōu)化。8.盡可能使用庫函數(shù)9.避免不必要的轉(zhuǎn)移。108語句結構4.除非對效率有特殊的要求,程序編寫要做109語句結構10.盡量只采用三種基本的控制結構來編寫程序。11.避免使用空的ELSE語句和IF…THENIF…的語句。12.避免采用過于復雜的條件測試。13.盡量減少使用“否定”條件的條件語句14.盡可能用通俗易懂的偽碼來描述程序的流程,然后再翻譯成必須使用的語言。15.數(shù)據(jù)結構要有利于程序的簡化。16.要模塊化,使模塊功能盡可能單一化,模塊間的耦合能夠清晰可見。109語句結構10.盡量只采用三種基本的控制結構來編寫程序。110語句結構17.利用信息隱蔽,確保每一個模塊的獨立性。18.從數(shù)據(jù)出發(fā)去構造程序。19.不要修補不好的程序,要重新編寫。也不要一味地追求代碼的復用,要重新組織。20.對太大的程序,要分塊編寫、測試,然后再集成。21.對遞歸定義的數(shù)據(jù)結構盡量使用遞歸過程。110語句結構17.利用信息隱蔽,確保每一個模塊的獨立性。111輸入/輸出在設計和編碼時都應考慮下列原則:

1.對所有的輸入數(shù)據(jù)都要進行檢驗,識別錯誤的輸入,以保證每個數(shù)據(jù)的有效性;

2.檢查輸入項的各種重要組合的合理性,必要時報告輸入狀態(tài)信息;

3.使得輸入的步驟和操作盡可能簡單,并保持簡單的輸入格式;

111輸入/輸出在設計和編碼時都應考慮下列原則:112輸入/輸出

4.輸入數(shù)據(jù)時,應允許使用自由格式輸入;

5.應允許缺省值;

6.輸入一批數(shù)據(jù)時,最好使用輸入結束標志,而不要由用戶指定輸入數(shù)據(jù)數(shù)目;

7.在交互式輸入輸入時,要在屏幕上使用提示符明確提示交互輸入的請求,指明可使用選擇項的種類和取值范圍。同時,在數(shù)據(jù)輸入的過程中和輸入結束時,也要在屏幕上給出狀態(tài)信息;

8.當程序設計語言對輸入/輸出格式有嚴格要求時,應保持輸入格式與輸入語句的要求的一致性;

9.給所有的輸出加注解,并設計輸出報表格式。112輸入/輸出4.輸入數(shù)據(jù)時,應允許使用自由格式輸入;113五、軟件測試與調(diào)試〈一〉軟件測試軟件測試概念及目的軟件測試的原則軟件測試方法軟件測試對象測試與軟件開發(fā)各階段的關系軟件測試過程測試用例設計113五、軟件測試與調(diào)試〈一〉軟件測試軟件測試概念及目的114<一>軟件測試1.軟件測試概念及目的測試階段的基本任務:是根據(jù)軟件開發(fā)各階段的文檔資料和程序的內(nèi)部結構,精心設計一組“高效”的測試用例,利用這些實例執(zhí)行程序,找出軟件中潛在的各種錯誤和缺陷。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。在IEEE提出的軟件工程標準術語中,軟件測試是指使用人工或自動手段,運行或測試某個系統(tǒng)的過程,其目的是檢驗軟件是否滿足規(guī)定的需求,或是清楚預期結果與實際結果之間的差異。

114<一>軟件測試1.軟件測試概念及目的測試階段的基本任115<一>軟件測試2.測試的原則在軟件測試中,應注意以下指導原則:測試用例應由輸入數(shù)據(jù)和預期的輸出數(shù)據(jù)兩部分組成。測試用例不僅選用合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)。除了檢查程序是否做了它應該做的事,還應該檢查程序是否做了它不應該做的事。應制定測試計劃并嚴格執(zhí)行,排除隨意性。長期保留測試用例。對發(fā)現(xiàn)錯誤較多的程序段,應進行更深入的測試。程序員避免測試自己的程序。115<一>軟件測試2.測試的原則在軟件測試中,應注意以下116<一>軟件測試3.測試方法一般分為兩大類:動態(tài)測試方法與靜態(tài)測試方法。(1)靜態(tài)測試

靜態(tài)測試指被測試程序不在機器上運行,而是采用人工檢測和計算機輔助靜態(tài)分析的手段對程序進行檢測。(2)動態(tài)測試

動態(tài)測試指通過運行程序發(fā)現(xiàn)錯誤。對軟件產(chǎn)品進行動態(tài)測試時,根據(jù)測試用例的設計方法不同一般有兩種方法,分別稱為黑盒測試法和白盒測試法。116<一>軟件測試3.測試方法一般分為兩大類:動態(tài)測試方117

4.軟件測試的對象

軟件測試并不等于程序測試。軟件測試應貫穿于軟件定義與開發(fā)的整個期間。需求分析、概要設計、詳細設計以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設計規(guī)格說明、詳細設計規(guī)格說明以及源程序,都應成為軟件測試的對象。117

4.軟件測試的對象

軟件測試并不等于程序測試。軟件測118118119測試信息流119測試信息流120測試信息流軟件配置:軟件需求規(guī)格說明、軟件設計規(guī)格說明、源代碼等;測試配置:測試計劃、測試用例、測試程序等;測試工具:測試數(shù)據(jù)自動生成程序、靜態(tài)分析程序、動態(tài)分析程序、測試結果分析程序、以及驅(qū)動測試的測試數(shù)據(jù)庫等等。120測試信息流軟件配置:軟件需求規(guī)格說明、軟件設計規(guī)格說明121測試結果分析:比較實測結果與預期結果,評價錯誤是否發(fā)生。排錯(調(diào)試):對已經(jīng)發(fā)現(xiàn)的錯誤進行錯誤定位和確定出錯性質(zhì),并改正這些錯誤,同時修改相關的文檔。修正后的文檔再測試:直到通過測試為止。121測試結果分析:比較實測結果與預期結果,評價錯誤是否發(fā)生122通過收集和分析測試結果數(shù)據(jù),對軟件建立可靠性模型利用可靠性分析,評價軟件質(zhì)量:

軟件的質(zhì)量和可靠性達到可以接受的程度;

所做的測試不足以發(fā)現(xiàn)嚴重的錯誤;如果測試發(fā)現(xiàn)不了錯誤,可以肯定,測試配置考慮得不夠細致充分,錯誤仍然潛伏在軟件中。122通過收集和分析測試結果數(shù)據(jù),對軟件建立可靠性模型1235.測試與軟件開發(fā)各階段的關系軟件開發(fā)過程是一個自頂向下,逐步細化的過程軟件計劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設計編碼是把設計用某種程序設計語言轉(zhuǎn)換成程序代碼

測試過程是依相反順序安排的自底向上,逐步集成的過程。1235.測試與軟件開發(fā)各階段的關系軟件開發(fā)過程是一個自頂124測試過程是依相反順序安排的自底向上,逐步集成的過程。124測試過程是依相反順序安排的自底向上,逐步集成的過程。125<一>軟件測試6.軟件測試過程

軟件測試一般要經(jīng)過以下四步測試:(1)單元測試主要針對模塊的五個基本特征進行測試:模塊接口,局部數(shù)據(jù)結構,重要的執(zhí)行路徑,錯誤處理,邊界條件。(2)集成測試也稱組裝測試,是在單元測試的基礎上將所有模塊按照設計要求組裝成一個完整的系統(tǒng)進行的測試。(3)確認測試又稱有效性測試,是檢查軟件的功能與性能是否與需求規(guī)格說明書中確定的指標相符合。(4)系統(tǒng)測試是將確認通過的軟件作為計算機系統(tǒng)的一個元素,與計算機硬件、外設、某些支持軟件、數(shù)據(jù)和人員等其他元素結合在一起,在實際的使用環(huán)境下,對計算機系統(tǒng)進行一系列的組裝測試和確認測試。125<一>軟件測試6.軟件測試過程軟件測試一般要經(jīng)1261261277.測試用例設計兩種常用的測試方法黑盒測試白盒測試1277.測試用例設計兩種常用的測試方法128黑盒測試把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結構和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。黑盒測試又叫做功能測試或數(shù)據(jù)驅(qū)動測試。128黑盒測試把測試對象看做一個黑盒子,測試人員完全不考慮程129黑盒測試方法是在程序接口上進行測試,主要是為了發(fā)現(xiàn)以下錯誤:

是否有不正確或遺漏了的功能?

在接口上,輸入能否正確地接受?能否輸出正確的結果?

是否有數(shù)據(jù)結構錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?

性能上是否能夠滿足要求?

是否有初始化或終止性錯誤?

129黑盒測試方法是在程序接口上進行測試,主要是為了發(fā)現(xiàn)以下130用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。但這是不可能的。130用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和131假設一個程序P有輸入量X和Y及輸出量Z。在字長為32位的計算機上運行。若X、Y取整數(shù),按黑盒方法進行窮舉測試:可能采用的測試數(shù)據(jù)組:

232×232

=264

如果測試一組數(shù)據(jù)需要1毫秒,一年工作365×24小時,完成所有測試需5億年。131假設一個程序P有輸入量X和Y及輸出量Z。在字長為32位132等價類劃分等價類劃分是一種典型的黑盒測試方法,使用這一方法時,完全不考慮程序的內(nèi)部結構,只依據(jù)程序的規(guī)格說明來設計測試用例。等價類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例。132等價類劃分等價類劃分是一種典型的黑盒測試方法,使用這一133等價類劃分使用這一方法設計測試用例要經(jīng)歷劃分等價類(列出等價類表)和選取測試用例兩步。劃分等價類

等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。測試某等價類的代表值就等價于對這一類其它值的測試。133等價類劃分使用這一方法設計測試用例要經(jīng)歷劃分等價類(列134等價類劃分等價類的劃分有兩種不同的情況:①

有效等價類:是指對于程序的規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)構成的集合。②

無效等價類:是指對于程序的規(guī)格說明來說,是不合理的,無意義的輸入數(shù)據(jù)構成的集合。在設計測試用例時,要同時考慮有效等價類和無效等價類的設計。134等價類劃分等價類的劃分有兩種不同的情況:135劃分等價類原則(1)如果輸入條件規(guī)定了取值范圍,或值的個數(shù),則可以確立一個有效等價類和兩個無效等價類。(2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。(3)如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。(4)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進行處理。這時可為每一個輸入值確立一個有效等價類,此外針對這組值確立一個無效等價類,它是所有不允許的輸入值的集合。(5)如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。135劃分等價類原則(1)如果輸入條件規(guī)定了取值范圍,或值136白盒測試把測試對象看做一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預期的狀態(tài)一致。因此白盒測試又稱為結構測試或邏輯驅(qū)動測試。136白盒測試把測試對象看做一個透明的盒子,它允許測試人員利137軟件人員使用白盒測試方法,主要想對程序模塊進行如下的檢查:對程序模塊的所有獨立的執(zhí)行路徑至少測試一次;

對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次;在循環(huán)的邊界和運行界限內(nèi)執(zhí)行循環(huán)體;測試內(nèi)部數(shù)據(jù)結構的有效性,等。137軟件人員使用白盒測試方法,主要想對程序模塊進行如下的檢138138139對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個小程序的流程圖,它包括了一個執(zhí)行20次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達520條,對每一條路徑進行測試需要1毫秒,假定一年工作365×24小時,要想把所有路徑測試完,需3170年。139對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能140邏輯覆蓋

語句覆蓋

判定覆蓋

條件覆蓋

判定-條件覆蓋

條件組合覆蓋

路徑覆蓋。邏輯覆蓋是以程序內(nèi)部的邏輯結構為基礎的設計測試用例的技術。它屬白盒測試。140邏輯覆蓋語句覆蓋判定-條件覆蓋邏輯覆蓋是以程序內(nèi)部141例(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce141例(A>1)and(B=0)(A=2)or(X142L1

(

ace

)=

{(A>1)

and(B=0)}and{(A=2)

or(X>1)}=

(A>1)

and

(B=0)

and

(A=2)

or

(A>1)

and

(B=0)

and

(X>1)=(A=2)

and

(B=0)

or

(A>1)

and

(B=0)

and

(X>1)

(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce142L1(ace)(A>1)and(143L2(abd)=

not{(A>1)

and

(B=0)}

andnot{(A=2)or

(X>1)}=

{not

(A>1)

ornot

(B=0)

}and

{not

(A=2)

andnot

(X>1)

}=

not

(A>1)

andnot

(A=2)

andnot

(X>1)

or

not

(B=0)

and

not

(A=2)

andnot

(X>1)(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce143L2(abd)(A>1)and(B144L3(abe)=

not{(A>1)

and

(B=0)}and

{(A=2)

or

(X>1)}=

{not

(A>1)

ornot

(B=0)}and

{(A=2)

or

(X>1)}=not

(A>1)

and

(A=2)

or

not

(A>1)

and

(X>1)

or

not

(B=0)and

(A=2)

or

not

(B=0)

and

(X>1)(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce144L3(abe)(A>1)and(B=0145L4(acd)={(A>1)

and

(B=0)}

andnot

{(A=2)

or

(X>1)}=(A>1)

and(B=0)

andnot

(A=2)

and

not

(X>1)(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce145L4(acd)(A>1)and(B146語句覆蓋

語句覆蓋就是設計若干個測試用例,運行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語句都在路徑L1上,所以選擇路徑L1設計測試用例,就可以覆蓋所有的可執(zhí)行語句。

(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)146語句覆蓋語句覆蓋就是設計若干個測試用例,運行被測程序147測試用例的設計格式如下

【輸入的(A,B,X)輸出的(A,B,X)】為圖例設計滿足語句覆蓋的測試用例是:【(2,0,4),(2,0,3)】覆蓋ace【L1】(A=2)

and

(B=0)

or

(A>1)

and

(B=0)

and

(X>1)

(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)147測試用例的設計格式如下

【輸入的(A,B,X)輸出148

判定覆蓋判定覆蓋就是設計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。對于圖例,如果選擇路徑L1和L2,就可得滿足要求的測試用例:(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)148判定覆蓋判定覆蓋就是設計若干個測試用例,運行被測程序149【(2,0,4),(2,0,3)】覆蓋ace【L1】【(1,1,1),(1,1,1)】覆蓋abd【L2】(A=2)

and

(B=0)

or

(A>1)

and

(B=0)

and

(X>1)

not

(A>1)

andnot

(A=2)

andnot

(X>1)

ornot

(B=0)

and

not

(A=2)

andnot

(X>1)(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)149【(2,0,4),(2,0,3)】覆蓋ace【150如果選擇路徑L3和L4,還可得另一組可用的測試用例:

【(2,1,1),(2,1,2)】覆蓋abe【L3】

【(3,0,3),(3,0,1)】覆蓋acd【L4】

not(A>1)

and

(X>1)

ornot

(B=0)

and

(A=2)

ornot

(B=0)

and

(X>1)(A>1)

and(B=0)

andnot

(A=2)

and

not

(X>1)(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)150如果選擇路徑L3和L4,還可得另一組可用的測試用例:

151條件覆蓋條件覆蓋就是設計若干個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。在圖例中,我們事先可對所有條件的取值加以標記。例如,對于第一個判斷:條件A>1取真為,取假為

條件B=0取真為,取假為

(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)151條件覆蓋條件覆蓋就是設計若干個測試用例,運行被測程序,152對于第二個判斷:條件A=2取真為,取假為

條件X>1取真為,取假為測試用例

覆蓋分支

條件取值【(2,0,4),(2,0,3)】

L1(c,e)

【(1,0,1),(1,0,1)】

L2(b,d)【(2,1,1),(2,1,2)】

L3(b,e)

或(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce對于第一個判斷:條件A>1取真為,取假為

條件B=0取真為,取假為條件覆蓋152對于第二個判斷:(A>1)and(B=0)(A=2153對于第二個判斷:條件A=2取真為,取假為

條件X>1取真為,取假為測試用例

覆蓋分支

條件取值【(1,0,3),(1,0,4)】

L3(b,e)

【(2,1,1),(2,1,2)】

L3(b,e)

(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce對于第一個判斷:條件A>1取真為,取假為

條件B=0取真為,取假為條件覆蓋153對于第二個判斷:(A>1)and(B=0)(A=2154

判定-條件覆蓋判定-條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,每個判斷中的每個分支至少執(zhí)行一次。154155

測試用例

覆蓋分支

條件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)(A=2)

and

(B=0)

or

(A>1)

and

(B=0)

and

(X>1)

not

(A>1)

andnot

(A=2)

andnot

(X>1)

ornot

(B=0)

and

not

(A=2)

andnot

(X>1)155測試用例 覆蓋分支 條件取值156

andorA>1TB=0TX=X/ATFFA=2TFX>1FX=X+1156 andorA>1TB=0TX=X/ATFFA=2TF157條件組合覆蓋條件組合覆蓋就是設計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論