軟件工程(1)課件_第1頁
軟件工程(1)課件_第2頁
軟件工程(1)課件_第3頁
軟件工程(1)課件_第4頁
軟件工程(1)課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第七章 軟件工程概述第一節(jié) 軟件工程的基本概念第二節(jié) 軟件工程開發(fā)模型第三節(jié) 軟件開發(fā)工程過程1第一節(jié) 軟件工程的基本概念1、軟件工程2、軟件工程過程3、軟件工程的生存周期21、軟件工程軟件工程這一概念,主要是針對(duì)20世紀(jì)60年代的“軟件危機(jī)”而提出的,自這一概念提出以來,圍繞軟件項(xiàng)目,開展了有關(guān)開發(fā)模型、方法以及支持工作的研究。1.軟件工程的定義軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程科學(xué)。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。31、軟件工程41

2、、軟件工程隨著軟件工程的發(fā)展過程,出現(xiàn)過對(duì)軟件工程的各種各樣的定義,其中的一些典型的定義有:1968年在第一屆NATO會(huì)議上曾經(jīng)給出了軟件工程的一個(gè)早期定義:“軟件工程就是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)行的軟件,而建立和使用完善的工程原理。”PWegner和BBoehm認(rèn)為:軟件工程是科學(xué)知識(shí)在設(shè)計(jì)和構(gòu)造計(jì)算機(jī)程序以及開發(fā)、運(yùn)作和維護(hù)這些程序所要求的有關(guān)文檔編制中的實(shí)際應(yīng)用。1983年IEEE(國際電氣與電子工程師協(xié)會(huì))的軟件工程術(shù)語匯編中,將軟件工程定義為:對(duì)軟件開發(fā)、運(yùn)作、維護(hù)、退役的系統(tǒng)研究方法。51、軟件工程1993年IEEE進(jìn)一步給出了一個(gè)更全面更具體的定義:“軟件工程

3、是:把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;研究中提到的途徑?!睆囊陨蠈?duì)軟件工程的不同定義中,我們可以看到對(duì)其內(nèi)容的理解是逐步深入的。發(fā)展到今天,軟件工程已是一門交叉性學(xué)科,它運(yùn)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,借鑒傳統(tǒng)工程的原則、方法來創(chuàng)建軟件,從而達(dá)到提高質(zhì)量、降低成本的目的。61、軟件工程2.軟件工程的基本原理1983年B.Weohm提出了軟件工程的七條基本原理,他認(rèn)為,這7條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小集合。它們是相互獨(dú)立、缺一不可的最小集合,同時(shí),它們又是完備的。71、軟件工程這七條原理是:用分階段的生命周期計(jì)劃嚴(yán)格管理這一條

4、是吸取前人的教訓(xùn)而提出來的。統(tǒng)計(jì)表明,50%以上的失敗項(xiàng)目是由于計(jì)劃不周而造成的。在軟件開發(fā)與維護(hù)的漫長生命周期中,需要完成許多性質(zhì)各異的工作。這條原理意味著,應(yīng)該把軟件生命周期分成若干階段,并相應(yīng)制定出切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件的開發(fā)和維護(hù)進(jìn)行管理。在整個(gè)軟件生命周期中應(yīng)指定并嚴(yán)格執(zhí)行六類計(jì)劃,即項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃和運(yùn)行維護(hù)計(jì)劃。81、軟件工程堅(jiān)持進(jìn)行階段評(píng)審統(tǒng)計(jì)結(jié)果顯示,大約63的錯(cuò)誤是在編碼之前造成的,錯(cuò)誤發(fā)現(xiàn)的越晚,改正它要付出的代價(jià)就越大。因此,軟件的質(zhì)量保證工作不能等到編碼結(jié)束后再進(jìn)行,應(yīng)堅(jiān)持進(jìn)行嚴(yán)格的階段評(píng)審,以便盡早發(fā)現(xiàn)錯(cuò)

5、誤。實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中麻煩的事情之一就是改動(dòng)需求,因?yàn)楦淖円豁?xiàng)需求需要付出較高的代價(jià)。但是實(shí)踐告訴我們:需求的改動(dòng)往往是不可避免的。由于各種客觀的需要,不能禁止用戶提出改變需求的要求,而只能依靠科學(xué)的產(chǎn)品控制技術(shù)來適應(yīng)這種要求。91、軟件工程采納現(xiàn)代程序設(shè)計(jì)技術(shù)從提出軟件工程的概念開始,人們主要的精力都用于研究各種新的程序設(shè)計(jì)技術(shù)。從20世紀(jì)60年代的結(jié)構(gòu)化軟件開發(fā)技術(shù),以及隨后發(fā)展的結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)技術(shù),已成為大多數(shù)人認(rèn)為的先進(jìn)程序設(shè)計(jì)技術(shù)。再加上后來又提出的面向?qū)ο蠹夹g(shù),從第一、第二代語言到第四代語言等等??傊捎孟冗M(jìn)的技術(shù)即可以提高軟件開發(fā)的效率,又可以減少軟件維護(hù)

6、的成本。101、軟件工程結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品不同于一般的物理產(chǎn)品,軟件是一種看不見、摸不著的邏輯產(chǎn)品。軟件開發(fā)小組的工作進(jìn)展情況可見性差,難于評(píng)價(jià)和管理。為了更好地進(jìn)行管理,應(yīng)根據(jù)軟件開發(fā)的總目標(biāo)及完成期限,盡量明確地規(guī)定開發(fā)小組的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使所得到的標(biāo)準(zhǔn)能清楚地審查。111、軟件工程開發(fā)小組的人員應(yīng)少而精開發(fā)人員的素質(zhì)和數(shù)量是影響軟件質(zhì)量和開發(fā)效率的重要因素,應(yīng)該少而精。這一條基于兩點(diǎn)原因:高素質(zhì)開發(fā)人員的效率比低素質(zhì)開發(fā)人員的效率要高幾倍到幾十倍;另一方面,開發(fā)工作中犯的錯(cuò)誤也要少的多。當(dāng)開發(fā)小組為N人時(shí),可能的通訊信道為N(N-1)/2,可見隨著人數(shù)N增大,通訊開銷將急劇

7、增大。121、軟件工程承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性上述六條原理只是對(duì)現(xiàn)有經(jīng)驗(yàn)的總結(jié)和歸納,并不能保證趕上技術(shù)不斷前進(jìn)發(fā)展的步伐。而根據(jù)第七條原理,不僅要積極采納新的軟件開發(fā)技術(shù),還要注意不斷總結(jié)經(jīng)驗(yàn),收集進(jìn)度和消耗等數(shù)據(jù),進(jìn)行出錯(cuò)類型和問題報(bào)告統(tǒng)計(jì)。這些數(shù)據(jù)既可以用來評(píng)估軟件技術(shù)的效果,也可以用來指明必須著重注意的問題和應(yīng)該優(yōu)先進(jìn)行研究的工具和技術(shù)。131、軟件工程3.軟件工程的目標(biāo)軟件工程是一門工程性學(xué)科,目的是成功地建造一個(gè)大型軟件系統(tǒng)。所謂成功,主要達(dá)到以下幾個(gè)目標(biāo):付出較低的開發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護(hù)用費(fèi);能按時(shí)完成開發(fā)任務(wù)

8、,及時(shí)交付使用;以及開發(fā)的軟件可靠性高等等。4.軟件工程的主要內(nèi)容軟件工程研究的主要內(nèi)容是指軟件開發(fā)技術(shù)和軟件開發(fā)管理兩個(gè)方面。在軟件開發(fā)技術(shù)中,它主要研究軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。在軟件開發(fā)管理中,它主要研究軟件管理學(xué)、軟件經(jīng)濟(jì)學(xué)和軟件心理學(xué)等。141、軟件工程152、軟件工程過程軟件工程過程是開發(fā)或維護(hù)軟件及其相關(guān)產(chǎn)品的一系列活動(dòng)。軟件工程過程規(guī)定了獲取、供應(yīng)、開發(fā)、操作和維護(hù)軟件時(shí),要實(shí)施的過程、活動(dòng)和任務(wù)。其目的是為各種人員提供一個(gè)公共的框架,以便使用相同的語言進(jìn)行交流。軟件工程過程一般包括開發(fā)過程、管理過程、供應(yīng)過程、獲取過程、操作過程、維護(hù)過程和支持過程等七個(gè)

9、方面。1.開發(fā)過程開發(fā)過程就是開發(fā)者和機(jī)構(gòu)為了定義和開發(fā)軟件或服務(wù)所需的活動(dòng)。此過程包括需求、分析、設(shè)計(jì)、編碼、集成、測試、軟件安裝和驗(yàn)收等活動(dòng)。162、軟件工程過程2.管理過程管理過程是指軟件工程過程中各項(xiàng)管理的活動(dòng),包括項(xiàng)目開始和范圍定義;項(xiàng)目管理計(jì)劃;實(shí)施和控制,評(píng)審和評(píng)價(jià);項(xiàng)目完成。3.供應(yīng)過程供應(yīng)過程是供應(yīng)方按照合同向需求方提供合同中的系統(tǒng)、軟件產(chǎn)品或服務(wù)所需的活動(dòng)。4.獲取過程根據(jù)需要,獲取過程是需求方按合同要求獲取一個(gè)系統(tǒng)、軟件產(chǎn)品或服務(wù)的活動(dòng)。172、軟件工程過程5.操作過程操作過程是操作者和機(jī)構(gòu)為了在規(guī)定的運(yùn)行環(huán)境中為其用戶運(yùn)行一個(gè)計(jì)算機(jī)系統(tǒng)所需要的活動(dòng)。6.維護(hù)過程維護(hù)過程

10、是維護(hù)者和機(jī)構(gòu)為了管理軟件的修改,使它出于良好運(yùn)行狀態(tài)需要的活動(dòng)。7.支持過程支持過程對(duì)項(xiàng)目的生存周期過程給予支持。它有助于項(xiàng)目的成功并能提高項(xiàng)目的質(zhì)量。這個(gè)過程沒有規(guī)定一個(gè)特定的生存周期模型或軟件開發(fā)方法,各軟件開發(fā)機(jī)構(gòu)可為其開發(fā)項(xiàng)目選擇一種生存周期模型,并將軟件工程過程所含的過程、活動(dòng)與任務(wù)映射到該模型中。182、軟件工程過程軟件工程過程是一個(gè)軟件開發(fā)組織針對(duì)某一類軟件產(chǎn)品為自己規(guī)定的工作步驟,它應(yīng)當(dāng)是科學(xué)的、合理的,否則必將影響到軟件產(chǎn)品的質(zhì)量。一個(gè)良好的軟件工程過程應(yīng)當(dāng)具備如下特點(diǎn):易理解性;可見性,是指每個(gè)過程活動(dòng)都以得到明確的結(jié)果而告終,保證過程的進(jìn)展對(duì)外可見;可支持性,是指容易得

11、到CASE工具的支持;可接受性,是指比較容易被軟件工程師接受和適用;可靠性,是指不會(huì)出現(xiàn)過程錯(cuò)誤,或者出現(xiàn)的過程錯(cuò)誤能夠在產(chǎn)品出錯(cuò)之前被發(fā)現(xiàn);健壯性,是指不受意外發(fā)生問題的干擾;可維護(hù)性,是指過程可以根據(jù)開發(fā)組織需求的改變而改進(jìn);高效率性,是指從給出軟件規(guī)格說明開始,就能夠較快地完成開發(fā)和改進(jìn)。193、軟件工程的生存周期如同任何事物一樣,軟件也有一個(gè)孕育、誕生、成長、成熟和衰老的生存過程,因此稱其為軟件工程的生存周期。軟件工程的方法、工具和管理都是以軟件工程的生存周期為基礎(chǔ)的。軟件工程的生存周期的基本思想是:任何一個(gè)軟件都是從它的提出開始到最終被淘汰為止,有一個(gè)存在期。其主要包括以下六個(gè)過程:

12、1.計(jì)劃計(jì)劃主要包括確定要開發(fā)軟件系統(tǒng)的總目標(biāo),給出它的功能、性能、可靠性以及接口等方面的要求,這可由系統(tǒng)分析員通過對(duì)用戶和使用部門負(fù)責(zé)人的訪問和調(diào)查,討論來完成;分析員和用戶合作,研究完成該項(xiàng)軟件任務(wù)的可行性,探究問題的可能方案,并對(duì)可利用的資源、成本、可取得的效益、開發(fā)的進(jìn)度做出估計(jì),制定出完成開發(fā)任務(wù)的實(shí)施計(jì)劃,連同可行性研究報(bào)告,提交管理部門審查。203、軟件工程的生存周期2.分析和定義分析和定義指待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)的定義。軟件人員和用戶共同討論哪些需求是可以滿足的,并對(duì)其加以確切地描述。然后編寫軟件需求說明書或系統(tǒng)功能說明書以及初步的系統(tǒng)用戶手冊(cè),提交管理機(jī)構(gòu)評(píng)審

13、。3.軟件設(shè)計(jì)軟件設(shè)計(jì)的根本任務(wù)是將分析時(shí)期得出的邏輯模型設(shè)計(jì)成具體計(jì)算機(jī)軟件方案。具體來說,主要包括設(shè)計(jì)軟件的總體結(jié)構(gòu)和設(shè)計(jì)軟件具體模塊的實(shí)現(xiàn)算法。軟件設(shè)計(jì)結(jié)束之前,也要進(jìn)行有關(guān)評(píng)審,評(píng)審?fù)ㄟ^后才能進(jìn)入編程時(shí)期。軟件設(shè)計(jì)時(shí)期也可以根據(jù)具體軟件的規(guī)模、類型等決定是否細(xì)分成概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。213、軟件工程的生存周期4.程序設(shè)計(jì)這個(gè)階段主要是把每個(gè)模塊的控制結(jié)構(gòu)轉(zhuǎn)換成計(jì)算機(jī)可接收的程序代碼,即寫成以某特定程序設(shè)計(jì)語言表示的“源程序清單”。當(dāng)然,寫出的程序應(yīng)是結(jié)構(gòu)好,清晰易讀,并且與設(shè)計(jì)相一致。5.軟件測試軟件測試是保證軟件質(zhì)量的重要手段,其主要方式是在設(shè)計(jì)測試用例的基礎(chǔ)上檢驗(yàn)軟件的各個(gè)

14、組成部分。測試分為模塊測試、組裝測試和確認(rèn)測試。模塊測試是查找各模塊在功能結(jié)構(gòu)上存在的問題。組裝測試是將各模塊按一定順序組裝起來進(jìn)行的測試,主要是查找各模塊之間接口上存在的問題。確認(rèn)測試是按軟件需求說明書上的功能逐項(xiàng)進(jìn)行的,發(fā)現(xiàn)不能滿足用戶需求的問題,決定開發(fā)的軟件是否合格、能否交付用戶使用等。223、軟件工程的生存周期6.運(yùn)行與維護(hù)已交付的軟件投入正式使用,便進(jìn)入運(yùn)行階段。這一階段可能持續(xù)若干年甚至幾十年。軟件在運(yùn)行中可能由于多方面的原因,需要對(duì)它進(jìn)行修改。其原因可能有:運(yùn)行中發(fā)現(xiàn)了軟件中的錯(cuò)誤需要修正;為了適應(yīng)變化了的軟件工作環(huán)境,需做適當(dāng)變更;為了增強(qiáng)軟件的功能需做變更等。23第二節(jié) 軟

15、件工程開發(fā)模型1、瀑布模型2、原型模型3、螺旋模型4、噴泉模型241、瀑布模型瀑布模型由W.Royce于1970年首先提出。根據(jù)軟件工程生存周期各個(gè)階段的任務(wù),瀑布模型從可行性研究開始,逐步進(jìn)行階段性變換,直至通過確認(rèn)測試并得到用戶確認(rèn)的軟件產(chǎn)品為止。瀑布模型上一階段的變換結(jié)果是下一階段變換的輸入,相鄰兩個(gè)階段具有因果關(guān)系,緊密聯(lián)系。一個(gè)階段的失誤將蔓延到以后的各個(gè)階段。為了保障軟件開發(fā)的正確性,每一階段任務(wù)完成后,都必須對(duì)它的階段性產(chǎn)品進(jìn)行評(píng)審,確認(rèn)之后再轉(zhuǎn)入下一階段的工作。評(píng)審過程發(fā)現(xiàn)錯(cuò)誤和疏漏后,應(yīng)該及時(shí)反饋到前面的有關(guān)階段修正錯(cuò)誤或彌補(bǔ)疏漏,然后再重復(fù)前面的工作,直至某一階段通過評(píng)審后

16、再進(jìn)入下一階段。瀑布模型如圖所示。251、瀑布模型261、瀑布模型瀑布模型有許多優(yōu)點(diǎn),如可強(qiáng)迫開發(fā)人員采用規(guī)范的方法;嚴(yán)格規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證等。但瀑布模型也存在缺點(diǎn),其主要表現(xiàn)在:在軟件開發(fā)的初始階段指明軟件系統(tǒng)的全部需求是困難的,有時(shí)甚至是不現(xiàn)實(shí)的。而瀑布模型在需求分析階段要求客戶和系統(tǒng)分析員必須做到這一點(diǎn)才能開展后續(xù)階段的工作。確定需求后,用戶和軟件項(xiàng)目負(fù)責(zé)人要等相當(dāng)長的時(shí)間才能得到一份軟件的最初版本。如果用戶對(duì)這個(gè)軟件提出比較大的修改意見,那么整個(gè)軟件項(xiàng)目將會(huì)蒙受巨大的人力、財(cái)力和時(shí)間方面的損失。272、原型模型原型模

17、型又稱演化模型,主要是針對(duì)事先不能完整定義需求的軟件項(xiàng)目開發(fā)而言的。許多軟件開發(fā)項(xiàng)目由于人們對(duì)軟件需求的認(rèn)識(shí)模糊,很難一次開發(fā)成功,返工再開發(fā)難以避免。因此,人們對(duì)需開發(fā)的軟件給出基本需求,作第一次試驗(yàn)開發(fā),其目標(biāo)僅在于探索可行性和弄清需求,取得有效的反饋信息,以支持軟件的最終設(shè)計(jì)和實(shí)現(xiàn)。通常我們把第一次實(shí)驗(yàn)性開發(fā)出的軟件稱為原型(prototype)。這種開發(fā)模型可以減少由于需求不明給開發(fā)工作帶來的風(fēng)險(xiǎn),有較好的效果。相對(duì)瀑布模型來說,原型模型更符合人類認(rèn)識(shí)真理的過程和思維,是目前較流行的一種實(shí)用的軟件開發(fā)方法。原型模型如圖所示。 282、原型模型292、原型模型原型化模型有丟棄型、樣品型和

18、漸增式演化型三種形式。丟棄型是指原型開發(fā)后,已獲得了更為清晰的需求反饋信息,原型無需保留而丟棄,開發(fā)的原型僅以演示為目的,這往往用在軟件的用戶界面的開發(fā)上。樣品型是指原型規(guī)模與最終產(chǎn)品相似,只是原型僅供研究用。漸增式演化型是指原型作為最終產(chǎn)品的一部分,它可以滿足用戶的部分需求,經(jīng)用戶試用后提出精華系統(tǒng)、增強(qiáng)系統(tǒng)能力的需求,開發(fā)人員根據(jù)反饋信息,實(shí)施開發(fā)的迭代過程。如果在一次迭代過程中,有些需求還不能滿足用戶的需求,可以在下一迭代過程中予以修正,整個(gè)實(shí)現(xiàn)后軟件才可最終交付使用。303、螺旋模型螺旋模型是瀑布模型與原型模型相結(jié)合,并增加兩者所忽略的風(fēng)險(xiǎn)分析而產(chǎn)生的一種模型,該模型通常用來指導(dǎo)大型軟

19、件項(xiàng)目的開發(fā),它將開發(fā)劃分為制定計(jì)劃、風(fēng)險(xiǎn)計(jì)劃、實(shí)施開發(fā)和客戶評(píng)估四類活動(dòng)。沿著螺旋線每轉(zhuǎn)一圈,表示開發(fā)出一個(gè)更完善的新的軟件版本。如果開發(fā)風(fēng)險(xiǎn)過大,開發(fā)機(jī)構(gòu)和客戶無法接受,項(xiàng)目有可能就此中止;多數(shù)情況下,會(huì)沿著螺旋線繼續(xù)下去,自內(nèi)向外逐步延伸,最終得到滿意的軟件產(chǎn)品。該模型是由TRW公司的B.Boehm于1988年提出的。下圖顯示了螺旋模型的原理,沿著螺旋線旋轉(zhuǎn),在笛卡兒坐標(biāo)的四個(gè)像限上分別表達(dá)了四類活動(dòng)。313、螺旋模型323、螺旋模型制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件;風(fēng)險(xiǎn)分析:分析所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn);實(shí)施開發(fā):實(shí)施軟件開發(fā);客戶評(píng)估:評(píng)價(jià)軟件功能

20、和性能,提出修正建議。螺旋模型有許多優(yōu)點(diǎn),主要表現(xiàn)在:對(duì)可選方案和約束的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo),減少了過多測試或測試不足所帶來的風(fēng)險(xiǎn)。但是要求許多客戶接受和相信并不容易,使用該模型需要具有相當(dāng)豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專門知識(shí),如果項(xiàng)目風(fēng)險(xiǎn)較大,又未必能及時(shí)發(fā)現(xiàn),勢必造成重點(diǎn)損失。目前國內(nèi)許多軟件公司還未能及時(shí)掌握和運(yùn)用這種模型,有待進(jìn)一步積累經(jīng)驗(yàn)。334、噴泉模型噴泉模型對(duì)軟件復(fù)用和生存周期中多項(xiàng)開發(fā)活動(dòng)的集成提供了支持,以面向?qū)ο蟮能浖_發(fā)方法為基礎(chǔ),它適合面向?qū)ο蟮拈_發(fā)方法。它克服了瀑布模型不支持軟件重用和多項(xiàng)開發(fā)活動(dòng)集成的局限性。噴泉模型使開發(fā)

21、過程具有迭代性和無間隙性。系統(tǒng)某個(gè)部分常常重復(fù)工作多次,相關(guān)功能在每次迭代中隨之加入演化的系統(tǒng)。無間隙是指在分析、設(shè)計(jì)和實(shí)現(xiàn)等開發(fā)活動(dòng)之間不存在明顯的邊界。噴泉模型參見下圖。344、噴泉模型35第三節(jié) 軟件開發(fā)工程過程1、需求分析2、概要設(shè)計(jì)3、詳細(xì)設(shè)計(jì)4、實(shí)現(xiàn)5、軟件測試361、需求分析軟件需求分析是軟件開發(fā)中的第一步。只有通過需求分析才能把軟件功能和性能的總體概念描述為具體的軟件需求規(guī)格說明,從而奠定軟件開發(fā)的基礎(chǔ)。軟件需求分析工作是一個(gè)不斷認(rèn)識(shí)和逐步細(xì)化的過程。該過程將軟件調(diào)研階段的需求資料進(jìn)行分析和設(shè)計(jì),使軟件范圍逐步細(xì)化到詳細(xì)定義的程度,并分析出各種不同的軟件元素,然后為這些元素找到

22、可行的解決方法。需求分析可分為:商業(yè)建模、問題獲取、分析、規(guī)格說明和驗(yàn)證5個(gè)階段。這些子項(xiàng)包括軟件類產(chǎn)品中需求收集、評(píng)價(jià)、編寫文檔等所有活動(dòng)。371、需求分析382、概要設(shè)計(jì)在概要設(shè)計(jì)階段,開發(fā)人員要將確定的各項(xiàng)功能需求轉(zhuǎn)換成需要的體系結(jié)構(gòu),在該體系結(jié)構(gòu)中,每個(gè)成分都是意義明確的模塊,即每個(gè)模塊都和某些功能需求相對(duì)應(yīng)。因此,概要設(shè)計(jì)就是設(shè)計(jì)軟件的結(jié)構(gòu),該結(jié)構(gòu)由哪些模塊組成,這些模塊的層次結(jié)構(gòu)是怎樣的,這些模塊的調(diào)用關(guān)系是怎樣的,每個(gè)模塊的功能是什么。同時(shí)還要設(shè)計(jì)該項(xiàng)目的應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu),即應(yīng)用系統(tǒng)要存儲(chǔ)什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系等。392、概要設(shè)計(jì)通

23、常,在軟件的概要設(shè)計(jì)中,系統(tǒng)分析員可根據(jù)軟件需求規(guī)格說明書,采用自頂而下、逐步求精、抽象、模塊化、局部化、信息隱藏的途徑來實(shí)現(xiàn)。軟件系統(tǒng)的設(shè)計(jì)采用層次結(jié)構(gòu)并用結(jié)構(gòu)圖表示。在此過程中系統(tǒng)分析員可以使用Rationa Rose,WitClass,VisualModel等工具解決此階段的問題。概要設(shè)計(jì)還應(yīng)提供概要設(shè)計(jì)說明書、數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)說明書、組裝測試計(jì)劃等文件。403、詳細(xì)設(shè)計(jì)概要設(shè)計(jì)確定了軟件系統(tǒng)的總體結(jié)構(gòu),詳細(xì)設(shè)計(jì)則對(duì)概要設(shè)計(jì)結(jié)果進(jìn)一步細(xì)化,給出目標(biāo)系統(tǒng)的精確描述,以便在編碼階段直接翻譯成計(jì)算機(jī)的程序代碼。詳細(xì)設(shè)計(jì)的任務(wù)是通過對(duì)概要設(shè)計(jì)產(chǎn)生的功能逐步細(xì)化,形成若干個(gè)可編程的程序模塊,通

24、過過程設(shè)計(jì)語言PDL設(shè)計(jì)程序模塊的內(nèi)部細(xì)節(jié),包括算法、數(shù)據(jù)結(jié)構(gòu)和各程序模塊之間的詳細(xì)接口信息,為編寫源代碼提供必要的說明,建立模塊開發(fā)卷宗,擬定模塊測試方案。413、詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)按照時(shí)間進(jìn)程應(yīng)該分為兩個(gè)階段:模塊功能階段和程序流程編寫說明。在模塊功能階段主要工作內(nèi)容為:模塊需求、功能細(xì)化、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和界面設(shè)計(jì),主要是說明功能實(shí)現(xiàn)和數(shù)據(jù)操作的目的,而程序流程編寫說明的主要工作內(nèi)容包括:程序流程、關(guān)鍵技術(shù)等,主要目的是為編寫程序提供方便。詳細(xì)設(shè)計(jì)需根據(jù)軟件需求規(guī)格說明和概要設(shè)計(jì)的結(jié)果進(jìn)行,可以選用的方法和工具是比較多的,如結(jié)構(gòu)化的設(shè)計(jì)方法、面向?qū)ο蟮脑O(shè)計(jì)等方法和Rstion Rose、

25、WitClass、VisualModel及Microsoft Visio等工具。軟件開發(fā)人員可以根據(jù)實(shí)際情況選用適當(dāng)?shù)姆椒ê凸ぞ?。詳?xì)設(shè)計(jì)應(yīng)該遵循的原則是:設(shè)計(jì)應(yīng)與軟件需求保持一致,設(shè)計(jì)的軟件結(jié)構(gòu)應(yīng)支持模塊化、信息隱藏等。詳細(xì)設(shè)計(jì)應(yīng)該提供詳細(xì)設(shè)計(jì)規(guī)格說明書和單元測試計(jì)劃。424、實(shí)現(xiàn)實(shí)現(xiàn)的主要任務(wù)是為每個(gè)模塊編寫程序,它將詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)換成某種程序設(shè)計(jì)語言書寫的源程序,并對(duì)這些程序進(jìn)行調(diào)試和程序單元測試。在編寫程序代碼時(shí),需注意兩點(diǎn):第一,在開發(fā)一個(gè)軟件系統(tǒng)時(shí),軟件人員應(yīng)該克制急于去編程的愿望,必須先經(jīng)過需求分析確定擁護(hù)要求,再經(jīng)過軟件設(shè)計(jì)完成繪制藍(lán)圖,然后才能進(jìn)行程序編寫。第二,編寫程序必

26、須講究規(guī)范和風(fēng)格,由于讀程序仍然是改正錯(cuò)誤主要手段,風(fēng)格好的程序必然易懂、易改、易理解。434、實(shí)現(xiàn)程序員以詳細(xì)設(shè)計(jì)規(guī)格說明書為依據(jù),基于某種程序設(shè)計(jì)語言進(jìn)行編碼??梢允褂肰isual Basic、Visual C、Visual Java等集成開發(fā)環(huán)境進(jìn)行開發(fā)。值得指出的是,系統(tǒng)分析方法、系統(tǒng)設(shè)計(jì)方法、編程方法及選用的程序設(shè)計(jì)語言應(yīng)盡可能匹配。如采用結(jié)構(gòu)化的分析方法就應(yīng)該采用結(jié)構(gòu)化的編程技術(shù),選用支持結(jié)構(gòu)化編程的Pascal語言、C語言。若采用面向?qū)ο蟮姆治龇椒?、面向?qū)ο蟮脑O(shè)計(jì)方法就應(yīng)該選用面向?qū)ο蟮木幊碳夹g(shù)和支持面向?qū)ο蟮木幊陶Z言,如C、Java等。 444、實(shí)現(xiàn)為了保證模塊測試的質(zhì)量,測試

27、之前應(yīng)制定測試方案并產(chǎn)生相應(yīng)的測試數(shù)據(jù)。不僅要對(duì)合法數(shù)據(jù)進(jìn)行測試,而且還要對(duì)非法輸入數(shù)據(jù)進(jìn)行測試,既要對(duì)正常處理路徑進(jìn)行測試,也要對(duì)異?;虺鲥e(cuò)處理路徑進(jìn)行測試。程序模塊測試方案、用例、預(yù)期的測試結(jié)果是軟件文檔的重要組成部分,必須及時(shí)整理并存檔。實(shí)現(xiàn)的階段性產(chǎn)品是軟件系統(tǒng)的源程序代碼。455、軟件測試在軟件開發(fā)過程中,特別是在開發(fā)大型軟件系統(tǒng)的過程中,面對(duì)的問題是極其復(fù)雜。因此,在軟件生命周期的每個(gè)階段就不可避免地會(huì)產(chǎn)生差錯(cuò)。但是,經(jīng)驗(yàn)表明審查并不能發(fā)現(xiàn)所有差錯(cuò),此外在編碼過程中還不可避免地會(huì)引入新的錯(cuò)誤。如果在軟件運(yùn)行之前,沒有發(fā)現(xiàn)并糾正軟件中的大部分差錯(cuò),則這些差錯(cuò)遲早會(huì)在生產(chǎn)過程中暴露出來,那時(shí)不僅改正這些錯(cuò)誤的代價(jià)更高,而且往往會(huì)造成很惡劣的后果。軟件測試的目的就是要在軟件投入生產(chǎn)運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。大量

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論