1.瀑布模型1.1 瀑布模型介紹1970年溫斯頓·羅伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開發(fā)模型。1.2 瀑布模型核心思想瀑布模型核心思想是按工序?qū)栴}化簡(jiǎn),將功能的實(shí)現(xiàn)與設(shè)計(jì)分開,便于分工協(xié)作,即采用結(jié)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開。將軟件生命周期劃分為制定計(jì)劃、需求分析、軟件設(shè)計(jì)、程序編寫、軟件測(cè)試和運(yùn)行維護(hù)等六個(gè)基本活動(dòng),并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級(jí)下落。1.3 瀑布模型有以下優(yōu)點(diǎn)(1)為項(xiàng)目提供了按階段劃分的檢查點(diǎn)。(2)當(dāng)前一階段完成后,您只需要去關(guān)注后續(xù)階段。 (3)可在迭代模型中應(yīng)用瀑布模型。 增量迭代應(yīng)用于瀑布模型。迭代1解決最大的問題。每次迭代產(chǎn)生一個(gè)可運(yùn)行的版本,同時(shí)增加更多的功能。每次迭代必須經(jīng)過質(zhì)量和集成測(cè)試。 1.4 瀑布模型有以下缺點(diǎn)(1)在項(xiàng)目各個(gè)階段之間極少有反饋。(2)只有在項(xiàng)目生命周期的后期才能看到結(jié)果。 (3)通過過多的強(qiáng)制完成日期和里程碑來跟蹤各個(gè)項(xiàng)目階段。 (4)瀑布模型的突出缺點(diǎn)是不適應(yīng)用戶需求的變化。 -------------------------------------------------------------------------------------- 2.迭代模型2.1 什么是迭代模型在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程:需求、分析設(shè)計(jì)、實(shí)施和測(cè)試工作流程。實(shí)質(zhì)上,它類似小型的瀑布式項(xiàng)目。RUP認(rèn)為,所有的階段都可以細(xì)分為迭代。每一次的迭代都會(huì)產(chǎn)生一個(gè)可以發(fā)布的產(chǎn)品,這個(gè)產(chǎn)品是最終產(chǎn)品的一個(gè)子集。2.2 迭代模型的使用條件(1)在項(xiàng)目開發(fā)早期需求可能有所變化。(2)分析設(shè)計(jì)人員對(duì)應(yīng)用領(lǐng)域很熟悉。 (3)高風(fēng)險(xiǎn)項(xiàng)目。 (4)用戶可不同程度地參與整個(gè)項(xiàng)目的開發(fā)過程。 (5)使用面向?qū)ο蟮恼Z言或統(tǒng)一建模語言(Unified Modeling Language,UML)。 (6)使用CASE(Computer Aided Software Engineering,計(jì)算機(jī)輔助軟件工程)工具,如Rose(Rose是非常受歡迎的物件軟體開發(fā)工具。)。 (7)具有高素質(zhì)的項(xiàng)目管理者和軟件研發(fā)團(tuán)隊(duì)。 2.3 迭代模型的優(yōu)點(diǎn)與傳統(tǒng)的瀑布模型相比較,迭代過程具有以下優(yōu)點(diǎn):(1)降低了在一個(gè)增量上的開支風(fēng)險(xiǎn)。如果開發(fā)人員重復(fù)某個(gè)迭代,那么損失只是這一個(gè)開發(fā)有誤的迭代的花費(fèi)。 (2)降低了產(chǎn)品無法按照既定進(jìn)度進(jìn)入市場(chǎng)的風(fēng)險(xiǎn)。通過在開發(fā)早期就確定風(fēng)險(xiǎn),可以盡早來解決而不至于在開發(fā)后期匆匆忙忙。 (3)加快了整個(gè)開發(fā)工作的進(jìn)度。因?yàn)殚_發(fā)人員清楚問題的焦點(diǎn)所在,他們的工作會(huì)更有效率。 (4)由于用戶的需求并不能在一開始就作出完全的界定,它們通常是在后續(xù)階段中不斷細(xì)化的。因此,迭代過程這種模式使適應(yīng)需求的變化會(huì)更容易些。 -------------------------------------------------------------------------------------- 3.敏捷開發(fā)模型3.1 什么是敏捷開發(fā)是一種從1990年代開始逐漸引起廣泛關(guān)注的一些新型軟件開發(fā)方法,是一種應(yīng)對(duì)快速變化的需求的一種軟件開發(fā)能力。相對(duì)于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對(duì)面的溝通(認(rèn)為比書面的文檔更有效)、頻繁交付新的軟件版本。能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重軟件開發(fā)中人的作用。敏捷建模(Agile Modeling,AM)的價(jià)值觀包括了XP的四個(gè)價(jià)值觀:溝通、簡(jiǎn)單、反饋、勇氣,此外,還擴(kuò)展了第五個(gè)價(jià)值觀:謙遜。3.2 敏捷開發(fā)特點(diǎn)(1)人和交互 重于過程和工具。(2)可以工作的軟件 重于求全而完備的文檔。 (3)客戶協(xié)作重于合同談判。 (4)隨時(shí)應(yīng)對(duì)變化重于循規(guī)蹈矩。 項(xiàng)目的敏捷開發(fā),敏捷開發(fā)小組主要的工作方式可以歸納為:作為一個(gè)整體工作; 按短迭代周期工作; 每次迭代交付一些成果:關(guān)注業(yè)務(wù)優(yōu)先級(jí); 檢查與調(diào)整。 最重要的因素恐怕是項(xiàng)目的規(guī)模。規(guī)模增長,面對(duì)面的溝通就愈加困難, 因此敏捷方法更適用于較小的隊(duì)伍,40、30、20、10人或者更少。 4.螺旋模型詳見 http://baike.baidu.com/view/551040.htm5.快速原型模型詳見 http://baike.baidu.com/view/1449532.htm6.幾種模型間的對(duì)比傳統(tǒng)的瀑布式開發(fā),也就是從需求到設(shè)計(jì),從設(shè)計(jì)到編碼,從編碼到測(cè)試,從測(cè)試到提交大概這樣的流程,要求每一個(gè)開發(fā)階段都要做到最好。特別是前期階段,設(shè)計(jì)的越完美,提交后的成本損失就越少。 迭代式開發(fā),不要求每一個(gè)階段的任務(wù)做的都是最完美的,而是明明知道還有很多不足的地方,卻偏偏不去完善它,而是把主要功能先搭建起來為目的,以最短的時(shí)間, 最少的損失先完成一個(gè)“不完美的成果物”直至提交。然后再通過客戶或用戶的反饋信息,在這個(gè)“不完美的成果物”上逐步進(jìn)行完善。 螺旋開發(fā),很大程度上是一種風(fēng)險(xiǎn)驅(qū)動(dòng)的方法體系,因?yàn)樵诿總€(gè)階段之前及經(jīng)常發(fā)生的循環(huán)之前,都必須首先進(jìn)行風(fēng)險(xiǎn)評(píng)估。 敏捷開發(fā),相比迭代式開發(fā)兩者都強(qiáng)調(diào)在較短的開發(fā)周期提交軟件,但是,敏捷開發(fā)的周期可能更短,并且更加強(qiáng)調(diào)隊(duì)伍中的高度協(xié)作。 敏捷方法有時(shí)候被誤認(rèn)為是無計(jì)劃性和紀(jì)律性的方法,實(shí)際上更確切的說法是敏捷方法強(qiáng)調(diào)適應(yīng)性而非預(yù)見性。 適應(yīng)性的方法集中在快速適應(yīng)現(xiàn)實(shí)的變化。當(dāng)項(xiàng)目的需求起了變化,團(tuán)隊(duì)?wèi)?yīng)該迅速適應(yīng)。這個(gè)團(tuán)隊(duì)可能很難確切描述未來將會(huì)如何變化。 參考文章: 1.瀑布模型百度百科參考 http://baike.baidu.com/view/551037.htm 2.迭代模型參考http://baike.baidu.com/view/1380740.htm 3.敏捷開發(fā)參考http://baike.baidu.com/view/309926.htm 4.軟件開發(fā)模式對(duì)比(瀑布、迭代、螺旋、敏捷) http://www.cnblogs.com/-OYK/archive/2012/10/08/2714669.html |
|