前段时间参加了公司组织的“Certified Scrum Master”的培训,算是比较深入地了解了Scrum的相关理论,也了解了一些实践的案例。但我一直在思考一个问题,同样作为敏捷开发流程的具体实践,Scrum和XP到底两者之间有什么样的区别呢?似乎没有太多人关注过这个问题。上网搜了搜,资料不多,但可以找到一些。其中一个老外写的还不错,特翻译并总结于此,并没有照搬原文,以备后用。
原文地址:http://blog.mountaingoatsoftware.com/differences-between-scrum-and-extreme-programming,喜欢的朋友可以去看看。
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更高质量的软件给客户。
FROM:http://www.51testing.com/?uid-22381-action-viewspace-itemid-227137