对需求工程师来说,编写一次完整、完美的业务用例所带来的能力提升,可匹敌多次设计同类系统的收获,因为带有业务场景的用例整合了架构、功能、数据、管理等多层面的内容,且由于用例是用数据、规则的细粒度写成的,如验证结果没有问题则为系统上线成功提供了保证。
如果写不出自己设计系统的验证用例,说明他对系统是否能够成功运行是没有把握的。有用例帮助检验结果,不但能减少设计和编程错误,还能在设计阶段就掌握上线后的细节和效果、提升客户满意度,同时详细完整的用例还可以用作上线培训资料。
一、定义
1. 业务设计验证
通过编写一套业务数据用以模拟某个业务处理场景的全过程,用这套数据将系统中要验证的对象串联起来,用以验证业务设计的整体架构、业务流程、界面字段、数据关系、计算公式、管控规则等内容是否正确,确保系统中的业务逻辑、数据逻辑是正确的,业务设计验证的主要工作是编写业务用例。
2. 业务用例
是针对业务设计阶段成果的验证依据,业务用例将专业知识、业务设计部分(业务与管理)的成果,通过业务场景将流程、功能、数据、规则等串联在一起,用以验证业务逻辑、数据逻辑是否正确、功能是否可以满足设计的要求。
3. 作用
业务用例的粒度包含了从架构(粗)-数据(细),因此可以精确地验证如下的内容(不限于此)。图1 表示了在软件工程框架上编写的业务用例的位置,业务验证的作用如下:
图1 软件工程框架上业务用例的位置
1)支持验证业务设计结果
2)支持应用用例的编制
3)支持测试用例的编制
4)支持上线培训
业务用例的数据、规则等由于模拟的是实际业务场景,上线培训时用户可以直接按照业务用例中的数据进行练习,加快学习和理解的系统的速度。
5)使用对象、使用场合
6)对软件客户价值的检验
二、业务用例内容
编写业务用例是业务设计验证的主要工作。一个完整的业务用例由三个部分构成:用例场景、数据结构图和数据推演表,其中:
1. 用例场景
一个系统的业务设计完成后,需要对那些部分进行验证是根据需求工程师(或业务专家)的判断来决定的,通常判断是否需要验证的条件如下(仅做参考):
大型的、复杂系统可能要编写多个,甚至十几个业务用例。每个业务用例的对象、目的都不同,它们的验证结果合起来就给出了该系统的业务设计成果是否满足要求。
下面给出具体的用例提纲(作为后续设计用例场景),用例的数据关系参见图2。
根据上述提纲,用例场景具体数据设定如下,其中,企业为两级组织(公司、项目部):
这个用例场景给出了“成本管理”的关键环节(节点数据),有了这个关键节点的指引,第二步做出“数据结构图”(验证用的框架)、第三步写出“数据推演表(验证用的内容)”
2. 数据结构图
用例场景不但要用文字描述,还需要用一个可以表达场景的数据结构图,这个图可以给出:场景开始的目标数据、场景结束的结果数据、以及表达从目标数据→结果数据的变化过程的结构图。
图2 数据结构图
1)结构图
数据结构图,是以功能的结果数据为节点、以数据间的关系为连接形成的图形,给出了从目标数据→结果数据的变化过程这个结构图中同时体现了“业务逻辑”和“数据逻辑”。
2)节点
根据用例的题目、场景来确定涉及到的哪些业务设计的成果,节点要素可能是一个功能(活动、字典)、或是一个数据库,设计数据结构图需要将所有参与场景的要素找出来,然后用数据关系把它们关联起来。
由于本课题是“成本管理”,所以节点一定都是来自于与成本管理有关的功能(或数据库)。图21-7为本用例的数据结构图,解读如下:
另外,要注意数据结构图的节点设置原则:
3. 数据推演表
有了数据结构图,目标和结果数据后,下面用一个数据推演表,将数据结构图中的从“目标数据”→“结果数据”的数据变化过程用完整地列出来,数据推演表涉及到的主要内容可以分为三个部分:
数据推演表是对数据结构图上每个节点的内部数据进行详细地表达,每个数据推演表的最终合计值填写到数据结构图的相应节点上,以数据结构图上“预算总额 = 950万”为例,预算总额见表1。
表1 预算总额表(数据推演表) 注:表中的红字为“父”节点。
每个节点对应一张类似上述的数据推演表,这个数据推演表里记录的就是功能中数据和数据的计算过程。
虽然数据推演表编制时的工作量很大,但正是有了详实的数据对后面的测试、以及系统上线培训都起了很大的帮助,因为不返工或是减少了返工总的周期可以大幅度地缩短,提升了一次上线的成功率。
反过来也可以说明,如果复杂系统的数据不进行预先的纸上推演,怎么保证软件开发完成后可以准确的运行呢?凭什么说设计是正确无误的呢?
三、业务设计验证过程
验证过程在编写业务场景、绘制数据结构图的时候就开始了:
按照这样的方法推演下来,基本上就可以确认业务设计的结果是否正确了。
题图来自 Unsplash,基于 CC0 协议
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!