第三次作业
Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法:Scrum of Scrums.
1.Scrum的提出
Scrum是在十多年前由Ken Schwaber和Jeff Sutherland博士共同提出的,现在此方式已被众多大、中、小型企业使用,其中包括Yahoo!,Microsoft,Google,Lockheed Martin,Motorola,SAP,Cisco,GE Medical,CapitalOne和US Federal Reserve。许多使用Scrum的团队都取得了重大的改进,其中更有个别在生产效率和职业道德方面得到了彻底的改革。
Scrum其实仅仅定义了一个开发框架(Framework),具体的编程实践,完全取决于每个团队,并且是完全基于常识进行管理的。
2.什么是Scrum
一个轻量级的软件开发方法
Scrum是一个敏捷开发框架,是一个增量的、迭代的开发过程。在这个框架中,整个开发周期包括若干个小的跌代周期,每个小的的跌代周期称为一个Sprint,每个Sprint的建议长度2到4周。在Scrum中,使用产品Backlog来管理产品或项目的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum的开发团队总是先开发的是对客户具有较高价值的需求。在每个Sprint中,Scrum开发团队从产品Backlog中挑选最有价值的需求进行开发。Sprint中挑选的需求经过Sprint计划会议上的分析、讨论和估算得到一个Sprint的任务列表,我们称它为Sprint backlog 。 在每个迭代结束时,Scrum团队将交付潜在可交付的产品增量。
一个简单的框架

3.Scrum的特点
- Scrum规定了一个非常简单的开发流程。
- Scrum是现有设计流程的总结。
- Scrum以团队为基础,是一种在需求迅速变化情况下迭代地、增量地开发系统和产品的方法。
- Scrum是一个控制由利益和需求冲突导致的混乱的流程。
- Scrum是改善交流并最优化合作的方式。
- Scrum是一种检测产品开发和生产过程中障碍并将其去除的方式。
- Scrum是最大化生产率的一种方法。
- Scrum适用于单一的项目到整个企业。Scrum可以控制并组织多个具有相关性的产品开发以及
拥有超过千名开发者和执行者的项目实施过程。 - Scrum能让每个参与者都对自己所做的工作以及自己做出的贡献感到骄傲,并让他们发挥到最佳水平。
4.Scrum与敏捷开发原则的对应
- 保持简单:Scrum本身就是很简单轻量级的流程,它能简化我们的开发流程。
- 接受变化:Scrum鼓励将工作细分成小块。它关注的是一小段一小段时间,但是只有在这些时间段的中间,我们才可以重新调整工作的优先级。
- 不断迭代:Scrum需要在小于30天的一次次迭代中构建应用程序。
- 不断的反馈和改善:在每一次迭代的末尾,Scrum流程要求我们回顾以前是怎么做的,并且思考我们下次可以做哪些不同的事来改善流程。
- 协作:Scrum强烈鼓励团队成员的协作和沟通。如果没有这些,Scrum就一点用都没有。
- 减少浪费:Scrum帮助我们识别做那些只对客户或者团队有价值的事情。
5.Scrum的流程
1)先建立一个产品“订单”(Backlog)
2)做一个短期“冲刺”(Sprint)计划
3)执行这个计划(Scrum就是一个Sprint连着一个Sprint )
4)每天开一次短会,检查Sprint中每个任务的进展状况,对未完成的任务,要求任务所有人给出新的剩余工作量的估算。
5)Sprint评审:一个Sprint完成后,对工作成果的演示。
6)一个Sprint结束后,做一次回顾、反省。从团队的角度来审视哪里做得好,并继续保持,找出不好的地方,并寻求改善方法。
一个Sprint做完之后,要重新调整一次产品订单,然后再做计划,开始下一个Sprint。接着不断重复以上流程。
6.Scrum规则
- 必须有产品负责人(Product Owner)有可以代表客户的人一起工作,
当团队在决定应该构建什么样的产品时,Product Owner就是他们要询问的对象,Product Owner代表着客户的需求与利益。 - 必须有根据业务价值排定了优先级且估算过开发工作量的产品订单(Product Backlog) ,形式不限,Product Owner为一次版本发布构建路线图所需要的依据。注:Product Backlog里每一个条目应该有估计完成时间,这个并不需要很准确,只需要有一个大概的估算即可,这样才能够决定把多少工作放到一个Sprint里。
- 团队在开发过程中,要使用Burndown图(烧制图),来展示当前迭代中随着时间的推进,剩余工作量的变化,以跟踪进度,并且能否基于Burndown图来推算团队的速度。
- 在迭代中,项目经理不能干涉团队工作,因为这会停止自组织的过程,并且得到解决方案的过程将不再是最优化的了。
7.Scrum与其它敏捷实践的融合
Scrum只定义了一个项目管理框架,没有给出具体的编程实践指导,依靠的是经验管理,所以没有定义出很细的工程实践。这样才能很好地跟组织原来的工程实践融合起来,譬如跟CMM、ISO 9000、RUP,甚至XP等都能很好地工作在一起。因为Scrum主要是想解决项目管理和组织实践范畴的东西,更多的是关注在敏捷团队建设上,它的终极目标就是自我管理自我组织的高效团队。作为一个敏捷框架,建议最初先努力适应这个框架,待成熟后再考虑引入其他敏捷实践。
Scrum流程图:


浙公网安备 33010602011771号