vlambda博客
学习文章列表

敏捷开发之SCRUM扫盲


IT技术已经深入到商业社会的每个角落,同时也加速了商业竞争,商业的激烈竞争又反过来对IT技术提出了更高的要求。


开发周期不断变短,发布频度不断变快,在这种情况下,传统的瀑布模式开发明显不能满足这种需求,于是敏捷开发逐渐被接受,并在实际的项目开发中得到应用。


传统的瀑布式开发,是从需求到设计、从设计到编码、从编码到测试、从测试到提交的过程中,每个开发阶段都要做到最好,一个工程阶段结束后才能进入下一个阶段。


而敏捷开发是将开发过程分成多个小周期,用迭代的方式实现软件的最终需求。瀑布式开发强调不变,而敏捷开发就是要适应变化。



敏捷开发适用于竞争激烈、快速变化的市场。在产品研发中采用敏捷开发方式比较多,因为敏捷开发能够及时了解市场需求,降低产品不适用的风险。比如:Instagram 最初是一个地理位置打卡APP,后来发现用户不怎么在乎地理位置,更喜欢上传照片,就改做照片上传软件,结果成了独角兽。


敏捷开发之SCRUM扫盲


在敏捷开发模型中,最为有名的是Scrum。


从上个世纪90年代已经得到了广泛的应用。在日本的软件开发中,近年也在一些项目得到尝试并在不断推广。


那么Scrum到底是什么呢?按照官方定义,Scrum是一个框架,在此框架中人们可以解决复杂的自适应难题,同时也能高效并创造性的交付可能最大价值的产品。


有点生涩难懂!我还是用“白话文”来简单解释一下Scrum开发到底是个啥。


敏捷开发之SCRUM扫盲


1.  Scrum

Scrum本来是橄榄球运动的一个专业术语,表示“争球”的动作。

开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它。


Scrum就是这样的一个开发流程,运用该流程,使团队高效的工作。

 


敏捷开发之SCRUM扫盲


2.  团队

Scrum开发团队一般由5~9人组成

由三种角色组成。


产品负责人(Product Owner)

主要负责和客户沟通以确定产品的功能和达到要求的标准。

产品负责人是负责管理产品待办列表的唯一负责人。


产品待办列表的管理包括: 

清晰地表述产品待办列表项; 

对产品待办列表项进行排序,

使其最好地实现目标和使命; 

优化开发团队所执行工作的价值; 

确保产品待办列表对所有人是可见、透明和清晰的,

同时显示 Scrum 团队下一步要做的工作;

确保开发团队对产品待办列表项有足够深的了解。


产品负责人可以亲自完成上述工作,或者也可以让开发团队来完成。


流程管理员(Scrum Master)

主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍。


Scrum Master 负责根据 Scrum指南中的定义来促进和支持 Scrum。Scrum Master 通过帮助每个人理解Scrum 理论、实践、规则和价值来做到这一点。


开发团队(Scrum Team)

开发主力!主要负责软件产品在Scrum规定流程下进行开发工作。

每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力。

 



敏捷开发之SCRUM扫盲


3.  Scrum的组成


Sprint

指的是一次迭代

而一次迭代的周期最好是1-4周

也就是我们要把产品需求分布到各个周期完成

这个过程我们称它为Sprint


Story

用户故事,也可以看做是用户需求点。


Product Backlog

产品待办事项列表,产品负责人量化用户需求

逐条列出实际需要开发的需求


Sprint Backlog

任务列表,是一次迭代中需要完成的任务

主要是开发团队细化工作的列表



敏捷开发之SCRUM扫盲


4.  事件


Sprint计划会

Sprint 计划会就是PO 向大家介绍排好序的产品待办事项(Product Backlog)

然后大家共同思考决定如何推进计划,梳理出 Sprint Backlog 来完成后续的工作。


Daily Scrum

每天召开的会议,每位开发成员都要说明3点,尽量在15分钟之内完成,需要解决的问题另行安排会议。

★  昨天完成了什么

★ 今天计划完成什么

 是否有困难需要帮助


Sprint 评审会

当一个Sprint完成,这时就要进行最重要的评审会议,产品负责人和客户都要参加。

每一个开发团队的成员都要演示自己完成的软件产品,然后被判定产品合格、成功、需要修改还是重新做。


Sprint 总结会

总结会议以轮流发言方式进行,每个人都要发言。

总结并讨论改进的地方,放入下一轮Sprint的产品需求中。



Scrum是一种轻量、易于理解但又难于精通的一种开发模式。


需要在实践的过程不断摸索已达到team成员的高效产出。