Page 291 - 《软件学报》2026年第7期
P. 291

2976                                                       软件学报  2026  年第  37  卷第  7  期


                 情况下, 即可疑特征选择集合之间不存在包含关系以及没有相同的子集, 提出方法的时间为                               O( |FCs|×|Ω|), 其中
                 |FCs| 为未通过的配置数,    |Ω| 为生成的   1–7  阶子集数且其随特征数指数式增长. 事实上, 绝大部分的案例下不存在
                 上述两种情况     (见实验部分    RQ1), 提出方法的识别效率会大幅改善.
                    最后, 得到所有可疑特征交互之后, 根据文献             [11] 的实践, 运用程序切片技术隔离出可疑语句, 为后续可疑语
                 句的可疑性评估奠定基础. 详细的隔离方法参见文献                 [11].

                  3.4   基于约简程序依赖的因果效应评估
                    本节详细介绍所提出的约简因果模型, 其与现有模型的区别以及因果效应的计算方法.
                    程序的控制依赖和数据依赖关系一定程度上反映了语句间的因果关系                          [41] . 此外, 在程序分析情境中, 对某条
                 语句的干预    (如屏蔽或插桩) 在固定输入与运行环境下会产生确定且可重复的输出, 不存在“一次处理对应多种结
                 果”的歧义, 因而满足因果推断中的一致性假设. 因此, 本文利用程序依赖图                     (program dependence graph, PDG) 构造
                 可用于因果效应评估的因果图模型, 进而计算可疑语句对测试结果的因果效应. 首先, 为所有可疑语句生成相应的
                 变量节点, 节点的值是二元的, 表示在未通过产品的测试中是否覆盖了该语句. 对于一条可疑语句                              s, 若覆盖了这
                 条语句, 则  s 所对应的变量节点的值为         1, 否则为  0. 接着, 构建节点间的因果关系, 其中节点间的因果关系由语句
                 间的依赖关系决定. 对于两条语句           s 1  和  , 若  s 1  对   s 2  存在数据或控制依赖关系, 则为  s 1  对应变量节点生成一条指
                                               s 2
                   s 2  对应节点的边. 最后, 为测试结果生成变量节点  , 其值为           1  或  0, 分别表示测试通过或未通过. 由于每条可疑
                                                         Y
                 向
                 语句都可能导致测试未通过, 因此为每条可疑语句变量节点连接一条指向测试结果节点的有向边.
                    然而, 基于   PDG  得到的完整因果图模型并不适合进行因果效应评估. 一方面, 混杂因子的存在会影响因果估
                 计的准确性; 另一方面, 较长的因果链会降低方法的评估效率                  (见实验部分    RQ4). 此外, 现有研究表明     PDG  中的路
                 径可能存在环     [26] , 导致相应的因果图无法直接用于因果效应评估. 为消除有向图中的环, Aho                  等人  [42] 提出了一种
                 传递约简技术, 该技术通过找到一个最小的有向子图, 使其保留原始图中的所有可达性关系, 从而得到一个等价的
                 可用于因果评估的有向无环图. 受他们工作的启发, 对于一个产品系统中任何一个可疑语句节点                              (即处理节点), 仅
                 保留它所有的父节点和子节点的因果关系, 以得到用于因果效应评估的因果图模型. 在该因果图模型中, 处理节点
                 与其子节点之间的结构性依赖关系构成了从处理变量到结果变量的重要传导路径. 在此基础上, 所构建的简约因
                 果图通过纳入处理节点的父节点以控制潜在混杂因素, 并通过去环策略切断无关路径, 确保了后门准则的适用性.
                 这一设计使得基于回归的效应估计既能消除混杂偏差, 又能获得一致的因果效应估计.
                    下面对所提出的约简因果图进行理论分析. 在此之前, 有必要对因果推断中若干核心概念进行说明.
                    1) 后门准则: 若一组协变量能够阻断所有从处理变量 T               到结果变量 Y    的后门路径, 且不包含任何交汇节点及
                 其后代, 则该协变量集合满足后门准则, 可用于在因果效应估计中控制混杂影响                        [39] .
                    2) 后门: 在因果图中, 若一条连接        T  与  Y  的路径在  T  一端的第  1  条边指向  T, 则称该路径从   T  进入的方式为
                 “后门”. 后门的存在通常意味着处理变量与结果变量之间可能存在共同原因或混杂因素.
                    3) 后门路径: 是指从     T  到  Y  的一条路径, 其第  1  条边指向  T, 并且该路径不是     T→Y  的直接因果路径. 这类路
                 径可能传递混杂效应, 导致因果效应估计产生偏差.
                    4) 交汇节点: 在因果图中, 若某个节点同时接收来自两条或多条有向边的输入, 则该节点为交汇节点. 对交汇
                 节点进行条件化可能开启原本阻断的路径, 引入额外的依赖关系, 因此在变量选择中应予以规避.
                    5) 条件化: 在概率计算或建模中, 将一组变量固定为特定值或纳入条件概率的已知部分. 在因果推断中, 对满
                 足后门准则的变量集合进行条件化, 相当于在分析中控制这些变量, 从而阻断混杂路径, 获得无偏的因果效应
                 估计.
                    命题  1. 后门可调性. 在约简因果图       G  中, 处理语句   s 的父节点集合    P(s) 构成阻断  s → Y  所有后门路径的最小
                                                 ′
                 调整集.
                            ′                            π 必含一个与    s 相邻且指向    s 的父节点       P(s) 条件化即阻
                    解释: 在   G  中, 根据后门的定义, 每条后门路径                                       v. 对
                 断了  π 在该非交汇节点处的传播, 从而所有后门路径均被阻断. 若路径经由交汇节点重新开启, 需要该交汇节点或
   286   287   288   289   290   291   292   293   294   295   296