什么是 SCRUM?






4.57/5 (37投票s)
对 SCRUM 的简洁概述,它是“敏捷方法”之一
目录
引言
SCRUM 是一套松散的指导方针,用于管理产品从设计阶段到完成的开发过程。它旨在解决典型开发过程中一些常见的失败,例如:
- 需求变更导致的混乱 - 项目的真实或感知需求通常从产品设计到发布期间会发生巨大变化。在大多数产品开发方法中,所有设计都在项目开始时完成,然后不允许更改或不根据需求变化进行更改。
- 不切实际的产品时间、成本和质量估算 - 项目管理和开发人员倾向于低估项目所需的时间和资源,以及在这些限制条件下可以产生的过多功能。实际上,在开发周期开始时,这通常无法准确预测。
- 开发人员被迫谎报项目进展 - 当管理层低估达到特定质量水平所需的时间和成本时,开发人员要么必须谎报产品已取得的进展,要么面临管理层的愤慨。
SCRUM 已被数百家不同公司的许多不同领域的公司成功采用,并取得了出色的成果。
您会发现 SCRUM 和极限编程之间有许多相似之处,但主要区别之一是 SCRUM 是一套相当通用的指导方针,用于管理产品的开发过程。因此,它经常被用作其他方法论(如 XP 或 CMM(能力成熟度模型))的“包装器”——也就是说,在采用这些其他方法论时,它被用来指导整体开发过程。
SCRUM 价值观
SCRUM 价值观源自敏捷软件开发价值观。
- 个体和互动高于流程和工具 - 流程和工具很有帮助,但如果团队不以建设性的方式进行沟通和协作,它们将毫无用处。
- 可工作的软件高于详尽的文档 - 文档很重要,但最重要的是要有可工作的软件。
- 客户协作高于合同谈判 - 您不仅仅是为了获得合同并以此方式获得金钱——您是在解决客户的问题。
- 响应变化高于遵循计划 - 如果需求或感知需求发生了变化,计划和设计也应该随之改变。
SCRUM 流程
图 1:通用 SCRUM 流程
Scrum 流程有 3 个主要阶段。
规划
在此阶段,将对项目进行规划并做出高层设计决策。
冲刺周期
图 2:SCRUM 冲刺周期
冲刺周期是大约 3-4 周的迭代周期,在此周期内完成产品的实际开发。它以冲刺规划会议开始,以确定当前冲刺将要完成的工作。然后进行开发。冲刺以冲刺评审会议结束,会上演示上一个冲刺所取得的进展,评审冲刺,并根据需要对项目进行调整。
冲刺周期会重复进行,直到产品开发完成。当时间、质量、竞争和成本这几个变量达到平衡时,产品就完成了。
- 进一步开发产品 - 实现、测试和记录。
- 收尾工作 - 为评估和集成做好准备。
- 评审本冲刺完成的工作。
- 调整以适应需求或计划的任何变更。
闭包
在此阶段,将完成产品的开发并发布。
Scrum 团队
SCRUM 团队由 2 组人组成 - 感兴趣的团队,由对项目感兴趣但不会从事工作的人组成,以及工作团队 - 对项目感兴趣并从事项目工作的人。
一个团队通常最多只有 6-9 名工作成员,尽管 SCRUM 也成功地与更多成员一起使用。如果成员过多而无法管理,则应将项目分解为多个子项目,每个子项目专注于一个独立的工作领域(一个用于 QA,一个用于文档等)。应该有人充当桥梁——也就是说,参加多个 SCRUM 团队的会议,并充当团队之间的沟通桥梁。密切相关/参与的团队成员应列席其他团队的 SCRUM 会议。
领导者(SCRUM Master)
团队的领导者称为 Scrum Master。他应该是工作团队的成员之一——也就是说,他应该是实际从事项目工作的人之一。SCRUM Master 衡量进展、消除障碍并领导团队会议。
常用术语
冲刺
产品在 1 到 4 周的迭代或冲刺中开发。在开始冲刺之前,会召开冲刺规划会议,以确定该冲刺要实现的功能。冲刺有 4 个主要步骤
- 进一步开发产品 - 实现、测试和记录。
- 收尾工作 - 为评估和集成做好准备。
- 评审本冲刺完成的工作。
- 调整以适应需求或计划的任何变更。
产品待办事项
由产品负责人整理的,待开发产品所有期望更改的优先排序列表。请参阅图 2。
Sprint BackLog(冲刺待办事项列表)
从产品待办事项列表中提取的,包含当前冲刺将完成的项目的列表。请参阅图 2。
每日 SCRUM 会议
每天举行一次 15 分钟的 SCRUM 会议。SCRUM Master 提出三个问题,所有团队成员和相关方都参加并提供反馈。会议应在同一地点举行,以便人们知道去哪里。
单元测试
单元测试是一种自动化测试,可确保某个项目区域所需的功能已实现,并且没有未考虑到的破坏性更改。请参阅 http://www.xprogramming.com/software.htm,其中列出了不同语言/平台的单元测试框架。
障碍
障碍是阻碍项目进展的事物。SCRUM Master 负责寻找和消除这些障碍,以免它们减缓或损害项目。
3个问题
Scrum Master 在每次 SCRUM 会议上向开发人员提出 3 个重要问题
- 自上次会议以来,您取得了哪些成就?
- 实现目标是否有任何障碍?
- 在下次会议之前,您将完成什么?
产品负责人
委托项目并定义产品需求和优先级的人。
冲刺规划会议
在冲刺开始时举行的会议,在会议上规划冲刺。根据产品负责人设定的优先级,从产品待办事项列表中选择项目在冲刺中完成。
冲刺评审会议
冲刺以冲刺评审会议结束,会上演示上一个冲刺所取得的进展,评审冲刺,并根据需要对项目进行调整。
关键人物/作者
Jeff Sutherland 是 SCRUM 的创始人之一,也是最早将 SCRUM 应用于实际项目的人之一。
Ken Schwaber 是 SCRUM 的创始人之一。
Mike Beedle 在众多大型项目中成功使用了 SCRUM,并与 Ken Schwaber 一起撰写了《敏捷软件开发与 SCRUM》一书。
资源
站点
ControlChaos
SCRUM 教程,XP 与 SCRUM,案例研究,SCRUM 认证
http://www.controlchaos.com/
SCRUM Alliance
隶属于 Agile Alliance 网站系列,拥有大量关于 SCRUM 的文章。
http://www.scrumalliance.org/
Mountain Goat Software 的 SCRUM 部分
对 SCRUM 的一个很好的介绍。
http://www.mountaingoatsoftware.com/scrum/
文章
SCRUM 开发流程
一篇关于 SCRUM 的详细且权威的论文。
http://www.jeffsutherland.com/oopsla/schwapub.pdf
引入敏捷流程
涵盖了将敏捷方法引入开发团队或公司所涉及的问题。
http://www.mountaingoatsoftware.com/articles/IntroducingAnAgileProcess.pdf
RUP、XP 和 SCRUM 对比:为您的团队混合流程鸡尾酒
比较了不同的敏捷方法论,并帮助您确定哪种方法论或方法论组合适合您的团队。
http://www.netobjectives.com/events/download/rup_xp_scrum_pc_030326_ppt.pdf
书籍
使用 SCRUM 进行敏捷软件开发
对 SCRUM 的深入探讨,包含大量案例研究。对管理者和开发人员来说都是必读之作。
敏捷软件开发生态系统
对各种敏捷软件开发系统(包括 SCRUM)的探讨。包含大量案例研究和对敏捷开发领域一些领导者的访谈。
SCRUM 实践
缩减规模的好处
关于 SCRUM 在开发公司缩减规模的情况下仍能帮助开发项目取得成功的案例研究。
http://www.mountaingoatsoftware.com/articles/UpsideOfDownsizing.pdf
敏捷有效吗?
一些关于 SCRUM 成功的案例
http://www.sdmagazine.com/documents/s=7147/sdm0206a/sdm0206a.htm
敏捷会议
这是一篇关于敏捷会议的文章,其中很大一部分介绍了敏捷会议如何帮助现实团队通过相互沟通来预防问题。
http://www.intp.us/risingl1/articles/STQE.pdf
工具
XProgramming 单元测试下载区
提供大多数常用语言的单元测试软件下载链接。
http://www.xprogramming.com/software.htm