極端程式設計(XP)與Scrum:主要差異及何時使用各自方法

極端程式設計(XP) 是一種 敏捷軟體開發 框架,旨在產生更高品質的軟體並提升團隊的生活品質。在適當的 工程實務.

Scrum 是一種框架,讓人們能在有效且富有創意地交付高價值產品的同時解決複雜的適應性問題。Scrum本身是一種簡單的框架,能促進團隊在複雜產品上的有效合作。

Scrum 和 XP 都是敏捷方法論,共享許多共同概念,例如迭代開發、可運作的軟體、發行與迭代規劃,每日站會、回顧會議,以及所有其他敏捷流程元素。這兩種方法如此一致,以致於很難區分一個實踐 XP 的團隊與另一個實踐 Scrum 的團隊。

Extreme Programming

極端程式設計

Sprint Cycle

Sprint週期

然而,仍有一些差異,其中一些差異相當微妙,特別是在以下四個方面:

1. 迭代長度
Scrum
  • 通常為兩到四周。
XP
  • 通常為一到兩週。
2. 是否可以在迭代期間變更需求
Scrum
XP
  • 在迭代過程中更容易更改。
  • 只要某個特定功能尚未開始,就可以將另一個大小相近的新功能替換進XP團隊的迭代中,取代尚未開始的功能。
3. 是否嚴格按照迭代優先順序執行使用者故事
XP
  • 嚴格按照優先順序工作。
  • 待開發的功能由客戶(Scrum的產品負責人)進行優先排序,團隊必須依序處理。
Scrum
  • Scrum的產品負責人對產品待辦事項進行優先排序,但團隊決定開發待辦事項的順序。
  • 一個Scrum團隊很可能會選擇先處理第二重要的項目。
4. 是否採用嚴格的工程實務以確保進度或品質
Scrum
  • 並未規定任何特定的工程實務。
XP
  • 是的,XP確實如此。
  • 例如:測試驅動開發(TDD)、配對程式設計、簡單設計、重構等。

我們可以總結XP與Scrum的差異如下:

面向 實務 XP Scrum
迭代長度 是否可在迭代期間變更需求 1–2週 2–4週
迭代期間的變更處理 需求是否按優先級嚴格排序 如果尚未實現,可以用另一個同等規模的需求取代。 Scrum 不允許這樣做。一旦 Sprint 開始,就不允許進行任何變更,而且Scrum 主管會嚴格執行此規定。
功能優先順序 需求是否按優先級嚴格排序 不需要
工程實踐 是否使用嚴格的工程方法來確保進度或品質 非常嚴格 要求開發人員保持警覺

因此,我們認為 XP 的做法是可以接受的,但它為敏捷帶來了一個矛盾:將 XP 的理念與敏捷原則結合,向團隊傳達了一個令人困惑的訊息:「你們是一個完全自我管理的組織,但卻必須實施 TDD、配對程式設計等。」

顯而易見,這四個差異非常明顯:

  • Scrum中,重點在於自我組織。
  • XP中,重點在於強烈的工程實踐約束。

結論

Scrum 是一個產品開發框架——一個可以納入其他實踐的容器。XP 是你可以在 Scrum 框架內應用的實踐之一。團隊沒有理由在 Scrum 和 XP 之間做選擇。XP 的規則和實踐並不容易,且大多數都是不可妥協的。對於從 Scrum 開始並致力於成為專業 Scrum 團隊的團隊而言,將 XP 納入 Scrum 可能是一種自然的進展。

 

Leave a Reply