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 债券申报数据流
   280   281   282   283   284   285   286   287   288   289   290