敏捷開發中XP與SCRUM的區別編程
區別之一: 迭代長度的不一樣框架
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.it
區別之四:軟件的實施過程當中,是否採用嚴格的工程方法,保證進度或者質量自動化
Scrum沒有對軟件的整個實施過程開出工程實踐的處方。要求開發者自覺保證,但XP對整個流程方法定義很是嚴格,規定須要採用TDD, 自動測試, 結對編程,簡單設計,重構等約束團隊的行爲。所以,原做者認爲,這點上,XP的作法值得認同的,可是卻把敏捷帶入了一個讓人困惑的矛盾, 由於xp的理念,結合敏捷模式,表達給團隊的信息是「你是一個徹底自我管理的組織, 但你必需要實現TDD, 結對編程, ...等等」io
不難發現,這四個區別顯見的是: Scrum很是突出Self-Orgnization, XP注重強有力的工程實踐約束ast
做者建議, 在管理模式上啓用Scrum, 而在實踐中,創造一個適合本身項目組的XP
1. Scrum 和 XP team都在迭代的方式下工做,但Scrum的週期通常是從兩週到一個月(NOTE: HW定義爲一兩週,最長不超過兩個月),XP的週期是一個或兩個周。(comments:這點並不算是很大的一個區別,由於不少scrum team也開始使用一個星期爲週期來操做)
2. Scrum team在一個sprint中是不接受任何任務變動的。一旦sprint planning meeting commit的task,直到sprint結束,都不會接受任何改變。而XP的團隊在一個迭代中,若是新的feature跟原來的feature 規模和大小差不太多,在原來的feature尚未開始進行的前提下,能夠用新的feature更換原來的feature。
3. XP 團隊會嚴格按照任務的優先級來工做。全部的任務都被客戶劃分了優先級,團隊都被要求在該優先級下工做。相比之下,Scrum團隊中的PO也會劃分 backlog中的優先級,但scrum團隊的人員會本身決定他們以何種順序來完成全部的任務。固然,一般來講,還沒見過哪一個scrum團隊不選擇優先作 優先級最高的條目的。固然有時候,scrum團隊也會選擇先作優先級稍微低一些的條目,好比有些任務並不是在sprint剛一開始就實施的,儘管它的優先級 很高。或者適合作某項任務的人,正在作其餘的工做,這個時候,優先級也會獲得調整。
4. Scrum並無定義任何工程實踐的方法,它只是提供了一個實踐的框架給你。但XP,極限編程卻會給你這樣的一些東西。好比測試驅動開發, 自動化測試,結對編程,簡單設計,重構等等。
在 實際的項目中,正如上述第4點所述,因爲scrum只是一個框架(framework),並無不少指導性的工程實踐。它只會告訴你何時該作什麼,至 於怎麼作,那是團隊本身的事,因此實施起來會容易不少。因此大部分的team都是從引入scrum從而開始敏捷之旅,等到scrum已經進行得比較順利 了,再經過continuously improvement的精神來引入XP的一些工程實踐。固然,若是直接用XP的方式開始敏捷開發流程,也何嘗不可,不過可能團隊在短時間內會遇到不少技術 上的問題,畢竟結對編程,簡單設計,重構,測試驅動開發,這些東西在實際的項目中並非那麼容易實施的。可是,無論你的團隊裏用的是什麼方法,scrum 也好,XP也好,最終的目的只有一個,delivery更高質量的軟件給客戶。