敏捷开发的流程是什么

敏捷开发的完整流程主要有:

1、需求收集;

2、梳理产品需求,Product Owner 需确定优先级等事项,然后在产品需求梳理会与敏捷团队达成协商一致产出产品需求列表;

3、制定迭代计划,通过Sprint计划会,确定当前冲刺期间要执行的工作;

4、迭代开发,期间会通过每日站会同步进度,识别风险;

5、Sprint评审会,以观看增量演示或检查增量,确定是否发布上线;

6、Sprint回顾会,敏捷团队讨论反思,并计划改进本次迭代中的问题。

下面我们将展开详细介绍:

一、敏捷开发流程

敏捷开发采用循序渐进的方法进行软件开发,把一个大项目分为多个相互联系,但也可独立运行的小项目,分别去完成,在此过程中软件一直处于可使用状态,敏捷开发的具体流程如下(以Scrum框架为例):

1. 梳理产品需求(Product Backlog)

在开发之前,一定会有一个需求列表,如上图展示的,它来源于公司对产品的战略规划、市场和客户提出的用户故事或缺陷等等。

在收集产品需求后,在敏捷流程中,会有一个角色对需求进行管理,这个人称为 Product Owner(PO),PO(产品负责人)要去定义了产品在接下来需要具备的特性和功能,定义 Product Backlog 时,需要遵循 INVEST 原则,即:

  • Independent 独立的,尽量和其他需求没有依赖
  • Negotiable 可讨价还价的
  • Valuable 有价值的
  • Estimable 可预估的
  • Small 足够小,拆分到一个迭代内能完成
  • Testable 可被测试的

定义需求的同时,Product Owner 还需要定义需求的优先级,定义优先级可以借助一个公式:功能带来的的价值除以实现难度, 这个值越大则代表优先级越高。

2. 制定迭代计划

一般规定两周( 10 个工作日)为一个迭代,在迭代开始之前,需要召开迭代计划会(Scrum 四个会议之一)制定这一个迭代的计划,把 Product Backlog 按照优先级排序。

并且由 PO 为大家讲解具体每一个需求,团队成员根据需求的复杂程度评估每个任务的工作量,当前 n 个任务的工作量之和约等于团队总工时时,那么这个迭代就把 Product Backlog  中前 n 个任务作为这次迭代的任务,在敏捷中称之为 Sprint Backlog。

团队总工时的计算方法:如果团队有 5 个工程师,一个迭代的工时为 5 * 10=50 人日,考虑到工作效率和其他的意外情况,再乘以 80% ,那么最终实际用于开发的工时为 40 人日,有些团队会以小时作为单位,同理,只需将单位换成小时。

3. 迭代执行

在迭代进行期间,由大家认领白板上的 Backlog,每天早上要开一个每日站会,时间在 15 分钟以内,由大家依次报告:

  1. 我昨天做了什么
  2. 今天计划要做什么
  3. 遇到了哪些问题

每日站会强迫每个人向同伴报告进度,迫使大家把问题摆在明面上,尽可能让信息公开透明。报告进度的同时移动对应的卡片到合适的位置,修改 Backlog 剩余所需要的工作量,Scrum Master 需要统计剩余所有的工时,更新到燃尽图中。当燃尽图的走到 0 ,就意味着完成了这个迭代中所有的任务。

燃尽图-图来敏捷开发管理工具PingCode

4. Sprint评审会

在冲刺结束时,团队聚集在一起进行非正式会议,以观看增量演示或检查增量。开发团队向利益相关者和团队成员展示目前处于“已完成”状态的待办事项,以征求他们的反馈意见。尽管在多数情况下都会发布增量,但产品负责人仍可决定是否发布增量。

5、Sprint回顾会

回顾会议发生在评审会议之后,下一个Sprint计划会议之前。回顾会议的时间盒,以一个月的Sprint来说,回顾会议不超过3小时,半个月的Sprint,回顾会议不超过1.5小时。回顾会议由Scrum团队检视自身在过去的Sprint的表现,包括人 、关系、过程、工具等,思考在下一个Sprint中怎么样可以表现得更好,更高效,怎么样可以和团队合作地更愉快。

我们的某次迭代回顾会的记录和改进计划以上是实施敏捷开发模式的大致流程,当然,在实际执行过程中会遇到或多或少的问题,一般需要几个迭代的熟悉和磨合。

二、敏捷开发中的角色

1、产品负责人(Product Ower)

主要负责构建正确的产品,确定 Scrum 团队交付什么并解释为什么做这些工作。产品负责人是产品方面的佼佼者。他们专注于了解业务、客户和市场要求,然后相应地确定工程团队需要完成的工作的优先顺序。高效的产品负责人应能:

  • 构建和管理产品待办事项。
  • 与企业和团队密切合作,以确保所有人都能了解产品待办事项中的工作项。
  • 明确指导团队接下来提供哪些功能。
  • 确定何时发布产品,且倾向于更频繁地交付产品。

产品负责人并不一定是产品经理。产品负责人专注于确保开发团队为企业带来最大价值。此外,产品负责人是一个个体,这一点非常重要。没有开发团队需要多个产品负责人所提供的的混合指导。

2、Scrum Master

主要负责帮助产品负责人和开发团队中的每个人理解和拥抱Scrum的价值观、原则和实践。Scrum master 是其团队中在 Scrum 方面的佼佼者。他们负责对团队、产品负责人和企业进行 Scrum 流程方面的培训,并寻找方法细调他们在此方面的实践。

高效的Scrum 主管应深入了解团队正在执行的工作,并可协助团队优化其透明度和交付流程。作为最主要的推动者,此角色负责安排冲刺规划、每日短会、冲刺审核和冲刺回顾所需的资源(人力和物力)。

3、Scrum 团队

负责以正确的方式构建产品,执行具体工作任务。Scrum团队是具体工作的执行者,成员通常为 5 到 7 名。

确定团队规模的一种方法是亚马逊首席执行官 Jeff Bezos提出的著名“两个披萨原则”(团队应该足够小,以便分享两个披萨)。团队成员具有不同的技能,并且彼此互相锤炼,因此没有人会成为交付工作的瓶颈。强大的Scrum 团队遵循自我组织原则,且会在处理项目时采取明确的“我方”立场。团队的所有成员会互相帮助,以确保成功完成冲刺。

Scrum团队可推进每个冲刺的计划。他们将自己的历史速度用作指导,预测他们认为自己在迭代过程中可以完成的工作量。保持迭代长度固定可为开发团队提供有关其预估和交付流程的重要反馈,进而使其能随着时间的推移做出更加准确的预测。


推荐阅读:

1、敏捷开发模式与瀑布开发模式对比

2、敏捷开发适合什么样的团队?

3、敏捷开发的框架详细介绍