英文书名:Specification by Example: How Successful Teams Deliver the Right Software
中文书名:实例化需求:团队如何交付正确的软件
获奖情况:2012 Jolt 震撼奖
实例化需求说明的主要过程模式
主要过程
- 从目标中获取范围
- 协作制定需求说明
- 举例说明
- 提炼需求说明
- 自动化验证时不修改需求说明
- 频繁验证
- 演化出一个文档系统
中间或最终产物
- 业务目标
- 范围(用户故事、用例)
- 关键实例
- 实例化需求说明
- 可执行的需求
- 活文档
案例
商业目标
12个月内对现有客户提高50%的重复销售
范围
会员忠诚度管理系统基本功能的用户故事:
- 为了能对现有客户做产品直销,作为营销经理,我想让客户通过加入VIP计划注册个人信息。
- 为了吸引现有客户注册VIP计划,作为营销经理,我要系统为VIP客户提供特定物品的免费送货。
- 为了节省开支,作为现有客户,我希望能收到特价优惠的信息。
关键实例
以用户故事”免费送货“为例:
- VIP客户购物车中有5本书籍可以获得免费送货
- VIP客户购物车中有4本书籍就不提供免费送货
- 普通客户购物车中有5本书籍没有免费送货
- VIP客户购物车中有5台洗衣机时不提供免费送货
- VIP客户购物车中有5本书籍和1台洗衣机时不提供免费送货
带实例的需求说明
以用户故事”免费送货“为例:
- 当VIP客户购买一定数量的书籍时,提供免费送货。免费送货不提供给普通客户或购买非书籍的VIP客户
- 假定至少买5本书才能获得免费送货服务,那么我们会得到以下预期:
客户类型 | 购物车中的物品 | 送货 |
VIP | 5本书 | 免费,标准 |
VIP | 4本书 | 标准 |
普通 | 10本书 | 标准 |
VIP | 5台洗衣机 | 标准 |
VIP | 5本书,1台洗衣机 | 标准 |
可执行的需求说明
上图中的代码使用了SpecFlow工具,可实现为自动化测试,运行情况可参考下图。
活文档
这里是个人的理解,正确与否有待检验。
铭记
- 对于实例化需求说明而言,功能需求、需求说明和验收测试都是一回事;
- 其结果是一个活文档系统,它解释系统可以做什么,并且与编程语言代码一样确切和可靠,但更容易理解。