deng-第一章軟件工程概述_第1頁
deng-第一章軟件工程概述_第2頁
deng-第一章軟件工程概述_第3頁
deng-第一章軟件工程概述_第4頁
deng-第一章軟件工程概述_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程導(dǎo)論

鄧娜計(jì)算機(jī)學(xué)院

1/70課程介紹及要求用工程化的方法來開發(fā)軟件2/84教學(xué)目標(biāo)為什么要學(xué)習(xí)這門課程有助于正確理解和認(rèn)識(shí)“軟件”的概念及其特點(diǎn)理解軟件開發(fā)面臨的問題和挑戰(zhàn)掌握軟件工程的原則、方法和思想來系統(tǒng)地開發(fā)軟件,尤其是復(fù)雜、龐大的軟件的開發(fā)了解和接觸軟件開發(fā)所需的各種技術(shù)手段理解、掌握和運(yùn)用3/84理解什么是軟件工程為什么需要軟件工程(產(chǎn)生背景)軟件工程需要解決那些問題軟件工程涉及那些方面內(nèi)容4/84掌握軟件工程概念技術(shù)過程手段工具5/84運(yùn)用運(yùn)用工程化思想進(jìn)行軟件開發(fā)需求分析軟件設(shè)計(jì)程序設(shè)計(jì)軟件維護(hù)6/84先導(dǎo)要求程序設(shè)計(jì)語言最好有一定的軟件開發(fā)經(jīng)驗(yàn)7/84學(xué)習(xí)要求聽理解知識(shí)點(diǎn)和思想無需死記硬背做實(shí)踐體會(huì)軟件工程的原則、方法和技術(shù),在實(shí)踐中提高培養(yǎng)抽象思維能力培養(yǎng)獨(dú)立解決問題的能力培養(yǎng)合作精神想閱讀相關(guān)資料8/84考核方式考試(60%)課程設(shè)計(jì)(30%)考勤(10%)9/84課程設(shè)計(jì)(1/2)內(nèi)容選擇一個(gè)項(xiàng)目開發(fā)課題,用軟件工程的思想知道其開發(fā)過程。完成需求分析,詳細(xì)設(shè)計(jì),測試,項(xiàng)目匯報(bào)。分組以小組為單位,6—8人一組為宜時(shí)間平時(shí)可以分組著手準(zhǔn)備和進(jìn)行,期末考試前要交,具體時(shí)間待定10/84課程實(shí)習(xí)要求(2/2)提交內(nèi)容課程設(shè)計(jì)紙質(zhì)文檔,裝入文件袋評價(jià)方法文檔:完整性、合理性、規(guī)范性11/84教材和課件教材薛繼偉高等學(xué)?!笆濉币?guī)劃教材?計(jì)算機(jī)軟件工程系列:軟件工程導(dǎo)論,第1版哈爾濱工業(yè)大學(xué)出版社課件下載公共郵箱(還未申請)12/84參考文獻(xiàn)軟件工程導(dǎo)論(第五版),張海藩,清華大學(xué)出版社軟件工程實(shí)踐導(dǎo)論--有關(guān)方法、設(shè)計(jì)、實(shí)現(xiàn)、管理之三十六計(jì),金尊和,清華大學(xué)出版社,2005.軟件開發(fā)的科學(xué)與藝術(shù),微軟亞洲研究院,電子工業(yè)出版社,2002

軟件工程-實(shí)踐者的研究方法,RS.Pressman,機(jī)械工業(yè)出版社現(xiàn)代軟件工程,周之英編著,科學(xué)出版社13/84參考書籍14/84第1章軟件工程概述軟件工程產(chǎn)生的背景(軟件危機(jī))軟件工程定義軟件工程方法學(xué)軟件過程模型軟件工程知識(shí)體系軟件工程師道德規(guī)范小結(jié)15/841.1軟件工程產(chǎn)生的背景軟件

a.軟件的定義軟件(

Software)是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序(Program)

,數(shù)據(jù)(Data)及其相關(guān)文檔(Document)的完整集合。Software=Program+Data+Document程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔是與程序開發(fā),維護(hù)和使用有關(guān)的圖文材料16/84非常復(fù)雜邏輯復(fù)雜遠(yuǎn)遠(yuǎn)高于硬件的邏輯復(fù)雜度開發(fā)復(fù)雜成本難以估算進(jìn)度難以控制人員素質(zhì)要求質(zhì)量得不到保證1.1軟件工程產(chǎn)生的背景

b、軟件的特征17/84成本高1.1軟件工程產(chǎn)生的背景

b、軟件的特征18/84風(fēng)險(xiǎn)大1995年美國Standish咨詢集團(tuán)的統(tǒng)計(jì)分析(至90年代初的軟件項(xiàng)目執(zhí)行情況)成功:16.2%失敗:31%受到挑戰(zhàn):53.8%近幾年來的統(tǒng)計(jì)數(shù)據(jù)成功:26%失?。?8%受到挑戰(zhàn):46%1.1軟件工程產(chǎn)生的背景

b、軟件的特征19/84維護(hù)困難維護(hù)形式多樣化改正性:修改故障完善性:增加功能適應(yīng)性:移植維護(hù)成本越來越高55%到70%維護(hù)帶來的問題1.1軟件工程產(chǎn)生的背景

b、軟件的特征20/841.1軟件工程產(chǎn)生的背景c.軟件的發(fā)展早期面向批處理有限的分布自定義軟件第二階段多用戶實(shí)時(shí)數(shù)據(jù)庫軟件產(chǎn)品第三階段分布式系統(tǒng)嵌入“智能”低成本硬件消費(fèi)者的影響第四階段強(qiáng)大的桌面系統(tǒng)面向?qū)ο蠹夹g(shù)專家系統(tǒng)人工神經(jīng)網(wǎng)絡(luò)并行計(jì)算網(wǎng)路計(jì)算機(jī)1950196019701980199020001968年10月,北大西洋公約組織(NATO)的科學(xué)家在德國召開的學(xué)術(shù)會(huì)議上正式提出了軟件危機(jī)問題。21/84

軟件危機(jī)1963年美國飛往火星的火箭爆炸,造成1000萬美元的損失。原因是FORTRAN程序:

DO5Ⅰ=1,3

誤寫成:DO5Ⅰ=1.31967年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船在返航時(shí),由于軟件忽略一個(gè)小數(shù)點(diǎn),在進(jìn)入大氣層時(shí)因打不開降落傘而燒毀。22/84美國IBM公司在1963年至1966年開發(fā)的IBM360機(jī)的操作系統(tǒng)。5000人-年的工作量,1000人投入,近100萬行源程序。每次發(fā)行的新版本都是從前一版本中找1000個(gè)程序錯(cuò)誤,項(xiàng)目負(fù)責(zé)人F.D.Brook總結(jié)時(shí)說:“正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深。最后無法逃脫滅頂?shù)臑?zāi)難?!?/p>

軟件危機(jī)23/841.1軟件工程產(chǎn)生的背景2)軟件危機(jī)a、軟件危機(jī)的表現(xiàn)(1/3)

成本高IBM360OS,5000多人年,耗時(shí)4年(1963-1966),花費(fèi)2億多美元美國空軍:1955年軟件占總費(fèi)用(計(jì)算機(jī)系統(tǒng))的18%,70年60%,85年達(dá)到85%美國全球軍事指揮控制系統(tǒng),硬件1億美元,軟件高達(dá)7.2億美元計(jì)算機(jī)軟件和硬件費(fèi)用比24/84軟件質(zhì)量得不到保證軟件應(yīng)用面的擴(kuò)大:科學(xué)計(jì)算、軍事、航空航天、工業(yè)控制、企業(yè)管理、辦公、家庭軟件越來越多的應(yīng)用于安全攸關(guān)(safetycritical)的系統(tǒng),對軟件質(zhì)量提出更高的要求80年代歐洲亞麗安娜火箭的發(fā)射失敗,原因是軟件錯(cuò)誤美國阿托拉斯火箭的發(fā)射失敗,原因是軟件故障英國1986年開發(fā)的辦公室信息系統(tǒng)Folios經(jīng)4年,因性能達(dá)不到要求,1989年取消日本第5代機(jī)因?yàn)檐浖栴}在投入50億美元后于1993年下馬由于軟件質(zhì)量問題導(dǎo)致失敗的軟件項(xiàng)目非常多a、軟件危機(jī)的表現(xiàn)(2/3)25/84a、軟件危機(jī)的表現(xiàn)(3/3)進(jìn)度難以控制項(xiàng)目延期比比皆是由于進(jìn)度問題而取消的軟件項(xiàng)目較常見只有一小部分的項(xiàng)目能夠按期完成維護(hù)非常困難軟件維護(hù)的多樣性軟件維護(hù)的復(fù)雜性軟件維護(hù)的副作用26/84軟件危機(jī)主要有以下表現(xiàn):對軟件開發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確。開發(fā)成本超出預(yù)算,實(shí)際進(jìn)度比預(yù)定計(jì)劃一再拖延的現(xiàn)象并不罕見。用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。Bug一大堆,Patch一個(gè)接一個(gè)。軟件的可維護(hù)程度非常之低。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件的成本不斷提高。軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長。27/84b、產(chǎn)生軟件危機(jī)的原因與軟件本身的特點(diǎn)有關(guān)(難于維護(hù),邏輯復(fù)雜)與軟件開發(fā)與維護(hù)的方法不正確有關(guān):軟件≠程序急于求成=拔苗助長各自為陣無方法/學(xué)28/84引入同一變化付出的代價(jià)隨時(shí)間變化的趨勢29/84消除軟件危機(jī)的途徑對計(jì)算機(jī)軟件有一個(gè)正確的認(rèn)識(shí)

(軟件≠程序)必須充分認(rèn)識(shí)到軟件開發(fā)不是某種個(gè)體勞動(dòng)的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目。非個(gè)人英雄主義推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法。開發(fā)和使用更好的軟件工具。30/84開發(fā)一個(gè)具有一定規(guī)模和復(fù)雜性的軟件系統(tǒng)與編寫一個(gè)簡單的程序不一樣正如建設(shè)狗窩和高樓大廈大型、復(fù)雜軟件系統(tǒng)的開發(fā)是一項(xiàng)工程,必須按照工程化的方法組織軟件的生產(chǎn)和管理,必須經(jīng)過分析、設(shè)計(jì)、實(shí)現(xiàn)、測試、維護(hù)等一系列軟件過程和活動(dòng)C、軟件工程(學(xué))因危機(jī)而產(chǎn)生31/84軟件工程工程工程是對技術(shù)(或社會(huì))實(shí)體的分析、設(shè)計(jì)、建造、驗(yàn)證和管理?!こ探ㄖこ虣C(jī)械工程軟件工程傳統(tǒng)工程新興工程氣象工程生物工程32/84軟件工程----SoftwareEngineering于1968年NATO組織在德國召開的一次會(huì)議上提出是把軟件當(dāng)作一種工業(yè)產(chǎn)品,要求“采用工程化的原理與方法對軟件進(jìn)行計(jì)劃、開發(fā)和維護(hù)”。33/84圍棋與軟件工程的感想圍棋圍棋棋譜拿過來的時(shí)候,大師問“后面應(yīng)該走哪里?”十個(gè)初級愛好者選擇的落點(diǎn)散布在棋盤各處……

十個(gè)職業(yè)棋手說的落子點(diǎn)都差不多,甚至包括后面的幾步……

這就是高手和低手的差別……軟件工程當(dāng)一個(gè)小程序拿過來的時(shí)候,項(xiàng)目經(jīng)理讓大家編寫……

十個(gè)中國軟件工程師寫出來的程序各有“特色”、千差萬別,十個(gè)印度軟件工程師寫出來的程序差不多,以至于懷疑是“抄襲”。項(xiàng)目經(jīng)理也不清楚中國軟件業(yè)和印度軟件業(yè)的差距是多少年只是覺得差了好遠(yuǎn)好遠(yuǎn)……34/84d、軟件工程(學(xué)):克服軟件危機(jī)的努力

(1)從管理的角度

軟件開發(fā)過程的研究、文檔的標(biāo)準(zhǔn)化以及人們

的交流方式等(2)軟件開發(fā)方法的研究

結(jié)構(gòu)化軟件開發(fā)方法,面向?qū)ο蟮拈_發(fā)35/84提出有效的方法和工具支持軟件開發(fā)1968年提出軟件工程概念和思想20世紀(jì)70年代的結(jié)構(gòu)化軟件開發(fā)方法20世紀(jì)80年代的面向?qū)ο蟮能浖_發(fā)方法新的技術(shù):軟件重用、快速原型、需求工程典型技術(shù):COM,Java,C++,J2EE,.Net,….支撐工具和環(huán)境:Jbuilder,VisualStudio,WebLogic,…1、解決危機(jī)的技術(shù)途徑36/8420世紀(jì)80年代末,美國國防部DoD和工業(yè)界開始認(rèn)識(shí)到管理的重要性美國DoD的一項(xiàng)研究表明,70%的項(xiàng)目由于管理不善導(dǎo)致難以控制進(jìn)步、成本和質(zhì)量;進(jìn)一步的研究發(fā)現(xiàn):管理是影響軟件項(xiàng)目成功開發(fā)的全局性因素,而技術(shù)只影響局部如果軟件開發(fā)組織不能對軟件項(xiàng)目進(jìn)行有效管理,就不能充分發(fā)揮軟件開發(fā)方法和工具的潛力,也就不能高效率地開發(fā)出高質(zhì)量的軟件產(chǎn)品2、解決危機(jī)的管理途徑37/841.2軟件工程定義(1)Theestablishmentanduseofsoundengineeringprinciples(methods)inordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.(1968-FritzBauer)

軟件工程就是建立和使用一套合理的工程原理,從而經(jīng)濟(jì)地獲得可靠的、可以在實(shí)際機(jī)器上高效運(yùn)行的軟件。38/841.2軟件工程定義(2)Softwareengineering.(1)Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEE(TheInstituteforElectricalandElectronicengineers)Std610-1990.)

軟件工程是:(1)把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;(2)研究(1)中提到的途徑。39/841.2軟件工程定義(3)

Engineeringisthe

systematicapplicationofscientificknowledge

increatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.

Softwareengineeringisthat

formofengineering

thatappliestheprinciplesofcomputerscienceandmathematics

toachievingcost-effectivesolutionstosoftwareproblems.SEIsoftwareengineeringdefinitionfrom1990SEIReportonUndergraduateSoftwareEngineeringEducation(卡耐基梅隆大學(xué)在本科生軟件工程教育的報(bào)告):40/841.2軟件工程定義總之:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。41/84軟件工程是一門交叉學(xué)科軟件工程的主要研究內(nèi)容軟件開發(fā)技術(shù):軟件開發(fā)方法學(xué)軟件開發(fā)過程軟件工具和軟件工程環(huán)境軟件工程管理:軟件管理學(xué)軟件經(jīng)濟(jì)學(xué)軟件心理學(xué)42/84軟件工程與一般工程的差異軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品軟件的功能依賴于硬件和軟件的運(yùn)行環(huán)境以及人們對它的操作軟件設(shè)計(jì)的復(fù)雜性軟件特征:功能的多樣性實(shí)現(xiàn)的多樣性能見度低軟件結(jié)構(gòu)合理性差智力密集及知識(shí)產(chǎn)權(quán)保護(hù)43/84軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工程學(xué)科。通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范型(paradigm)。在軟件工程領(lǐng)域中,這兩個(gè)術(shù)語的含義基本相同。軟件工程方法學(xué)包含3個(gè)要素:方法、工具和過程。1.3軟件工程方法學(xué)44/841.3軟件工程方法學(xué)軟件工程:一種層次化技術(shù)質(zhì)量關(guān)注點(diǎn)過程方法工具

軟件工程層次圖軟件工程三個(gè)要素:工具、方法、過程基礎(chǔ)層,綜合方法及工具,定義方法使用的順序,所需要的管理為軟件開發(fā)提供“如何做”的技術(shù)為軟件開發(fā)提供自動(dòng)或半自動(dòng)的軟件支撐環(huán)境,建立計(jì)算機(jī)輔助軟件工程(CASE)的軟件開發(fā)支撐系統(tǒng)45/841.4軟件生命周期模型問題定義軟件定義可行性研究

需求分析

總體設(shè)計(jì)詳細(xì)設(shè)計(jì)軟件生命周期軟件開發(fā)編碼單元測試綜合測試運(yùn)行維護(hù)

持久滿足用戶需求46/841.4軟件過程模型軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。AprocessdefinesWhoisdoingWhat,When,andHow,inordertoreachacertaingoal.公共過程框架輔助活動(dòng)任務(wù)集合軟件過程47/841.4軟件過程模型

軟件生命周期的每一階段都有明確的任務(wù),把規(guī)模大、結(jié)構(gòu)復(fù)雜、管理復(fù)雜的軟件開發(fā)變得容易控制和管理。各個(gè)階段的活動(dòng)如何銜接,開發(fā)過程中采用什么樣的策略,應(yīng)遵守什么樣的規(guī)定和制約,將這些活動(dòng)框架(忽略不必要的細(xì)節(jié))用一種模型表示出來,稱為軟件過程模型(或軟件開發(fā)模型或軟件生命周期模型)。

也就是說,

軟件過程模型是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。48/841.4軟件過程模型(1)瀑布模型(WaterfallModel)

傳統(tǒng)瀑布模型瀑布模型也稱為線性順序模型,在20世紀(jì)80年代以前,瀑布模型一直是唯一被廣泛采用的生命周期模型49/841.4軟件過程模型傳統(tǒng)瀑布模型的特點(diǎn)提供了軟件過程模型的基本框架(模板)。強(qiáng)調(diào)了每一階段活動(dòng)的嚴(yán)格順序。質(zhì)量保證觀點(diǎn):以經(jīng)過評審確認(rèn)了的階段工作產(chǎn)品(文檔)驅(qū)動(dòng)下一階段的工作,便于管理。是一種整體開發(fā)模型,程序的物理實(shí)現(xiàn)集中在開發(fā)階段的后期,用戶在最后才能看到自己的產(chǎn)品。

傳統(tǒng)瀑布模型存在什么問題?50/841.階段間具有順序性和依賴性。2.推遲實(shí)現(xiàn)的觀點(diǎn)。3.傳統(tǒng)的瀑布模型過于理想化。事實(shí)上,人在工作過程中不可能不犯錯(cuò)誤。在設(shè)計(jì)階段可能發(fā)生規(guī)格說明文檔中的錯(cuò)誤。而設(shè)計(jì)上的缺陷或錯(cuò)誤可能在實(shí)現(xiàn)過程中顯現(xiàn)出來。在綜合測試階段將發(fā)現(xiàn)需求分析、設(shè)計(jì)或編碼階段的許多錯(cuò)誤傳統(tǒng)化(理想化)瀑布模型的缺點(diǎn)51/841.4軟件過程模型實(shí)際的瀑布模型52/841.4軟件過程模型瀑布模型適合于用戶需求明確、完整、無重大變化的軟件項(xiàng)目開發(fā)。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動(dòng)的模型??蓮?qiáng)迫開發(fā)人員采用規(guī)范的方法嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證“瀑布模型是由文檔驅(qū)動(dòng)的”這個(gè)事實(shí)也是它的一個(gè)主要缺點(diǎn)。實(shí)際項(xiàng)目很少按照該模型給出的順序進(jìn)行;用戶常常難以清楚地給出所有需求;用戶必須有耐心,等到系統(tǒng)開發(fā)完成。

瀑布模型的優(yōu)缺點(diǎn)53/841.4軟件過程模型(2)原型模型—快速原型模型(RapidPrototypeModel)在用戶不能給出完整、準(zhǔn)確的需求說明,或者開發(fā)者不能確定算法的有效性、操作系統(tǒng)的適應(yīng)性或人機(jī)交互的形式等許多情況下,可以根據(jù)用戶的一組基本需求,快速建造一個(gè)原型(可運(yùn)行的軟件),然后進(jìn)行評估,進(jìn)一步精化、調(diào)整原型,使其滿足用戶的要求,也使開發(fā)者對將要做的事情有更好的理解。建造/修改原型

聽取用戶意見用戶測試運(yùn)行原型原型實(shí)現(xiàn)范型54/841.4軟件過程模型快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需求驗(yàn)證維護(hù)過程開發(fā)過程55/841.4軟件過程模型原型模型存在的問題

⑴為了使原型盡快的工作,沒有考慮軟件的總體質(zhì)量和長期的可維護(hù)性。

⑵為了演示,可能采用不合適的操作系統(tǒng)、編程語言、效率低的算法,這些不理想的選擇成了系統(tǒng)的組成部分。

⑶開發(fā)過程不便于管理。有效的使用原型模式建造原型僅是為了定義需求,之后就被拋棄(或被部分拋棄),實(shí)際的軟件在充分考慮了質(zhì)量和可維護(hù)性之后才被開發(fā)。56/841.4軟件過程模型(3)增量模型(IncrementalModel)是一種漸進(jìn)地開發(fā)逐步完善的軟件版本的模型。需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對每個(gè)構(gòu)件完成詳細(xì)設(shè)計(jì)、編碼和集成,經(jīng)測試后交付給用戶57/841.4軟件過程模型分析分析分析分析設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)編碼編碼編碼編碼測試測試測試測試增量1增量2增量3增量4交付交付交付交付●●●●●

?

反復(fù)的應(yīng)用瀑布模型的基本成分和原型模型的迭代特征,每一個(gè)線型過程產(chǎn)生一個(gè)“增量”的發(fā)布或提交,該增量均是一個(gè)可運(yùn)行的產(chǎn)品。

?

早期的版本實(shí)現(xiàn)用戶的基本需求,并提供給用戶評估的平臺(tái)。增量模型58/841.4軟件過程模型在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并分批、逐步地向用戶提交產(chǎn)品。從第一個(gè)構(gòu)件交付之日起,用戶就能做一些有用的工作。整個(gè)軟件產(chǎn)品被分解成許多個(gè)增量構(gòu)件,開發(fā)人員可以一個(gè)構(gòu)件一個(gè)構(gòu)件地逐步開發(fā)。逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能給客戶組織帶來的沖擊。采用增量模型比采用瀑布模型和快速原型模型需要更精心的設(shè)計(jì),但在設(shè)計(jì)階段多付出的勞動(dòng)將在維護(hù)階段獲得回報(bào)。增量模型的優(yōu)點(diǎn)59/841.4軟件過程模型增量模型的困難在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。開發(fā)人員既要把軟件系統(tǒng)看作整體。又要看成可獨(dú)立的構(gòu)件,相互矛盾。多個(gè)構(gòu)件并行開發(fā),具有無法集成的風(fēng)險(xiǎn)。60/84增量模型適用的情況客戶能夠接受分階段交付工期緊且可分階段提交或者對目標(biāo)、環(huán)境不熟悉用戶可參與到整個(gè)軟件開發(fā)過程中軟件開發(fā)組織自己應(yīng)該擁有較好的類庫、構(gòu)件庫軟件企業(yè)開發(fā)大型項(xiàng)目時(shí),一般還是采用增量模型,因?yàn)榭梢愿鶕?jù)輕重緩急,逐個(gè)實(shí)現(xiàn)子系統(tǒng)61/84增量模型與瀑布模型、快速原型模型區(qū)別:瀑布模型、快速原型模型:一次性地把一個(gè)滿足所有需求的產(chǎn)品交付給用戶增量模型:分批交付VS62/841.4軟件過程模型(4)螺旋模型(SpiralModel)

軟件風(fēng)險(xiǎn)是任何軟件開發(fā)項(xiàng)目中都普遍存在的實(shí)際問題,項(xiàng)目越大,軟件越復(fù)雜,承擔(dān)該項(xiàng)目所冒的風(fēng)險(xiǎn)也越大。——產(chǎn)品交付給用戶后用戶可能不滿意;——到了預(yù)定的交付日期軟件可能還未開發(fā)出來;——實(shí)際的開發(fā)成本可能超過預(yù)算;——產(chǎn)品完成前一些關(guān)鍵的開發(fā)人員“跳槽”了;——產(chǎn)品投入市場之前競爭對手發(fā)布了一個(gè)功能相近、價(jià)格更低的軟件等。63/841.4軟件過程模型(4)螺旋模型(SpiralModel)

對于復(fù)雜的大型軟件,開發(fā)一個(gè)原型往往達(dá)不到要求。螺旋模型將瀑布模型和增量模型結(jié)合起來,加入了風(fēng)險(xiǎn)分析。在該模型中,軟件開發(fā)是一系列的增量發(fā)布,早期的迭代中,發(fā)布的增量可能是一個(gè)紙上的模型或原型,在以后的迭代中,逐步產(chǎn)生系統(tǒng)更加完善的版本。螺旋模型的基本思想是降低風(fēng)險(xiǎn)。64/841.4軟件過程模型快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需求驗(yàn)證風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析可看作在每個(gè)階段之前都增加了風(fēng)險(xiǎn)分析過程的快速原型模型。簡化的螺旋模型65/84

66/84每一次迭代都包含以下步驟:

1.決定目標(biāo)、替代方案和約束2.識(shí)別和解決項(xiàng)目的風(fēng)險(xiǎn)3.評估技術(shù)方案和替代解決方案4.開發(fā)本次迭代的交付物和驗(yàn)證迭代產(chǎn)出的正確性5.計(jì)劃下一次迭代6.提交下一次迭代的步驟和方案67/841.4軟件過程模型螺旋模型的優(yōu)點(diǎn)對可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo);減少了過多測試(浪費(fèi)資金)或測試不足(產(chǎn)品故障多)所帶來的風(fēng)險(xiǎn);更重要的是,在螺旋模型中維護(hù)只是模型的另一個(gè)周期,在維護(hù)和開發(fā)之間并沒有本質(zhì)區(qū)別68/84螺旋模型的缺點(diǎn)風(fēng)險(xiǎn)驅(qū)動(dòng),需要相當(dāng)豐富的風(fēng)險(xiǎn)評估經(jīng)驗(yàn)和專門知識(shí),否則風(fēng)險(xiǎn)更大要求用戶參與階段評估過多的迭代次數(shù)增加了開發(fā)成本,延遲了提交時(shí)間69/84螺旋模型適用的情況內(nèi)部開發(fā)的大規(guī)模軟件項(xiàng)目:方便中止但是如果風(fēng)險(xiǎn)分析費(fèi)用接近整個(gè)項(xiàng)目的預(yù)算,則風(fēng)險(xiǎn)分析是不可行的不確定因素很多,很多東西開始無法計(jì)劃的情況70/841.4軟件過程模型(5)噴泉模型(FountainModel)特點(diǎn):主要用于支持面向?qū)ο箝_發(fā)過程,體現(xiàn)了面向?qū)ο蠓椒ㄋ逃械牡蜔o間隙的特征71/84認(rèn)為軟件開發(fā)過程自下而上周期的各階段是相互迭代和無間隙的特性。軟件的某個(gè)部分常常被重復(fù)工作多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn)的軟件成分。無間隙指在各項(xiàng)活動(dòng)之間無明顯邊界,如分析和設(shè)計(jì)活動(dòng)之間沒有明顯的界限

72/84噴泉模型的特點(diǎn)規(guī)定了五個(gè)階段:分析、設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)和演化高層到底層無資源消耗資源消耗呈塔狀,在分析階段消耗最多資源各階段的重疊反映了軟件過程的并行性增量開發(fā),是迭代的逐步提煉的過程73/84四種模型的總結(jié):瀑布模型歷史悠久、廣為人知,它的優(yōu)勢在于它是規(guī)范的、文檔驅(qū)動(dòng)的方法;這種模型的問題是,最終開發(fā)出的軟件產(chǎn)品可能并不是用戶真正需要的??焖僭湍P驼菫榱丝朔俨寄P偷娜秉c(diǎn)而提出來的。它通過快速構(gòu)建起一個(gè)可在計(jì)算機(jī)上運(yùn)行的原型系統(tǒng),讓用戶試用原型并收集用戶反饋意見的辦法,獲取用戶的真實(shí)需求。增量模型具有可在軟件開發(fā)的早期階段使投資獲得明顯回報(bào)和較易維護(hù)的優(yōu)點(diǎn),但是,要求軟件具有開放的結(jié)構(gòu)是使用這種模型時(shí)固有的困難。風(fēng)險(xiǎn)驅(qū)動(dòng)的螺旋模型適用于內(nèi)部開發(fā)的大型軟件項(xiàng)目,但是,只有在開發(fā)人員具有風(fēng)險(xiǎn)分析和排除風(fēng)險(xiǎn)的經(jīng)驗(yàn)及專門知識(shí)時(shí),使用這種模型才會(huì)獲得成功。741.4軟件過程模型(6)可重用部件組裝模型(構(gòu)件集成模型)

(ComponentIntegrationModel)

構(gòu)件(components)也稱為組件,是一段實(shí)現(xiàn)一系列有確定接口的程序體,具有自己的功能和邏輯,能同其他構(gòu)件集成起來協(xié)調(diào)工作。該模型支持軟件重用(Reusability)

,對縮短軟件開發(fā)周期、降低項(xiàng)目成本有重要的現(xiàn)實(shí)意義。構(gòu)件集成模型如下圖所示:75/84

構(gòu)件集成模型軟件體系結(jié)構(gòu)被建立后,必須用構(gòu)件去充實(shí),這些構(gòu)件可從復(fù)用庫中獲得,或者根據(jù)專門需要而開發(fā)。76/84軟件工程知識(shí)體系指南(2004版)

GuidetotheSoftwareEngineeringBodyofKnowledge2004Version

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論