Page 285 - 《软件学报》2025年第10期
P. 285
4682 软件学报 2025 年第 36 卷第 10 期
已申报的订单, 然后才能对其进行撤销申报. 我们利用交易操作序列知识库帮助识别这样的隐式依赖关系. 交易操
作序列知识库中交易状态的迁移通常由特定操作触发. 这些状态可能从原始需求中直接获得, 也可能结合状态机
和操作推理得到. 这些状态迁移规定了操作之间存在的顺序关系. 为了识别隐式依赖关系, 我们将需求中的操作和
状态与对应状态机中的事件和状态进行比较, 如果匹配, 那么它们的序列关系被视为相同. 另外, 我们也可以通过
交易操作序列知识库中的状态机, 以推理出操作的前置后置状态, 从而有效确定这些需求的隐式依赖关系, 形成状
态连贯的需求链.
例如, 考虑图 7 所示的场景, 其中两个需求分别与“申报”和“撤销申报”有关. 结合债券交易状态机 (图 5), 可以
推断出要撤销申报, 必须先进行申报. 因此, 包含“申报”操作的需求 3.1.5.1 应该在包含“撤销申报”操作的需求
4.1.10.1 之前执行. 此外, 我们还能为相应需求补充操作执行前后的状态. 以需求 3.1.5.1 为例, 我们在 if 语句中补
充前置状态“已委托”, 并在 then 语句中补充后置状态“未成交”.
: 3
图 7 基于状态机的隐式关系识别示例
(3) 规约生成. 最终, 我们基于形式化需求及其依赖关系生成数据流形式的规约. 这种规约以图形化的方式展
示了需求的执行顺序和数据流动, 确保了业务流程的正确性和一致性. 以案例 1 中的规则 3.1.5、规则 3.3.4 以及
规则 4.1.10 为例, 规则 3.1.5 和规则 3.3.4 都是与申报操作相关的规则, 而规则 4.1.10 则是与撤销申报操作相关的.
根据需求关系识别的结果, 需求 4.1.10 依赖于前两条需求的执行, 由此生成的数据流如图 8 所示, 该数据流从债券
投资者申报一笔订单开始, 到这笔订单撤销失败终止.
检查申报数量是否
检查申报时
债券投资者 申报 间是否为 为 10 万元面额或其
申报订单 订单信息 9:15–9:25 订单信息 整数倍, 且不超过
100 亿元面额
规则 3.1.5 规则 3.3.4 订单信息
规则 4. 1.10 ...
申报成功
检查撤销申 撤销
未成交的订单 报时间是否 申报 未成交的订单
撤销失败 为 9:20–9:25 订单信息 撤销订单
图 8 债券申报数据流

