版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件工程導(dǎo)論
天津市大學(xué)軟件園軟件工程導(dǎo)論天津市大學(xué)軟件園1本章學(xué)習(xí)目標(biāo):了解軟件危機(jī)的發(fā)生原因和典型表現(xiàn)識(shí)記軟件工程的概念和基本原理識(shí)記軟件生命周期和軟件過程的概念識(shí)記常用的生命周期模型第1章軟件工程學(xué)概述本章學(xué)習(xí)目標(biāo):第1章軟件工程學(xué)概述2第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期第1章軟件工程學(xué)概述1.1軟件危機(jī)第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期第1章軟件工程學(xué)概述1.1軟件危機(jī)1.1.1軟件的定義軟件的經(jīng)典定義: 軟件=“完成特定功能的程序+數(shù)據(jù)結(jié)構(gòu)+文檔”軟件的特征:
1、軟件是開發(fā)的,而不是制造的;
2、軟件不磨損,但退化;
3、自定義。1.1.1軟件的定義軟件的經(jīng)典定義:1.1.1軟件的定義軟件發(fā)展中的相關(guān)問題:
硬件的發(fā)展超過軟件;
現(xiàn)有軟件與用戶的要求矛盾;
軟件失敗導(dǎo)致“災(zāi)難性后果”;
需要高質(zhì)量、高可靠性的軟件;
設(shè)計(jì)的問題使升級(jí)和維護(hù)十分困難。1.1.1軟件的定義軟件發(fā)展中的相關(guān)問題:1.1.1軟件危機(jī)的定義定義“在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重的問題?!?.1.1軟件危機(jī)的定義定義1.1.2軟件危機(jī)的表現(xiàn)(1)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。
實(shí)際成本往往大大超過估計(jì)成本,或開發(fā)進(jìn)度比計(jì)劃推遲幾個(gè)月或一年以上。這種現(xiàn)象極大地影響了軟件開發(fā)組織的信譽(yù),也會(huì)引起用戶的強(qiáng)烈不滿。(2)軟件產(chǎn)品質(zhì)量較差,可靠性低。
軟件開發(fā)過程中不能堅(jiān)持嚴(yán)格的審查、復(fù)審和測(cè)試,使得軟件可靠性差、質(zhì)量問題多。
1.1.2軟件危機(jī)的表現(xiàn)(1)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常1.1.2軟件危機(jī)的表現(xiàn)(3)用戶對(duì)開發(fā)出來的軟件產(chǎn)品不滿意。開發(fā)人員與用戶之間的交流不充分,僅對(duì)用戶需求有了一個(gè)模糊的認(rèn)識(shí)就匆忙開始寫程序。這樣的結(jié)果就是用戶對(duì)于所謂已經(jīng)完成的軟件很不滿意。(4)軟件常常是不可維護(hù)的。在實(shí)際項(xiàng)目中,很多程序的錯(cuò)誤往往難以修改,而且不能適應(yīng)軟硬件環(huán)境的變化,也無法添加用戶需要的一些新功能。1.1.2軟件危機(jī)的表現(xiàn)(3)用戶對(duì)開發(fā)出來的軟件產(chǎn)品不滿1.1.2軟件危機(jī)的表現(xiàn)(5)軟件產(chǎn)品缺少應(yīng)有的文檔資料。軟件=程序+數(shù)據(jù)+文檔。開發(fā)人員對(duì)文檔認(rèn)識(shí)不足,不能保證在開發(fā)過程中文檔的完整性和準(zhǔn)確性。缺少文檔資料會(huì)造成軟件開發(fā)、管理、審查、用戶交流、軟件維護(hù)等方面的諸多問題。(6)軟件產(chǎn)品的供不應(yīng)求。軟件開發(fā)的生產(chǎn)率遠(yuǎn)遠(yuǎn)低于計(jì)算機(jī)硬件發(fā)展速度和用戶的需求,造成了軟件產(chǎn)品的供不應(yīng)求。1.1.2軟件危機(jī)的表現(xiàn)(5)軟件產(chǎn)品缺少應(yīng)有的文檔資料。1.1.3產(chǎn)生軟件危機(jī)的原因客觀原因:軟件與硬件產(chǎn)品不同,軟件是“開發(fā)的”而非“制造的”。其開發(fā)過程難以管理和控制,產(chǎn)品質(zhì)量也不好把握。軟件沒有“磨損”,但是它會(huì)不斷“退化”。軟件系統(tǒng)無法適應(yīng)不斷變化的環(huán)境和功能需求。軟件都規(guī)模龐大,而程序的復(fù)雜性是隨其規(guī)模的擴(kuò)大呈指數(shù)增加。1.1.3產(chǎn)生軟件危機(jī)的原因客觀原因:主觀原因:對(duì)用戶要求沒有完整和準(zhǔn)確的認(rèn)識(shí)就匆忙編寫程序。對(duì)軟件的開發(fā)過程的認(rèn)識(shí)不準(zhǔn)確。生命周期的每個(gè)階段都有特定的工作和特點(diǎn),都是不可逾越的。只有上一階段工作完成,才能開始下一階段的工作。對(duì)軟件質(zhì)量的重視不夠是造成軟件開發(fā)成本激增的主要原因。注意軟件開發(fā)過程中錯(cuò)誤的“放大效應(yīng)”。輕視軟件維護(hù)將是一個(gè)重大的錯(cuò)誤。軟件開發(fā)時(shí)期各階段的關(guān)鍵目標(biāo)都是提高軟件的可維護(hù)性。1.1.3產(chǎn)生軟件危機(jī)的原因主觀原因:1.1.3產(chǎn)生軟件危機(jī)的原因第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期
1.4軟件過程第1章軟件工程學(xué)概述1.1軟件危機(jī)1.2軟件工程為了更有效地開發(fā)與維護(hù)軟件,軟件工作者在20世紀(jì)60年代后期開始認(rèn)真研究消除軟件危機(jī)的途徑,從而逐漸形成了一門新興的工程學(xué)科——計(jì)算機(jī)軟件工程學(xué)(簡稱為軟件工程)。1.2軟件工程為了更有效地開發(fā)與維護(hù)軟件,軟件工1.2.1軟件工程的概念定義指導(dǎo)軟件開發(fā)與維護(hù)的工程科學(xué)采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,綜合運(yùn)用正確的管理技術(shù)和最好的技術(shù)方法,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效維護(hù)它。1.2.1軟件工程的概念定義1.2.1軟件工程的概念I(lǐng)EEE的定義
①軟件工程是把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;②對(duì)這些途徑加以研究。1.2.1軟件工程的概念I(lǐng)EEE的定義1.2.1軟件工程的概念諸多軟件工程的定義所揭示的軟件工程的本質(zhì)認(rèn)識(shí)是一致的:軟件工程一般更關(guān)注于大型軟件系統(tǒng)的開發(fā);其中心任務(wù)是控制整個(gè)軟件系統(tǒng)的復(fù)雜性,提高軟件開發(fā)的效率,加強(qiáng)人員和技術(shù)的管理,更好地滿足用戶的需要。1.2.1軟件工程的概念諸多軟件工程的定義所揭示1.2.2軟件工程的基本原理(1)用分階段的生命周期計(jì)劃嚴(yán)格管理應(yīng)該將軟件開發(fā)和維護(hù)的漫長生命周期劃分成若干個(gè)階段,并針對(duì)每個(gè)階段制定切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件的開發(fā)和維護(hù)工作進(jìn)行管理。(2)堅(jiān)持進(jìn)行階段評(píng)審錯(cuò)誤發(fā)現(xiàn)的越早,改正錯(cuò)誤所付出的代價(jià)就越小。因此,開發(fā)人員應(yīng)該堅(jiān)持在每個(gè)階段都進(jìn)行嚴(yán)格的評(píng)審,以便更早地發(fā)現(xiàn)和改正錯(cuò)誤。1.2.2軟件工程的基本原理(1)用分階段的生命周期計(jì)劃嚴(yán)1.2.2軟件工程的基本原理(3)實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)的過程中不應(yīng)隨意修改需求,當(dāng)改變需求時(shí),必須實(shí)行嚴(yán)格的產(chǎn)品控制以保持軟件各個(gè)配置成分的一致性。(4)采用現(xiàn)代程序設(shè)計(jì)技術(shù)
采用先進(jìn)的技術(shù)不僅可以提高軟件開發(fā)和維護(hù)的效率,而且還能有效地提高軟件產(chǎn)品的質(zhì)量。
1.2.2軟件工程的基本原理(3)實(shí)行嚴(yán)格的產(chǎn)品控制1.2.2軟件工程的基本原理(5)結(jié)果可以清楚地審查
應(yīng)規(guī)定每個(gè)開發(fā)階段的產(chǎn)品標(biāo)準(zhǔn)和文檔要求,使得到的結(jié)果可以清楚地審查。
(6)開發(fā)小組成員少而精軟件開發(fā)小組人員要求素質(zhì)高,而人數(shù)不宜過多。隨著人數(shù)n的增加,通信路徑也急劇增加。1.2.2軟件工程的基本原理(5)結(jié)果可以清楚地審查1.2.2軟件工程的基本原理(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件開發(fā)和維護(hù)的過程也需要隨之改進(jìn)。要主動(dòng)采用最新的軟件技術(shù),而且還要不斷總結(jié)經(jīng)驗(yàn)和教訓(xùn)、收集歷史數(shù)據(jù)幫助開發(fā)人員改進(jìn)軟件工程實(shí)踐。1.2.2軟件工程的基本原理(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐1.2.3軟件工程方法學(xué)軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)。
軟件工程方法學(xué)主要包含3個(gè)要素:方法、工具和過程。
目前使用最為廣泛的軟件工程方法學(xué)是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。1.2.3軟件工程方法學(xué)軟件生命周期全1.2.3軟件工程方法學(xué)1.傳統(tǒng)方法學(xué)-也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。
-它采用結(jié)構(gòu)化技術(shù)(包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù)。
-這種方法學(xué)將軟件生命周期劃分為若干個(gè)階段,然后順序完成各個(gè)階段的任務(wù)。每個(gè)階段依賴上一個(gè)階段產(chǎn)生的結(jié)果,并將上一階段工作進(jìn)一步具體化。1.2.3軟件工程方法學(xué)1.傳統(tǒng)方法學(xué)1.2.3軟件工程方法學(xué)2.面向?qū)ο蠓椒▽W(xué)-以數(shù)據(jù)為主線,將數(shù)據(jù)和其上的操作緊密結(jié)合起來。面向?qū)ο蠓椒▽W(xué)的四要素:類+對(duì)象+繼承+消息傳遞。
-面向?qū)ο蟮姆椒▽W(xué)是盡量模擬人類習(xí)慣的思維方式,使軟件開發(fā)過程更接近人類認(rèn)知模式,做到問題空間與解空間在結(jié)構(gòu)上一致。-運(yùn)用面向?qū)ο蠓椒▽W(xué)開發(fā)出來的軟件產(chǎn)品一般是由很多較小的獨(dú)立對(duì)象組成,從而降低了軟件產(chǎn)品的復(fù)雜性,增強(qiáng)了可理解性,使得開發(fā)和維護(hù)更為簡單有效。1.2.3軟件工程方法學(xué)2.面向?qū)ο蠓椒▽W(xué)第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期第1章軟件工程學(xué)概述1.1軟件危機(jī)1.3.1軟件生命周期的概念定義
一個(gè)軟件從定義、開發(fā)、使用和維護(hù),直至最終被廢棄,要經(jīng)歷的漫長的時(shí)期稱為軟件生命周期。1.3.1軟件生命周期的概念定義1.3.1軟件生命周期的概念構(gòu)成3個(gè)時(shí)期:軟件定義、軟件開發(fā)和運(yùn)行維護(hù)各時(shí)期任務(wù):
軟件定義時(shí)期:確定軟件開發(fā)的總目標(biāo)和工程的可行性;導(dǎo)出實(shí)現(xiàn)策略和系統(tǒng)必須完成的功能;進(jìn)行成本效益的估算;制定開發(fā)計(jì)劃等。
軟件開發(fā)時(shí)期:具體設(shè)計(jì)和實(shí)現(xiàn)前一個(gè)時(shí)期定義的軟件。
維護(hù)時(shí)期:使軟件持久地滿足用戶的需要。1.3.1軟件生命周期的概念構(gòu)成1.3.1軟件生命周期的概念構(gòu)成3個(gè)時(shí)期:軟件定義、軟件開發(fā)和運(yùn)行維護(hù)8個(gè)階段:問題定義可行性研究需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼和單元測(cè)試綜合測(cè)試軟件維護(hù)1.3.1軟件生命周期的概念構(gòu)成問題定義總體階段1:問題定義“需要解決的問題是什么?”確定問題的性質(zhì)軟件目標(biāo)和規(guī)模形成書面報(bào)告。
1.3.2各階段的基本任務(wù)階段1:問題定義1.3.2各階段的基本任務(wù)29階段2:可行性研究“確定軟件系統(tǒng)是否值得去解”
高層次的系統(tǒng)分析和設(shè)計(jì)估算系統(tǒng)的成本和效益《可行性研究報(bào)告》1.3.2各階段的基本任務(wù)階段2:可行性研究1.3.2各階段的基本任務(wù)階段3:需求分析“解決這些問題需要系統(tǒng)做什么?”與用戶的交流生成系統(tǒng)的邏輯模型《軟件需求規(guī)格說明書》1.3.2各階段的基本任務(wù)階段3:需求分析1.3.2各階段的基本任務(wù)階段4:總體設(shè)計(jì)(概要設(shè)計(jì))“應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”
設(shè)計(jì)出實(shí)現(xiàn)目標(biāo)系統(tǒng)的方案設(shè)計(jì)軟件結(jié)構(gòu),確定模塊及之間關(guān)系
概要設(shè)計(jì)說明書1.3.2各階段的基本任務(wù)階段4:總體設(shè)計(jì)(概要設(shè)計(jì))1.3.2各階段的基本任務(wù)階段5:詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))
“如何具體地實(shí)現(xiàn)這個(gè)系統(tǒng)?”
詳細(xì)的設(shè)計(jì)每個(gè)模塊的算法和數(shù)據(jù)結(jié)構(gòu)
1.3.2各階段的基本任務(wù)階段5:詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))1.3.2各階段的基本任務(wù)階段6:編碼和單元測(cè)試“寫代碼,測(cè)試每個(gè)模塊!”
選取程序設(shè)計(jì)語言寫出容易理解和維護(hù)的程序模塊
對(duì)每一個(gè)模塊進(jìn)行嚴(yán)格的測(cè)試1.3.2各階段的基本任務(wù)階段6:編碼和單元測(cè)試1.3.2各階段的基本任務(wù)階段7:綜合測(cè)試“通過各類測(cè)試和調(diào)試來完善軟件”
集成測(cè)試+驗(yàn)收測(cè)試(用戶參加)
保存測(cè)試計(jì)劃、測(cè)試方案和測(cè)試結(jié)果1.3.2各階段的基本任務(wù)階段7:綜合測(cè)試1.3.2各階段的基本任務(wù)階段8:軟件維護(hù)“通過各種必須的維護(hù)活動(dòng)使系統(tǒng)持久地滿足用戶的需要!”改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)預(yù)防性維護(hù)1.3.2各階段的基本任務(wù)階段8:軟件維護(hù)1.3.2各階段的基本任務(wù)1.3.3軟件生命周期的模型定義在軟件開發(fā)過程中,人們通常使用生命周期模型來簡要地描述軟件過程。生命周期模型規(guī)定了生命周期各個(gè)階段和它們執(zhí)行的順序,因此也被稱為過程模型。1.3.3軟件生命周期的模型定義1.瀑布模型—線性模型之一
在20世紀(jì)80年代之前,瀑布模型一直是惟一被廣泛采用的生命周期模型。傳統(tǒng)軟件工程方法學(xué)的軟件過程,基本上可以用瀑布模型來描述。
1.瀑布模型—線性模型之一瀑布模型1.瀑布模型—線性模型之一瀑布模型1.瀑布模型—線性模型之一瀑布模型的特點(diǎn):
(1)各階段之間有依賴性和嚴(yán)格的順序性。
(2)推遲實(shí)現(xiàn)。
——典型特點(diǎn)(3)嚴(yán)格的階段質(zhì)保。(4)文檔驅(qū)動(dòng)。
瀑布模型的問題:(1)實(shí)際的項(xiàng)目很少順序嚴(yán)格(2)用戶往往難以給出具體、正確、完整的要求(3)開發(fā)人員“阻塞狀態(tài)”嚴(yán)重1.瀑布模型—線性模型之一瀑布模型的特點(diǎn):1.瀑布模型—線性模型之一
2.原型模型原型模型是一個(gè)快速開發(fā)的過程,首先和用戶溝通進(jìn)行主要功能的需求分析和快速設(shè)計(jì),然后建立一個(gè)原型,再請(qǐng)用戶進(jìn)行評(píng)價(jià)和反饋。開發(fā)人員根據(jù)用戶的反饋進(jìn)一步細(xì)化需求,改進(jìn)原型系統(tǒng)的設(shè)計(jì),如此反復(fù)直至用戶滿意。2.原型模型原型模型是一個(gè)快速開發(fā)的過程,首先和快速需求分析(用戶溝通)構(gòu)建/修改模型(快速設(shè)計(jì))用戶使用評(píng)價(jià)(運(yùn)行測(cè)試)原型模型2.原型模型快速需求分析構(gòu)建/修改模型用戶使用評(píng)價(jià)原型模型2.原型??焖僭湍P偷奶攸c(diǎn):
(1)出品速度快。
(2)逐步求精。
(3)開發(fā)階段迭代。快速原型模型的問題: (1)實(shí)現(xiàn)過程中不應(yīng)有的折衷方案。
(2)開發(fā)者急于完成原型而忽略了整體設(shè)計(jì)和可維護(hù)性;
(3)用戶的參與過多也造成了軟件開發(fā)管理的混亂。
2.原型模型快速原型模型的特點(diǎn):2.原型模型增量模型也稱為漸增模型。使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測(cè)試。分析設(shè)計(jì)編碼測(cè)試交付增量1分析設(shè)計(jì)編碼測(cè)試交付增量2……項(xiàng)目時(shí)間分析設(shè)計(jì)編碼測(cè)試交付增量n增量模型3.增量模型軟件系統(tǒng)增量模型也稱為漸增模型。使用增量模型開發(fā)軟件時(shí),把3.增量模型增量模型3.增量模型增量模型增量模型的特點(diǎn):
(1)結(jié)合了線性模型和原型模型的特點(diǎn);
(2)每個(gè)增量可以結(jié)合原型法;
(3)系統(tǒng)的問世提前→“增量1”增量模型的問題:開放的軟件體系結(jié)構(gòu)
中心思想:“漸進(jìn)開發(fā),逐步完善”3.增量模型增量模型的特點(diǎn):3.增量模型-使用增量模型開發(fā)時(shí),第一個(gè)增量往往是系統(tǒng)中的核心構(gòu)件,同時(shí),要求產(chǎn)品分解成增量構(gòu)件的規(guī)模應(yīng)當(dāng)適中。
-如何不破壞已經(jīng)開發(fā)的構(gòu)件將新的構(gòu)件集成到一個(gè)產(chǎn)品中是增量模型的一個(gè)難點(diǎn)。-增量模型的提出很好地解決了線性模型中的人員阻塞問題,尤其是在項(xiàng)目開始初期開發(fā)人員不足的時(shí)候,能有效地規(guī)避技術(shù)風(fēng)險(xiǎn)。3.增量模型-使用增量模型開發(fā)時(shí),第一個(gè)增量往往是系統(tǒng)中的核心構(gòu)件,噴泉模型是典型的面向?qū)ο蟮能浖^程模型之一,“噴泉”較好地體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。4.噴泉模型噴泉模型是典型的面向?qū)ο蟮能浖^程模型之一,“噴泉4.噴泉模型4.噴泉模型(1)假設(shè)要求你開發(fā)一個(gè)軟件,該軟件的功能是把讀入的浮點(diǎn)數(shù)開平方,所得到的結(jié)果應(yīng)該精確到小數(shù)點(diǎn)后4位。一旦實(shí)現(xiàn)并測(cè)試完之后,該產(chǎn)品將被拋棄。你打算選用哪種軟件生命周期模型?請(qǐng)說明你做出選擇的理由。問題討論——情景分析(1)假設(shè)要求你開發(fā)一個(gè)軟件,該軟件的功能是把讀入的浮點(diǎn)數(shù)開解:對(duì)這個(gè)軟件的需求很明確,實(shí)現(xiàn)開平方功能的算法也很成熟,因此,既無須通過原型來分析需求也無須用原型來驗(yàn)證設(shè)計(jì)方案。此外,一旦實(shí)現(xiàn)并測(cè)試完之后,該產(chǎn)品將被拋棄,因此也無須使用有助于提高軟件可維護(hù)性的增量模型或螺旋模型來開發(fā)該軟件。問題討論——情景分析解:問題討論——情景分析(2)假設(shè)你被任命為一家軟件公司的項(xiàng)目負(fù)責(zé)人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場(chǎng)競爭激烈,公司規(guī)定了嚴(yán)格的完成期限并且已對(duì)外公布。你打算采用哪種軟件生命周期模型?為什么?問題討論——情景分析(2)假設(shè)你被任命為一家軟件公司的項(xiàng)目負(fù)責(zé)人,你的工作是管理解:對(duì)這個(gè)項(xiàng)目的一個(gè)重要要求是,嚴(yán)格按照已對(duì)外公布了的日期完成產(chǎn)品開發(fā)工作,因此,選擇生命周期模型時(shí)、應(yīng)該著重考慮哪種模型有助于加快產(chǎn)品開發(fā)的進(jìn)度。使用增量模型開發(fā)軟件時(shí)可以并行完成開發(fā)工作,因此能夠加快開發(fā)進(jìn)度。這個(gè)項(xiàng)目是開發(fā)該公司已被廣泛應(yīng)用的字處理軟件的新版本,從上述事實(shí)至少可以得出3點(diǎn)結(jié)論:第一,舊版本相當(dāng)于一個(gè)原型,通過收集用戶對(duì)舊版本的反映,較容易確定對(duì)新版本的需求,沒必要再專門建立一個(gè)原型系統(tǒng)來分析用戶的需求;第二,該公司的軟件工程師對(duì)字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗(yàn),具有采用增量模型開發(fā)新版字處理軟件所需要的技術(shù)水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應(yīng)該把該軟件的體系結(jié)構(gòu)設(shè)計(jì)成開放式的,以利于今后的改進(jìn)和擴(kuò)充。
問題討論——情景分析解:對(duì)這個(gè)項(xiàng)目的一個(gè)重要要求是,嚴(yán)格按照已對(duì)外公布了的日期完
TheEnd
TheEnd軟件工程導(dǎo)論
天津市大學(xué)軟件園軟件工程導(dǎo)論天津市大學(xué)軟件園55本章學(xué)習(xí)目標(biāo):了解軟件危機(jī)的發(fā)生原因和典型表現(xiàn)識(shí)記軟件工程的概念和基本原理識(shí)記軟件生命周期和軟件過程的概念識(shí)記常用的生命周期模型第1章軟件工程學(xué)概述本章學(xué)習(xí)目標(biāo):第1章軟件工程學(xué)概述56第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期第1章軟件工程學(xué)概述1.1軟件危機(jī)第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期第1章軟件工程學(xué)概述1.1軟件危機(jī)1.1.1軟件的定義軟件的經(jīng)典定義: 軟件=“完成特定功能的程序+數(shù)據(jù)結(jié)構(gòu)+文檔”軟件的特征:
1、軟件是開發(fā)的,而不是制造的;
2、軟件不磨損,但退化;
3、自定義。1.1.1軟件的定義軟件的經(jīng)典定義:1.1.1軟件的定義軟件發(fā)展中的相關(guān)問題:
硬件的發(fā)展超過軟件;
現(xiàn)有軟件與用戶的要求矛盾;
軟件失敗導(dǎo)致“災(zāi)難性后果”;
需要高質(zhì)量、高可靠性的軟件;
設(shè)計(jì)的問題使升級(jí)和維護(hù)十分困難。1.1.1軟件的定義軟件發(fā)展中的相關(guān)問題:1.1.1軟件危機(jī)的定義定義“在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重的問題?!?.1.1軟件危機(jī)的定義定義1.1.2軟件危機(jī)的表現(xiàn)(1)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。
實(shí)際成本往往大大超過估計(jì)成本,或開發(fā)進(jìn)度比計(jì)劃推遲幾個(gè)月或一年以上。這種現(xiàn)象極大地影響了軟件開發(fā)組織的信譽(yù),也會(huì)引起用戶的強(qiáng)烈不滿。(2)軟件產(chǎn)品質(zhì)量較差,可靠性低。
軟件開發(fā)過程中不能堅(jiān)持嚴(yán)格的審查、復(fù)審和測(cè)試,使得軟件可靠性差、質(zhì)量問題多。
1.1.2軟件危機(jī)的表現(xiàn)(1)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常1.1.2軟件危機(jī)的表現(xiàn)(3)用戶對(duì)開發(fā)出來的軟件產(chǎn)品不滿意。開發(fā)人員與用戶之間的交流不充分,僅對(duì)用戶需求有了一個(gè)模糊的認(rèn)識(shí)就匆忙開始寫程序。這樣的結(jié)果就是用戶對(duì)于所謂已經(jīng)完成的軟件很不滿意。(4)軟件常常是不可維護(hù)的。在實(shí)際項(xiàng)目中,很多程序的錯(cuò)誤往往難以修改,而且不能適應(yīng)軟硬件環(huán)境的變化,也無法添加用戶需要的一些新功能。1.1.2軟件危機(jī)的表現(xiàn)(3)用戶對(duì)開發(fā)出來的軟件產(chǎn)品不滿1.1.2軟件危機(jī)的表現(xiàn)(5)軟件產(chǎn)品缺少應(yīng)有的文檔資料。軟件=程序+數(shù)據(jù)+文檔。開發(fā)人員對(duì)文檔認(rèn)識(shí)不足,不能保證在開發(fā)過程中文檔的完整性和準(zhǔn)確性。缺少文檔資料會(huì)造成軟件開發(fā)、管理、審查、用戶交流、軟件維護(hù)等方面的諸多問題。(6)軟件產(chǎn)品的供不應(yīng)求。軟件開發(fā)的生產(chǎn)率遠(yuǎn)遠(yuǎn)低于計(jì)算機(jī)硬件發(fā)展速度和用戶的需求,造成了軟件產(chǎn)品的供不應(yīng)求。1.1.2軟件危機(jī)的表現(xiàn)(5)軟件產(chǎn)品缺少應(yīng)有的文檔資料。1.1.3產(chǎn)生軟件危機(jī)的原因客觀原因:軟件與硬件產(chǎn)品不同,軟件是“開發(fā)的”而非“制造的”。其開發(fā)過程難以管理和控制,產(chǎn)品質(zhì)量也不好把握。軟件沒有“磨損”,但是它會(huì)不斷“退化”。軟件系統(tǒng)無法適應(yīng)不斷變化的環(huán)境和功能需求。軟件都規(guī)模龐大,而程序的復(fù)雜性是隨其規(guī)模的擴(kuò)大呈指數(shù)增加。1.1.3產(chǎn)生軟件危機(jī)的原因客觀原因:主觀原因:對(duì)用戶要求沒有完整和準(zhǔn)確的認(rèn)識(shí)就匆忙編寫程序。對(duì)軟件的開發(fā)過程的認(rèn)識(shí)不準(zhǔn)確。生命周期的每個(gè)階段都有特定的工作和特點(diǎn),都是不可逾越的。只有上一階段工作完成,才能開始下一階段的工作。對(duì)軟件質(zhì)量的重視不夠是造成軟件開發(fā)成本激增的主要原因。注意軟件開發(fā)過程中錯(cuò)誤的“放大效應(yīng)”。輕視軟件維護(hù)將是一個(gè)重大的錯(cuò)誤。軟件開發(fā)時(shí)期各階段的關(guān)鍵目標(biāo)都是提高軟件的可維護(hù)性。1.1.3產(chǎn)生軟件危機(jī)的原因主觀原因:1.1.3產(chǎn)生軟件危機(jī)的原因第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期
1.4軟件過程第1章軟件工程學(xué)概述1.1軟件危機(jī)1.2軟件工程為了更有效地開發(fā)與維護(hù)軟件,軟件工作者在20世紀(jì)60年代后期開始認(rèn)真研究消除軟件危機(jī)的途徑,從而逐漸形成了一門新興的工程學(xué)科——計(jì)算機(jī)軟件工程學(xué)(簡稱為軟件工程)。1.2軟件工程為了更有效地開發(fā)與維護(hù)軟件,軟件工1.2.1軟件工程的概念定義指導(dǎo)軟件開發(fā)與維護(hù)的工程科學(xué)采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,綜合運(yùn)用正確的管理技術(shù)和最好的技術(shù)方法,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效維護(hù)它。1.2.1軟件工程的概念定義1.2.1軟件工程的概念I(lǐng)EEE的定義
①軟件工程是把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;②對(duì)這些途徑加以研究。1.2.1軟件工程的概念I(lǐng)EEE的定義1.2.1軟件工程的概念諸多軟件工程的定義所揭示的軟件工程的本質(zhì)認(rèn)識(shí)是一致的:軟件工程一般更關(guān)注于大型軟件系統(tǒng)的開發(fā);其中心任務(wù)是控制整個(gè)軟件系統(tǒng)的復(fù)雜性,提高軟件開發(fā)的效率,加強(qiáng)人員和技術(shù)的管理,更好地滿足用戶的需要。1.2.1軟件工程的概念諸多軟件工程的定義所揭示1.2.2軟件工程的基本原理(1)用分階段的生命周期計(jì)劃嚴(yán)格管理應(yīng)該將軟件開發(fā)和維護(hù)的漫長生命周期劃分成若干個(gè)階段,并針對(duì)每個(gè)階段制定切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件的開發(fā)和維護(hù)工作進(jìn)行管理。(2)堅(jiān)持進(jìn)行階段評(píng)審錯(cuò)誤發(fā)現(xiàn)的越早,改正錯(cuò)誤所付出的代價(jià)就越小。因此,開發(fā)人員應(yīng)該堅(jiān)持在每個(gè)階段都進(jìn)行嚴(yán)格的評(píng)審,以便更早地發(fā)現(xiàn)和改正錯(cuò)誤。1.2.2軟件工程的基本原理(1)用分階段的生命周期計(jì)劃嚴(yán)1.2.2軟件工程的基本原理(3)實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)的過程中不應(yīng)隨意修改需求,當(dāng)改變需求時(shí),必須實(shí)行嚴(yán)格的產(chǎn)品控制以保持軟件各個(gè)配置成分的一致性。(4)采用現(xiàn)代程序設(shè)計(jì)技術(shù)
采用先進(jìn)的技術(shù)不僅可以提高軟件開發(fā)和維護(hù)的效率,而且還能有效地提高軟件產(chǎn)品的質(zhì)量。
1.2.2軟件工程的基本原理(3)實(shí)行嚴(yán)格的產(chǎn)品控制1.2.2軟件工程的基本原理(5)結(jié)果可以清楚地審查
應(yīng)規(guī)定每個(gè)開發(fā)階段的產(chǎn)品標(biāo)準(zhǔn)和文檔要求,使得到的結(jié)果可以清楚地審查。
(6)開發(fā)小組成員少而精軟件開發(fā)小組人員要求素質(zhì)高,而人數(shù)不宜過多。隨著人數(shù)n的增加,通信路徑也急劇增加。1.2.2軟件工程的基本原理(5)結(jié)果可以清楚地審查1.2.2軟件工程的基本原理(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件開發(fā)和維護(hù)的過程也需要隨之改進(jìn)。要主動(dòng)采用最新的軟件技術(shù),而且還要不斷總結(jié)經(jīng)驗(yàn)和教訓(xùn)、收集歷史數(shù)據(jù)幫助開發(fā)人員改進(jìn)軟件工程實(shí)踐。1.2.2軟件工程的基本原理(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐1.2.3軟件工程方法學(xué)軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)。
軟件工程方法學(xué)主要包含3個(gè)要素:方法、工具和過程。
目前使用最為廣泛的軟件工程方法學(xué)是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。1.2.3軟件工程方法學(xué)軟件生命周期全1.2.3軟件工程方法學(xué)1.傳統(tǒng)方法學(xué)-也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。
-它采用結(jié)構(gòu)化技術(shù)(包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù)。
-這種方法學(xué)將軟件生命周期劃分為若干個(gè)階段,然后順序完成各個(gè)階段的任務(wù)。每個(gè)階段依賴上一個(gè)階段產(chǎn)生的結(jié)果,并將上一階段工作進(jìn)一步具體化。1.2.3軟件工程方法學(xué)1.傳統(tǒng)方法學(xué)1.2.3軟件工程方法學(xué)2.面向?qū)ο蠓椒▽W(xué)-以數(shù)據(jù)為主線,將數(shù)據(jù)和其上的操作緊密結(jié)合起來。面向?qū)ο蠓椒▽W(xué)的四要素:類+對(duì)象+繼承+消息傳遞。
-面向?qū)ο蟮姆椒▽W(xué)是盡量模擬人類習(xí)慣的思維方式,使軟件開發(fā)過程更接近人類認(rèn)知模式,做到問題空間與解空間在結(jié)構(gòu)上一致。-運(yùn)用面向?qū)ο蠓椒▽W(xué)開發(fā)出來的軟件產(chǎn)品一般是由很多較小的獨(dú)立對(duì)象組成,從而降低了軟件產(chǎn)品的復(fù)雜性,增強(qiáng)了可理解性,使得開發(fā)和維護(hù)更為簡單有效。1.2.3軟件工程方法學(xué)2.面向?qū)ο蠓椒▽W(xué)第1章軟件工程學(xué)概述
1.1軟件危機(jī)
1.2軟件工程
1.3軟件生命周期第1章軟件工程學(xué)概述1.1軟件危機(jī)1.3.1軟件生命周期的概念定義
一個(gè)軟件從定義、開發(fā)、使用和維護(hù),直至最終被廢棄,要經(jīng)歷的漫長的時(shí)期稱為軟件生命周期。1.3.1軟件生命周期的概念定義1.3.1軟件生命周期的概念構(gòu)成3個(gè)時(shí)期:軟件定義、軟件開發(fā)和運(yùn)行維護(hù)各時(shí)期任務(wù):
軟件定義時(shí)期:確定軟件開發(fā)的總目標(biāo)和工程的可行性;導(dǎo)出實(shí)現(xiàn)策略和系統(tǒng)必須完成的功能;進(jìn)行成本效益的估算;制定開發(fā)計(jì)劃等。
軟件開發(fā)時(shí)期:具體設(shè)計(jì)和實(shí)現(xiàn)前一個(gè)時(shí)期定義的軟件。
維護(hù)時(shí)期:使軟件持久地滿足用戶的需要。1.3.1軟件生命周期的概念構(gòu)成1.3.1軟件生命周期的概念構(gòu)成3個(gè)時(shí)期:軟件定義、軟件開發(fā)和運(yùn)行維護(hù)8個(gè)階段:問題定義可行性研究需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼和單元測(cè)試綜合測(cè)試軟件維護(hù)1.3.1軟件生命周期的概念構(gòu)成問題定義總體階段1:問題定義“需要解決的問題是什么?”確定問題的性質(zhì)軟件目標(biāo)和規(guī)模形成書面報(bào)告。
1.3.2各階段的基本任務(wù)階段1:問題定義1.3.2各階段的基本任務(wù)83階段2:可行性研究“確定軟件系統(tǒng)是否值得去解”
高層次的系統(tǒng)分析和設(shè)計(jì)估算系統(tǒng)的成本和效益《可行性研究報(bào)告》1.3.2各階段的基本任務(wù)階段2:可行性研究1.3.2各階段的基本任務(wù)階段3:需求分析“解決這些問題需要系統(tǒng)做什么?”與用戶的交流生成系統(tǒng)的邏輯模型《軟件需求規(guī)格說明書》1.3.2各階段的基本任務(wù)階段3:需求分析1.3.2各階段的基本任務(wù)階段4:總體設(shè)計(jì)(概要設(shè)計(jì))“應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”
設(shè)計(jì)出實(shí)現(xiàn)目標(biāo)系統(tǒng)的方案設(shè)計(jì)軟件結(jié)構(gòu),確定模塊及之間關(guān)系
概要設(shè)計(jì)說明書1.3.2各階段的基本任務(wù)階段4:總體設(shè)計(jì)(概要設(shè)計(jì))1.3.2各階段的基本任務(wù)階段5:詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))
“如何具體地實(shí)現(xiàn)這個(gè)系統(tǒng)?”
詳細(xì)的設(shè)計(jì)每個(gè)模塊的算法和數(shù)據(jù)結(jié)構(gòu)
1.3.2各階段的基本任務(wù)階段5:詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))1.3.2各階段的基本任務(wù)階段6:編碼和單元測(cè)試“寫代碼,測(cè)試每個(gè)模塊!”
選取程序設(shè)計(jì)語言寫出容易理解和維護(hù)的程序模塊
對(duì)每一個(gè)模塊進(jìn)行嚴(yán)格的測(cè)試1.3.2各階段的基本任務(wù)階段6:編碼和單元測(cè)試1.3.2各階段的基本任務(wù)階段7:綜合測(cè)試“通過各類測(cè)試和調(diào)試來完善軟件”
集成測(cè)試+驗(yàn)收測(cè)試(用戶參加)
保存測(cè)試計(jì)劃、測(cè)試方案和測(cè)試結(jié)果1.3.2各階段的基本任務(wù)階段7:綜合測(cè)試1.3.2各階段的基本任務(wù)階段8:軟件維護(hù)“通過各種必須的維護(hù)活動(dòng)使系統(tǒng)持久地滿足用戶的需要!”改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)預(yù)防性維護(hù)1.3.2各階段的基本任務(wù)階段8:軟件維護(hù)1.3.2各階段的基本任務(wù)1.3.3軟件生命周期的模型定義在軟件開發(fā)過程中,人們通常使用生命周期模型來簡要地描述軟件過程。生命周期模型規(guī)定了生命周期各個(gè)階段和它們執(zhí)行的順序,因此也被稱為過程模型。1.3.3軟件生命周期的模型定義1.瀑布模型—線性模型之一
在20世紀(jì)80年代之前,瀑布模型一直是惟一被廣泛采用的生命周期模型。傳統(tǒng)軟件工程方法學(xué)的軟件過程,基本上可以用瀑布模型來描述。
1.瀑布模型—線性模型之一瀑布模型1.瀑布模型—線性模型之一瀑布模型1.瀑布模型—線性模型之一瀑布模型的特點(diǎn):
(1)各階段之間有依賴性和嚴(yán)格的順序性。
(2)推遲實(shí)現(xiàn)。
——典型特點(diǎn)(3)嚴(yán)格的階段質(zhì)保。(4)文檔驅(qū)動(dòng)。
瀑布模型的問題:(1)實(shí)際的項(xiàng)目很少順序嚴(yán)格(2)用戶往往難以給出具體、正確、完整的要求(3)開發(fā)人員“阻塞狀態(tài)”嚴(yán)重1.瀑布模型—線性模型之一瀑布模型的特點(diǎn):1.瀑布模型—線性模型之一
2.原型模型原型模型是一個(gè)快速開發(fā)的過程,首先和用戶溝通進(jìn)行主要功能的需求分析和快速設(shè)計(jì),然后建立一個(gè)原型,再請(qǐng)用戶進(jìn)行評(píng)價(jià)和反饋。開發(fā)人員根據(jù)用戶的反饋進(jìn)一步細(xì)化需求,改進(jìn)原型系統(tǒng)的設(shè)計(jì),如此反復(fù)直至用戶滿意。2.原型模型原型模型是一個(gè)快速開發(fā)的過程,首先和快速需求分析(用戶溝通)構(gòu)建/修改模型(快速設(shè)計(jì))用戶使用評(píng)價(jià)(運(yùn)行測(cè)試)原型模型2.原型模型快速需求分析構(gòu)建/修改模型用戶使用評(píng)價(jià)原型模型2.原型??焖僭湍P偷奶攸c(diǎn):
(1)出品速度快。
(2)逐步求精。
(3)開發(fā)階段迭代??焖僭湍P偷膯栴}: (1)實(shí)現(xiàn)過程中不應(yīng)有的折衷方案。
(2)開發(fā)者急于完成原型而忽略了整體設(shè)計(jì)和可維護(hù)性;
(3)用戶的參與過多也造成了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河北邯鄲成安縣公開選聘農(nóng)村黨務(wù)(村務(wù))工作者72人備考題庫附答案
- 2025年河北衡水市婦幼保健院第四季度就業(yè)見習(xí)人員招聘5人備考題庫附答案
- 2025年甘肅省蘭州市皋蘭縣蘭鑫鋼鐵集團(tuán)招聘176人筆試備考試題附答案
- 2025年齊齊哈爾克東縣公益性崗位人員招聘46人備考題庫附答案
- 2025年11月四川西南石油大學(xué)考核招聘高層次人才35人備考題庫附答案
- 2026北京大學(xué)應(yīng)屆畢業(yè)生招聘4人(三)筆試模擬試題及答案解析
- 2026上半年黑龍江科技大學(xué)招聘博士教師66人筆試備考試題及答案解析
- 醫(yī)護(hù)科室年度工作總結(jié)【演示文檔課件】
- 2026固原市選聘人民政府行政復(fù)議委員會(huì)專家委員筆試參考題庫及答案解析
- 2026中工國際工程股份有限公司社會(huì)招聘筆試備考試題及答案解析
- 2026云南省產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)研究院招聘編制外人員2人筆試模擬試題及答案解析
- 營養(yǎng)風(fēng)險(xiǎn)篩查2002臨床應(yīng)用
- (2025年版)慢性腎臟病高磷血癥臨床管理中國專家共識(shí)解讀
- 2025年菏澤巨野縣高鐵北站公開招聘客運(yùn)服務(wù)人員(6人)備考筆試試題及答案解析
- 2026年陜西能源職業(yè)技術(shù)學(xué)院教師招聘(42人)參考筆試題庫附答案解析
- 2025年榆林市住房公積金管理中心招聘(19人)筆試考試參考題庫及答案解析
- (高清版)T∕CES 243-2023 《構(gòu)網(wǎng)型儲(chǔ)能系統(tǒng)并網(wǎng)技術(shù)規(guī)范》
- 八年級(jí)上冊(cè)地理期末復(fù)習(xí)計(jì)劃通用5篇
- 初中日語人教版七年級(jí)第一冊(cè)單詞表講義
- GB/T 9065.5-2010液壓軟管接頭第5部分:37°擴(kuò)口端軟管接頭
- GB/T 20475.2-2006煤中有害元素含量分級(jí)第2部分:氯
評(píng)論
0/150
提交評(píng)論