“实例化需求说明是一组过程模式,它帮助团队构建正确的软件产品。使用实例化需求说明,团队编写的文档数量恰到好处,在短迭代或基于流的开发中可以有效地协助变更。”
图1 实例化需求规则说明
上图是对实例化需求的规则说明,具体的步骤为:
需求提炼成为业务规则
用例子来具象规则
用例子来分析和澄清需求
这些例子随后会转化为测试用例
如果将背景中的需求按照实例化需求的过程模式,就会形成这样的说明:
关键实例:免费送货
VIP客户购买5本书籍可以获得免费送货
VIP客户购买4本书籍不可以获得免费送货
普通客户购买5本书籍不可以获得免费送货
VIP客户购买5台洗衣机不可以获得免费送货
VIP客户购买5本书籍+1台洗衣机不可以获得免费送货
图2 实例化需求与产品的关系
更低的知识传递瓶颈,更好地协作。实例化需求可以让团队清晰的定义一个可以普遍理解跟客观衡量的指标
如果在设计需求阶段,开发跟测试都没有参与,只是单独的需求传达者,那么在实践过程中很容易造成误解,在沟通的过程中,也很容易丢失细节,结果就是在交付之后验证失败,这些额外的不必要的返工完全可以避免。在设计需求、完善需求的过程中,协作制定需求或者需求反述能够充分利用团队的知识经验,让每个人更好的参与到交付过程中。
在需求说明的过程中,得到的实例往往会包含很多不必要的细节,这种情况下就需要提炼出来足够精简的业务规则,通过业务规则来形成需求说明,并形成关键实例。明确系统应该正确地实现哪些功能,而不是系统应该如何实现。好的关键实例可以当作验收条件,当所有实例在系统中都能正常工作时,开发才算完成,此时对应的实例其实已经阐释了对应的需求,这也是一种工作规范和验收测试。
随着项目发展,每个开发版本过程中形成的业务规则都会汇聚形成一个文档,通过关键实例来说明需求的变化与领域的关键信息,最后形成一个关于系统功能的可靠、权威的信息源。任何人都可以获得,同时更容易阅读和理解,支持人员可以查明系统功能与设计意图,开发者可以将其作为开发目标,测试伙伴可以用它来进行测试。
根据不同的团队特点,实例化需求的推进方式可能不同,具体要根据实际的团队情况来进行实例化的落地。
首先形成一个工作坊团队,一个研发组内需包含1个开发,1个测试,1个需求分析人员。形成一个小型工作坊团队可以从不同方面获得良好反馈,同时在项目实施的上下游更容易形成统一语言。
梳理目标需求,提取业务规则,形成一份实际的业务规则功能文件(GIVEN-WHEN-THEN)。
THEN:满足了什么条件;
回到上述情境,当VIP客户购买一定数量的书籍时,就为他们提供免费送货服务,免费送货服务不提供给普通客户或购买非书籍的VIP客户。假定要获得免费送货服务,至少需要购买5本书籍,那么我们会得到下表这样的预期:
客户类型 | 购买行为 | 送货服务 |
vip客户 | 5本书 | 免费,标准 |
vip客户 | 4本书 | 标准 |
普通客户 | 10本书 | 标准 |
vip客户 | 5台洗衣机 | 标准 |
vip客户 | 5本书+1台洗衣机 | 标准 |
given | when | then |
vip客户 | 买了5本书 | 可以选择 2 标准送货 |
vip客户 | 买了4本书 | 标准送货 |
普通客户 | 买了10本书 | 标准送货 |
vip客户 | 买了5台洗衣机 | 标准送货 |
vip客户 | 买了5本书+1台洗衣机 | 标准送货 |
以上的说明很好地阐释了对应业务规则,同时也具备可测试的特性,并且足够的清晰明确,不需要做额外的说明。
对应的开发人员与测试人员形成单元测试/自动化测试脚本,用于验证对应规则逻辑。
因为项目管理的知识体系过于庞大,因此把项目管理分为十大领域和五大过程组。
图3 项目管理十大领域
实例化需求的落地过程中,主要从以下四个角度对项目进行干预,助力项目成功落地。
资源管理(拉通团队内部形成小型工作坊)
沟通管理(运用业务规则形成关键实例,通过实例进行沟通)
范围管理(关键实例界定了具体的业务范围与边界)
干系人管理(实例化需求可以清晰的描述项目成功后的对应业务流程,降低干系人的沟通成本)
图4 项目管理五大过程组
五大过程组分别为启动过程组、规划过程组、执行过程组、监控过程组、收尾过程组。这五大过程组是非常经典的项目管理模型,形成了一个普适PDCA循环,意思是任何事情都需要经过计划(Plan)、实施(Do)、检查(Check)、处理(Act)这四个步骤,可以说这四个步骤形成了一个简单的思考和执行框架。
实例化需求落地过程中,通过不断新增对应的实例需求,形成自动化的业务规则,自动化的业务规则频繁验证了实例的需求。开发团队在开发过程中逐步增加新的实例需求,形成了一个项目研发的增长飞轮,逐步提升项目研发效率。
图5 PDCA循环
6 总结
实例化需求通过抽象的业务规则,形成精简的业务实例,通过准确的业务实例与边界值来描述需求的落地,产生了清晰明确并且可衡量的目标。在业务实例构建阶段,通过开发、测试、业务分析人员的统一讨论参与,从初期就降低了产生失焦的可能。
实例化需求是一种项目管理方法的简单落地,在频繁的需求迭代过程中,不断更新详细的需求说明与测试计划需要花费大量的时间成本。通过实例化需求的方式,小步快跑、快速迭代,降低开发过程中的“失焦”,既能正确的构建产品,也能构建正确的产品。
[1] 实例化需求:团队如何交付正确的软件 (图灵程序设计丛书 39) [塞尔维亚] Gojko Adzic
本文作者
凯多,来自缦图互联网中心后端团队。
联系客服