极限编程(XP) 是一种 敏捷软件开发 框架,旨在生成更高质量的软件并提升团队的生活质量。在适当的工程实践方面,XP 是最具体的敏捷框架。工程实践.
Scrum 是一种框架,人们可以在其中高效且创造性地解决复杂适应性问题,同时交付高价值的产品。Scrum 本身是一种简单的框架,能够促进团队在复杂产品上的有效协作。
Scrum 和 XP 都是敏捷方法论,共享许多共同概念,例如迭代开发、可工作的软件、发布和迭代规划,每日站会、回顾会议以及其他所有敏捷流程要素。这两种方法如此一致,以至于很难区分一个实践 XP 的团队和一个实践 Scrum 的团队。

极限编程

冲刺周期
然而,它们之间存在一些差异,其中一些差异相当微妙,尤其是在以下四个方面:
1. 迭代周期长度
Scrum
- 通常为两周到四周。
XP
- 通常为一周到两周。
2. 迭代过程中是否可以更改需求
Scrum
XP
- 在迭代过程中更容易更改。
- 只要某个特定功能尚未开始,就可以用一个大小相似的新功能替换尚未开始的原有功能,加入XP团队的迭代中。
3. 用户故事是否严格按照迭代优先级实施
XP
- 严格按照优先级顺序工作。
- 待开发的功能由客户(Scrum的产品负责人)进行优先级排序,团队必须按顺序处理这些功能。
Scrum
- Scrum的产品负责人对产品待办事项列表进行优先级排序,但团队决定开发待办事项的顺序。
- 一个Scrum团队很可能选择先处理第二重要的事项。
4. 是否采用严格的工程实践以确保进度或质量
Scrum
- 不规定任何具体的工程实践。
XP
- 是的,XP确实如此。
- 例如:TDD、结对编程、简单设计、重构等。
我们可以将XP与Scrum之间的差异总结如下:
| 方面 | 实践 | XP | Scrum |
| 迭代周期长度 | 在迭代过程中是否可以更改需求 | 1–2周 | 2–4周 |
| 迭代过程中的变更处理 | 需求是否按优先级严格排序 | 如果尚未实现,可以用另一个同等规模的需求替换。 | Scrum不允许这样做。冲刺开始后不允许进行任何更改,而且Scrum主管会严格执行这一点。 |
| 功能优先级 | 需求是否按优先级严格排序 | 是 | 不需要 |
| 工程实践 | 是否使用严格的工程方法来确保进度或质量 | 非常严格 | 要求开发人员保持清醒 |
因此,我们认为XP的方法是可以接受的,但它给敏捷带来了矛盾:将XP的理念与敏捷原则结合,向团队传递了一个令人困惑的信息:“你们是一个完全自我管理的组织,但必须实施TDD、结对编程等。”
显然,这四个差异非常不同:
- 在Scrum中,重点在于自我组织。
- 在XP中,重点在于严格的工程实践约束。
结论
Scrum是一种产品开发框架——一个可以容纳其他实践的容器。XP是可以在Scrum框架内应用的实践之一。团队没有必要在Scrum和XP之间做出选择。XP的规则和实践并不容易,且大多数都是不可协商的。对于从Scrum起步并希望成为专业Scrum团队的团队来说,将XP融入Scrum可能是一个自然的进展。