敏捷(Agile)做爲一種開發流程, 目前爲各大公司所採用, 敏捷流程的具體實踐有XP 和Scrum, 彷佛不多有文章介紹這二者的區別,編程
發現一篇外文, 看法很是深入, 特將其翻譯一把.測試
原文(DIFFERENCES BETWEEN SCRUM AND EXTREME PROGRAMMING )在此:翻譯
http://blog.mountaingoatsoftware.com/differences-between-scrum-and-extreme-programming設計
做者總結的大體區別以下:blog
區別之一: 迭代長度的不一樣排序
XP的一個Sprint的迭代長度大體爲1~2周, 而Scrum的迭代長度通常爲 2~ 4周.開發
區別之二: 在迭代中, 是否容許修改需求rem
XP在一個迭代中,若是一個User Story(用戶素材, 也就是一個需求)尚未實現, 則能夠考慮用另外的需求將其替換, 替換的原則是需求實現的時間量是相等的。 而Scrum是不容許這樣作的,一旦迭代開工會完畢, 任何需求都不容許添加進來,並有Scrum Master嚴格把關,不容許開發團隊收到干擾get
區別之三: 在迭代中,User Story是否嚴格按照優先級別來實現it
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.」)