什么是敏捷?什么是Scrum?他们是什么关系呢?我们一起来学习一下。
什么是敏捷
广义敏捷
敏捷是一种通过创造变化和响应变化在不确定和混乱的环境中取得成功的能力。
敏捷开发
平时说的敏捷,我的理解指的是敏捷开发,并不一定指的是软件开发,也可以用于其他行业的项目管理中。
敏捷是使用适应型生命周期来替代预测型生命周期。预测型生命周期预先定义和设计产品,它的目标是根据计划来实现设计。那么,当无法对产品进行预测时,就可以使用适应型生命周期。在适应型生命周期中,它遵循一个反馈环,那就是先创建一个小的但可以使用的产品的子集,并通过对它们的使用获得反馈,然后根据获得的反馈设计和创建下一个产品子集。
它允许产品从不明确的需求和环境中涌现出来,因此,能够非常灵活的面对变化。它很灵敏迅速,因为变化不会减慢它的速度。
下图演示了预测型方法和适应型方法的不同:
敏捷软件开发
敏捷软件开发是基于敏捷宣言定义的价值观和原则的一系列方法和实践的总称。自组织、跨职能团队运用适合他们自身环境的实践进行演进得出解决方案。
敏捷可以用于所有项目吗?
答案肯定是不能的。
对于一个适应型生命周期而言,有两个主要的需求,在这两个需求中都需要启用真正的反馈环:
增量交付
增量交付意味着你应该一步一步地创建产品的“可用”子集,而不是在项目结束时一次性交付。比如说一个软件系统:你可以拥有一个简单的版本,并通过每隔几周添加新特性来创建一个新版本(增量)。每个版本都是可用的,新的特性为用户/客户带来了更多的价值。而无法使用的可交付物不能创建所需要的真实反馈,比如说在建筑类项目当中,刚完成了建筑地基,就交付给客户,客户可以使用吗?显然是不行的。隔一个月再交付一层给客户,客户依然无法使用或入住,必须等全部完工才可以使用。
迭代开发
为了增量交付,你需要迭代开发,这意味着你应该重复开发过程。对于一个软件来说,你需要单独的设计、编码、集成和测试每一个产品的子集,而不是将所有的东西一起设计、一起编码,然后一次性集成(瀑布模式)。比如在建筑类项目当中有可能实现吗?你能在不设计建筑其余部分的情况下设计地基吗?不可能,因为在这一类产品中,元素之间存在不可避免的依赖关系。
这就是为什么敏捷并不能应用于每一个项目当中,就好比不能应用在建筑类项目。但是,你可以确定一个项目的某些部分,它们可能具有迭代开发和增量交付的能力。对于一个建筑类项目来说,室内装饰是一个很好的例子,它可以用一个敏捷方法来完成。
什么是Scrum
首先我们需要先了解怎样才能变得敏捷,我们需要有一种使用适应型生命周期的实用的方法,这种方法提供一步步的步骤,以及需要遵循的一些规则,还要提供一组角色和职责来对项目进行组织,最后还要提供许多管理产品作为工具对开发进行支持,以上这些内容都是由敏捷方法或框架提供的,Scrum就是最流行的敏捷框架。
下面的动画演示了敏捷是如何在Scrum框架中工作的:
符合敏捷的敏捷框架有哪些
Scrum
Scrum是当下使用范围最广的一种敏捷方法,这种开发模式也称为“橄榄球”式方法:团队成员都对产品开发的整个过程保留自己的看法,实现自治。产品开发方式由线性方法转向集成方法,这种转变刺激团队内部各层次间的交叉学习、交流以及思维发散。
Kanban
Kanban 是把敏捷的过程和产品进行可视化的方法。 它相当于是一个信号系统把软件制造过程中的协作、分工、范围、工作、需求、进度、速度、成本、提交物等直观地展现出来。
功能驱动开发模式(FDD)
功能驱动开发模式(FDD)主要针对中小型软件开发项目,“是一个以Architecture为中心的,采用短迭代期、目期驱动的开发过程。它首先对整个项目建立起一个整体的模型,然后通过两周一次‘设计功能——实现功能’的迭代完成项目开发。”
极限编程
极限编程(XP)以客户的需求变化为重点,同时强调团队合作。XP更为注重开发过程中,团队(包括客户、管理人员、开发人员)不约而同地聚在一起讨论方案,解决难题。
水晶方法
水晶方法: 水晶方法论是由Alistair Cockburn和Jim Highsmith建立的敏捷方法系列。Alistair Cockburn将水晶方法细化为透明水晶方法论(Crystal Clear)、黄色水晶方法论(Crystal Yellow)、橙色水晶方法论(Crystal Orange)以及红色水晶方法论(Crystal Red)。这几种水晶方法论按照项目重要程度以及参加人员规模进行划分。