需求分析与用户故事(Requirements Analysis)

Verified 入门 Starter 流程型 Process ⚡ Claude Code 专属 ⚡ Claude Code Optimized
2 min read · 109 lines

用户故事 + 验收标准 + MoSCoW 优先级,把模糊想法变成可执行需求

需求分析与用户故事(Requirements Analysis)

概述

大多数开发失败不是因为代码写得差,而是因为需求没想清楚。"做一个用户管理系统"不是需求,"用户可以通过邮箱注册并在 3 秒内收到验证邮件"才是需求。本技能提供从模糊想法到可执行需求的完整转化流程。

何时使用

  • 项目启动前的需求梳理
  • 将客户/产品经理的口头描述转化为结构化文档
  • Sprint 计划时拆分和排列用户故事
  • 评审需求文档是否完整、可测试

五步需求工作流

步骤 动作 关键问题
1. 澄清目标 明确要解决什么问题、为谁解决 如果不做这个功能,谁会受影响?
2. 识别用户 列出所有角色和使用场景 谁会用?在什么情况下用?
3. 编写用户故事 用标准格式描述每个需求 用户想要什么?为什么想要?
4. 定义验收标准 为每个故事写 Given/When/Then 怎么判断"做完了"?
5. 排列优先级 用 MoSCoW 方法分级 哪些必须做?哪些可以晚做?

用户故事格式

标准格式:

作为 [角色],我想要 [动作],以便 [收益]
As a [role], I want [action], so that [benefit]

好的用户故事示例:

作为注册用户,我想要通过邮箱重置密码,以便在忘记密码时恢复账户访问。

差的用户故事示例:

用户需要密码重置功能。(缺少角色、缺少收益、不可测试)

验收标准(Acceptance Criteria)

使用 Given/When/Then 格式,附带具体数据:

场景:注册用户重置密码
  假设(Given)用户已注册且邮箱已验证
  当(When)用户点击"忘记密码"并输入注册邮箱
  那么(Then)系统在 30 秒内发送包含重置链接的邮件
  并且(And)链接有效期为 24 小时
  并且(And)使用过的链接不能重复使用

范围控制

每个需求文档必须明确三个列表:

列表 作用 示例
范围内(In Scope) 本次迭代必须交付 邮箱注册、密码重置
范围外(Out of Scope) 明确不做 第三方登录、手机号注册
未来计划(Future) 后续迭代考虑 SSO 集成、多因子认证

作用:防止范围蔓延(Scope Creep),强制团队做出明确取舍。

非功能需求清单

维度 需要定义的内容
性能 响应时间目标(如 P95 < 200ms)、并发用户数
安全 认证方式、数据加密要求、合规标准(GDPR 等)
可访问性 WCAG 等级(A/AA/AAA)、屏幕阅读器支持
浏览器/设备 支持的浏览器版本、移动端适配要求
可用性 SLA 目标(如 99.9%)、灾备方案

优先级排序:MoSCoW 方法

等级 含义 占比建议
Must(必须) 没有就不能上线 约 60%
Should(应该) 重要但有替代方案 约 20%
Could(可以) 锦上添花 约 15%
Won't(不做) 本次明确不做 约 5%

必须做 / 禁止做

必须做(MUST DO):

  • 开始编码前写好验收标准(Acceptance Criteria)
  • 定义明确的"完成标准"(Definition of Done)
  • 提前识别边界情况(Edge Cases)和异常流程
  • 用具体数字替代模糊描述("快"改为"P95 < 200ms")

禁止做(MUST NOT):

  • 带着模糊需求开始编码("做个好用的界面"不是需求)
  • 迭代中途随意追加范围(Scope Creep)
  • 假设未明确说明的需求(不确定就问)
  • 把技术方案写进需求文档(需求说"做什么",不说"怎么做")

相关技能 Related Skills