敏捷开发
敏捷开发过程重视团队的交流与管理问题,其提高研发效率的显著效果,使得敏捷开发逐渐成为继瀑布式开发之后,最为流行的软件开发方式,其中,Scrum过程无疑是目前最为成功的敏捷方法。
Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。
Scrum框架
在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是一至四周。
在Scrum中,使用产品BackIog来管理产品的需求,产品BackIog(Product Backlog)是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事(User Story)。
Scrum团队总是先开发对客户具有较高价值的需求。
在Sprint中,Scrum团队从产品BackIog中挑选最高优先级的需求进行开发。挑选的需求在sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint BackIog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。
Scrum3355
下面,我们就来聊一聊什么是Scrum框架敏捷项目管理核心要素之 3355。
所谓Scrum3355指的是:3个核心角色,3个工件,5个关键事件和5个价值观。
3个核心角色
产品负责人(PO)
负责最大化投资回报率(ROI),通过确定产品特性,把它们翻译成一个有优先级的列表,为下一个Sprint决定在这个列表中哪些应当优先级最高,并且不断地重新调整优先级和梳理这个列表。职责是定义需求,定义需求优先级,定义需求的验收标准,定义产品发布内容与日期。
Scrum Master/敏捷教练
帮助产品开发团队学习并应用Scrum来达成商业价值,为大家服务,会做任何力所能及的事情来帮助团队、产品负责人和组织取得成功。对应敏捷团队中的项目经理,但并非是一个项目经理。职责是促进团队的工作,帮助团队熟悉和掌握敏捷的价值观与框架,帮助排除影响生产力障碍,确保团队不受打扰。
开发团队
建造产品负责人所指定的产品。对交付结果负责。
团队是“跨职能”的,它包含了所有专业能力,如开发、测试、需求分析等,并且它是“自组织”[自管理]的,被给予很高程度的自治和责任。
3个工件
产品代办清单(Product BackIog)、Sprint迭代代办清单、潜在可发布产品增量
产品代办事项(Product BackIog)
产品代办事项,即产品视角的需求清单。
由Product Owner 负责维护,包括增删及优先级排序用户故事是其中一种最佳实践每项需求都需要描述其外部价值
Sprint迭代代办清单
Sprint迭代代办清单,即此次冲刺周期内规划要完成的内容。
来源于Product Backlog由团队评估和选择Product BackIog中哪些放入Sprint BackIog团队需要一起定义“完成”标准
潜在可发产品增量(Increment)
可交付产品增量(Increment),即冲刺结束后可对外发布的产品功能增量部分。
需要关注其是可工作的软件功能增量需要在Scrum Review会议上进行展示。
5个关键事件
Scrum五大事件,包括:Sprint、Sprint 计划会、每日 Scrum 站会、Sprint 评审会、Sprint 回顾会
冲刺(Sprint)
冲刺Sprint或迭代是一个特殊的事件,或者说其一个容器事件。后续四个事件包含在其中。
2~4周,固定周期,固定事件开始,固定事件结束。时间盒是其一个重要概念。
Sprint 计划会
Sprint规划会的核心议题是下一次冲刺要实现的目标和范围。
从Product Backlog中选取高优先级的需求,确定Sprint的目标,对产品backIog 中故事进行估算,以作为是否放入下期的参考。对于需求不清楚的故事,需要产品负责人进行说明。
会议中输入是Product backIog,输出是Sprint BackIog。
每日Scrum站会
站会的目标是促进信息在团队内共享与透明。每次15分钟左右,不对问题进行深入讨论,每天固定时间召开。
团队成员需要回答3个问题:昨天我做了哪些事情。今天计划要做什么事情。是否遇到问题,阻碍达成目标。
Sprint 评审会
评审会在冲刺默契召开,检查本期的成果,需要团队全员参与,并邀请产品相关干系人对产品进行展示,若与产品负责人预想的不一样,产品负责人可以拒绝接收成果。
Sprint 回顾会
冲刺结束后,团队一起复盘本次冲刺的过程,总结经验与教训,并形成切实可行的改进清单。
5个价值观
- 开放- Scrum把项目中的一切开放给每个人看
- 尊重- 每个人都有他独特的背景和经验
- 勇气- 有勇气做出承诺,履行承诺,接受别人的尊重
- 专注- 把你的心思和能力都用到你承诺的工作上去
- 承诺- 愿意对目标做出承诺,全身心投入去完成Scrum团队的目标,而不是必须按计划完成,两者之间是有区别的。
Scrum是一套解决复杂问题的框架,让我们以迭代和增量的方式,在最短时间内交付最大价值的产品。其中的流程并非一定完全硬套,工具是死的,要适当的根据实际情况作出调整,以适合团队的流程为首要原则。
敏捷也是一个持续优化的过程,通过持续交付、持续优化、持续改进、持续提升、持续塑造,最终实现小步快跑,快速迭代。