計算機軟件基礎(chǔ)課件:軟件工程概述_第1頁
計算機軟件基礎(chǔ)課件:軟件工程概述_第2頁
計算機軟件基礎(chǔ)課件:軟件工程概述_第3頁
計算機軟件基礎(chǔ)課件:軟件工程概述_第4頁
計算機軟件基礎(chǔ)課件:軟件工程概述_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程概述《計算機軟件基礎(chǔ)》01.軟件工程簡介02.軟件生命周期03.軟件過程模型主要內(nèi)容04.敏捷開發(fā)本章重點難點本章重點:軟件危機的表現(xiàn)和產(chǎn)生原因;軟件工程的概念和基本原理;軟件生命周期各個階段的主要任務(wù);軟件測試的基本準則、步驟和方法;黑盒測試;不同軟件過程模型的特點;敏捷開發(fā)思想和模型。本章難點:使用判定樹表達簡單算法;等價劃分方法;軟件過程模型;敏捷開發(fā)模型。01軟件工程簡介1.軟件危機1)軟件危機介紹

軟件危機是指軟件開發(fā)和維護過程中遇到的一系列嚴重問題。

軟件危機主要有以下典型表現(xiàn):軟件開發(fā)成本和進度難以估計。用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量無法保證。軟件常常是不可維護的。軟件缺少適當(dāng)?shù)奈臋n資料,難以維護。軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。軟件開發(fā)速度跟不上社會需求的增長。2.軟件危機產(chǎn)生原因1)與軟件自身的特點有關(guān)軟件是計算機系統(tǒng)中的邏輯部件。軟件規(guī)模龐大,且程序的復(fù)雜性隨著程序規(guī)模的增加而呈指數(shù)級上升。2)與軟件開發(fā)和維護的方法不正確有關(guān)2.軟件工程的定義與特征

軟件工程是一門指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科,采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理和技術(shù)與當(dāng)前能夠得到的最好方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。軟件工程的本質(zhì)特征:1)軟件工程關(guān)注于大型程序的構(gòu)造。

2)軟件工程的中心課題是控制復(fù)雜性。3)軟件應(yīng)隨著所模擬的現(xiàn)實世界一起變化。

4)開發(fā)軟件的效率非常重要。5)有效地多人協(xié)同工作是軟件開發(fā)的關(guān)鍵。

6)軟件必須有效地支持它的用戶。7)軟件通常是由缺乏應(yīng)用領(lǐng)域知識和文化知識的工程師創(chuàng)造完成。3.軟件工程的基本原理1)用分階段的生存周期計劃進行嚴格管理。2)堅持進行階段評審。3)實行嚴格的產(chǎn)品控制。4)采用現(xiàn)代程序設(shè)計技術(shù)。5)清楚地審查結(jié)果。6)軟件開發(fā)小組的人員應(yīng)該少而精。7)必須不斷改進軟件工程實踐。4.軟件工程方法學(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ù)并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運用。2)面向?qū)ο蠓椒▽W(xué)把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。把所有對象都劃分成類。按照父類(又稱為基類)與子類(又稱為派生類)的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng)。對象彼此間僅能通過發(fā)送消息互相聯(lián)系。02軟件生命周期

軟件從定義、開發(fā)、使用、維護,直至最終被廢棄的漫長時期稱為軟件生命周期(SoftwareLifeCycle)。1、軟件生命周期

軟件生命周期的各階段1.軟件定義

該階段的任務(wù)是確定軟件開發(fā)過程必須完成的總目標(biāo) 即根據(jù)用戶具體需求解決系統(tǒng)“做什么”的問題1)問題定義

明確“軟件要解決的問題是什么?”。首先要收集和分析相關(guān)信息,準確、完整地描述出用戶提出的要求。該子階段最后產(chǎn)生的結(jié)果是問題描述文檔。2)可行性研究技術(shù)可行性經(jīng)濟可行性操作可行性3)需求分析明確“目標(biāo)系統(tǒng)必須做什么?”,是一個不斷認識和逐步細化的過程,其目的是確定目標(biāo)系統(tǒng)必須具備哪些功能。結(jié)果是具體的軟件需求規(guī)格說明。2.總體設(shè)計

又稱概要設(shè)計,其任務(wù)是提出候選的最佳方案,確定模塊結(jié)構(gòu),編寫總體設(shè)計說明書。

首先,應(yīng)該設(shè)計出實現(xiàn)目標(biāo)系統(tǒng)的幾種可能的方案。然后,依據(jù)最佳方案,制定出實現(xiàn)該方案的詳細計劃。如果用戶接受所推薦的方案,則繼續(xù)完成總體設(shè)計的另一項主要任務(wù),即設(shè)計軟件的結(jié)構(gòu)。程序應(yīng)該模塊化模塊獨立性

3.詳細設(shè)計

又稱模塊設(shè)計,其根本任務(wù)是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng),是編碼的先導(dǎo)。

結(jié)構(gòu)化程序設(shè)計是詳細設(shè)計的邏輯基礎(chǔ),采用自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu),并且只包含順序、選擇和循環(huán)三種基本結(jié)構(gòu)。

描述程序處理過程的工具稱為詳細設(shè)計工具,主要包括如下三類:1)圖形工具:如程序流程圖、盒圖(N_S圖)、問題分析圖(PAD)。2)表格工具:如判定樹、判定表。3)語言工具:如過程設(shè)計語言。

4.軟件編碼

任務(wù)是根據(jù)設(shè)計說明書中每個模塊的算法描述,用指定的程序設(shè)計語言編寫出相應(yīng)的程序。軟件編碼階段結(jié)束后需要交付的是源程序及其相關(guān)文檔。1)程序設(shè)計語言

程序設(shè)計語言分為低級語言和高級語言:用戶選擇高級語言類型的原則如下:1)系統(tǒng)的應(yīng)用領(lǐng)域。2)用戶的要求。3)軟件的執(zhí)行環(huán)境。當(dāng)前,用戶均采用高級語言來編程實現(xiàn)軟件系統(tǒng)。4)目標(biāo)系統(tǒng)的性能要求。5)程序員的知識水平。6)軟件的可移植性要求。2)程序設(shè)計風(fēng)格一般而言,良好的程序設(shè)計風(fēng)格需要遵循以下準則:簡潔化模塊化簡單化結(jié)構(gòu)化文檔化格式化

測試階段的根本任務(wù)是發(fā)現(xiàn)并改正軟件中的錯誤。

測試只是查找出程序中的錯誤,不能證明程序中沒有錯誤,即決不能證明程序是正確的。1)基本準則:所有測試都應(yīng)該能追溯到用戶需求。應(yīng)該遠在測試開始之前就制定出測試計劃。把Pareto原理應(yīng)用到軟件測試中。應(yīng)該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)模”測試。窮舉測試是不可能的。為了達到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作。5.軟件測試2)軟件測試的步驟

大型軟件系統(tǒng)的測試過程基本上由4個步驟組成:單元測試,又稱為模塊測試。子系統(tǒng)測試。系統(tǒng)測試。確認測試,又稱為驗收測試。軟件測試是軟件開發(fā)過程中最艱巨最繁重的任務(wù)。3)軟件測試的方法:測試的目的是以最少的測試用例集合測試出盡可能多的程序中潛在的錯誤。黑盒測試,又稱功能測試。把程序看成一個黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,只是對程序的每一個功能進行測試,看是否都達到了預(yù)期的要求。白盒測試,又稱結(jié)構(gòu)測試。它把程序看成一個白盒子,需要完全了解程序的內(nèi)部結(jié)構(gòu)和處理過程,檢驗程序中的每條通路是否都能按預(yù)定要求正確工作。黑盒測試白盒測試性質(zhì)是一種確認技術(shù),回答“我們在構(gòu)造一個正確的系統(tǒng)嗎?”是一種驗證技術(shù),回答“我們在正確地構(gòu)造一個系統(tǒng)嗎?”優(yōu)點①適用于各階段測試。②從產(chǎn)品功能角度測試。③容易入手生成測試數(shù)據(jù)。①可構(gòu)造測試數(shù)據(jù)使程序的特定部分得到測試。②一定的充分性度量手段。③可獲得較多的工具支持。缺點①某些代碼得不到測試。②若規(guī)格說明有誤,則無法發(fā)現(xiàn)。③不易進行充分性測試。①通常不易生成測試數(shù)據(jù)。②無法對未實現(xiàn)規(guī)格說明的部分進行測試。③工作量大,通常只用于單元測試,有應(yīng)用的局限性。4)測試用例的設(shè)計需要精心設(shè)計測試用例,力爭用盡可能少的測試次數(shù),測出盡可能多的錯誤。

通常使用黑盒法設(shè)計基本的測試用例,再用白盒法補充。例12-2

讀入三個整數(shù)值,分別代表同一個三角形三條邊的長度。請根據(jù)這三個值判斷三角形屬于不等邊、等腰或等邊三角形中的哪一種。等價劃分方法:等價劃分方法根據(jù)輸入數(shù)據(jù)和輸出數(shù)據(jù)的特點,將程序的輸入域劃分成若干個部分,即子集,然后從每個子集中選取具有代表性的數(shù)據(jù)作為測試用例,能盡可能多地發(fā)現(xiàn)程序中的錯誤。5)

調(diào)試:進一步診斷和改正程序中的錯誤。

軟件維護是軟件生存周期的最后一個階段,也是持續(xù)時間最長、代價最大的一個階段。其目的是延長軟件系統(tǒng)的生命周期。

一般來說,需要進行軟件維護的原因有3種:1)改正程序中的錯誤和缺陷。2)改進設(shè)計以適應(yīng)新的軟、硬件環(huán)境。3)增加新的應(yīng)用范圍。軟件維護工作分為4類:1)改正性維護。2)適應(yīng)性維護。3)完善性維護。4)預(yù)防性維護。6.軟件維護03軟件過程模型3.軟件過程模型1)瀑布模型在20世紀80年代之前,由B.M.Boehm提出了瀑布模型,又稱生存周期模型,是軟件工程的基礎(chǔ)模型特點:階段間具有順序性和依賴性。推遲實現(xiàn)原則。質(zhì)量保證機制。

軟件過程是軟件開發(fā)過程的簡稱,是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,規(guī)定了完成各項任務(wù)的具體步驟。2)原型模型

原型模型的基本思想是根據(jù)用戶實際試用原型系統(tǒng)后提出的修改意見快速修改原型樣品,經(jīng)過反復(fù)試用和改進,最終建立起符合用戶需求的新系統(tǒng)。原型模型通??梢苑譃閮深?原型僅是為了獲得完整的需求說明,在用戶認可后,按生命周期重新開發(fā)新系統(tǒng)。不丟棄原型,而是通過對原型的不斷增加和擴充,增強式地開發(fā),逐步達到系統(tǒng)的要求,目的是為了以后盡量少返工,降低維護費用,這一類稱為快速原型模型。3)螺旋模型

螺旋模型是一種風(fēng)險驅(qū)動模型,它的基本思想是使用原型及其他方法來降低風(fēng)險。4)統(tǒng)一過程模型

統(tǒng)一過程(UnifiedProcess,UP)嘗試著從傳統(tǒng)的軟件過程中挖掘最好的特征和性質(zhì),但是以敏捷軟件開發(fā)中許多最好的原則來實現(xiàn)。統(tǒng)一過程認識到與客戶溝通以及從客戶的角度描述系統(tǒng)(即用例)并保持該描述一致性的重要性,它強調(diào)軟件體系結(jié)構(gòu)的重要作用,并幫助架構(gòu)師專注于正確的目標(biāo),例如可理解性、對未來變更的可適應(yīng)性以及軟件的復(fù)用性。它建立了迭代的、增量的過程流,提供了演進的特征,這對現(xiàn)代軟件開發(fā)非常重要。04敏捷開發(fā)1.敏捷開發(fā)概述敏捷不僅僅能有效地響應(yīng)變更;強調(diào)可以運行的軟件的快速交付而不那么看重中間產(chǎn)品;客戶應(yīng)該在開發(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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論