軟件工程課件01導論_第1頁
軟件工程課件01導論_第2頁
軟件工程課件01導論_第3頁
軟件工程課件01導論_第4頁
軟件工程課件01導論_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程概述軟件工程概述什么是工程?什么是工程?你了解哪些工程?工程定義為“以某組設想的目標為依據,應用有關的科學知識和技術手段,通過一群人的有組織活動將某個(或某些)現(xiàn)有實體(自然的或人造的)轉化為具有預期 使用價值的人造產品過程”。簡單說,工程就是由一群人為達到某種目的,使用工具,借助技術協(xié)作活動生產某種產品的過程。什么是軟件工程?什么是軟件工程?軟件工程相比其他行業(yè)的工程有什么區(qū)別?學習軟件工程有什么用處?目錄目錄1.1 軟件危機1.2 軟件工程1.3 軟件生命周期1.4 軟件過程1.5 軟件工程方法學1.6 小結丹佛新國際機場地下行李傳送系統(tǒng)丹佛新國際機場地下行李傳送系統(tǒng)拉布雷阿的焦油

2、坑焦油坑(Mural of La Brea Tar Pits)1.1 軟件危機軟件危機軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。概括地說,軟件危機包含下述兩方面的問題:如何開發(fā)軟件,以有限的資源滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件。1.1.1 軟件危機典型現(xiàn)象軟件危機典型現(xiàn)象對軟件開發(fā)成本和進度的估計常常很不準確 用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經常發(fā)生,軟件產品的質量往往靠不住 軟件常常是不可維護的,通常沒有適當的相關文檔資料軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升 軟件開發(fā)生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢1.1

3、.2 產生軟件危機的原因產生軟件危機的原因一方面與軟件本身的特點有關,另一方面也和軟件開發(fā)與維護的方法不正確有關。軟件是一種純粹的邏輯產品,不具備物理形態(tài),這使得管理和控制軟件開發(fā)過程相當困難軟件的一個顯著特點是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數上升軟件規(guī)模軟件規(guī)模對用戶要求沒有完整準確的認識就匆忙著手編寫程序是許多軟件開發(fā)工程失敗的主要原因之一在開發(fā)時期沒有對軟件進行設計程序編寫完之后沒有經過大量的測試工作在后期引入一個變動比在早期引入相同變動所需付出的代價高23個數量級1.1.2 產生軟件危機的原因產生軟件危機的原因變動代價變動代價軟件維護通常意味著改正或修改原來的設計輕

4、視維護,實際上用于軟件維護的費用占軟件總費用的55%70%1.1.2 產生軟件危機的原因產生軟件危機的原因1.1.3 怎么消除軟件危機怎么消除軟件危機清楚地定義什么是軟件:徹底消除在計算機系統(tǒng)早期發(fā)展階段形成的“軟件就是程序”的錯誤觀念,一個軟件必須由一個完整的配置組成,事實上,軟件是程序、數據及相關文檔的完整集合。1983年IEEE為軟件下的定義是:計算機程序、方法、規(guī)則、相關的文檔資料以及在計算機上運行程序時所必需的數據。必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。必須充分吸取和借鑒人類長期以來從事其它各種工程項目

5、所積累的行之有效的原理、技術和方法,特別要吸取幾十年來人類從事計算機硬件研究和開發(fā)的經驗教訓。應該推廣使用在實踐中總結出來的開發(fā)軟件的成功的技術和方法,并且研究探索更好更有效的技術和方法,盡快消除在計算機系統(tǒng)早期發(fā)展階段形成的一些錯誤概念和做法。1.1.3 怎么消除軟件危機怎么消除軟件危機1.1.3 怎么消除軟件危機怎么消除軟件危機應該開發(fā)和使用更好的軟件工具。如果把各個階段使用的軟件工具有機地集合成一個整體,支持軟件開發(fā)的全過程,則稱為軟件工程環(huán)境(SEE)。計算機輔助軟件工程 (CASE),CASE是一組工具和方法的集合,用來輔助軟件開發(fā)生命周期各階段EclipseWinrunnerWin

6、CVSProject Planner1.2 軟件工程軟件工程為了解決軟件危機組織、管理措施技術措施(方法和工具)軟件工程正是從管理和技術兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。1.2.1 軟件工程定義軟件工程定義概括地說,軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發(fā)出高質量的軟件并有效地維護它,這就是軟件工程。1.2.2 軟件工程的基本原理軟件工程的基本原理軟件工程專家B.W.Boehm于1983年在一篇論文中提出了軟件工程的7條基本原理

7、1. 用分階段的生命周期計劃嚴格管理2. 堅持進行階段評審3. 實行嚴格的產品控制4. 采用現(xiàn)代程序設計技術5. 結果應能清楚地審查6. 開發(fā)小組的人員應該少而精7. 承認不斷改進軟件工程實踐的必要性1.2.3 軟件工程學的主要內容軟件工程學的主要內容將軟件生命周期劃分成階段,根據每個階段的不同特性,對軟件生產的產品、人員和質量進行管理 對軟件生命周期各階段所采用的規(guī)格說明、分析設計方法和形式化描述技術等進行研究; 提供各種軟件工具以改進軟件質量和生產效率; 研究軟件生產的質量保證體系; 研究軟件系統(tǒng)的項目管理、人員組織、成本估算等各種度量方法終極目標:軟件生產自動化1.2.4 軟件工程的特性

8、軟件工程的特性軟件工程關注于大型程序的構造軟件工程的中心課題是控制復雜性軟件經常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關鍵軟件必須有效地支持它的用戶1.3 軟件生命周期軟件生命周期軟件生命周期分為三個時期軟件定義軟件開發(fā)運行維護每個時期又進一步劃分成若干個階段。瀑布模型瀑布模型需求分析需求分析總體設計總體設計詳細設計詳細設計編碼編碼 & 單元測試單元測試集成集成 & 系統(tǒng)測試系統(tǒng)測試軟件定義軟件定義軟件開發(fā)軟件開發(fā)交付交付 & 維護維護軟件維護軟件維護可行性研究可行性研究問題定義問題定義1.3.1 軟件定義時期軟件定義時期軟件定義時期的任務是:確定軟件開發(fā)工程

9、必須完成的總目標;確定工程的可行性;導出實現(xiàn)工程目標應該采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源和成本,并且制定工程進度表。這個時期的工作通常又稱為系統(tǒng)分析,由系統(tǒng)分析員負責完成軟件定義時期通常進一步劃分成3個階段問題定義可行性研究需求分析1.3.2 軟件開發(fā)時期軟件開發(fā)時期開發(fā)時期具體設計和實現(xiàn)在前一個時期定義的軟件,它通常由下述4個階段組成:總體設計詳細設計編碼和單元測試集成和系統(tǒng)測試其中前兩個階段又稱為系統(tǒng)設計,后兩個階段又稱為系統(tǒng)實現(xiàn)。1.3.3 軟件維護時期軟件維護時期維護時期的主要任務是使軟件持久地滿足用戶的需要。當軟件在使用過程中發(fā)現(xiàn)錯誤時應該加以改正;當環(huán)境改

10、變時應該修改軟件以適應新的環(huán)境;當用戶有新要求時應該及時改進軟件以滿足用戶的新需要。通常對維護時期不再進一步劃分階段,但是每一次維護活動本質上都是一次壓縮和簡化了的定義和開發(fā)過程。傳統(tǒng)方法學各階段任務傳統(tǒng)方法學各階段任務1.4 軟件過程軟件過程軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。生命周期模型規(guī)定了把生命周期劃分成哪些階段及各個階段的執(zhí)行順序,因此,也稱為過程模型。1.4.1 瀑布模型瀑布模型1. 階段間具有順序性和依賴性這個特點有兩重含義: 必須等前一階段的工作完成之后,才能開始后一階段的工作; 前一階段的輸出文檔就是后一階段的輸入文檔,因

11、此,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結果。2. 推遲實現(xiàn)的觀點對于規(guī)模較大的軟件項目來說,往往編碼開始得越早最終完成開發(fā)工作所需要的時間反而越長。這是因為,前面階段的工作沒做或做得不扎實,過早地考慮進行程序實現(xiàn),往往導致大量返工,有時甚至發(fā)生無法彌補的問題,帶來災難性后果。3. 質量保證的觀點軟件工程的基本目標是優(yōu)質、高產。為了保證所開發(fā)的軟件的質量,在瀑布模型的每個階段都應堅持兩個重要做法:(1) 每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務。(2) 每個階段結束前都要對所完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題,改正錯誤。圖1.3 實際的瀑布

12、模型瀑布模型有許多優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法(例如,結構化技術); 嚴格地規(guī)定了每個階段必須提交的文檔要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證?!捌俨寄P褪怯晌臋n驅動的”這個事實也是它的一個主要缺點。在可運行的軟件產品交付給用戶之前,用戶只能通過文檔來了解產品是什么樣的??傊?,由于瀑布模型幾乎完全依賴于書面的規(guī)格說明,很可能導致最終開發(fā)出的軟件產品不能真正滿足用戶的需要。1.4.2 快速原型模型快速原型模型1.5.2 快速原型模型所謂快速原型是快速建立起來的可以在計算機上運行的程序,它所能完成的功能往往是最終產品能完成的功能的一個子集。圖1.4 快速原型模型Proto

13、typing Modellistentocustomerbuild/revisemock-upcustomertest-drivesmock-upThe prototype must be thrown away.1.4.3 增量模型增量模型1.5.3 增量模型把軟件產品作為一系列的增量構件來設計、編碼、集成和測試。把軟件產品分解成增量構件時,應該使構件的規(guī)模適中,規(guī)模過大或過小都不好。分解時惟一必須遵守的約束條件是,當把新構件集成到現(xiàn)有軟件中時,所形成的產品必須是可測試的。增量模型的另一個優(yōu)點是,逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶

14、來的沖擊。使用增量模型的困難是,在把每個新的增量構件集成到現(xiàn)有軟件體系結構中時,必須不破壞原來已經開發(fā)出的產品。軟件體系結構必須是開放的。圖1.6 風險更大的增量模型1.4.4 螺旋模型螺旋模型1.4.4 螺旋模型螺旋模型的基本思想是,使用原型及其他方法來盡量降低風險。圖1.7 簡化的螺旋模型圖1.8 完整的螺旋模型螺旋模型有許多優(yōu)點:對可選方案和約束條件的強調有利于已有軟件的重用,也有助于把軟件質量作為軟件開發(fā)的一個重要目標減少了過多測試(浪費資金)或測試不足(產品故障多)所帶來的風險;更重要的是,在螺旋模型中維護只是模型的另一個周期,在維護和開發(fā)之間并沒有本質區(qū)別。螺旋模型主要適用于內部開

15、發(fā)的大規(guī)模軟件項目。螺旋模型的主要優(yōu)勢在于,它是風險驅動的,但是,這也可能是它的一個弱點。除非軟件開發(fā)人員具有豐富的風險評估經驗和這方面的專門知識,否則將出現(xiàn)真正的風險:當項目實際上正在走向災難時,開發(fā)人員可能還認為一切正常。1.4.5 噴泉模型噴泉模型1.4.6 Rational 統(tǒng)一過程統(tǒng)一過程Rational 統(tǒng)一過程(Rational Unified Process)是由Rational 軟件公司開發(fā)和營銷的一種軟件工程過程,是開發(fā)組織用以分配與管理任務和職責的一種規(guī)范化方法。這個過程的目的是在預定的進度和預算范圍內,開發(fā)出滿足最終用戶需要的高質量軟件。誰在使用誰在使用RUP?電信業(yè)E

16、ricsson、Alcatel、MCI 交通、航空、國防Lockheed-Martin、British Aerospace制造業(yè)Xerox、Volvo、Intel金融業(yè)Visa、Merrill Lynch、Schwab 系統(tǒng)集成業(yè)Ernst & Young、Oracle、Deloitte & Touche RUP將這些最佳實踐活動以一種適當的形式結合起來,從而適應了廣泛的項目和開發(fā)組織。RUP 是一個過程產品(process product)。Rational (IBM) 軟件公司開發(fā)并維護著這個產品,并將其與Rational 軟件公司自己的一系列軟件開發(fā)工具集成。RUP 有自

17、己的過程框架 (process framework), 這個框架可以被改造和擴展以適應采納此方法的組織。RUP最佳實踐最佳實踐1. 迭代地開發(fā)軟件2. 管理需求3. 應用基于構件的構架4. 為軟件建立可視化的模型5. 不斷地驗證軟件質量6. 控制軟件的變更 RUP 二維生命周期模型二維生命周期模型沿時間軸的組織結構沿內容軸的組織結構1.4.7 XP極限編程極限編程XP(Extreme Programming),它是由Kent Beck大師提出的。kent在經歷傳統(tǒng)軟件開發(fā)的痛苦之后,希望能夠找到一種優(yōu)秀的軟件開發(fā)方法。大師總結了大量的軟件的成功和失敗的因素之后,提出了改進軟件開發(fā)方法的四個要素

18、:溝通(communication)、簡單化(simplicity)、反饋(feedback)、勇氣(courage)。這形成了XP的核心價值觀。XP最佳實踐最佳實踐客戶作為開發(fā)團隊的成員使用用戶素材短交付周期驗收測試結對編程測試驅動開發(fā)集體所有持續(xù)集成持續(xù)集成可持續(xù)的開發(fā)速度開放的工作空間及時調整計劃簡單的設計重構使用隱喻XP整體開發(fā)過程整體開發(fā)過程 XP迭代過程迭代過程 XP開發(fā)過程開發(fā)過程 1.4.8 微軟過程微軟過程制定計劃時兼顧未來的不確定因素通過有效的風險管理減少不確定因素的影響經常生成過渡版本進行快速測試來提高產品的穩(wěn)定性及可預測性快速循環(huán)、遞進的開發(fā)過程從產品特性和成本控制出發(fā)

19、創(chuàng)造性地工作創(chuàng)建確定的進度表使用小型項目組并發(fā)完成工作,并設置多個同步點1.4.8 微軟過程微軟過程將大型項目分解成多個可管理的單元,以便更快地發(fā)布產品用產品的前景目標和概要說明指導項目開發(fā)工作-先基線、后凍結避免產品走形使用原型驗證概念,進行開發(fā)前的測試零缺陷觀念非責難式的里程碑評審會1.5 軟件工程方法學軟件工程方法學軟件工程方法學包含3個要素:方法方法是完成軟件開發(fā)的各項任務的技術方法,回答“怎樣做”的問題工具工具是為運用方法而提供的自動的或半自動的軟件工程支撐環(huán)境過程過程是為了獲得高質量的軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟1.5.1 傳統(tǒng)方法學傳統(tǒng)方法學傳

20、統(tǒng)方法學也稱為生命周期方法學或結構化范型采用結構化技術(結構化分析、結構化設計和結構化實現(xiàn))來完成軟件開發(fā)的各項任務,并使用適當的軟件工具或軟件工程環(huán)境來支持結構化技術的運用。這種方法學把軟件生命周期的全過程依次劃分為若干個階段,然后順序地完成每個階段的任務。采用這種方法學開發(fā)軟件的時候,從對問題的抽象邏輯分析開始,一個階段一個階段地進行開發(fā)。1.5.1 傳統(tǒng)方法學傳統(tǒng)方法學審查的一條主要標準就是每個階段都應該交出“最新式的”(即和所開發(fā)的軟件完全一致的)高質量的文檔資料,從而保證在軟件開發(fā)工程結束時有一個完整準確的軟件配置交付使用。文檔是通信的工具,它們清楚準確地說明了到這個時候為止,關于該

21、項工程已經知道了什么,同時奠定了下一步工作的基礎。1.5.1 傳統(tǒng)方法學傳統(tǒng)方法學把軟件生命周期劃分成若干個階段,每個階段的任務相對獨立,而且比較簡單,便于不同人員分工協(xié)作,從而降低了整個軟件開發(fā)工程的困難程度;在軟件生命周期的每個階段都采用科學的管理技術和良好的技術方法,而且在每個階段結束之前都從技術和管理兩個角度進行嚴格的審查,合格之后才開始下一階段的工作,這就使軟件開發(fā)工程的全過程以一種有條不紊的方式進行,保證了軟件的質量,特別是提高了軟件的可維護性。傳統(tǒng)方法學仍然是人們在開發(fā)軟件時使用得十分廣泛的軟件工程方法學。1.5.2 面向對象方法學面向對象方法學當軟件規(guī)模龐大,或者對軟件的需求是模糊的或會隨時間而變化的時候,使用傳統(tǒng)方法學開發(fā)軟件往往不成功,此外,使用傳統(tǒng)方法學開發(fā)出的軟件,維護起來仍然很困難。結構化范型只能獲得有

溫馨提示

  • 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

提交評論