敏捷(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.”)