# 敏捷開發 vs 瀑布式開發

# 瀑布式開發

強調開發過程中需有完整的規劃、分析、設計、測試等管理與控制,因此能有效的確保系統品質。

# 優點

  1. 強調開發過程中需有完整的規劃、分析、設計、測試等管理與控制,因此能有效的確保系統的品質。
  2. 十分清楚的階段劃分,易於分工及責任歸屬,讓每個階段工作都交由最專業的人執行。
  3. 適合大型專案開發。

# 缺點

  1. 由於各個階段的劃分完全固定,階段之間會產生大量的文檔,因此提高了工作量。
  2. 由於開發模型是線性的,客戶只有等到整個專案的開發末期才會看到開發成果,因而增加了開發風險。
  3. 由上一個缺點衍生出另一個更明顯的缺點,專案無法適應客戶需求的變化。

# 敏捷式開發

強調開發人員團隊成員及客戶之間的緊密協同運作、面對面的溝通、頻繁交付新的軟體版本,能夠很好地適應需求的快速變化。

# 優點

在敏捷式開發的過程中,會將專案項目分成多個子項目,各個子項目都會經過設計、開發、測試等流程,在子項目完成時,將成品展示給客戶,若符合需求再向下開發,反之則進行修正改進,如此一來可將整體風險降至最低,並使產品能夠快速適應變化。由於將開發工作細分化,大大減少了前期規畫和設計的數量,因此可將每個子項目的開發時程減少到一到四週的時間,以保證可以快速迭代,迭代的方式可能不會一次增加足夠的功能可以立即發布使用,目標是在每次迭代都可以有個可用的發行版,因此完整產品的發布或新功能可能需要經過多次迭代。

# 缺點

因為較注重人員的溝通而忽略文件的重要性,若專案人員流動性太高,會給維護帶來不少難度,特別式專案存在新手較多的時候,老手會比較辛苦。