瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
1、瀑布模型是由W.W.Royce在1970年最初提出的軟件開(kāi)發(fā)模型,瀑布模型式是最典型的預(yù)見(jiàn)性的方法,嚴(yán)格遵循預(yù)先計(jì)劃的需求分析、設(shè)計(jì)、編碼、集成、測(cè)試、維護(hù)的步驟順序進(jìn)行。
步驟成果作為衡量進(jìn)度的方法,例如需求規(guī)格,設(shè)計(jì)文檔,測(cè)試計(jì)劃和代碼審閱等等。?
瀑布式的主要的問(wèn)題是它的嚴(yán)格分級(jí)導(dǎo)致的自由度降低,項(xiàng)目早期即作出承諾導(dǎo)致對(duì)后期需求的變化難以調(diào)整,
代價(jià)高昂。瀑布式方法在需求不明并且在項(xiàng)目進(jìn)行過(guò)程中可能變化的情況下基本是不可行的。?
2、迭代式開(kāi)發(fā)也被稱(chēng)作迭代增量式開(kāi)發(fā)或迭代進(jìn)化式開(kāi)發(fā),是一種與傳統(tǒng)的瀑布式開(kāi)發(fā)相反的軟件開(kāi)發(fā)過(guò)程,它彌補(bǔ)了傳統(tǒng)開(kāi)發(fā)方式中的一些弱點(diǎn),具有更高的成功率和生產(chǎn)率。
什么是迭代式開(kāi)發(fā)?
每次只設(shè)計(jì)和實(shí)現(xiàn)這個(gè)產(chǎn)品的一部分,?
逐步逐步完成的方法叫迭代開(kāi)發(fā),?
每次設(shè)計(jì)和實(shí)現(xiàn)一個(gè)階段叫做一個(gè)迭代.?
在迭代式開(kāi)發(fā)方法中,整個(gè)開(kāi)發(fā)工作被組織為一系列的短小的、
固定長(zhǎng)度(如3周)的小項(xiàng)目,被稱(chēng)為一系列的迭代。
每一次迭代都包括了需求分析、設(shè)計(jì)、實(shí)現(xiàn)與測(cè)試。
采用這種方法,開(kāi)發(fā)工作可以在需求被完整地確定之前啟動(dòng),
并在一次迭代中完成系統(tǒng)的一部分功能或業(yè)務(wù)邏輯的開(kāi)發(fā)工作。
再通過(guò)客戶(hù)的反饋來(lái)細(xì)化需求,并開(kāi)始新一輪的迭代。
迭代式開(kāi)發(fā)的優(yōu)點(diǎn):
1、降低風(fēng)險(xiǎn)
2、得到早期用戶(hù)反饋
3、持續(xù)的測(cè)試和集成
4、使用變更
5、提高復(fù)用性
螺旋開(kāi)發(fā),1988年,巴利·玻姆(Barry?Boehm)正式發(fā)表了軟件系統(tǒng)開(kāi)發(fā)的“螺旋模型”,它將瀑布模型和快速原型模型結(jié)合起來(lái),強(qiáng)調(diào)了其他模型所忽視的風(fēng)險(xiǎn)分析,特別適合于大型復(fù)雜的系統(tǒng)。
“螺旋模型”剛開(kāi)始規(guī)模很小,當(dāng)項(xiàng)目被定義得更好、更穩(wěn)定時(shí),逐漸展開(kāi)。?
“螺旋模型”的核心就在于您不需要在剛開(kāi)始的時(shí)候就把所有事情都定義的清清楚楚。您輕松上陣,定義最重要的功能,實(shí)現(xiàn)它,然后聽(tīng)取客戶(hù)的意見(jiàn),之后再進(jìn)入到下一個(gè)階段。如此不斷輪回重復(fù),直到得到您滿意的最終產(chǎn)品。?
???????(1)制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開(kāi)發(fā)的限制條件;?
(2)風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn);?
(3)實(shí)施工程:實(shí)施軟件開(kāi)發(fā)和驗(yàn)證;?
(4)客戶(hù)評(píng)估:評(píng)價(jià)開(kāi)發(fā)工作,提出修正建議,制定下一步計(jì)劃。?
螺旋模型很大程度上是一種風(fēng)險(xiǎn)驅(qū)動(dòng)的方法體系,因?yàn)樵诿總€(gè)階段之前及經(jīng)常發(fā)生的循環(huán)之前,都必須首先進(jìn)行風(fēng)險(xiǎn)評(píng)估。
敏捷軟件開(kāi)發(fā)又稱(chēng)敏捷開(kāi)發(fā),是一種從1990年代開(kāi)始逐漸引起廣泛關(guān)注的一些新型軟件開(kāi)發(fā)方法,是一種應(yīng)對(duì)快速變化的需求的一種軟件開(kāi)發(fā)能力。它們的具體名稱(chēng)、理念、過(guò)程、術(shù)語(yǔ)都不盡相同,相對(duì)于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專(zhuān)家之間的緊密協(xié)作、面對(duì)面的溝通(認(rèn)為比書(shū)面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫(xiě)和團(tuán)隊(duì)組織方法,也更注重軟件開(kāi)發(fā)中人的作用。
·?人和交互?重于過(guò)程和工具。
·?可以工作的軟件?重于求全而完備的文檔。
·?客戶(hù)協(xié)作重于合同談判。
·?隨時(shí)應(yīng)對(duì)變化重于循規(guī)蹈矩。
其中位于右邊的內(nèi)容雖然也有其價(jià)值,但是左邊的內(nèi)容最為重要。
人員彼此信任?人少但是精干?可以面對(duì)面的溝通
項(xiàng)目的敏捷開(kāi)發(fā):
敏捷開(kāi)發(fā)小組主要的工作方式可以歸納為:作為一個(gè)整體工作;?按短迭代周期工作;?每次迭代交付一些成果;?
關(guān)注業(yè)務(wù)優(yōu)先級(jí);?檢查與調(diào)整。
最重要的因素恐怕是項(xiàng)目的規(guī)模。規(guī)模增長(zhǎng),面對(duì)面的溝通就愈加困難,
因此敏捷方法更適用于較小的隊(duì)伍,40、30、20、10人或者更少。
大規(guī)模的敏捷軟件開(kāi)發(fā)尚處于積極研究的領(lǐng)域。
四者對(duì)比區(qū)別:
傳統(tǒng)的瀑布式開(kāi)發(fā),也就是從需求到設(shè)計(jì),從設(shè)計(jì)到編碼,從編碼到測(cè)試,從測(cè)試到提交大概這樣的流程,要求每一個(gè)開(kāi)發(fā)階段都要做到最好。
特別是前期階段,設(shè)計(jì)的越完美,提交后的成本損失就越少。
迭代式開(kāi)發(fā),不要求每一個(gè)階段的任務(wù)做的都是最完美的,而是明明知道還有很多不足的地方,卻偏偏不去完善它,而是把主要功能先搭建起來(lái)為目的,以最短的時(shí)間,
最少的損失先完成一個(gè)“不完美的成果物”直至提交。然后再通過(guò)客戶(hù)或用戶(hù)的反饋信息,在這個(gè)“不完美的成果物”上逐步進(jìn)行完善。
螺旋開(kāi)發(fā),很大程度上是一種風(fēng)險(xiǎn)驅(qū)動(dòng)的方法體系,因?yàn)樵诿總€(gè)階段之前及經(jīng)常發(fā)生的循環(huán)之前,都必須首先進(jìn)行風(fēng)險(xiǎn)評(píng)估。
敏捷開(kāi)發(fā),相比迭代式開(kāi)發(fā)兩者都強(qiáng)調(diào)在較短的開(kāi)發(fā)周期提交軟件,但是,敏捷開(kāi)發(fā)的周期可能更短,并且更加強(qiáng)調(diào)隊(duì)伍中的高度協(xié)作。
敏捷方法有時(shí)候被誤認(rèn)為是無(wú)計(jì)劃性和紀(jì)律性的方法,實(shí)際上更確切的說(shuō)法是敏捷方法強(qiáng)調(diào)適應(yīng)性而非預(yù)見(jiàn)性。?
適應(yīng)性的方法集中在快速適應(yīng)現(xiàn)實(shí)的變化。當(dāng)項(xiàng)目的需求起了變化,團(tuán)隊(duì)?wèi)?yīng)該迅速適應(yīng)。這個(gè)團(tuán)隊(duì)可能很難確切描述未來(lái)將會(huì)如何變化.
來(lái)自麥克周的技術(shù)博客(微信號(hào):michael_tec)
總結(jié)
以上是生活随笔為你收集整理的瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CLI or GUI --- 要高效还是
- 下一篇: VxWorks/tornado环境搭建(