敏捷开发工作流
敏捷开发框架
Scrum 通常被认为是一个敏捷开发项目管理框架,它描述了一组协同工作的会议、工具和角色,以帮助团队组织和管理其工作。

从图中可以看到,主要流程如下:
- 产品分析用户需求,按照商业价值依次排序估算,输出计划产品功能列表。
- 经过计划会议讨论,按照计划面板梳理功能列表,输出产品版本迭代任务。
- 进入开发迭代周期,按照任务面板增量迭代开发,输出可交付的迭代版本。
- 进入评审验收环 节,按照发布面板汇总问题原因,输出迭代周期报表数据。
产品 BACKLOG
用户需求,分析转化,产品 BACKLOG
这个部分的内容由 PM(项目经理)具体负责,主要的工作内容如下:
- 用户调研、需求分析,确定产品迭代功能,出具产品 BACKLOG。
- 决定产品的发布日期与发布内容,给迭代计划预设目标。
- 根据 RIO(商业价值/工作量)排序优先级,考虑必要风险。
- 制定 Sprint 计划,根据实际情况调整功能与优先级。
由产品负责人维护管理的一个已排序,已估算,可渐进的需求清单列表,可参考PRD文档中的功能模块记录列表或者产品需求池的记录列表。在一般的情况下,会根据功能模块对应的用户故事流程来表示 BACKLOG 条目内容。在每个 Sprint 结束或者临时需求变更时,都需要更新优先级的排列顺序。

下面是实际的方法

用户故事
1、什么是用户故事?

2、用户故事的 INVEST 原则
- 独立性(Independent):要尽可能的让一个用户故事独 立于其他的用户故事。用户故事之间的依赖使得制定计划,确定优先级,工作量估算都变得很困难。通常我们可以通过组合用户故事和分解用户故事来减少依赖性。
- 可协商性(Negotiable):一个用户故事的内容要是可以协商的,用户故事不是合同。一个用户故事卡片上只是对用户故事的一个简短的描述,不包括太多的细节。具体的细节在沟通阶段产出。一个用户故事卡带有了太多的细节,实际上限制了和用户的沟通。
- 有价值(Valuable):每个故事必须对客户具有价值(无论是用户还是购买方)。一个让用户故事有价值的好方法是让客户来写下它们。一旦一个客户意识到这是一个用户故事并不是一个契约而且可以进行协商的时候,他们将非常乐意写下故事。
- 可以估算性(Estimable):开发团队需要去估计一个用户故事以便确定优先级,工作量,安排计划。但是让开发者难以估计故事的问题来自:对于领域知识的缺乏(这种情况下需要更多的沟通),或者故事太大了(这时需要把故事切分成小些的)。
- 短小(Small):一个好的故事在工作量上要尽量短小,最好不要超过 10个理想人/天的工作量,至少要确保的是在一个迭代或 Sprint 中能够完成。用户故事越大,在安排计划,工作量估算等方面的风险就会越大。
- 可测试性(Testable):一个用户故事要是可以测试的,以便于确认它是可以完成的。如果一个用户故事不能够测试,那么你就无法知道它什么时候可以完成。一个不可测试的用户故事例子:软件应该是易于使用的。
用户故事拆分指南
1、用户故事样例

2、用户故事的颗粒度要求

3、用户故事的拆分指南 可以从以下几个视角拆分用户故事:
- 首先,按照角色进行用户故事拆分。
- 其次,按照同一角色的业务行为来拆分用户故事。
- 再次,对同一业务行为,按照业务数据类型和项目来拆分用户故事。

Sprint 计划会议
这个部分的内容主要由 SM 负责,主要工作内容如下:
- 确定高价值的需求进入高优先级的 BACKLOG。
- 将产品 BACKLOG 拆分为在本次 Sprint 中可细化的 Sprint BACKLOG。
- Sprint BACKLOG 中的开发任务以小时估算,预计 1-16 小时的工作量化。
- 根据开发优先级管理 Sprint BACKLOG,随时更新 Sprint BACKLOG 状态。
- 每个团队成员都可以自主挑选任务,修改 Sprint BACKLOG。
由开发负责人维护管理的一个 Sprint 任务清单,根据产品 BACKLOG 细化而来,细化为开发过程中可用的产品功能任务,每个任务用小时估算时间,团队成员可自行管理任务,每天的任务进度会更新到对应的任务面板上。

不需要在 Sprint 计划会议上就分配好所有的任务,团队根据用户故事的测试要点、技术实现,进行任务拆分,例如:前端页面开发任务、后端逻辑开发任务、数据库开发任务、接口开发任务等,然后会议结束后再让对应的开发细化具体的工作项目

任务面板是“任务状态/工作进程”的二维工作面板,便签颜色可代表团队成员,便签内容代表团队成员所负责的开发任务。任务状态一般可划分为:ToDo,Doing,Tested,Reviewed,Finished 五个状态,在一块方形划分区域中贴满了颜色便签,随时更新任务面板状态,保证团队所有成员随时随地都可以了解 Sprint 周期内的整体开发进度
