天天看點

軟體開發模式對比

瀑布模型是由W.W.Royce在1970年最初提出的軟體開發模型,瀑布式開發是一種老舊的計算機軟體開發方法。

瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求分析、設計、編碼、內建、測試、維護的步驟順序進行。步驟成果作為衡量進度的方法,例如需求規格,設計文檔,測試計劃和代碼審閱等等。 

瀑布式的主要的問題是它的嚴格分級導緻的自由度降低,項目早期即作出承諾導緻對後期需求的變化難以調整,代價高昂。瀑布式方法在需求不明并且在項目進行過程中可能變化的情況下基本是不可行的。 

疊代式開發也被稱作疊代增量式開發或疊代進化式開發,是一種與傳統的瀑布式開發相反的軟體開發過程,它彌補了傳統開發方式中的一些弱點,具有更高的成功率和生産率。

什麼是疊代式開發?

每次隻設計和實作這個産品的一部分, 逐漸逐漸完成的方法叫疊代開發, 每次設計和實作一個階段叫做一個疊代. 

在疊代式開發方法中,整個開發工作被組織為一系列的短小的、固定長度(如3周)的小項目,被稱為一系列的疊代。每一次疊代都包括了需求分析、設計、實作與測試。采用這種方法,開發工作可以在需求被完整地确定之前啟動,并在一次疊代中完成系統的一部分功能或業務邏輯的開發工作。再通過客戶的回報來細化需求,并開始新一輪的疊代。

疊代式開發的優點:

  1. 降低風險
  2. 得到早期使用者回報
  3. 持續的測試和內建
  4. 使用變更
  5. 提高複用性

螺旋開發,1988年,巴利·玻姆(Barry Boehm)正式發表了軟體系統開發的“螺旋模型”,它将瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特别适合于大型複雜的系統。

“螺旋模型”剛開始規模很小,當項目被定義得更好、更穩定時,逐漸展開。 

“螺旋模型”的核心就在于您不需要在剛開始的時候就把所有事情都定義的清清楚楚。您輕松上陣,定義最重要的功能,實作它,然後聽取客戶的意見,之後再進入到下一個階段。如此不斷輪回重複,直到得到您滿意的最終産品。 

  1. 制定計劃:确定軟體目标,標明實施方案,弄清項目開發的限制條件; 
  2. 風險分析:分析評估所選方案,考慮如何識别和消除風險; 
  3. 實施工程:實施軟體開發和驗證; 
  4. 客戶評估:評價開發工作,提出修正建議,制定下一步計劃。 

螺旋模型很大程度上是一種風險驅動的方法體系,因為在每個階段之前及經常發生的循環之前,都必須首先進行風險評估。

靈活軟體開發又稱靈活開發, 是一種從1990年代開始逐漸引起廣泛關注的一些新型軟體開發方法,是一種應對快速變化的需求的一種軟體開發能力。它們的具體名稱、理念、過程、術語都不 盡相同,相對于“非靈活”,更強調程式員團隊與業務專家之間的緊密協作、面對面的溝通(認為比書面的文檔更有效)、頻繁傳遞新的軟體版本、緊湊而自我組織 型的團隊、能夠很好地适應需求變化的代碼編寫和團隊組織方法,也更注重軟體開發中人的作用。

  • 人和互動 重于過程和工具。
  • 可以工作的軟體 重于求全而完備的文檔。
  • 客戶協作重于合同談判。
  • 随時應對變化重于循規蹈矩。

其中位于右邊的内容雖然也有其價值,但是左邊的内容最為重要。人員彼此信任,人少但是精幹可以面對面的溝通。

靈活開發小組主要的工作方式可以歸納為:

  • 作為一個整體工作;
  • 按短疊代周期工作;
  • 每次疊代傳遞一些成果;
  • 關注業務優先級; 檢查與調整。

最重要的因素恐怕是項目的規模。規模增長,面對面的溝通就愈加困難,是以靈活方法更适用于較小的隊伍,40、30、20、10人或者更少。大規模的靈活軟體開發尚處于積極研究的領域。

四者對比:

  • 傳統的瀑布式開發,也就是從需求到設計,從設計到編碼,從編碼到測試,從測試到送出大概這樣的流程,要求每一個開發階段都要做到最好。特别是前期階段,設計的越完美,送出後的成本損失就越少。
  • 疊代式開發,不要求每一個階段的任務做的都是最完美的,而是明明知道還有很多不足的地方,卻偏偏不去完善它,而是把主要功能先搭建起來為目的,以最短的時間,最少的損失先完成一個“不完美的成果物”直至送出。然後再通過客戶或使用者的回報資訊,在這個“不完美的成果物”上逐漸進行完善。
  • 螺旋開發,很大程度上是一種風險驅動的方法體系,因為在每個階段之前及經常發生的循環之前,都必須首先進行風險評估。
  • 靈活開發,相比疊代式開發兩者都強調在較短的開發周期送出軟體,但是,靈活開發的周期可能更短,并且更加強調隊伍中的高度協作。靈活方法有時候被誤認為是無計劃性和紀律性的方法,實際上更确切的說法是靈活方法強調适應性而非預見性。 

适應性的方法集中在快速适應現實的變化。當項目的需求起了變化,團隊應該迅速适應。這個團隊可能很難确切描述未來将會如何變化。