一、瀑布模型是由W.W.Royce在1970年最初提出的軟件開發模型, 瀑布式開發是一種老舊的計算機軟件開發方法。
瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求分析、設計、編碼、集成、測試、維護的步驟順序進行。
步驟成果做爲衡量進度的方法,例如需求規格,設計文檔,測試計劃和代碼審閱等等。
瀑布式的主要的問題是它的嚴格分級致使的自由度下降,項目早期即做出承諾致使對後期需求的變化難以調整,
代價高昂。瀑布式方法在需求不明而且在項目進行過程當中可能變化的狀況下基本是不可行的。
二、迭代式開發也被稱做迭代增量式開發或迭代進化式開發,是一種與傳統的瀑布式開發相反的軟件開發過程,它彌補了傳統開發方式中的一些弱點,具備更高的成功率和生產率。
什麼是迭代式開發?
每次只設計和實現這個產品的一部分,
逐步逐步完成的方法叫迭代開發,
每次設計和實現一個階段叫作一個迭代.
在迭代式開發方法中,整個開發工做被組織爲一系列的短小的、
固定長度(如3周)的小項目,被稱爲一系列的迭代。
每一次迭代都包括了需求分析、設計、實現與測試。
採用這種方法,開發工做能夠在需求被完整地肯定以前啓動,
並在一次迭代中完成系統的一部分功能或業務邏輯的開發工做。
再經過客戶的反饋來細化需求,並開始新一輪的迭代。
迭代式開發的優勢:
一、下降風險
二、獲得早期用戶反饋
三、持續的測試和集成
四、使用變動
五、提升複用性
螺旋開發,1988年,巴利·玻姆(Barry Boehm)正式發表了軟件系統開發的「螺旋模型」,它將瀑布模型和快速原型模型結合起來,強調了其餘模型所忽視的風險分析,特別適合於大型複雜的系統。
「螺旋模型」剛開始規模很小,當項目被定義得更好、更穩定時,逐漸展開。
「螺旋模型」的核心就在於您不須要在剛開始的時候就把全部事情都定義的清清楚楚。您輕鬆上陣,定義最重要的功能,實現它,而後聽取客戶的意見,以後再進入到下一個階段。如此不斷輪迴重複,直到獲得您滿意的最終產品。
(1)制定計劃:肯定軟件目標,選定實施方案,弄清項目開發的限制條件;
(2)風險分析:分析評估所選方案,考慮如何識別和消除風險;
(3)實施工程:實施軟件開發和驗證;
(4)客戶評估:評價開發工做,提出修正建議,制定下一步計劃。
螺旋模型很大程度上是一種風險驅動的方法體系,由於在每一個階段以前及常常發生的循環以前,都必須首先進行風險評估。
敏捷軟件開發又稱敏捷開發, 是一種從1990年代開始逐漸引發普遍關注的一些新型軟件開發方法,是一種應對快速變化的需求的一種軟件開發能力。它們的具體名稱、理念、過程、術語都不 盡相同,相對於「非敏捷」,更強調程序員團隊與業務專家之間的緊密協做、面對面的溝通(認爲比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織 型的團隊、可以很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發中人的做用。
程序員
其中位於右邊的內容雖然也有其價值,可是左邊的內容最爲重要。
人員彼此信任 人少可是精幹 能夠面對面的溝通
項目的敏捷開發:
敏捷開發小組主要的工做方式能夠概括爲:做爲一個總體工做; 按短迭代週期工做; 每次迭代交付一些成果;
關注業務優先級; 檢查與調整。
最重要的因素恐怕是項目的規模。規模增加,面對面的溝通就越發困難,
所以敏捷方法更適用於較小的隊伍,40、30、20、10人或者更少。
大規模的敏捷軟件開發尚處於積極研究的領域。
四者對比區別:
傳統的瀑布式開發,也就是從需求到設計,從設計到編碼,從編碼到測試,從測試到提交大概這樣的流程,要求每個開發階段都要作到最好。
特別是前期階段,設計的越完美,提交後的成本損失就越少。
迭代式開發,不要求每個階段的任務作的都是最完美的,而是明明知道還有不少不足的地方,卻恰恰不去完善它,而是把主要功能先搭建起來爲目的,以最短的時間,
最少的損失先完成一個「不完美的成果物」直至提交。而後再經過客戶或用戶的反饋信息,在這個「不完美的成果物」上逐步進行完善。
螺旋開發,很大程度上是一種風險驅動的方法體系,由於在每一個階段以前及常常發生的循環以前,都必須首先進行風險評估。
敏捷開發,相比迭代式開發二者都強調在較短的開發週期提交軟件,可是,敏捷開發的週期可能更短,而且更增強調隊伍中的高度協做。
敏捷方法有時候被誤認爲是無計劃性和紀律性的方法,實際上更確切的說法是敏捷方法強調適應性而非預見性。
適應性的方法集中在快速適應現實的變化。當項目的需求起了變化,團隊應該迅速適應。這個團隊可能很難確切描述將來將會如何變化.工具