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