敏捷方法之極限編程(XP)和 Scrum區別

文章轉載自:http://blog.csdn.net/ostrichmyself/article/details/5375223


敏捷(Agile)作爲一種開發流程, 目前爲各大公司所採用, 敏捷流程的具體實踐有XP 和Scrum, 似乎很少有文章介紹這兩者的區別,

 

發現一篇外文, 見解非常深刻, 特將其翻譯一把.

 

原文(DIFFERENCES BETWEEN SCRUM AND EXTREME PROGRAMMING )在此:

 

http://blog.mountaingoatsoftware.com/differences-between-scrum-and-extreme-programming

 

作者總結的大致區別如下:

 

區別之一:  迭代長度的不同

XP的一個Sprint的迭代長度大致爲1~2周, 而Scrum的迭代長度一般爲 2~ 4周.

 

區別之二: 在迭代中, 是否允許修改需求

XP在一個迭代中,如果一個User Story(用戶素材, 也就是一個需求)還沒有實現, 則可以考慮用另外的需求將其替換, 替換的原則是需求實現的時間量是相等的。 而Scrum是不允許這樣做的,一旦迭代開工會完畢, 任何需求都不允許添加進來,並有Scrum Master嚴格把關,不允許開發團隊收到干擾

 

區別之三: 在迭代中,User Story是否嚴格按照優先級別來實現

XP是務必要遵守優先級別的。 但Scrum在這點做得很靈活, 可以不按照優先級別來做,Scrum這樣處理的理由是: 如果優先問題的解決者,由於其它事情耽擱,不能認領任務,那麼整個進度就耽誤了。 另外一個原因是,如果按優先級排序的User Story #6和#10,雖然#6優先級高,但是如果#6的實現要依賴於#10,則不得不優先做#10.

 

別之四:軟件的實施過程中,是否採用嚴格的工程方法,保證進度或者質量

Scrum沒有對軟件的整個實施過程開出養個工程實踐的處方。要求開發者自覺保證,但XP對整個流程方法定義非常嚴格,規定需要採用TDD, 自動測試, 結對編程,簡單設計,重構等約束團隊的行爲。因此,原作者認爲, 這點上,XP的做法值得認同的,但是卻把敏捷帶入了一個讓人困惑的矛盾, 因爲xp的理念,結合敏捷模式,表達給團隊的信息是“你是一個完全自我管理的組織, 但你必須要實現TDD, 結對編程, ...等等”

 

不難發現,這四個區別顯見的是: Scrum非常突出Self-Orgnization, XP注重強有力的工程實踐約束

 

作者建議, 在管理模式上啓用Scrum, 而在實踐中,創造一個適合自己項目組的XP(“start with Scrum and then invent your own version of XP.”)

 

非常不錯, 文武之道,有張有弛。

 

 

該博客之後有很多人提出了異議, 稍後將其推出,  看看其它敏捷高手是如何看待這個問題的, 也防止誤導讀者:

 

待續。。。。


發佈了26 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章