軟件工程方法簡介.ppt_第1頁
軟件工程方法簡介.ppt_第2頁
軟件工程方法簡介.ppt_第3頁
軟件工程方法簡介.ppt_第4頁
軟件工程方法簡介.ppt_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件技術(shù)基礎(chǔ),第三章 軟件工程方法,3.1軟件工程概述,3.1.1 軟件工程學(xué)的形成與發(fā)展 軟件工程的提出源于60年代末期出現(xiàn)的“軟件危機(jī)”,并在較短的時(shí)間內(nèi)發(fā)展成為一個(gè)完整的學(xué)科方向,30多年來,就理論研究和工程實(shí)踐兩個(gè)方面作了大量的工作。軟件的工程化生產(chǎn)已形成一個(gè)獨(dú)立的產(chǎn)業(yè)部門,成為軟件產(chǎn)業(yè)。軟件已成為計(jì)算機(jī)工業(yè)最重要的產(chǎn)品之一。 自從1945年第一臺電子數(shù)字計(jì)算機(jī)誕生以來,軟件開發(fā)方法從機(jī)器碼編程到軟件工程方法,經(jīng)歷了三個(gè)階段: 1程序設(shè)計(jì)時(shí)期(1946年到60年代中) 生產(chǎn)方式為手工生產(chǎn)、個(gè)體勞動,憑個(gè)人經(jīng)驗(yàn); 使用工具:機(jī)器語言、匯編、服務(wù)性程序; 還沒有“軟件”的概念。,2軟件時(shí)期

2、(60年代中至70年代中),“作坊式”生產(chǎn)方式。多人分工、共同協(xié)作。 提出“軟件”概念,強(qiáng)調(diào)軟件工程師的作用,強(qiáng)調(diào)開發(fā)者的通信和協(xié)作。 隨著計(jì)算機(jī)應(yīng)用領(lǐng)域的擴(kuò)大,軟件規(guī)模及結(jié)構(gòu)的復(fù)雜化,作坊式生產(chǎn)仍然不能滿足要求,出現(xiàn)“軟件危機(jī)”。 軟件危機(jī)的表現(xiàn): 軟件開發(fā)成本和進(jìn)度估算不準(zhǔn); 用戶對軟件不滿意; 軟件質(zhì)量常被懷疑; 軟件維護(hù)困難; 缺乏完善的軟件文檔; 軟件生產(chǎn)效率低。,軟件危機(jī)產(chǎn)生的根本原因: 軟件是邏輯部件,具有無形性。應(yīng)將軟件作為一個(gè)完整的產(chǎn)品來衡量;發(fā)生故障不能用替換法,只能修改原設(shè)計(jì);開發(fā)進(jìn)度和質(zhì)量的管理和控制困難; 軟件規(guī)模越來越大,功能越來越強(qiáng),致使軟件結(jié)構(gòu)非常復(fù)雜。 以美國

3、宇航局的軟件系統(tǒng)為例: 1963年 水星計(jì)劃系統(tǒng) 200萬條指令 1967年 雙子星座計(jì)劃系統(tǒng) 400萬條指令 1973年 阿波羅計(jì)劃系統(tǒng) 1000萬條指令 1979年 哥倫比亞航天飛機(jī)系統(tǒng) 4000萬條指令 假設(shè)1個(gè)人一年生產(chǎn)一萬條有效指令,那么是否4000人生產(chǎn)一年,或400人生產(chǎn)10年就能完成任務(wù)嗎?答案是否定的。一萬條指令的復(fù)雜度決不僅僅是100條指令復(fù)雜度的100倍。 如何解決? 軟件開發(fā)方法學(xué):管理、控制、復(fù)審等方法; 支持軟件開發(fā)各階段的技術(shù)和工具:標(biāo)準(zhǔn)接口、自動代碼向?qū)Чぞ摺⒊绦蛘_性驗(yàn)證器等。,3軟件工程時(shí)期(70年代至今),1968年、1969年北大西洋公約組織成員國軟件工

4、作者研討會提出了“軟件工程”這一術(shù)語,根本目的在于克服“軟件危機(jī)”中遇到的困難,從此軟件生產(chǎn)進(jìn)入軟件工程時(shí)代。 特點(diǎn): 硬件已向“四化”(巨型、微型、網(wǎng)絡(luò)、智能)發(fā)展,數(shù)據(jù)庫技術(shù)已成熟并廣泛應(yīng)用,第三、四代語言出現(xiàn)。 第一代軟件技術(shù)結(jié)構(gòu)化程序設(shè)計(jì)在數(shù)值計(jì)算領(lǐng)域取得優(yōu)異成績; 第二代軟件技術(shù)軟件測試技術(shù)、方法、原理用于軟件生產(chǎn)過程; 第三代軟件技術(shù)處理需求定義技術(shù),用于軟件需求分析和描述。,3.1.2 軟件工程及軟件工程學(xué),軟件工程的定義: Boehm: 運(yùn)用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)運(yùn)行、維護(hù)這些程序所必需的相關(guān)文件資料。 IEEE: 軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的

5、系統(tǒng)方法。 軟件工程學(xué)的內(nèi)涵:,3.2軟件與軟件生存周期,3.2.1 軟件 軟件的定義:軟件是程序開發(fā)以及開發(fā)、使用和維護(hù)程序所需要的各種文檔,在計(jì)算機(jī)系統(tǒng)的范疇內(nèi),軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的一個(gè)部分。通常,軟件部分的完整配置應(yīng)包括以下幾主要部分: (1) 應(yīng)用程序直接面向用戶,為解決各種特定問題而編寫的程序,如實(shí)時(shí)控制、工程研究、科學(xué)計(jì)算、信息管理、人工智能等。 (2) 系統(tǒng)程序?yàn)閼?yīng)用程序服務(wù)所編制的程序匯總,面向計(jì)算機(jī)硬件,是應(yīng)用程序的支撐部分。 (3) 面向用戶的文檔如何使用和維護(hù)應(yīng)用程序的資料,如用戶手冊、操作手冊以及維護(hù)手冊等。 (4) 面向開發(fā)者的文檔記載了應(yīng)用程序的設(shè)計(jì)和

6、開發(fā)過程,以便進(jìn)一步開發(fā)和修改。如,可行性研究報(bào)告,項(xiàng)目開發(fā)計(jì)劃,需求規(guī)格說明書、設(shè)計(jì)說明書、程序設(shè)計(jì)說明、測試報(bào)告等。,軟件和硬件的對照,3.2.2 軟件生存周期從用戶提出要求到廢棄不用的過程,一、瀑布模型1976年,B.W.Boehm提出,二、快速原型,三、面向?qū)ο笊嬷芷谀P?主導(dǎo)思想:在整個(gè)軟件開發(fā)過程中將面向?qū)ο蠹夹g(shù)貫穿于整個(gè)生存周期。當(dāng)然,還要結(jié)合傳統(tǒng)開發(fā)模式中好的、已被無數(shù)成功開發(fā)活動證明是可行的經(jīng)驗(yàn)和技術(shù)。,3.3 軟件的需求分析,3.3.1 需求分析概述 需求分析之前的可行性研究: 技術(shù)可行性 經(jīng)濟(jì)可行性 操作可行性 需求分析的任務(wù):用戶和軟件人員進(jìn)一步理解需求,并將雙方的共

7、同理解表達(dá)成一致接受的“需求說明書”。 需求說明書的作用: 作為用戶和開發(fā)者的合同,為雙方相互了解提供基礎(chǔ); 作為開發(fā)者進(jìn)行設(shè)計(jì)和編程的根據(jù); 作為軟件開發(fā)完成后驗(yàn)收的依據(jù)。,需求說明書的內(nèi)容包括以下部分,概述: 說明開發(fā)軟件的目的、意義和背景。 需求說明 功能說明:列出各種功能需求的序號、名稱和簡要說明; 性能說明:說明處理速度、相應(yīng)時(shí)間、精度等。 數(shù)據(jù)描述 數(shù)據(jù)流圖 數(shù)據(jù)字典 接口說明 運(yùn)行環(huán)境 硬件設(shè)備 支持軟件 限制:說明軟件開發(fā)的成本、進(jìn)度、設(shè)計(jì)和實(shí)現(xiàn)方面的限制,3.4 軟件設(shè)計(jì)“做什么?”,3.4.1 軟件設(shè)計(jì)概述 一、任務(wù)和目標(biāo) 任務(wù):將分析階段獲得的需求說明轉(zhuǎn)換為計(jì)算機(jī)中可實(shí)現(xiàn)

8、的系統(tǒng),完成系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)),提交軟件設(shè)計(jì)說明書。 目標(biāo): 提高可靠性:包括正確性和健壯性; 提高可維護(hù)性:可讀性、可擴(kuò)充性、可修改性; 提高可理解性:模塊化、界面清晰、規(guī)格說明清晰無歧義; 提高效率:時(shí)間、空間效率;,二、設(shè)計(jì)方法和步驟,概要設(shè)計(jì) 定義系統(tǒng)的邏輯結(jié)構(gòu),包括:系統(tǒng)的模塊劃分、建立模塊的層次結(jié)構(gòu)、邏輯關(guān)系、設(shè)計(jì)全局DS及DB; 詳細(xì)設(shè)計(jì) 根據(jù)每個(gè)模塊的功能描述,設(shè)計(jì)模塊內(nèi)部的實(shí)現(xiàn)算法、模塊所需要的局部數(shù)據(jù)結(jié)構(gòu)。,三、設(shè)計(jì)文檔,設(shè)計(jì)階段要交付的文檔是設(shè)計(jì)說明書。它可對編程和測試提供指南服務(wù),還可在系統(tǒng)交付使用后,為維護(hù)人員提供幫助。內(nèi)容包括: 概述 描述設(shè)計(jì)工作

9、總的范圍;系統(tǒng)目標(biāo)、功能、接口等; 參考文檔 現(xiàn)有相關(guān)技術(shù)參考資料; 系統(tǒng)結(jié)構(gòu) 包括:系統(tǒng)的模塊劃分、每個(gè)模塊的功能簡介、各個(gè)模塊之間的邏輯關(guān)系; DS及DB設(shè)計(jì) 用圖表把設(shè)計(jì)結(jié)果描述出來; 接口設(shè)計(jì) 包括:人機(jī)界面設(shè)計(jì)、軟、硬件之間的接口設(shè)計(jì)、本系統(tǒng)與外界以及與支持軟件之間的接口關(guān)系; 模塊設(shè)計(jì) 根據(jù)模塊的功能,用相應(yīng)的工具描述每個(gè)模塊的流程,以及每個(gè)模塊用到的數(shù)據(jù)結(jié)構(gòu); 測試準(zhǔn)備 擬定測試大綱,整體策略等。,3.4.2 軟件設(shè)計(jì)準(zhǔn)則,如何度量軟件設(shè)計(jì)的標(biāo)準(zhǔn),計(jì)算機(jī)業(yè)界對該問題還處于初期認(rèn)識階段。 不分模塊的程序是無法理解、管理和維護(hù)的程序。凡是使用計(jì)算機(jī)編程的人均自覺不自覺地將程序劃分為模

10、塊。但有這樣一個(gè)實(shí)際問題,一個(gè)系統(tǒng)到底劃分為多少個(gè)模塊好呢?如何度量模塊化的程度呢? 經(jīng)典設(shè)計(jì)準(zhǔn)則 軟件結(jié)構(gòu)準(zhǔn)則 模塊化準(zhǔn)則 模塊獨(dú)立性準(zhǔn)模塊的偶合性 模塊的內(nèi)聚性,舉例:汽車儀表盤設(shè)計(jì),設(shè)計(jì)一個(gè)“智能”產(chǎn)品汽車數(shù)字儀表盤,實(shí)現(xiàn)如下功能: 通過模-數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理器的接口; 在發(fā)光二級管面板上顯示數(shù)據(jù); 指示mph(每小時(shí)英里數(shù))、行駛里程、每加侖汽油行駛的英里數(shù)(mpg)等; 指示加速|(zhì)減速 超速警告;車速超過55英里/小時(shí),則發(fā)出超速警告鈴聲。,汽車數(shù)字儀表系統(tǒng)的數(shù)據(jù)流程圖(DFD),上箭頭,輸入流,3.5 軟件編程,3.5.1 軟件編程概述 任務(wù):在總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)之后,為每個(gè)

11、模塊編寫程序; 正確評介和選擇編程語言對于完成任務(wù)十分重要;,3.5.2 程序設(shè)計(jì)語言,開發(fā)軟件系統(tǒng)時(shí)必須根據(jù)實(shí)際情況選擇使用的程序設(shè)計(jì)語言。 程序設(shè)計(jì)語言分“機(jī)器語言”、“匯編語言”和“高級語言”;機(jī)器語言和匯編語言的程序執(zhí)行效率高,但生產(chǎn)效率低;高級語言的程序執(zhí)行效率不如匯編語言,但編程效率則要高得多,同時(shí)還有可讀性、可維護(hù)性好等優(yōu)點(diǎn)。 因此,除了在一些特殊應(yīng)用領(lǐng)域(例如,對程序執(zhí)行時(shí)間、存儲空間都有很嚴(yán)格限制的情況;需要產(chǎn)生任意的、甚至非法的指令序列等)之外,其他程序一律使用高級語言編程。 選擇語言時(shí),不僅要考慮理論上的標(biāo)準(zhǔn),還必須同時(shí)考慮使用方面的各種限制。,1、BASIC語言,“初學(xué)

12、者通用符號指令代碼”,具有會話功能,便于人機(jī)交互的語言; Microsoft 開發(fā); 2、FORTRAN語言1956年出現(xiàn) 公式翻譯語言:利用公式的表達(dá)方式和英語語句組合形式編程; 適用于科學(xué)和工程計(jì)算的程序設(shè)計(jì)語言; 3、COBOL語言 通用面向商業(yè)語言,用于商業(yè)、金融業(yè)數(shù)據(jù)處理程序設(shè)計(jì) 4、PASCAL語言 著名的結(jié)構(gòu)化語言,5、C語言 最優(yōu)秀的結(jié)構(gòu)化語言 可直接訪問物理地址和寄存器,進(jìn)行系統(tǒng)調(diào)用 6、ADA語言 美國防部研制; 用于嵌入式計(jì)算設(shè)計(jì)的語言,類似PASCAL; 7、LISP語言 符號處理語言;用于人工智能領(lǐng)域;定理證明、樹的查找等問題; 8、PROLOG語言 用于人工智能、專

13、家系統(tǒng)的語言; 陳述性語言,描述做什么而不是怎么做;,9、SMALLTALK語言 首先實(shí)現(xiàn)面向?qū)ο蟮恼Z言; 10、C+ 最受歡迎的面向?qū)ο笳Z言; 和C兼容; 11、JAVA 徹底的面向?qū)ο箝_發(fā)工具; Internet應(yīng)用程序開發(fā); 12、C# MS設(shè)計(jì),用于和.NET framework協(xié)作; 與JAVA非常相似“派生于C和C+的簡單、現(xiàn)代、面向?qū)ο蠛皖愋桶踩某绦蛘Z言”。,語言選擇的一般準(zhǔn)則,項(xiàng)目的應(yīng)用領(lǐng)域; 算法和計(jì)算復(fù)雜性; 軟件執(zhí)行環(huán)境; 性能因素; 數(shù)據(jù)結(jié)構(gòu)復(fù)雜性; 軟件開發(fā)人員的水平。,3.6 軟件測試,3.6.1 軟件測試概述 一、基本概念 軟件測試:為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程

14、; 調(diào)試: 找出程序中的錯(cuò)誤原因、位置并加以糾正; 可靠性: 在給定時(shí)間內(nèi),軟件不發(fā)生錯(cuò)誤的概率; 二、測試目標(biāo)和原則 目標(biāo): 測試是為了發(fā)現(xiàn)軟件中的錯(cuò)誤而運(yùn)行軟件的過程; 好的測試方案是盡可能地發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案; 成功的測試是發(fā)現(xiàn)出至今尚未發(fā)現(xiàn)的錯(cuò)誤的測試。,軟件測試基本原則:,不要抱“軟件不會有錯(cuò)或查不出錯(cuò)”的幻想; 設(shè)計(jì)測試用例時(shí),應(yīng)同時(shí)確定輸出結(jié)果; 設(shè)計(jì)測試用例時(shí),應(yīng)包括合理的輸入數(shù)據(jù)和不合理的輸入數(shù)據(jù); 軟件設(shè)計(jì)者應(yīng)當(dāng)避免測試自己的程序; 嚴(yán)格全面地執(zhí)行測試計(jì)劃; 測試完成后,應(yīng)該妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告。,三、測試的方式,人工測試 人工對

15、軟件進(jìn)行閱讀和檢查; 檢查軟件結(jié)構(gòu)是否合理,功能是否達(dá)到設(shè)計(jì)說明要求;各模塊接口是否正確;模塊內(nèi)部控制邏輯是否正確;進(jìn)行數(shù)據(jù)結(jié)構(gòu)分析和語法分析; 動態(tài)測試 上機(jī)測試,用設(shè)計(jì)好的測試用例執(zhí)行程序; 自動測試 利用測試工具進(jìn)行測試; 包括:靜態(tài)分析工具、動態(tài)分析工具和測試評估工具。,3.6.2 軟件測試策略,3.7 軟件維護(hù),3.7.1 軟件維護(hù)的概念 一個(gè)軟件產(chǎn)品投入使用后,通常由于各種理由需要對它作適當(dāng)?shù)淖兏耆蛔兊那闆r是很少見的。把軟件交付使用后的變更稱為維護(hù)。 維護(hù)是軟件生存周期最后一個(gè)階段,由于維護(hù)工作的重要性往往被人們忽視,這更增加了維護(hù)工作的困難。平均而言,大型軟件的維護(hù)成本是開

16、發(fā)成本的4倍左右。國外許多軟件開發(fā)組織把60%以上的人力用于維護(hù)已投入運(yùn)行的軟件。這個(gè)比例隨著軟件數(shù)量增多和使用壽命延長,還在繼續(xù)上升。學(xué)習(xí)軟件工程學(xué)的主要目的之一就是研究如何減少花費(fèi)在軟件維護(hù)上的工作量,降低維護(hù)成本。,一、軟件維護(hù)的主要原因,對在運(yùn)行過程中某些特定條件下暴露出來的程序錯(cuò)誤和設(shè)計(jì)缺陷做修改; 由于軟件運(yùn)行環(huán)境變換(硬件增加),需要修改軟件以適應(yīng)新的環(huán)境; 為增加軟件的功能,提高性能進(jìn)行修改升級。,二、軟件維護(hù)的種類,校正性維護(hù):把診斷、校正軟件錯(cuò)誤的過程稱之為校正性維護(hù)。這部分維護(hù)工作約占全部維護(hù)活動的17%21%。 適應(yīng)性維護(hù):由于計(jì)算機(jī)技術(shù)的飛速發(fā)展,外部設(shè)備和其他系統(tǒng)元素經(jīng)常改進(jìn)和變化,為適應(yīng)變化的環(huán)境而修改軟件的活動稱之為適應(yīng)性維護(hù)。它占總維護(hù)活動的18%25%。 完善性

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論