极限编程vs SCRUM | XP vs SCRUM
多年来,在软件行业中出现了许多不同的软件开发方法,如瀑布式开发方法、V模型、RUP等,以及其他一些线性的、迭代的和组合的线性迭代方法。敏捷模型(或者更准确地说,是一组方**)是由敏捷宣言引入的一种较新的软件开发模型,用于解决传统软件开发方法中的缺陷。
敏捷方法以迭代开发为基础,以用户反馈为主要控制机制。与传统方法相比,敏捷可以被称为以人为中心的方法。敏捷模型通过将系统分解为非常小和可管理的子部分,很早就交付了产品的工作版本,这样客户就可以尽早地实现一些好处。与传统方法相比,敏捷的测试周期相对较短,因为测试是与开发并行进行的。由于所有这些优点,目前敏捷方法比传统方法更受欢迎。Scrum和极限编程是敏捷方法中最流行的两种变体。
什么是SCRUM?
如上所述,SCRUM是一个渐进的迭代项目管理过程,属于敏捷方法家族。SCRUM的基础是在开发周期的早期高度重视客户的参与。它建议客户尽早、经常地进行测试。当稳定版本可用时,测试在每个点进行。Scrum的基础是从项目开始的测试开始,一直持续到项目的结束。
SCRUM的核心价值是“质量是团队的责任”,它强调软件的质量是整个团队(不仅仅是测试团队)的责任。SCRUM的另一个重要方面是将软件分解成更小的可管理的部分,并很快地将它们交付给客户。交付一个有效的产品是最重要的。然后团队继续改进软件,并在每个主要步骤持续交付。这是通过拥有非常短的发布周期(称为sprint)并在每个周期结束时获得改进的反馈来实现的。
SCRUM为开发团队的顺利运行定义了几个关键角色。他们是产品所有者(代表客户并维护产品backlog)、Scrum master(通过召开Scrum会议、维护sprint backlog和burn down图表来充当团队的组织者和协调人)和其他团队成员。一个团队可能由传统的角色组成,但大多是自我管理的团队。主要的Scrum工件是产品积压工作/发布积压工作(愿望列表)、Sprint积压工作/缺陷积压工作(每次迭代中的任务)、烧毁图表(剩余工作与日期)。SCRUM的主要仪式是产品积压会议、Sprint会议和回顾会议。
什么是极限编程?
极限编程(extremeprogramming,简称XP)是一种属于敏捷模型的软件开发方法。极限编程以非常小的连续步骤执行阶段(与传统方法相比)。第一次***只需一天或一周,故意不完整。为了提供开发软件的具体目标,自动化测试在开始时编写。然后由开发人员进行编码。重点是成对编程。一旦所有的测试通过,编码就被认为是完整的。下一个阶段是设计和架构,它涉及到由同一组程序员重构代码。在这个阶段的最后,不完整的(但功能性的)产品将呈现给涉众。在这之后,下一个阶段(重点是下一组最重要的特性)就开始了。
极限编程和SCRUM有什么区别?
可以理解,极端编程和SCRUM方法非常相似。然而,这两种方法之间有细微但重要的区别。SCRUM sprint持续2-4周,而典型的XP迭代时间更短(过去1-2周)。通常,SCRUM团队不允许对sprint进行变更,但是XP团队对迭代中的变更更为灵活。例如,在sprint规划之后,sprint的项目集保持不变,但是一个尚未开始工作的特性可以随时与XP中的其他特**换。严格来说,XP和另一个产品的优先顺序是由SCRUM开发的产品和XP产品的优先顺序决定的。