3.1 需求类型与层次
需求不是愿望清单。它是人类目标和工程承诺之间的桥。桥一旦模糊,团队可能构建出技术上正确、业务上错误的软件。
一条需求应该帮助团队回答三个问题:
- 需要什么结果?
- 谁需要它,在什么条件下需要?
- 我们如何知道系统满足了它?
正在加载交互实验...
正在加载概念检查...
常见需求类型
| 类型 | 含义 | 示例 |
|---|---|---|
| 功能需求 | 系统做什么 | 用户可以通过邮箱重置密码 |
| 非功能需求 | 系统做得多好 | 95% 的重置邮件在 60 秒内被邮件服务商接受 |
| 领域需求 | 来自业务领域的规则 | 超过阈值的退款必须审批 |
| 约束 | 解决方案必须遵守的限制 | 数据必须保留在指定地区 |
| 接口需求 | 与另一个系统或角色的契约 | 支付回调必须接受幂等键 |
非功能需求常常在后期伤害团队,因为大家写了“快”“安全”“可扩展”,却没有决定这些词到底是什么意思。
需求层次
层次能防止大家在错误高度争论。
- 业务需要:组织想得到的结果。
- 用户需求:用户用自然语言表达的目标。
- 系统需求:系统必须实现的行为。
- 设计约束:对解决方案的限制。
- 验收证据:测试、指标、演示、审计或评审结果。
注意
可追溯性不是为了写文档而写文档。它让你能问:如果这个设计改变,哪个用户目标、测试、发布说明或合规承诺会受影响?
正在加载交互实验...
正在加载概念检查...
一个高级习惯
当有人说“这个需求很明显”时,请他给出三个例子:
- 一个正常成功场景。
- 一个边界场景。
- 一个必须拒绝的场景。
例子常常比抽象陈述更能暴露问题。它们会暴露缺失角色、隐藏权限、时间限制、异常路径,以及利益相关者之间的分歧。
正在加载本节练习...