第1部分軟件危機與軟件工程_第1頁
第1部分軟件危機與軟件工程_第2頁
第1部分軟件危機與軟件工程_第3頁
第1部分軟件危機與軟件工程_第4頁
第1部分軟件危機與軟件工程_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1部分

軟件危機與軟件工程1案例描述如同蓋一座大樓時所做的工作不僅僅是砌磚和壘墻一樣,軟件開發(fā)過程所涉及到的環(huán)節(jié)和活動也不僅僅是編寫代碼這樣簡單。比如:在編碼之前,我們要了解編寫的程序是為了解決什么樣的問題,即實現(xiàn)何種功能;對軟件的系統(tǒng)要進行規(guī)劃、架構工作;編碼完成之后,要采用特定的方法和途徑來減少軟件系統(tǒng)中存在的錯誤;軟件產品交付給用戶后,還要對軟件系統(tǒng)進行維護。另外,在這個過程中,要保證軟件產品的質量。軟件工程就是一門將所有與軟件開發(fā)相關的活動歸納在一起,并形成系統(tǒng)的方法和理論的學科。2教學要求知識目標能力目標關聯(lián)知識軟件危機了解軟件危機的產生和發(fā)展及解決途徑軟件、軟件成本、軟件質量軟件工程掌握軟件工程的概念及目標軟件生產率軟件生命周期掌握軟件生命周期各個階段的任務軟件定義、開發(fā)、維護軟件開發(fā)模型掌握各種典型的軟件開發(fā)模型瀑布、演化、原型、螺旋軟件項目管理掌握軟件項目管理的目標和特點項目管理、軟件過程3知識分析:

什么是軟件危機軟件危機的表現(xiàn)及其產生原因軟件工程的基本原理軟件生命周期與軟件生命周期模型項目管理與軟件項目管理影響軟件項目成功的因素4§1.1軟件危機1、軟件危機(1)早期軟件的特點(20世紀60年代以前)使用機器代碼或匯編語言編寫軟件軟件的規(guī)模比較小軟件的編寫者和使用者是同一人軟件產品除了源代碼清單外,幾乎沒有其他文檔資料軟件開發(fā)方式隨意,采用“手工作坊”的開發(fā)方式5(2)軟件危機的產生

60年代中后期,軟件開發(fā)需求急劇增長;高級語言開始出現(xiàn),軟件系統(tǒng)的規(guī)模越來越大,復雜程度越來越高,軟件數(shù)量急劇膨脹;“手工作坊”式的單打獨斗的軟件生產方式已經不能夠適應日益增長的軟件需求;軟件供求關系嚴重失調,最終形成了不可調和的尖銳矛盾,軟件危機開始爆發(fā)。(3)軟件危機的定義“手工作坊”式的生產方式無法滿足迅速增長的計算機軟件需求,從而導致了軟件開發(fā)和維護過程中的一系列嚴重問題,這一現(xiàn)象叫做軟件危機(SoftwareCrisis)。§1.1軟件危機62、軟件危機的表現(xiàn)軟件開發(fā)費用和進度難以控制;軟件不能滿足用戶的需求;軟件可靠性差;軟件產品缺乏相應的文檔資料;軟件可維護性差;軟件開發(fā)的速度與計算機應用的普及速度不相適應;

§1.1軟件危機73、軟件危機的原因軟件危機的一個重要成因是其本身的復雜性;軟件危機與軟件開發(fā)和維護的技術方法有關;軟件的開發(fā)方法不恰當,開發(fā)技術落后忽略了開發(fā)人員和用戶之間的矛盾缺乏有力的開發(fā)管理方法,有序的工作流程軟件從業(yè)人員的技術水平停滯不前開發(fā)過程缺乏統(tǒng)一的規(guī)范;軟件開發(fā)管理困難而復雜;開發(fā)工具落后,生產率提高緩慢;§1.1軟件危機84、軟件危機的解決途徑

1968年,北大西洋公約組織成員國召開會議,討論軟件危機問題,并共同商討和制定緩解或解決“軟件危機”的對策。第一次提出了“軟件工程”(SoftwareEngineering)的概念。其主要思想是,運用工程學的基本原理和方法來組織和管理軟件生產。盡管“軟件危機”至今尚未被徹底解決,但在40年的發(fā)展中,經過不斷的實踐和總結,人們得到一個結論:按照工程化的原則和方法組織軟件開發(fā),是擺脫軟件危機的一個主要出路?!?.1軟件危機91、軟件工程的定義

軟件工程是指導軟件開發(fā)和維護的工程學科。其核心思想是采用工程的概念、原理、技術和方法來開發(fā)和維護軟件,把經過實踐考驗而證明是正確的管理技術和當前能夠得到的最好的技術方法結合起來,從而大大提高軟件開發(fā)的成功率和生產率?!?.2軟件工程概述102、軟件工程的范疇

軟件開發(fā)方法學軟件開發(fā)技術軟件工具軟件工程環(huán)境軟件管理學軟件工程管理軟件經濟學軟件度量學§1.2軟件工程概述11(1)軟件開發(fā)方法學指導軟件開發(fā)的某種標準規(guī)程,它告訴開發(fā)人員“什么時候做以及怎樣做”

(2)軟件工具輔助和支持軟件開發(fā)全過程的一系列軟件。從定義、分析、設計、編碼、測試、歸檔和管理等各方面,提供各種幫助的一類軟件。(3)軟件工程環(huán)境

指以軟件工程為依據(jù),支持軟件生產的技術和管理工具系統(tǒng),通常被集成到一個固定的平臺上

(4)軟件工程管理

包括管理風險、平衡沖突目標、克服各種限制、合理配置和使用資源等一系列活動。§1.2軟件工程概述12軟件工程常用技術軟件架構軟件復用軟件測試計算機輔助設計工具CASE面向對象軟件工程實時軟件工程軟件成本估算軟件工程經濟學軟件演化軟件維護軟件規(guī)范軟件文檔編寫§1.2軟件工程概述133、軟件開發(fā)的幾個模型(1)軟件開發(fā)模型“軟件開發(fā)模型”(SoftwareDevelopmentModel),用來描述軟件開發(fā)各個階段之間的關系,以及說明和表示復雜的軟件開發(fā)過程。(2)軟件開發(fā)模型的作用給出軟件開發(fā)活動中各階段之間的關系。清晰、直觀的表達軟件開發(fā)全過程,明確的規(guī)定要完成的主要活動和任務,是軟件項目工作的基礎。(3)常見的開發(fā)模型瀑布模型、演化模型、原型模型、螺旋模型等?!?.2軟件工程概述14瀑布模型瀑布模型概述瀑布模型是由WinstonW.Royce于1970年提出的一種軟件開發(fā)模型。該模型將整個系統(tǒng)開發(fā)過程劃分成若干個線性的、順序的階段,每個階段既相互區(qū)別,又彼此聯(lián)系。(2)瀑布模型的工作原理瀑布模型將軟件生命周期劃分為6個階段,各個階段之間如同瀑布流水,自上而下,逐級下落,形成相互銜接的固定次序。每一個階段的工作都以上一個階段工作的結果為依據(jù),同時現(xiàn)階段的工作也為下一個階段的工作提供前提和基礎?!?.2軟件工程概述1516(3)瀑布模型的特點前一階段的工作結果作為輸入傳送給當前階段,當前階段的工作根據(jù)該輸入來開展。

當前階段的工作結果需要進行評審和驗證。

若該結果驗證通過,方可作為下一個階段的輸入,軟件生命周期的執(zhí)行轉入下一個階段。若驗證不通過,則返回到前一階段進行錯誤分析和修改。

在當前階段的工作未完成前,不允許開展下一個階段的工作。瀑布模型中各階段活動結束后,都要進行嚴格的驗證和評審,不允許出現(xiàn)未經審核就進行下一階段活動的工作方式。

§1.2軟件工程概述17(4)瀑布模型的優(yōu)點在瀑布模型中,各個階段之間的關系清晰、易懂。該模型原理簡單,易于掌握;每個階段中都有驗證和確認環(huán)節(jié),以便進行質量管理;在下一階段開始前,該模型會通過項目管理來控制本階段工作的完成。(5)瀑布模型的缺點瀑布模型中并沒有引入工程計劃、進度控制和風險管理等措施。缺乏靈活性,特別是在階段反饋和工作修改上還不是很靈活。沒有很好的解決軟件需求定義不確切這一問題,而該問題恰恰是導致軟件開發(fā)失敗的一個重要原因?!?.2軟件工程概述18演化模型演化模型概述演化模型是瀑布模型的一種演變。演化模型主要針對事先不能完整定義需求的軟件開發(fā)。(2)演化模型的工作過程用戶給出軟件的核心需求,開發(fā)人員根據(jù)需求進行問題定義和分析;經過設計、編碼和測試,開發(fā)核心系統(tǒng)交付使用;用戶試用軟件,并對其進行評價;根據(jù)用戶反饋意見,開發(fā)人員實施新一輪的開發(fā)活動;再次交付用戶試用。周而復始。

§1.2軟件工程概述1920(3)演化模型的優(yōu)點早期就可以快速的生產出可以運行的軟件;

開發(fā)過程靈活,當需求或者目標改變時,可以及時的調整軟件實施方案;

有助于在早期進行軟件測試、進度控制、缺陷跟蹤和文檔管理,有利于平衡整個開發(fā)過程的負荷;

在每個迭代過程中,易于捕獲風險信息和收集風險數(shù)據(jù);

開發(fā)過程中的經驗教訓能及時的反饋應用于下一個循環(huán)過程中,從而提高軟件質量和生產率;§1.2軟件工程概述21(4)演化模型的缺點需求定義不是一次完成的,若開發(fā)人員對整個軟件系統(tǒng)的需求沒有一個完整的定義,會破壞軟件結構設計的完整性和一致性,影響軟件質量。

生產過程中如果缺乏有效的過程管理、協(xié)調,“演化模型”可能會退化成“試驗-出錯-修改-試驗-出錯-修改”模式;初期就生產出可見的階段性產品,會令開發(fā)者盲目樂觀,

如果用戶接觸到開發(fā)過程中未經測試的軟件,會給開發(fā)人員和用戶帶來負面影響;§1.2軟件工程概述22原型模型原型模型的產生背景原型模型是為了解決軟件系統(tǒng)需求不能一次完整的提出,以及用戶經常變更需求等一系列影響軟件開發(fā)效率的問題(2)什么是原型?原型,原本是工程設計中的概念,指的是樣品或者試制品,其目的是為了模擬某種產品的原始模型。軟件工程中的“原型”,是指系統(tǒng)或者軟件最終產品的一個早期可運行的版本;是在較短工期和較少成本下,生產的能夠反映最終產品的重要特性的樣品?!?.2軟件工程概述2324(4)原型模型的優(yōu)點增強了開發(fā)者和用戶之間的交流,用戶有更多機會參與到開發(fā)過程中去;用戶可以盡早的接觸和使用產品的原型,有利于今后的產品使用和維護。對于系統(tǒng)規(guī)模彈性較大的軟件產品,原型模型可以降低其開發(fā)風險。原型模型降低了軟件開發(fā)費用,縮短了軟件開發(fā)時間?!?.2軟件工程概述25(5)原型模型的缺點開發(fā)者對待開發(fā)軟件應用領域缺乏了解,在分析原型需求時,不能正確定義系統(tǒng)核心特性,導致設計出不能真正體現(xiàn)軟件主要功能的“樣品”。原型模型過于“模式化”,阻礙開發(fā)人員的創(chuàng)新和突破。用戶不斷提出修改意見,導致開發(fā)者注重修改原型,而忽略對系統(tǒng)主體功能的開發(fā)。頻繁更新相關文檔資料,容易遺漏,影響文檔資料的一致性與完整性?!?.2軟件工程概述26螺旋模型螺旋模型概述是BarryBoehm在1988年所發(fā)表的一種軟件開發(fā)模型,它是瀑布模型和演化模型的結合體。不僅體現(xiàn)了兩個模型的優(yōu)點,而且還強調了其他模型中所缺少的風險分析。

(2)四類活動螺旋模型將開發(fā)過程劃分為四類活動:制定計劃、風險分析、實施開發(fā)和客戶評價§1.2軟件工程概述2728(4)螺旋模型的特點每一個周期的產品都較前一周期的產品更細化更完善。

螺旋模型強調風險分析。整個開發(fā)過程的主要風險都得到識別和控制該模型特別適用于規(guī)模大,風險高的軟件項目。用戶可以有更多機會參與到開發(fā)過程中,有助于提供關鍵決策?!?.2軟件工程概述294、軟件生命周期軟件生命周期指從提出開發(fā)軟件產品開始,直到軟件報廢為止的全過程。(2)軟件生命周期的三個階段:軟件的定義軟件的開發(fā)軟件的維護

§1.2軟件工程概述305、軟件工程的目標目標是在一定的成本和進度下,生產具有正確性、可靠性、容錯性、易用性、靈活性、可擴充性、可理解性、可維護性的軟件產品;§1.2軟件工程概述311、軟件項目管理的特點項目管理項目是為了完成某個獨特的產品或服務所執(zhí)行的一次性任務,是一種有獨立的開始時間、結束時間,有一定復雜性的工作。項目管理是指項目的管理者在規(guī)定的時間、預算和質量目標范圍內,把各種系統(tǒng)、方法和人員結合在一起,運用系統(tǒng)的觀點、方法和理論,對項目涉及的全部工作進行有效的管理§1.3軟件項目管理概述32(2)軟件項目管理軟件項目管理

是為了保證軟件項目能夠按照預定的成本、進度、質量要求順利完成,而對成本、人員、進度、質量、風險等因素進行分析、控制和管理的活動。軟件項目管理的內容:人員的組織與管理:考慮項目組的組織結構和人員分配,及時對人員結構進行優(yōu)化,并根據(jù)實際需要,隨時對人員組織進行恰當?shù)恼{整。軟件度量:采取量化的方法來評測軟件開發(fā)中的費用、生產率、進度和產品質量是否符合標準。§1.3軟件項目管理概述33軟件項目計劃:對軟件開發(fā)的工作量、成本、開發(fā)時間進行估計,并根據(jù)估量值制定項目實施計劃,調整相應的策略。風險管理:對開發(fā)過程中有可能出現(xiàn)的各種危害軟件產品質量和拖延工程進度的潛在因素,進行分析和預測,并采取相應的措施進行預防。軟件質量保證:為了保證產品和服務能夠充分滿足用戶需求,要進行一系列有關質量的監(jiān)督、檢查和促進改正等活動。軟件過程能力評估:對軟件開發(fā)能力的高低進行衡量。軟件配置管理:針對開發(fā)過程中人員、工具的配置和使用,提出相應的管理策略。§1.3軟件項目管理概述34(2)軟件項目管理的特點不同

溫馨提示

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

最新文檔

評論

0/150

提交評論