hufeng00 2015-07-23
《笔者带你剖析敏捷开发——Scrum》
前言
敏捷这个话题,已经热门很久了,笔者记得从08年开始就一直在断断续续的接触敏捷,但是究竟什么是敏捷,或许之前笔者自己也没有完全意义上弄清楚,它到底是一种技术?还是一种方法论?并且与传统的瀑布开发模式有什么不同呢?带着这些疑问,笔者陆陆续续、断断续续从不同的研发团队、项目中将这些零碎的信息点加上近段时间扩充的知识点进行了有效且合理的整合,为了更好的在技术团队中使用敏捷,感受敏捷所带来的好处,因此本篇博文就此诞生。
正文
或许经常看笔者博文的同学会觉得奇怪,笔者博文的格式一般都是采用小学生作文形式展开,优美的前言加上严谨的目录编排,为何这篇博文却木有目录?是这样的,毕竟笔者并不是一名专业的敏捷开发专家,因此也只能泛泛而谈,所以定目录会阻碍笔者编写博文的心情,请大家理解。
这样,先从前言的几个疑问开始。简单来说,敏捷它并不是一种技术,仅仅只是一种开发流程,和传统的瀑布模型不同,瀑布模型注重的是以文档为核心,也就是文档驱动,开发人员无论做什么都严格按照文档上规划制定的方案,有条不紊的执行。而敏捷是以人为核心,强调的是人与人之间的沟通(Face to Face)、项目迭代式开发。
其实所谓的迭代式开发指的就是将原本一个较为复杂的任务,根据任务周期划分为多个小任务,直到这个任务足够小,那么再以小周期的形式逐步完成这些小任务,这样每一个周期就是一次任务迭代,每次迭代产出的都是可以进行交付上线的产品。希望大家注意,使用敏捷开发只有一个目的,就是希望能够以一种有效且合理的软件开发流程换取技术团队高效的产出率,否则任何形式的开发流程都无意义。那么合理的运用敏捷,确确实实可以让你的团队充满激情,高效的代码产出率。
笔者本篇博文只会对Scrum进行讲解,不涉及XP。当然实际项目开发过程中,Scrum与XP往往是结合在一起执行的。Scrum开发流程中有3个非常重要的角色,如下所示:
1、产品负责人(Product Owner):明确具体需求,制定上线计划和产出内容,有权力Pass Scrum Team的产出;
2、流程管理员(Scrum Master):推进Scrum开发流程的实施与跟进;
3、开发团队(Scrum Team):在Scrum开发流程下进行具体施工;
下图为Scrum开发流程的详细试图:
图A-1 Scrum开发模型
图A-1中,2-4周指的是一次迭代过程(Sprint),也就是说,Scrum Team要把一次迭代的开发内容以最快的速度进行完成,因此这个过程我们称之为Sprint。那么就近应该如何玩转Scrum开发流程呢?首先Product Owner需要制定一个明确的按优先级顺序进行排列的需求列表,这个过程简称为Product Backlog;然后Scrum Team团队需要根据Product Backlog列表,做一个大致的人力预估和周期预估;紧接着,Scrum Team的技术负责人与Product Owner需要通过一个任务迭代会议( Sprint Planning Meeting)挑选出一个Story作为首次迭代的目标,由于Story还需要进行细化,因此最后会形成一个Sprint Backlog;Scrum Team会负责
Sprint Backlog,然而Scrum Team中的每一个成员会对Sprint Backlog根据需求进行更细粒度的划分,直到这个任务足够小为止,然后每一个任务所耗费的周期应该锁定在1-2天内消化掉,总之整个Sprint Backlog会在2-4周之内结束;Scrum Team在每天实施Sprint Backlog的过程中,每天上班的第一件事情就是进行站会(Daily Scrum Meeting),时间最好控制在5-15分钟,并且Scrum Team中的所有人都要轮流进行发言,阐述昨天做了什么,没完成什么,做完了什么,遇到哪些问题等,如果任务已经完成,则Sprint burn down,在黑板上进行更新;当一次Sprint Backlog完成,就意味着一次任务迭代结束,这时有必要执行一次演示会议,因为Product Owner需要进行验收,并有权利进行Pass。简单来说,这些就是笔者在实际开发过程中接触到的Scrum开发流程。站会形式如下:
图A-2 站会形式
这里说一下,小黑板是执行Scrum的关键,因为小黑板上明确了Scrum Team的进度,因此小黑板也可以称之为任务看版。简单来说,任务看版上可以划分为未完成、进行中、已完成等3钟类型的工作状态,分别用不用颜色的小卡片贴上去(每一个颜色的小卡片代表Scrum Team中的一个成员),并写明具体的任务计划,假设某个任务已经完成,那么就需要将小卡片贴到已经完成的区域中,其实这很清楚的就可以清楚团队中每一个人的工作进度,假设你的某一个任务点在未完成区域停留了多日,那么肯定是其中哪一个环节出现问题了。
图A-3 任务看板
最后再提及一点,在Scrum Team执行Sprint Backlog的过程中任何新增需求都不允许添加进来,Scrum Master需要进行严格把关,不允许开发团队收到骚扰。