什么是Scrum?

Scrum是一种用于开发创新产品和服务的敏捷方式。图1.1显示了一个简单、通用、敏捷的开发方式。

图1.1 敏捷开发概述

在敏捷方式中,首先要建立产品列表——一个按优先级排列的、成功开发产品所需的特性及其他功能的列表。在产品列表的指导下,我们总是先做最重要或优先级最高的条目。在资源(例如时间)耗尽时,所有未完成工作的优先级都比已完成工作的优先级低。

工作本身是在一些短期的、时长固定的迭代中完成的,每个迭代一般是从1周到1个月。在每个迭代中,自组织、跨职能的团队完成所有必需的工作——例如设计、构建和测试——产生完整的、可工作的、可以放入产品的特性。

一般情况下,产品列表中的工作量远远不是团队在一个短期迭代内能够完成的。所以,在每个迭代开始时,团队需要制定计划,说明在下一个迭代中要创建产品列表中哪一个高优先级子集。比如说在图1.1中,团队同意创建特性A、B和C。

在迭代结束时,团队与利益干系人一起评审已经完成的特性,获取他们的反馈。根据反馈,产品负责人和团队既可以对下一步工作内容进行修改,也可能修改以前的工作方式。例如,如果利益干系人在看到一个完成的特性时,意识到自己没有考虑到另一个必须包含在产品中的特性,此时,产品负责人只需建立一个代表该特性的新条目并把它以适当的优先顺序插入产品列表,留到后面的迭代中迭代完成。

在每个迭代结束时,团队应当得到一个潜在可发布产品(或产品增量),如果业务上适合,就可以发布。如果不适宜在每次迭代后发布,可以把多个迭代的一组特性合并在一起发布。

在每个迭代结束后,从规划下一个迭代开始,重新开始整个过程。