流行的敏捷框架Scrum
Scrum是一种敏捷开发框架。在这种框架下,工程师可以高产、创造性地开发出高价值的软件产品。全球超过70%的敏捷团队在使用Scrum(包括把Scrum整合到开发流程中的情形),并在管理复杂产品开发方面受益。
Scrum框架介绍系列共分7篇文章,系统地介绍Scrum的理论、价值、角色和事件。最后,还会介绍在大规模开发环境中开发复杂项目的几种流行Scrum框架。
什么是敏捷
在谈到Scrum的时候,总是不避免地提到敏捷(Agile)。那么,什么是敏捷?敏捷和Scrum之间是什么关系呢?
在敏捷开发宣言里,提到了敏捷的四条价值观:
-
软件工程师的能力、主动性与工程师之间的交互,高于开发流程和工具。
-
可运行、可交付的软件,高于详尽的需求文档、设计文档、开发文档等。
-
工程师与客户之间的合作,高于合同与谈判中的达成的协议。
-
拥抱变化,及时对变化作出相应,高于遵循最初制定的计划。
针对这四条价值观,还提出了12条原则:
-
我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
-
欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
-
经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
-
业务人员和开发人员必须相互合作,项目中的每一天都不例外。
-
激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
-
不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
-
可工作的软件是进度的首要度量标准。
-
敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
-
坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
-
以简洁为本,它是极力减少不必要工作量的艺术。
-
最好的架构、需求和设计出自自我组织的团队。
-
团队定期地反思如何能提高成效,并依此调整自身的举止表现。
由此可见,敏捷开发是一种价值观,它提出了符合敏捷的12条原则。而实现这种价值观,并符合敏捷原则的框架,就是敏捷开发框架。在众多的敏捷开发框架中,Scrum无疑是最流行的。
什么是Scrum
Scrum是一种敏捷框架。在这个框架下,软件工程师可以解决复杂的问题,与此同时,交付高质量、创造性的高质量软件产品。
Scrum是一个轻量的开发框架,易于理解,却难以掌握。
1995年的OOPSLA大会上, Ken Schwaber 和 Jeff Sutherland 提出了Scrum的概念, 之后,Scrum框架就用于管理复杂的产品开发。
需要说明,Scrum并不是开发产品的过程或技术,也不是一种方法论。它只是一种框架,在这个框架下,你可以运行各种过程或技术,开发出满足需求的产品。
在产品管理和开发中,Scrum很容易区分同一团队在不同迭代周期的效率差别,这也有利于团队不断完善自己。
图 1 Scrum框架
Scrum的理论基础
Scrum是以经验控制理论为基础。换句话说,它建立在经验主义的基础上。它假设我们的知识来自过去的经验,我们也是基于已知的事实做决策。在Scrum里,以过去的经验为基础,迭代地增量发布产品,尽量让结果与预期相符,降低产品交付的风险。在经验控制过程中,三大流程至关重要:透明、检查、改进。
瀑布模型的替代品
相对于传统的瀑布模型,增量开发、渐进交付敏捷方式优先关注高价值的功能需求,可以很快地从用户获取响应,并迅速调整。
Scrum可运用于各行各业,当然,最流行的还是用于软件产品开发。基于经验主义,产品团队增量地发布产品,以尽量规避风险,并增加与用户之间的理解。
图 2 瀑布模型中的价值交付
图 3 Scrum中的价值交付
一种改变组织架构的破坏性框架
Scrum的交付周期很短。要在这很短的周期内对需求作出反馈,对个人、团队、组织提出了很大的挑战。如果组织架构无法适应这种开发模式,我们不应修改Scrum来掩盖这些问题,而应鼓励调整组织架构来解决这些限制。否则,很难从Scrum框架收益,甚至不如运行Scrum之前。
再次说明,Scrum是一个框架,而不是定义的过程或方法论。Scrum包含角色、事件、事项、规则等。Scrum团队负责在此框架内创建和调整流程。Scrum的管理实践与极限编程(XP)类似,不同的是,Scrum没有规定具体的工程实践。
请你留言