目前软件开发除了强调产品质量,同时对产品能够快速发布并且迅速适应市场变化的要求也日益强烈。为适应这种开发环境和市场需求,传统的软件开发模式已被敏捷开发模式所替代。本文介绍敏捷软件开发中的Scrum方法,并结合实际问题,分析Scrum方法在实践中的运用。

产品质量和开发效率一直是软件产品开发的关键。随着科技和经济的发展,软件的市场环境和用户需求不断发生变化,这对软件产品的快速发布提出很高的要求。传统的瀑布模型、螺旋模型、原型模型等已不能适应越来越复杂和不断变化的需求和市场环境。近年来,敏捷软件开发逐步流行,并被广泛认识、研究和使用。敏捷开发具有应对快速变化的市场和需求的能力,因此,它被越来越多的公司企业采用。用于敏捷软件开发的方法有很多,其中Scrum方法是被广泛应用的方法之一。

1.Scrum简介

Scrum是一个增量的、迭代的开发过程,名称来自英式橄榄球的争球。Scrum的整个开发周期包括若干个小的迭代周期,每个小的迭代周期称为一个冲刺(SPrint),每个冲刺的长度一般为2到4周。在Scrum中,使用产品订单来管理产品或项目的需求,产品订单是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。开发团队总是先开发的是对客户具有较高价值的需求。在每个冲刺中,开发团队从产品订单中挑选最有价值的需求进行开发。冲刺中挑选的需求经过计划会议上的分析、讨论和估算得到一个冲刺的任务列表,我们称它为冲刺订单。在每个迭代结束时,开发团队将交付潜在可交付的产品增量。

Scrum的主要角色有:产品负责人、Scrum主管、开发团队。Scrum的会议包括:计划会议、评审会议、回顾会议、每日站立例会。Scrum的文档有:产品订单、冲刺订单、燃尽图。Scrum方法的运作过程就是产品负责人、Scrum主管、开发团队依据Scrum必需的文档,通过Scrum定义的会议方式展开的一轮一轮产品开发的迭代过程。

2.Scrum方法的实际运用

Scrum方法给出的是一个框架,各角色人员如何根据这个框架来实践Scrum,尤其如何利用好每日站立例会、评审会议、回顾会议,是影响敏捷开发效果的关键因素。在Scrum方法的实际运用中,会遇到或多或少的一些具体问题。笔者根据以往自身敏捷开发项目的经验,对这些问题作简要的分析,并给出有效的解决办法。

2.1每日站立例会

每日站立例会是Scrum主管和开发团队成员必须参加的会议。它是除了面对面沟通之外,开发团队成员的另一个有效的沟通交流方式。Scrum倡导的每日站立例会平均时间不超过巧分钟,开发团队的每个成员需要向Scrum主管回答三个问题:今天完成了哪些工作?明天打算做什么?完成目标是否存在什么障碍?

每日站立例会需要Scrum主管的有效组织。每日站立例会最常见的问题是,团队成员之间陷入了具体技术问题的讨论中,导致会议时间严重拖长,影响了会议的效率。还有一种情况是,一个成员汇报所遇到的障碍的时候,其他成员没有认真聆听,对一些共有的障碍或者有依赖性的问题没有引起足够的重视,导致大家都卡在同样的问题里,影响了开发的进度。

为使每日站立例会更加有效率,开发团队的每个成员需要控制好自己的发言时间,一般在3分钟左右。发言突出要点,简明扼要,不要详细论述具体技术问题。一旦发现团队成员开始讨论具体技术问题,Scrum主管应及时给与提醒,这样可以有效地控制会议时间。为了使每个成员都清楚目前项目的状况,尤其对可能影响完成目标的障碍有所了解,Scrum主管在每次例会结束之前把记录下来的障碍向开发团队总结一遍,让大家心中有数,确保第二天的开发工作不受广泛影响。这样做也有助于Scrum主管在接下来的工作中有效地为团队去除这些障碍。

2.2评审会议

在每一个冲刺的尾声需要进行一次评审会议,产品负责人、Scrum主管、开发团队必须参加评审会议。评审会议的目的是让开发团队向产品负责人展示在该冲刺完成的功能,回答与会人员对展示的疑问并记录所期望的修改。评审会议进程一般不超过4个小时,开发团队准备的评审展示内容一般不超过1个小时。评审会议包含阶段性验收的意味,如何才能在有限的展示时间内,得到产品负责人的积极认可和有效反馈,是在会议准备阶段和会议进行过程中必须注意的问题。

在会议准备阶段,开发团队应该按照本次冲刺的冲刺订单,组织产品功能的展示点,形成清晰简要的PPT文档。在会议现场最好能进行在线实际的功能展示,所以会议前开发团队要准备好工作站和设备等。同时开发团队还需要把能展现产品功能效果的图、表、日志等数据提前保存下来,以防突发情况导致现场展示失败时无内容可展示。在会议开始时,Scrum主管和开发团队需要确保所有人员对产品和该冲刺的目标有所了解,如果有人对此不清楚,则先用几分钟进行描述。然后,开发团队按照准备好的PPT文档,逐个介绍这次冲刺实现的结果,并且展示其功能效果。在展示的过程中,开发团队应该把重点放在“我们做了什么”,而不是“我们怎么做的”。这样可以让产品负责人对产品目前的功能状况有直观的了解,而不是陷入到技术细节之中。如果产品负责人想改变某些功能,Scrum主管把这个需求添加到产品订单中,留待以后的冲刺解决。

2.3回顾会议

回顾会议是在每个冲刺结束之后进行的,通常在评审会议后进行,它通过总结本次冲刺的实践经验,为团队指出日后改进的方面,避免团队重犯相同的错误。Scrum主管、开发团队必须参加回顾会议。回顾会议是Scrum方法中很重要的会议,利用好回顾会议,可以有效地提高团队的生产力。回顾会议需要鼓励团队成员积极参与,集思广益,否则,这个会议就会流于形式,达不到预期的效果。

在实际应用中,回顾会议的形式可以采取头脑风暴法模式。会议开始时,Scrum主管先给团队成员总结上次冲刺的回顾会议确定的改进内容的执行结果。然后,Scrum主管给每个成员发一张即时贴便签,让他们自己思考,回顾本次冲刺中团队做得好和做得不好且需要改进的地方,各选三点意见写在便签上,然后把便签贴在白板上。等所有成员都把写好的便签贴在白板上后,Scrum主管和团队成员一起逐条讨论便签上的意见,充分理解团队成员的想法。讨论过程中,Scrum主管对相似的意见进行合并,对有依赖相关性的问题进行梳理。回顾会议结束后,Scrum主管就可以得到本次冲刺做得好的地方和需要改进的内容。那些需要改进的内容供下次冲刺的回顾会议进行效果跟踪。

3.小结

Scrum方法是敏捷开发的一个框架,它并没有规定具体的实践方法。Scrum提倡灵活,遵循敏捷开发以人为本的原则,这需要软件项目管理人员根据企业文化、管理模式、开发团队的经验等因素,选择合适的方案。

敏捷开发之Scrum方法运用的更多相关文章

  1. 总结敏捷开发之Scrum

    敏捷开发的概念 敏捷开发是一种以人为核心,迭代,循序渐进的开发方法. 为什么说是以人为核心?传统的瀑布模型是以文档驱动的,但是在敏捷中,只写少量的文档,注重的是人与人之间面对面的交流. 什么是迭代?迭 ...

  2. [转载]敏捷开发之Scrum扫盲篇

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...      为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述S ...

  3. 敏捷开发之Scrum扫盲篇

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中 ...

  4. 敏捷开发之Scrum扫盲篇(转)

    转:http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP.. ...

  5. 敏捷开发之Scrum

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中 ...

  6. 转:敏捷开发之Scrum扫盲篇

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中 ...

  7. 敏捷开发之Scrum扫盲篇(转)

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后于他人,我也开始学习Scrum.今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的语言来描述Scrum中 ...

  8. 【转】敏捷开发之Scrum扫盲篇

    现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中 ...

  9. 敏捷开发之Scrum站立会议

    Scrum是迭代式增量软件开发过程,通常用于敏捷开发.站立会议通常指Scrun方法中的每日站立会议.顾名思义,是每天以站姿的方式召开的会议.以下从功能及要点方面对其进行解释说明: 功能:     1. ...

随机推荐

  1. 如何使Label显示时,一行顶部居中,两行靠左显示----董鑫

    有时我们会碰到这种情况,一个要根据内容显示一行还是两行,一行时还要靠着顶部再居中,比如下面 最左边的名称,要求是靠上的,如果按照正常的方式写的话,可能一行的话就会出现居中显示了,不会顶着头部显示. 我 ...

  2. python篇第5天【变量】

    第4天加班 多个变量赋值 Python允许你同时为多个变量赋值.例如: a = b = c = 1 以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上. 您也可以为多个对象指定多个变 ...

  3. 海康PTZ云台摄像头调试之直接控制云台(C#)

    众所周知,海康的摄像头sdk较为完善,但是对于新手来说还是有点麻烦. 今天写一篇随笔给大家展示下怎么控制海康摄像头的云台(前提是有ptz云台设备) 1.sdk准备 本文基于C#的frame来开发一个p ...

  4. 2018 PHP面试题

    2018 PHP面试题 题目来自<PHP程序员面试笔试宝典>,里面涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. 1.PHP常考基础 1.PHP ...

  5. 2、网络并发编程--套接字编程、黏包问题、struct模块、制作简易报头、上传文件数据

    昨日内容回顾 面向对象复习(json序列化类) 对象.类.父类的概念 三大特性:封装 继承 多态 双下开头的方法(达到某个条件自动触发) __init__:对象实例化自动触发 __str__:对象执行 ...

  6. 08python语法入门--基本数据类型及内置方法

    数字类型int与float 定义 类型转换 使用 字符串 定义 类型转换 使用 优先掌握的操作 需要掌握的操作 了解操作 列表 定义 类型转化 使用 优先掌握的操作 需要掌握的操作 了解操作 元组 作 ...

  7. 深入MySQL(二):MySQL的数据类型

    前言 对于MySQL中的数据类型的选择,不同的数据类型看起来可能是相同的效果,但是其实很多时候天差地别. 本章从MySQL中的常用类型出发,结合类型选择的常见错误,贯彻MySQL的常用类型选择. 常用 ...

  8. MCU与MPU的基本区别

    MCU与MPU的基本区别 题记:一般来说,mpu的价格是mcu的数倍. 参考资料: http://www.elecfans.com/d/1564656.html https://zhuanlan.zh ...

  9. [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (6) --- Distributed hash表

    [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (6) --- Distributed hash表 目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- ...

  10. Python+selenium自动循环扔QQ邮箱漂流瓶

    Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...