敏捷软件工程速查表/敏捷需求 - 用户故事及更高级内容
用户故事速查表
用户故事代表着对用户或客户有益的小部分需求。
故事可以这样定义:
- 卡片:作为一个用户,我想要功能,以便于利益
- 对话:捕捉与故事实现相关的细节,例如我们正在进行的权衡
- 确认:(又称验收标准) - 我将检查什么以确保故事已完成
一个好的故事应该是
- 独立的... 其他故事,因此它可以仅根据价值、成本和风险进行优先级排序
- 可协商的... 因此团队和产品负责人可以讨论权衡
- 有价值的... 对用户来说,因此价值可以成为优先级排序的主要考虑因素,并且我们明确知道我们为什么要这样做
- 可估算的... 因此我们可以更好地评估投资回报率、计划和预测,并确保我们真正理解它。可能需要一个峰值来估计一个故事,因为技术挑战或知识不足导致了很高的不确定性
- 小的... 因此它可以快速流过我们的管道,尽可能减少意外,并且可以以正确的分辨率进行详细说明和讨论
- 可测试的... 因此我们有一个很好的方法来知道何时完成
用户故事可以提供价值的不同方法
- 用户价值 - 最佳价值 - 用户故事从用户的角度提高了我们产品的价值
- 来自用户的反馈(例如,向用户演示或展示模型)
- 来自 PM 的反馈
- 消除技术上的不确定性
- 消除进度上的不确定性 - 完成这个故事使我们更接近我们的目标
- 使我们能够更快地交付(例如,重构数据库模式,投资于持续集成...) - 这是最糟糕的价值类型,因为用户更愿意不为此付费,并且无法提供相对于其他用户故事的优先级指示。这些实际上不是用户故事,而是工程工作项,最好与用户故事一起连续处理,但是当它们积累并需要管理时,团队的一部分注意力和精力将需要分配给这些类型的项目
虽然故事是需求的基本单位,但通常需要更高级别的视图,并且可能包括
- 主题(故事的广泛类别,例如货币化、移动、SEO...)
- 史诗 - 代表特性级项目的较大型故事,分解成多个用户故事
- MMFs - 最小可行特性,代表史诗中可以发布并向用户营销的最小故事集。这种级别的需求通常在企业级别进行管理和可视化,类似于交付团队管理用户故事的方式。请注意,MMF 可能包括史诗,反之亦然。
产品的第一个 MMF 是 MVP - 最小可行产品
故事保存在一个单一的、优先排序的待办事项中,它代表着我们很快可能开始处理的用户故事。随着我们更接近处理这些故事,我们对其进行梳理,将其分解并完善,以便交付团队可以将其拉入。
故事梳理是将故事准备到可以由交付团队处理的程度的过程。这是持续进行的,这样故事就能及时定义,并且我们不会陷入团队没有足够工作的情况。团队通常每周安排两次一小时的会议来梳理故事。产品负责人、开发人员、测试人员、用户体验设计师、数据库管理员... 都会参与故事梳理。
代表着团队在每个故事被认为“已完成”之前承诺要为其做的事情。它应该包含团队所能合理做的事情,并会最大程度地减少对已完成但尚未准备好发布的项目的浪费。
完成定义示例
- 所有验收标准都通过
- 检入主分支
- 根据测试计划进行测试
- 向 PM 演示
- 提高单元测试覆盖率
- 代码审查 + 实现所有识别出的必要更改
- 所有错误已修复并验证
- 添加到发布说明
这应该由团队创建、使用和维护,并且是特定于团队的。
人物角色是虚构的角色,用于代表目标人群中可能以类似方式使用网站、品牌或产品的不同用户类型、态度和/或行为集。在定义故事时使用人物角色可以帮助团队专注于特定用户的需求,而不是开发对所有人都不太好的通用功能。它们还有助于我们将注意力集中在用户的子集上,这样我们就可以更早地获得反馈并逐步开发产品。
理想情况下,用户故事代表着穿过产品所有必要架构层的薄切片。这样,我们就可以获得端到端的反馈,并更有可能获得真正的价值。
团队通常使用一个清单,它代表着我们在将故事拉入管道之前通常想要考虑的事情。DoR 可以包括以下内容:
- 性能
- 可扩展性
- 可支持性(日志条目、监控和故障排除)
- 部署(升级和回滚、对 的任何更改)
- 兼容性(与其他系统和服务的向后和向前兼容性)
- 对其他系统/团队的依赖关系
虽然并非所有项目都适用于所有故事,但这些是我们开始着手创作故事之前需要问自己的问题,以便最大程度地减少遗漏故事重要方面的可能性。
故事有时会被分解成任务,由交付团队的各个成员执行。任务通常很小(不到半天)。分解成任务通常会暴露一些关于用户故事需求和设计的问题。
您可以使用以下模式来分解故事
- 将工作流程/顺序分解成单个步骤
- 先简单后复杂(UI、逻辑、格式……)
- 先手动后自动
- 推迟性能和可扩展性
- 数据的子集
- 请参阅链接以获取有关模式的更多信息
- 将史诗分解成用户故事的技术
- 这些技术包括故事映射和价值流分析等等。
- 故事映射 - 这种技术最适合包含工作流程的史诗。构成史诗的各种活动以线性顺序排列,并细化为用户故事,并按重要性列出。
另一种在深入到单个流程级别之前,可以很好地用于大局的技术是影响映射,其目标是分解成参与者/利益相关者,然后是怎样,最后是怎样。一个高度简化的例子可能看起来像这样
- 拆分故事流程图 - http://www.richardlawrence.info/wp-content/uploads/2012/01/Story-Splitting-Flowchart.pdf
- 二十种拆分故事的方法 - http://xp123.com/articles/twenty-ways-to-split-stories/
- 拆分用户故事指南 - http://www.rallydev.com/sites/default/files/Splitting_User_Stories_Guide.pdf
- 实践中的故事映射 - http://www.slideshare.net/chassa/2013-0509story-mapsagilemeetupbp
- 敏捷中的分析不仅仅是用户故事 - http://www.slideshare.net/kentjmcdonald/analysis-in-agile-its-more-than-just-user-stories-20934958
- 书:用户故事应用
- 书:敏捷需求