




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、軟件技術(shù)基礎(chǔ),第三章 軟件工程方法,3.1軟件工程概述,3.1.1 軟件工程學的形成與發(fā)展 軟件工程的提出源于60年代末期出現(xiàn)的“軟件危機”,并在較短的時間內(nèi)發(fā)展成為一個完整的學科方向,30多年來,就理論研究和工程實踐兩個方面作了大量的工作。軟件的工程化生產(chǎn)已形成一個獨立的產(chǎn)業(yè)部門,成為軟件產(chǎn)業(yè)。軟件已成為計算機工業(yè)最重要的產(chǎn)品之一。 自從1945年第一臺電子數(shù)字計算機誕生以來,軟件開發(fā)方法從機器碼編程到軟件工程方法,經(jīng)歷了三個階段: 1程序設(shè)計時期(1946年到60年代中) 生產(chǎn)方式為手工生產(chǎn)、個體勞動,憑個人經(jīng)驗; 使用工具:機器語言、匯編、服務(wù)性程序; 還沒有“軟件”的概念。,2軟件時期
2、(60年代中至70年代中),“作坊式”生產(chǎn)方式。多人分工、共同協(xié)作。 提出“軟件”概念,強調(diào)軟件工程師的作用,強調(diào)開發(fā)者的通信和協(xié)作。 隨著計算機應用領(lǐng)域的擴大,軟件規(guī)模及結(jié)構(gòu)的復雜化,作坊式生產(chǎn)仍然不能滿足要求,出現(xiàn)“軟件危機”。 軟件危機的表現(xiàn): 軟件開發(fā)成本和進度估算不準; 用戶對軟件不滿意; 軟件質(zhì)量常被懷疑; 軟件維護困難; 缺乏完善的軟件文檔; 軟件生產(chǎn)效率低。,軟件危機產(chǎn)生的根本原因: 軟件是邏輯部件,具有無形性。應將軟件作為一個完整的產(chǎn)品來衡量;發(fā)生故障不能用替換法,只能修改原設(shè)計;開發(fā)進度和質(zhì)量的管理和控制困難; 軟件規(guī)模越來越大,功能越來越強,致使軟件結(jié)構(gòu)非常復雜。 以美國
3、宇航局的軟件系統(tǒng)為例: 1963年 水星計劃系統(tǒng) 200萬條指令 1967年 雙子星座計劃系統(tǒng) 400萬條指令 1973年 阿波羅計劃系統(tǒng) 1000萬條指令 1979年 哥倫比亞航天飛機系統(tǒng) 4000萬條指令 假設(shè)1個人一年生產(chǎn)一萬條有效指令,那么是否4000人生產(chǎn)一年,或400人生產(chǎn)10年就能完成任務(wù)嗎?答案是否定的。一萬條指令的復雜度決不僅僅是100條指令復雜度的100倍。 如何解決? 軟件開發(fā)方法學:管理、控制、復審等方法; 支持軟件開發(fā)各階段的技術(shù)和工具:標準接口、自動代碼向?qū)Чぞ摺⒊绦蛘_性驗證器等。,3軟件工程時期(70年代至今),1968年、1969年北大西洋公約組織成員國軟件工
4、作者研討會提出了“軟件工程”這一術(shù)語,根本目的在于克服“軟件危機”中遇到的困難,從此軟件生產(chǎn)進入軟件工程時代。 特點: 硬件已向“四化”(巨型、微型、網(wǎng)絡(luò)、智能)發(fā)展,數(shù)據(jù)庫技術(shù)已成熟并廣泛應用,第三、四代語言出現(xiàn)。 第一代軟件技術(shù)結(jié)構(gòu)化程序設(shè)計在數(shù)值計算領(lǐng)域取得優(yōu)異成績; 第二代軟件技術(shù)軟件測試技術(shù)、方法、原理用于軟件生產(chǎn)過程; 第三代軟件技術(shù)處理需求定義技術(shù),用于軟件需求分析和描述。,3.1.2 軟件工程及軟件工程學,軟件工程的定義: Boehm: 運用現(xiàn)代科學技術(shù)知識來設(shè)計并構(gòu)造計算機程序及為開發(fā)運行、維護這些程序所必需的相關(guān)文件資料。 IEEE: 軟件工程是開發(fā)、運行、維護和修復軟件的
5、系統(tǒng)方法。 軟件工程學的內(nèi)涵:,3.2軟件與軟件生存周期,3.2.1 軟件 軟件的定義:軟件是程序開發(fā)以及開發(fā)、使用和維護程序所需要的各種文檔,在計算機系統(tǒng)的范疇內(nèi),軟件是計算機系統(tǒng)中與硬件相互依存的一個部分。通常,軟件部分的完整配置應包括以下幾主要部分: (1) 應用程序直接面向用戶,為解決各種特定問題而編寫的程序,如實時控制、工程研究、科學計算、信息管理、人工智能等。 (2) 系統(tǒng)程序為應用程序服務(wù)所編制的程序匯總,面向計算機硬件,是應用程序的支撐部分。 (3) 面向用戶的文檔如何使用和維護應用程序的資料,如用戶手冊、操作手冊以及維護手冊等。 (4) 面向開發(fā)者的文檔記載了應用程序的設(shè)計和
6、開發(fā)過程,以便進一步開發(fā)和修改。如,可行性研究報告,項目開發(fā)計劃,需求規(guī)格說明書、設(shè)計說明書、程序設(shè)計說明、測試報告等。,軟件和硬件的對照,3.2.2 軟件生存周期從用戶提出要求到廢棄不用的過程,一、瀑布模型1976年,B.W.Boehm提出,二、快速原型,三、面向?qū)ο笊嬷芷谀P?主導思想:在整個軟件開發(fā)過程中將面向?qū)ο蠹夹g(shù)貫穿于整個生存周期。當然,還要結(jié)合傳統(tǒng)開發(fā)模式中好的、已被無數(shù)成功開發(fā)活動證明是可行的經(jīng)驗和技術(shù)。,3.3 軟件的需求分析,3.3.1 需求分析概述 需求分析之前的可行性研究: 技術(shù)可行性 經(jīng)濟可行性 操作可行性 需求分析的任務(wù):用戶和軟件人員進一步理解需求,并將雙方的共
7、同理解表達成一致接受的“需求說明書”。 需求說明書的作用: 作為用戶和開發(fā)者的合同,為雙方相互了解提供基礎(chǔ); 作為開發(fā)者進行設(shè)計和編程的根據(jù); 作為軟件開發(fā)完成后驗收的依據(jù)。,需求說明書的內(nèi)容包括以下部分,概述: 說明開發(fā)軟件的目的、意義和背景。 需求說明 功能說明:列出各種功能需求的序號、名稱和簡要說明; 性能說明:說明處理速度、相應時間、精度等。 數(shù)據(jù)描述 數(shù)據(jù)流圖 數(shù)據(jù)字典 接口說明 運行環(huán)境 硬件設(shè)備 支持軟件 限制:說明軟件開發(fā)的成本、進度、設(shè)計和實現(xiàn)方面的限制,3.4 軟件設(shè)計“做什么?”,3.4.1 軟件設(shè)計概述 一、任務(wù)和目標 任務(wù):將分析階段獲得的需求說明轉(zhuǎn)換為計算機中可實現(xiàn)
8、的系統(tǒng),完成系統(tǒng)的結(jié)構(gòu)設(shè)計(數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)),提交軟件設(shè)計說明書。 目標: 提高可靠性:包括正確性和健壯性; 提高可維護性:可讀性、可擴充性、可修改性; 提高可理解性:模塊化、界面清晰、規(guī)格說明清晰無歧義; 提高效率:時間、空間效率;,二、設(shè)計方法和步驟,概要設(shè)計 定義系統(tǒng)的邏輯結(jié)構(gòu),包括:系統(tǒng)的模塊劃分、建立模塊的層次結(jié)構(gòu)、邏輯關(guān)系、設(shè)計全局DS及DB; 詳細設(shè)計 根據(jù)每個模塊的功能描述,設(shè)計模塊內(nèi)部的實現(xiàn)算法、模塊所需要的局部數(shù)據(jù)結(jié)構(gòu)。,三、設(shè)計文檔,設(shè)計階段要交付的文檔是設(shè)計說明書。它可對編程和測試提供指南服務(wù),還可在系統(tǒng)交付使用后,為維護人員提供幫助。內(nèi)容包括: 概述 描述設(shè)計工作
9、總的范圍;系統(tǒng)目標、功能、接口等; 參考文檔 現(xiàn)有相關(guān)技術(shù)參考資料; 系統(tǒng)結(jié)構(gòu) 包括:系統(tǒng)的模塊劃分、每個模塊的功能簡介、各個模塊之間的邏輯關(guān)系; DS及DB設(shè)計 用圖表把設(shè)計結(jié)果描述出來; 接口設(shè)計 包括:人機界面設(shè)計、軟、硬件之間的接口設(shè)計、本系統(tǒng)與外界以及與支持軟件之間的接口關(guān)系; 模塊設(shè)計 根據(jù)模塊的功能,用相應的工具描述每個模塊的流程,以及每個模塊用到的數(shù)據(jù)結(jié)構(gòu); 測試準備 擬定測試大綱,整體策略等。,3.4.2 軟件設(shè)計準則,如何度量軟件設(shè)計的標準,計算機業(yè)界對該問題還處于初期認識階段。 不分模塊的程序是無法理解、管理和維護的程序。凡是使用計算機編程的人均自覺不自覺地將程序劃分為模
10、塊。但有這樣一個實際問題,一個系統(tǒng)到底劃分為多少個模塊好呢?如何度量模塊化的程度呢? 經(jīng)典設(shè)計準則 軟件結(jié)構(gòu)準則 模塊化準則 模塊獨立性準模塊的偶合性 模塊的內(nèi)聚性,舉例:汽車儀表盤設(shè)計,設(shè)計一個“智能”產(chǎn)品汽車數(shù)字儀表盤,實現(xiàn)如下功能: 通過模-數(shù)轉(zhuǎn)換實現(xiàn)傳感器和微處理器的接口; 在發(fā)光二級管面板上顯示數(shù)據(jù); 指示mph(每小時英里數(shù))、行駛里程、每加侖汽油行駛的英里數(shù)(mpg)等; 指示加速|(zhì)減速 超速警告;車速超過55英里/小時,則發(fā)出超速警告鈴聲。,汽車數(shù)字儀表系統(tǒng)的數(shù)據(jù)流程圖(DFD),上箭頭,輸入流,3.5 軟件編程,3.5.1 軟件編程概述 任務(wù):在總體設(shè)計和詳細設(shè)計之后,為每個
11、模塊編寫程序; 正確評介和選擇編程語言對于完成任務(wù)十分重要;,3.5.2 程序設(shè)計語言,開發(fā)軟件系統(tǒng)時必須根據(jù)實際情況選擇使用的程序設(shè)計語言。 程序設(shè)計語言分“機器語言”、“匯編語言”和“高級語言”;機器語言和匯編語言的程序執(zhí)行效率高,但生產(chǎn)效率低;高級語言的程序執(zhí)行效率不如匯編語言,但編程效率則要高得多,同時還有可讀性、可維護性好等優(yōu)點。 因此,除了在一些特殊應用領(lǐng)域(例如,對程序執(zhí)行時間、存儲空間都有很嚴格限制的情況;需要產(chǎn)生任意的、甚至非法的指令序列等)之外,其他程序一律使用高級語言編程。 選擇語言時,不僅要考慮理論上的標準,還必須同時考慮使用方面的各種限制。,1、BASIC語言,“初學
12、者通用符號指令代碼”,具有會話功能,便于人機交互的語言; Microsoft 開發(fā); 2、FORTRAN語言1956年出現(xiàn) 公式翻譯語言:利用公式的表達方式和英語語句組合形式編程; 適用于科學和工程計算的程序設(shè)計語言; 3、COBOL語言 通用面向商業(yè)語言,用于商業(yè)、金融業(yè)數(shù)據(jù)處理程序設(shè)計 4、PASCAL語言 著名的結(jié)構(gòu)化語言,5、C語言 最優(yōu)秀的結(jié)構(gòu)化語言 可直接訪問物理地址和寄存器,進行系統(tǒng)調(diào)用 6、ADA語言 美國防部研制; 用于嵌入式計算設(shè)計的語言,類似PASCAL; 7、LISP語言 符號處理語言;用于人工智能領(lǐng)域;定理證明、樹的查找等問題; 8、PROLOG語言 用于人工智能、專
13、家系統(tǒng)的語言; 陳述性語言,描述做什么而不是怎么做;,9、SMALLTALK語言 首先實現(xiàn)面向?qū)ο蟮恼Z言; 10、C+ 最受歡迎的面向?qū)ο笳Z言; 和C兼容; 11、JAVA 徹底的面向?qū)ο箝_發(fā)工具; Internet應用程序開發(fā); 12、C# MS設(shè)計,用于和.NET framework協(xié)作; 與JAVA非常相似“派生于C和C+的簡單、現(xiàn)代、面向?qū)ο蠛皖愋桶踩某绦蛘Z言”。,語言選擇的一般準則,項目的應用領(lǐng)域; 算法和計算復雜性; 軟件執(zhí)行環(huán)境; 性能因素; 數(shù)據(jù)結(jié)構(gòu)復雜性; 軟件開發(fā)人員的水平。,3.6 軟件測試,3.6.1 軟件測試概述 一、基本概念 軟件測試:為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程
14、; 調(diào)試: 找出程序中的錯誤原因、位置并加以糾正; 可靠性: 在給定時間內(nèi),軟件不發(fā)生錯誤的概率; 二、測試目標和原則 目標: 測試是為了發(fā)現(xiàn)軟件中的錯誤而運行軟件的過程; 好的測試方案是盡可能地發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤的測試方案; 成功的測試是發(fā)現(xiàn)出至今尚未發(fā)現(xiàn)的錯誤的測試。,軟件測試基本原則:,不要抱“軟件不會有錯或查不出錯”的幻想; 設(shè)計測試用例時,應同時確定輸出結(jié)果; 設(shè)計測試用例時,應包括合理的輸入數(shù)據(jù)和不合理的輸入數(shù)據(jù); 軟件設(shè)計者應當避免測試自己的程序; 嚴格全面地執(zhí)行測試計劃; 測試完成后,應該妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告。,三、測試的方式,人工測試 人工對
15、軟件進行閱讀和檢查; 檢查軟件結(jié)構(gòu)是否合理,功能是否達到設(shè)計說明要求;各模塊接口是否正確;模塊內(nèi)部控制邏輯是否正確;進行數(shù)據(jù)結(jié)構(gòu)分析和語法分析; 動態(tài)測試 上機測試,用設(shè)計好的測試用例執(zhí)行程序; 自動測試 利用測試工具進行測試; 包括:靜態(tài)分析工具、動態(tài)分析工具和測試評估工具。,3.6.2 軟件測試策略,3.7 軟件維護,3.7.1 軟件維護的概念 一個軟件產(chǎn)品投入使用后,通常由于各種理由需要對它作適當?shù)淖兏?,完全不變的情況是很少見的。把軟件交付使用后的變更稱為維護。 維護是軟件生存周期最后一個階段,由于維護工作的重要性往往被人們忽視,這更增加了維護工作的困難。平均而言,大型軟件的維護成本是開
16、發(fā)成本的4倍左右。國外許多軟件開發(fā)組織把60%以上的人力用于維護已投入運行的軟件。這個比例隨著軟件數(shù)量增多和使用壽命延長,還在繼續(xù)上升。學習軟件工程學的主要目的之一就是研究如何減少花費在軟件維護上的工作量,降低維護成本。,一、軟件維護的主要原因,對在運行過程中某些特定條件下暴露出來的程序錯誤和設(shè)計缺陷做修改; 由于軟件運行環(huán)境變換(硬件增加),需要修改軟件以適應新的環(huán)境; 為增加軟件的功能,提高性能進行修改升級。,二、軟件維護的種類,校正性維護:把診斷、校正軟件錯誤的過程稱之為校正性維護。這部分維護工作約占全部維護活動的17%21%。 適應性維護:由于計算機技術(shù)的飛速發(fā)展,外部設(shè)備和其他系統(tǒng)元素經(jīng)常改進和變化,為適應變化的環(huán)境而修改軟件的活動稱之為適應性維護。它占總維護活動的18%25%。 完善性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國電腦鼠標行業(yè)深度研究及發(fā)展前景投資評估分析
- 2025至2030中國電機控制中心行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國現(xiàn)場服務(wù)管理(FSM)行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 教育文化傳承與實踐成效研究
- 牛類養(yǎng)殖培訓課件
- 智慧城市背景下智能家居化學品的環(huán)境影響分析
- 新時代的情感智能培養(yǎng)策略研究
- 醫(yī)療教育中基于大數(shù)據(jù)的個性化培訓模式研究
- 智慧醫(yī)療的崛起線上醫(yī)療咨詢的新趨勢
- 學習環(huán)境對學習動機的塑造作用
- 燃料電池行業(yè)發(fā)展分析及投資前景預測研究報告2025-2028版
- 2025年 珠海市市直專職人民調(diào)解員招聘筆試考試試卷附答案
- 2025年 物業(yè)管理師三級考試練習試題附答案
- 肺動脈高壓講課件
- 呼吸困難的識別與護理
- 2024年滁州市機電工程學校招聘筆試真題
- 2025至2030中國大蔥產(chǎn)品行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資報告
- 廣東省深圳市南山區(qū)2025年小升初數(shù)學模擬試卷含解析
- 小學三到六年級全冊單詞默寫(素材)-2023-2024學年譯林版(三起)小學英語
- GB/T 620-2011化學試劑氫氟酸
- 1997年浙江高考理科數(shù)學真題及答案
評論
0/150
提交評論