Page 277 - 《软件学报》2024年第6期
P. 277

孙昌爱 等: 基于模板匹配的       BPEL  程序故障修复及优化技术                                          2853


                    步骤  6. 逐一执行步骤     5  中生成的补丁程序, 执行该程序实例所有的测试用例, 直到存在补丁程序通过了所有
                 的测试用例. 本例中, ERR     修复操作将条件表达式中“!=”修改为“=”从而得到了正确的程序                    p. 返回修复成功的程
                 序  p.

                  3   实验评估
                    通过经验研究评估       BPELRepair 及优化策略的有效性.

                  3.1   实验问题与对象
                    实验致力于回答以下        3  个研究问题.
                    (1) RQ1: BPELRepair 的故障修复有效性如何?
                    采用  6  个  BPEL  程序的多个故障版本, 通过故障修复率评估           BPELRepair 的有效性.
                    (2) RQ2: 所提的优化策略能否有效降低         BPELRepair 的故障修复开销?
                    针对不同的优化策略, 采用正交试验方式比较应用优化策略前后的故障修复的计算开销, 通过变异算子搜索
                 匹配优化率、补丁程序验证优化率、测试用例执行优化率等指标评估各项优化策略的有效性.
                    (3) RQ3: BPELRepair 成功修复故障的代价如何?
                    通过分析故障修复成功时所需检查的语句块的占比, 评估                   BPELRepair 的故障修复代价.
                    为了评估    BPELRepair 及其优化策略的有效性, 本文使用          6  个不同应用领域的     BPEL  程序作为实验对象. 表     4
                 总结了每个    BPEL  程序的相关信息, 包括代码行数         (lines of code)、语句块数  (blocks of code)、测试用例数  (number
                 of test cases)、故障数量  (faults). 这些程序覆盖了伙伴链接、变量、错误处理等常见的             BPEL  组件, 具有较好的代
                 表性. 实验程序介绍如下.

                                                   表 4    程序实例详细信息

                            Subject program  Lines of code  Blocks of code  Number of test cases  Faults
                             CarEstimate      300            9              31            23
                                                             8
                                                                            28
                                                                                          64
                            LoanApproval      256      Web
                             QuoteProcess     482            21             19            78
                             SmartShelf       705            31             144           78
                            SupplyCustomer    330            13             16            50
                            TravelAgency      407            23             69           110

                    ● CarEstimate 是一个汽车修复评估系统, 共涉及        5  个  Web  服务. 用户提出评估请求, 输入车辆的基本信息后,
                 首先进行初步评估, 然后根据车辆的外观、内部以及发动机使用情况对车辆进行详细评估, 最后汇总评估结果并
                 将其返回给用户.
                    ● LoanApproval 是一个贷款审批系统, 共涉及       3  个  Web  服务. 输入个人信息和贷款数目后, 根据个人情况查
                 询是否支持贷款并查询个人最大贷款金额数. 如果贷款数在允许范围内, 结果返回贷款成功信息; 否则, 返回贷款
                 失败信息.
                    ● QuoteProcess 是一个报价系统, 共涉及     8  个   服务. 输入个人信息以及报价后, 根据该用户是否为会员选
                 择不同的处理流程. 如果用户不是会员, 选择一般的报价评估系统; 否则, 对内部和外部做精准报价评估.
                    ● SmartShelf 是一个智能货架管理系统, 共涉及         13  个  Web  服务. 用户输入商品的名称和数量后, 查询该产品
                 信息, 返回当前的库存量和日期信息. 接下来, 读取相关的货架信息以及是否过期状态. 如果库存正常, 则直接返回;
                 如果没有库存, 则需要通知管理人员和运输人员上架产品, 并检测商品所在的货架位置是否正确. 此外, 同步检查
                 商品保质期状态, 过期产品需及时撤出货架. 最后返回各个处理流程的执行信息.
                    ● SupplyCustomer 是一个商家订单管理系统, 共涉及        5  个  Web  服务. 用户输入商品信息和地址并选择不同的
                 处理方式, 当地址合法并且商品有库存时, 系统进行扣款业务和商品邮递业务. 其中, 扣款服务和商品邮寄服务并
   272   273   274   275   276   277   278   279   280   281   282