《軟件工程導(dǎo)論》PPT課件-第1章-軟件工程學(xué)概述_第1頁
《軟件工程導(dǎo)論》PPT課件-第1章-軟件工程學(xué)概述_第2頁
《軟件工程導(dǎo)論》PPT課件-第1章-軟件工程學(xué)概述_第3頁
《軟件工程導(dǎo)論》PPT課件-第1章-軟件工程學(xué)概述_第4頁
《軟件工程導(dǎo)論》PPT課件-第1章-軟件工程學(xué)概述_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程導(dǎo)論 本章學(xué)習目標: 了解軟件危機的發(fā)生原因和典型表現(xiàn) 識記軟件工程的概念和基本原理 識記軟件生命周期和軟件過程的概念 識記常用的生命周期模型第1章 軟件工程學(xué)概述第1章 軟件工程學(xué)概述 1.1 軟件危機 1.2 軟件工程 1.3 軟件生命周期第1章 軟件工程學(xué)概述 1.1 軟件危機 1.2 軟件工程 1.3 軟件生命周期1.1.1 軟件的定義 軟件的經(jīng)典定義:軟件=“完成特定功能的程序+數(shù)據(jù)結(jié)構(gòu)+文檔” 軟件的特征:1、軟件是開發(fā)的,而不是制造的;2、軟件不磨損,但退化;3、自定義。1.1.1 軟件的定義 軟件發(fā)展中的相關(guān)問題: 硬件的發(fā)展超過軟件; 現(xiàn)有軟件與用戶的要求矛盾; 軟件

2、失敗導(dǎo)致“災(zāi)難性后果”; 需要高質(zhì)量、高可靠性的軟件; 設(shè)計的問題使升級和維護十分困難。1.1.1 軟件危機的定義 定義 “在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重的問題?!?.1.2 軟件危機的表現(xiàn)(1)對軟件開發(fā)成本和進度的估計常常很不準確。 實際成本往往大大超過估計成本,或開發(fā)進度比計劃推遲幾個月或一年以上。這種現(xiàn)象極大地影響了軟件開發(fā)組織的信譽,也會引起用戶的強烈不滿。(2)軟件產(chǎn)品質(zhì)量較差,可靠性低。 軟件開發(fā)過程中不能堅持嚴格的審查、復(fù)審和測試,使得軟件可靠性差、質(zhì)量問題多。 1.1.2 軟件危機的表現(xiàn)(3)用戶對開發(fā)出來的軟件產(chǎn)品不滿意。 開發(fā)人員與用戶之間的交流不充分,

3、僅對用戶需求有了一個模糊的認識就匆忙開始寫程序。這樣的結(jié)果就是用戶對于所謂已經(jīng)完成的軟件很不滿意。(4)軟件常常是不可維護的。 在實際項目中,很多程序的錯誤往往難以修改,而且不能適應(yīng)軟硬件環(huán)境的變化,也無法添加用戶需要的一些新功能。 1.1.2 軟件危機的表現(xiàn)(5)軟件產(chǎn)品缺少應(yīng)有的文檔資料。 軟件=程序+數(shù)據(jù)+文檔。開發(fā)人員對文檔認識不足,不能保證在開發(fā)過程中文檔的完整性和準確性。缺少文檔資料會造成軟件開發(fā)、管理、審查、用戶交流、軟件維護等方面的諸多問題。 (6)軟件產(chǎn)品的供不應(yīng)求。 軟件開發(fā)的生產(chǎn)率遠遠低于計算機硬件發(fā)展速度和用戶的需求,造成了軟件產(chǎn)品的供不應(yīng)求。1.1.3 產(chǎn)生軟件危機的

4、原因客觀原因:軟件與硬件產(chǎn)品不同,軟件是“開發(fā)的”而非“制造的”。其開發(fā)過程難以管理和控制,產(chǎn)品質(zhì)量也不好把握。軟件沒有“磨損”,但是它會不斷“退化”。軟件系統(tǒng)無法適應(yīng)不斷變化的環(huán)境和功能需求。軟件都規(guī)模龐大,而程序的復(fù)雜性是隨其規(guī)模的擴大呈指數(shù)增加。 主觀原因:對用戶要求沒有完整和準確的認識就匆忙編寫程序。 對軟件的開發(fā)過程的認識不準確。生命周期的每個階段都有特定的工作和特點,都是不可逾越的。只有上一階段工作完成,才能開始下一階段的工作。 對軟件質(zhì)量的重視不夠是造成軟件開發(fā)成本激增的主要原因。注意軟件開發(fā)過程中錯誤的“放大效應(yīng)”。輕視軟件維護將是一個重大的錯誤。軟件開發(fā)時期各階段的關(guān)鍵目標都

5、是提高軟件的可維護性。 1.1.3 產(chǎn)生軟件危機的原因第1章 軟件工程學(xué)概述 1.1 軟件危機 1.2 軟件工程 1.3 軟件生命周期 1.4 軟件過程1.2 軟件工程 為了更有效地開發(fā)與維護軟件,軟件工作者在20世紀60年代后期開始認真研究消除軟件危機的途徑,從而逐漸形成了一門新興的工程學(xué)科計算機軟件工程學(xué)(簡稱為軟件工程)。 1.2.1 軟件工程的概念 定義指導(dǎo)軟件開發(fā)與維護的工程科學(xué) 采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護軟件,綜合運用正確的管理技術(shù)和最好的技術(shù)方法,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效維護它。 1.2.1 軟件工程的概念 IEEE的定義 軟件工程是把系統(tǒng)的、規(guī)范的、可

6、度量的途徑應(yīng)用于軟件開發(fā)、運行和維護過程,也就是把工程應(yīng)用于軟件;對這些途徑加以研究。 1.2.1 軟件工程的概念 諸多軟件工程的定義所揭示的軟件工程的本質(zhì)認識是一致的: 軟件工程一般更關(guān)注于大型軟件系統(tǒng)的開發(fā);其中心任務(wù)是控制整個軟件系統(tǒng)的復(fù)雜性,提高軟件開發(fā)的效率,加強人員和技術(shù)的管理,更好地滿足用戶的需要。1.2.2 軟件工程的基本原理(1)用分階段的生命周期計劃嚴格管理 應(yīng)該將軟件開發(fā)和維護的漫長生命周期劃分成若干個階段,并針對每個階段制定切實可行的計劃,然后嚴 格按照計劃對軟件的開發(fā)和維護工作進行管理。 (2)堅持進行階段評審 錯誤發(fā)現(xiàn)的越早,改正錯誤所付出的代價就越小。因此,開發(fā)人

7、員應(yīng)該堅持在每個階段都進行嚴格的評 審,以便更早地發(fā)現(xiàn)和改正錯誤。 1.2.2 軟件工程的基本原理(3)實行嚴格的產(chǎn)品控制 在軟件開發(fā)的過程中不應(yīng)隨意修改需求,當改變需 求時,必須實行嚴格的產(chǎn)品控制以保持軟件各個配置成 分的一致性。 (4)采用現(xiàn)代程序設(shè)計技術(shù) 采用先進的技術(shù)不僅可以提高軟件開發(fā)和維護的效率,而且還能有效地提高軟件產(chǎn)品的質(zhì)量。 1.2.2 軟件工程的基本原理(5) 結(jié)果可以清楚地審查 應(yīng)規(guī)定每個開發(fā)階段的產(chǎn)品標準和文檔要求,使得到的結(jié)果可以清楚地審查。 (6)開發(fā)小組成員少而精 軟件開發(fā)小組人員要求素質(zhì)高,而人數(shù)不宜過多。隨著人數(shù)n的增加,通信路徑也急劇增加。1.2.2 軟件工

8、程的基本原理(7)承認不斷改進軟件工程實踐的必要性 軟件開發(fā)和維護的過程也需要隨之改進。要主動采用最新的軟件技術(shù),而且還要不斷總結(jié)經(jīng)驗和教訓(xùn)、收集歷史數(shù)據(jù)幫助開發(fā)人員改進軟件工程實踐。1.2.3 軟件工程方法學(xué) 軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)。 軟件工程方法學(xué)主要包含3個要素:方法、工具和過程。 目前使用最為廣泛的軟件工程方法學(xué)是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。1.2.3 軟件工程方法學(xué)1. 傳統(tǒng)方法學(xué) - 也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。 - 它采用結(jié)構(gòu)化技術(shù)(包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù)。 - 這種方法學(xué)將軟件生命周期劃分為若干個

9、階段,然后順序完成各個階段的任務(wù)。 每個階段依賴上一個階段產(chǎn)生的結(jié)果,并將上一階段工作進一步具體化。1.2.3 軟件工程方法學(xué)2. 面向?qū)ο蠓椒▽W(xué) - 以數(shù)據(jù)為主線,將數(shù)據(jù)和其上的操作緊密結(jié)合起來。面向?qū)ο蠓椒▽W(xué)的四要素:類+對象+繼承+消息傳遞。 - 面向?qū)ο蟮姆椒▽W(xué)是盡量模擬人類習慣的思維方式,使軟件開發(fā)過程更接近人類認知模式,做到問題空間與解空間在結(jié)構(gòu)上一致。 - 運用面向?qū)ο蠓椒▽W(xué)開發(fā)出來的軟件產(chǎn)品一般是由很多較小的獨立對象組成,從而降低了軟件產(chǎn)品的復(fù)雜性,增強了可理解性,使得開發(fā)和維護更為簡單有效。第1章 軟件工程學(xué)概述 1.1 軟件危機 1.2 軟件工程 1.3 軟件生命周期1.3

10、.1 軟件生命周期的概念 定義 一個軟件從定義、開發(fā)、使用和維護,直至最終被廢棄,要經(jīng)歷的漫長的時期稱為軟件生命周期。1.3.1 軟件生命周期的概念 構(gòu)成3個時期:軟件定義、軟件開發(fā)和運行維護 各時期任務(wù): 軟件定義時期:確定軟件開發(fā)的總目標和工程的可行性;導(dǎo)出實現(xiàn)策略和系統(tǒng)必須完成的功能;進行成本效益的估算;制定開發(fā)計劃等 。 軟件開發(fā)時期:具體設(shè)計和實現(xiàn)前一個時期定義的軟件。 維護時期:使軟件持久地滿足用戶的需要。1.3.1 軟件生命周期的概念 構(gòu)成3個時期:軟件定義、軟件開發(fā)和運行維護8個階段: 問題定義 可行性研究 需求分析 總體設(shè)計 詳細設(shè)計 編碼和單元 測試 綜合測試 軟件維護階段

11、1: 問題定義“需要解決的問題是什么?” 確定問題的性質(zhì) 軟件目標和規(guī)模 形成書面報告。 1.3.2 各階段的基本任務(wù)階段2: 可行性研究“確定軟件系統(tǒng)是否值得去解” 高層次的系統(tǒng)分析和設(shè)計 估算系統(tǒng)的成本和效益 可行性研究報告1.3.2 各階段的基本任務(wù)階段3: 需求分析 “解決這些問題需要系統(tǒng)做什么?” 與用戶的交流 生成系統(tǒng)的邏輯模型 軟件需求規(guī)格說明書1.3.2 各階段的基本任務(wù)階段4: 總體設(shè)計(概要設(shè)計)“應(yīng)該怎樣實現(xiàn)目標系統(tǒng)?” 設(shè)計出實現(xiàn)目標系統(tǒng)的方案 設(shè)計軟件結(jié)構(gòu),確定模塊及之間關(guān)系 概要設(shè)計說明書1.3.2 各階段的基本任務(wù)階段5: 詳細設(shè)計(模塊設(shè)計) “如何具體地實現(xiàn)這

12、個系統(tǒng)?” 詳細的設(shè)計每個模塊的算法和數(shù)據(jù)結(jié)構(gòu)1.3.2 各階段的基本任務(wù)階段6: 編碼和單元測試“寫代碼,測試每個模塊!” 選取程序設(shè)計語言 寫出容易理解和維護的程序模塊 對每一個模塊進行嚴格的測試1.3.2 各階段的基本任務(wù)階段7: 綜合測試“通過各類測試和調(diào)試來完善軟件” 集成測試 + 驗收測試(用戶參加) 保存測試計劃、測試方案和測試結(jié)果1.3.2 各階段的基本任務(wù)階段8: 軟件維護“通過各種必須的維護活動使系統(tǒng)持久地滿足用戶的需要!” 改正性維護 適應(yīng)性維護 完善性維護 預(yù)防性維護1.3.2 各階段的基本任務(wù)1.3.3軟件生命周期的模型 定義 在軟件開發(fā)過程中,人們通常使用生命周期模

13、型來簡要地描述軟件過程。生命周期模型規(guī)定了生命周期各個階段和它們執(zhí)行的順序,因此也被稱為過程模型。1. 瀑布模型線性模型之一 在20世紀80年代之前,瀑布模型一直是惟一被廣泛采用的生命周期模型。傳統(tǒng)軟件工程方法 學(xué)的軟件過程,基本上可以用瀑布模型來描述。 瀑布模型 1. 瀑布模型線性模型之一瀑布模型的特點: (1)各階段之間有依賴性和嚴格的順序性。 (2)推遲實現(xiàn)。 典型特點(3)嚴格的階段質(zhì)保。(4)文檔驅(qū)動。 瀑布模型的問題:(1)實際的項目很少順序嚴格(2)用戶往往難以給出具體、正確、完整的要求(3)開發(fā)人員“阻塞狀態(tài)”嚴重1. 瀑布模型線性模型之一 2. 原型模型 原型模型是一個快速開

14、發(fā)的過程,首先和用戶溝通進行主要功能的需求分析和快速設(shè)計,然后建立一個原型,再請用戶進行評價和反饋。開發(fā)人員根據(jù)用戶的反饋進一步細化需求,改進原型系統(tǒng)的設(shè)計,如此反復(fù)直至用戶滿意??焖傩枨蠓治觯ㄓ脩魷贤ǎ?gòu)建/修改模型(快速設(shè)計)用戶使用評價(運行測試)原型模型 2. 原型模型快速原型模型的特點: (1) 出品速度快。(2) 逐步求精。(3) 開發(fā)階段迭代??焖僭湍P偷膯栴}: (1) 實現(xiàn)過程中不應(yīng)有的折衷方案。(2) 開發(fā)者急于完成原型而忽略了整體設(shè)計和可維護性; (3) 用戶的參與過多也造成了軟件開發(fā)管理的混亂。 2. 原型模型 增量模型也稱為漸增模型。使用增量模型開發(fā)軟件時,把軟件產(chǎn)品

15、作為一系列的增量構(gòu)件來設(shè)計、編碼、集成和測試。分析設(shè)計編碼測試交付增量1分析設(shè)計編碼測試交付增量2 項目時間分析設(shè)計編碼測試交付增量n增量模型 3. 增量模型軟件系統(tǒng)3. 增量模型增量模型 增量模型的特點: (1) 結(jié)合了線性模型和原型模型的特點;(2) 每個增量可以結(jié)合原型法;(3) 系統(tǒng)的問世提前“增量1”增量模型的問題: 開放的軟件體系結(jié)構(gòu) 中心思想:“漸進開發(fā),逐步完善”3. 增量模型 - 使用增量模型開發(fā)時,第一個增量往往是系統(tǒng)中的核心構(gòu)件,同時,要求產(chǎn)品分解成增量構(gòu)件的規(guī)模應(yīng)當適中。 - 如何不破壞已經(jīng)開發(fā)的構(gòu)件將新的構(gòu)件集成到一個產(chǎn)品中是增量模型的一個難點。 - 增量模型的提出很

16、好地解決了線性模型中的人員阻塞問題,尤其是在項目開始初期開發(fā)人員不足的時候,能有效地規(guī)避技術(shù)風險。 3. 增量模型 噴泉模型是典型的面向?qū)ο蟮能浖^程模型之一,“噴泉”較好地體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。4. 噴泉模型4. 噴泉模型(1)假設(shè)要求你開發(fā)一個軟件,該軟件的功能是把讀入的浮點數(shù)開平方,所得到的結(jié)果應(yīng)該精確到小數(shù)點后4位。一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄。你打算選用哪種軟件生命周期模型?請說明你做出選擇的理由。問題討論情景分析解: 對這個軟件的需求很明確,實現(xiàn)開平方功能的算法也很成熟,因此,既無須通過原型來分析需求也無須用原型來驗證設(shè)計方案。此外,一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄,因此也無須使用有助于提高軟件可維護性的增量模型或螺旋模型來開發(fā)該軟件。問題討論情景分析(2)假設(shè)你被任命為一家軟件公司的項目負責人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴格的完成期限并且已對外公布。你打算采用哪種軟件生命周期模型?為什么?問題討論情景分析解:對這個項目的一個重要要求是,嚴格按照已對外公布了的日期完成產(chǎn)品開發(fā)工作,因此,選擇生命周期模型時、應(yīng)該著重考慮哪種模型有助于加快產(chǎn)品開發(fā)的進度。使用增量模型開發(fā)軟件時可以并行完成開

溫馨提示

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

最新文檔

評論

0/150

提交評論