浅谈Scrum

 

Scrum的起源

    Scrum这个名字来源于英式橄榄球的一种争球方式,为什么要取这个名字?大概创造者认为这种敏捷开发方法跟Scrum有相似的地方吧,迭代,反馈,快速反应和有效的沟通。

    1991年Degrace和Stahl在《Wicked Problems, Righteous Solutions》中首次提到了Scrum。

    1995年,在美国德克萨斯州,奥斯汀举办的OOPSLA上,美国人Ken Schwaber和Jeff Sutherland联合介绍了Scrum。他们在接下的几年里合作,把前辈们的文章,他们的经验,以及业界的最佳实践融合起来,形成我们现在所知的Scrum。

    Scrum好像是最早提出的一种敏捷方法,之后又出现了Xp、Crystal、FDD、Lean等等……

    现在在中国大陆,Scrum已经成为最流行的敏捷开发方法之一。

 

Scrum过程

    在我看来Srum是一种轻量级的软件过程,它是一个项目管理框架。

    它是由一套关于项目的开发流程,开发维护人员沟通方法,各种最佳实践组成的。

    一个完整的Scrum流程包括很多个Spint(就是迭代),每个sprint在2到4周不等。

        1.        在项目开始时,将所有需要完成的工作列在一个Product Backlog中。

    每次Spint时:

        1.        召开Sprint计划会议,在会议上产品负责人(Product owner)为Product Backlog中各项功能需求确定优先级。

        2.        随后,开发团队“认领任务”,并把这些任务从Product Backlog中挪到Sprint Backlog中去。

        3.        每天举行站立会议,参加人员Team Leader和Srum团队,时间尽量短,15分钟即可。每个人回答3个问题:

            a)        你已经做了什么?

            b)        你即将做什么?

            c)        你遇到了什么困难?

            会议完后,相关人员可讨论遇到的问题。

        4.        一个Sprint结束之后召开Sprint评审会议。会议主要展示本次迭代完成的原型,主要参与者包括所有对该产品感兴趣的人,可以是产品负责人,开发团队,客户等等,时间控制在两小时以内。

        5.        召开Sprint回顾会议。会议由产品负责人、团队开发人员和Team Leader参加,总结本次迭代哪些做得好,哪些做得不好,团队在下一次sprint中要如何改进。

 

Scrum角色

    Product Manager:偏向于行政管理的角色,负责产品质量,保证项目预期商业价值和目标。使团队在开发过程中,免受打扰,在任何情况下提供保护和援助。

    Scrum Master:相当于首席程序员,保证Scrum流程顺利执行,排除Product manager和开发团队之间的障碍。改善工程实践和工具,千方百计提高团队的生产力。

    Scrum Group:开发实现团队,具有完全自主性。

 

Scrum开发实践

       在微观的层面上,Scrum吸收了其他敏捷方法的技术实践,包括XP的TDD、持续集成、验收测试、结对编程、重构。

       自动化测试,代码评审等等……只要是优秀的实践都可以拿来用。

 

Scrum的优缺点

    Scrum的优点就是敏捷的优点,很注重实效,能更好的应对变化。

 

    缺点是,他过于强调了人的自我管理。 有的观点认为,Scrum适用于一帮资深程序员组成的团队,每个人都是牛人,每个人都有激情干活,这样才work。在国内大家缺乏能动性,没什么激情,很不适合Scrum。

    还有一个问题,就是很容易不停的因为目标变化而重新设计,最终导致不能交付。

 

    Scrum并不能保证项目成功,它只是给你更多的反馈,更多的可控性,让你更灵活的应对变化。在实际项目中我们应该对Scrum进行可适应性调整。

你可能感兴趣的:(浅谈Scrum)