Module 03 · Agile & Scrum敏捷与 Scrum
Creating Good User Stories用户故事的定义与要素
学习目标
观看本视频后,你将能够:
- 定义什么是用户故事
- 描述一个优秀用户故事的组成部分
- 解释为什么添加验收标准(Acceptance Criteria)很重要
- 理解并记住 INVEST 首字母缩略词
- 了解什么是 Epic 以及何时使用它
什么是用户故事?
简而言之,用户故事代表了团队可以在完成的增量中交付的一部分业务价值。
传统上我们将其称为“需求”,但用户故事比需求要复杂得多。
- 需求通常是简单的:“我需要这个功能”或“我需要那个功能”。
- 而用户故事不仅包含了谁需要它、需要什么,更重要的是解释为什么需要它,以及从中获得的业务价值。
用户故事的组成部分
- 描述业务价值:
- 它是做什么的?
- 谁需要这个功能?
- 我们从中获得什么价值?
- 假设和细节:
- 如果有任何假设或前提条件,应该在用户故事中注明。
- 例如,如果我们使用关系型数据库来存储数据,而不是NoSQL数据库,应在用户故事中说明,以便开发人员明确意图。
- 完成的定义(验收标准):
- 如何确认这项工作完成了?
- 在Sprint回顾中,产品负责人不能说:“这不是我想要的。”
- 需要明确完成标准,确保开发人员明白在什么情况下认为故事已完成。
用户故事的结构与模板
角色(Persona)
首先,描述请求某项功能的角色。例如:
- 市场经理
- 客户
- 系统管理员
这帮助我们明确功能的受众。
功能需求(What)
接下来,描述需要什么功能。这是用户故事的核心部分。
业务价值(Why)
最后,解释为什么需要该功能,或者它带来的业务价值。
例如,功能的价值可能是“为了能够通知客户营销活动”。这样一来,我们就能在优先级排序时根据业务价值来决定哪个故事更重要。
验收标准(Acceptance Criteria)与完成定义
为什么重要?
定义验收标准对于明确用户故事的完成条件至关重要。
这确保了开发人员、产品负责人以及利益相关者之间没有误解。
我们使用 Gherkin 语法来定义验收标准。Gherkin语法以简单、结构化的方式描述系统行为,易于开发人员和业务人员理解。
Gherkin 语法示例
- Given: 设定前提条件
- 例如:“Given 我已经登录系统,且购物车里有5个商品。”
- When: 描述触发事件
- 例如:“When 我向购物车添加了一个新商品。”
- Then: 描述期望的结果
- 例如:“Then 我应该看到购物车中有6个商品。”
示例用户故事
故事
- 角色:作为一名市场经理
- 需求:我需要一份客户的姓名和电子邮件列表
- 价值:以便我可以通知他们关于营销活动的信息
假设
- 我们维护客户的电子邮件
- 客户已选择接收营销促销信息
验收标准
- Given: 数据库中有100个客户,其中90个已同意接收营销促销信息
- When: 我请求客户电子邮件列表
- Then: 我应该看到包含90个客户电子邮件的列表,而不是100个
这将确保开发人员、产品负责人和利益相关者达成共识,明确验收标准,避免在Sprint结束时出现争议。
INVEST 首字母缩略词
INVEST是Bill Wake提出的一个模型,用于评估和创建优质的用户故事。每个字母代表一个重要特征:
| 字母 | 含义 | 解释 |
|---|---|---|
| I | 独立性(Independent) | 用户故事应该是独立的,可以自由排序和移动,便于按优先级排列和实施。 |
| N | 可协商性(Negotiable) | 用户故事的细节可以进行协商,功能或需求不应固定死,可以根据实际需要调整或变更。 |
| V | 有价值(Valuable) | 用户故事必须为客户或业务提供价值,不能仅仅是为了完成技术债务而做的工作。 |
| E | 可估算性(Estimable) | 必须有足够的信息让团队能够评估故事的大小,并确定它的复杂性。 |
| S | 小巧(Small) | 用户故事应该小到可以在一个Sprint内完成。如果故事太大,则需要拆分成更小的用户故事。 |
| T | 可测试性(Testable) | 用户故事必须有明确的完成标准,可以通过测试确认是否完成。 |
Epic:处理大型故事的工具
什么是Epic?
当一个用户故事过大,无法在一个Sprint内完成时,我们会将其转化为Epic。Epic是一个更大的故事,通常由多个小的用户故事组成。
何时使用Epic?
- 当用户故事的规模过大,无法在Sprint中完成时,应该使用Epic。
- 通常,产品待办事项(Backlog)开始时会包含大型的“Epic”,随着细化,Epic会被分解成可估算且适合在Sprint中完成的用户故事。
总结
通过本视频,你学到:
- 用户故事是描述某个角色请求某项功能以实现目标的方式。
- 使用标准模板有助于确保用户故事的完整性。
- 完成定义能够减少误解,确保所有人对“完成”有一致的理解。
- 良好的用户故事应符合INVEST模型的要求。
- Epic可用于捕捉大型的需求,并通过将其拆分成多个小故事来实现。