Scrum实践
看到园子里对Scrum讨论很火热,感觉不敏捷就落伍了。 趁着最近工作比较空闲,总结一下以往对Scrum敏捷开发的实践。
传统的软件开发模式是怎样的?存在什么样的问题?什么是Scrum?Scrum解决了什么问题?如何实施Scrum敏捷开发?下面我们带着这么些个问号去揭露Scrum的神秘面纱。
传统瀑布式模型,如图:
传统瀑布式模型的基本特征:你给我所有需求,否则你就要投入更多的成本。在开发阶段一旦需求变更,那代价是巨大的(越往后需求问题的代价越大),并且在这种模式下开发大型应用,在做需求阶段也不可能事先预知所有需求。在这期间”涌向出来的东西“就是我们无法预知的需求。
需求问题的代价,如图:
下面我们的救世主Scrum敏捷“粉墨登场”。
Scrum由四根支柱支撑:它是由自组织且跨职能的团队为了生产高优先级功能的交付增量所作的迭代式开发。
1、Scrum:
- 它是产品开发游戏中所使用的一种框架。
- 团队做得是好是坏是高度透明的。
- 团队能够不断的自我提升。
- 不能告诉你如何把产品做得又快又好。
2、为何要”敏捷“:
- 加强对项目的掌控。
- 减低风险。
- 投资回报的最大化。
- 提升成功的可能性。
3、Scrum团队:一般控制在7±2人左右。在实施迭代过程中,需要保证团队人员的稳定性,避免外界的干预和打扰(全身心做做好每次冲刺迭代)。在7±2人的团队中包含:
1、Product owner(牧羊人):产品负责人
2、Scrum Master(牧羊犬):项目经理
3、Team(羊):团队成员
4、Scrum实施过程:
- Release Planning:Scrum核心过程:如图
- 基本前提:1、产品的市场愿景。 2、一份功能、技术和议题的列表。
- 实施过程:1、所有人对愿景达成一致意见。2、对列表进行优先级进行排序和细分。3、根据商业计划制定近期里程碑。4、对列表进行初始估算。
- 得到成果:1、包含最紧急工作且经过优先级排序和初始估算的Product BackLog(产品开发功能清单)。2、工作优先级越高、其细化程度越高。
- Sprint Planning[冲刺计划]:
- 基本前提:1、Product Backlog。 2、团队工作能力。3、较稳定的技术。4、业务限制条件。
- 实施过程:1、确定冲刺目标,详细讲解本次冲刺需求,开发人员对Backlog进行初始估算。开发团队给出承诺得到初步的Backlog。2、认同得到的Backlog,按照小时/天将Backlog拆分为任务。
- 得到成果:1、本次Sprint的目标。2、细分任务且进行估算的Sprint Backlog。
- Daily Scrum[每日站立会议]:
- 基本前提:1、固定的15min。 2、固定的地点。3、任务版。
- 实施过程(每个组员回答以下三个问题):1、自上次会议到现在都做了什么?2、
在下一次会议之前打算做什么?3、目前有什么阻碍?
- 得到成果:1、目前存在的障碍2、达成的一致意见.3、更新的Sprint Backlog 4、更新的Spring燃尽图
- Sprint Retrospect[冲刺回顾会议]
- 基本前提:1、Sprint Review的结果及反馈。 2、必要的Sprint执行数据
- 实施过程:1、哪些做得不错,哪些需要改进.2、根据团队情况对需要改进的地方进行优先级排序。3、由Team找出大部分问题的解决方案
- 得到成果:1、最紧迫的需要改进的1-2个问题 .3、最紧迫问题的解决方案
5、Scrum带来的挑战:
- 控制需求细节
- 得到一份Product Backlog
- 寻找一名Product Owner
- 任务量估算
- 每日任务量估算以及分解
- 与其他团队的合作[可能出现的优先级冲突]
- 对跨职能团队的理解
6、敏捷的核心价值观:
- 让大家自己找出应该做的事情,然后完成它
- 让人们富有创造性
-
用正确的方式做该做的事•尽最大努力实现承诺•不断提升生产力•让工作变成享受
7、关于Scrum,请记住这些:
- Scrum是有效的=>但它并不是只靠一己之力的
-
Scrum很简单=>但也很难
-
Scrum可能会很痛苦=>因为它暴露了问题
-
Scrum是与众不同的请准备好,因为你的观念将会转变
8、推荐网站
•Scrum联盟官方网站 - www.scrumalliance.org
•敏捷宣言 - www.ailgemanifesto.org
•LinkedIn Scrum China小组 - http://www.linkedin.com/groups?gid=3343227