Page 227 - 《软件学报》2026年第5期
P. 227

2106                                                       软件学报  2026  年第  37  卷第  5  期


                 件配置约束, 包括基于源代码静态程序分析的方法、基于配置文件样本学习的方法和基于自然语言文本分析的方
                 法, 本节将从这    3  个方面分别进行介绍.
                  1.1.1    基于静态程序分析的方法
                    静态程序分析方法是分析软件源代码的有效方法, 可以在不动态运行软件的情况下分析软件中与配置项变量
                 相关的控制流和数据流, 而后研究人员通过分析控制流和数据流, 挖掘其中存在的特定模式, 进而提取软件配置约
                 束. Xu 等人  [11] 最早将静态程序分析方法应用到软件配置约束提取任务中, 他们分析了多个开源软件的源代码, 总
                 结源代码中软件配置的存在和使用形式, 并归纳出软件配置约束种类, 例如配置类型约束、单配置合法取值约束、
                 多配置取值关联约束等, 在此基础上开发了静态程序分析工具                   SPEX  提取上述的多种类型的配置约束. Chen 等人          [13]
                 使用类似的思路分析了         OpenStack  和  Hadoop  两种软件生态栈中的   16  种软件, 基于  Soot 开发了适用于     Java 和
                 Scala 软件配置约束提取的自动化工具          cDep. 与  SPEX  不同的是, cDep  着重分析了多个配置项之间存在的依赖关
                 系. Zhang  等人  [14] 聚焦软件配置影响的代码片段, 通过分析不同配置对相同代码片段的影响, 提取配置间约束关
                 系, 进而检测软件配置中可能存在的“沉默错误”. 文献               [15,16] 重点分析单配置合法性约束, 通过识别和定位源代
                 码中配置读入和加载的模块, 提取单个配置项对应的类型和合法取值. Zhou                     等人  [17] 研究了  C/C++软件源代码中配
                 置项从配置文件加载到程序变量的过程, 开发了自动化配置变量映射工具                         ConfMapper, ConfMapper 可以高效地
                 从  C/C++软件源代码中提取配置变量的映射信息.
                    基于静态程序分析的方法具有可解释性强的优势, 同时也具有较大的局限性. 首先很多商用软件的源代码没
                 有开源, 无法获取. 除此之外, 现代的大规模软件系统往往使用多种编程语言组合开发, 在这种情况下, 程序分析方
                 法面临分析规模受限、语言特性差异较大的问题.
                  1.1.2    基于配置文件样本学习的方法
                    生产环境中的配置文件样本是进行软件配置分析的重要数据来源, 有部分研究工作专注于从海量的配置文件
                 样本中挖掘潜在的配置约束. Zhang         等人  [18] 通过经验研究分析了配置文件样本中的配置约束类型和特征, 总结了
                 一套从样本中提取配置约束的启发式模板, 使用这套模板从配置文件样本中提取软件配置之间、软件配置与系统
                 环境变量之间的约束关系. Chen        等人  [19] 的方法与  Zhang  等人类似, 使用启发式模板提取配置约束规则, 不过他们
                 更加聚焦    Web  应用程序不同软件组件的配置之间的约束关系. ConfigC              [20] 和  ConfigV [21] 引入了概率统计的方法,
                 通过分析配置文件样本数据, 挖掘不同配置项的数值特征, 并通过数值特征推断配置类型等属性信息, 最后基于预
                 定义模板提取配置约束. 还有一些研究工作             [22,23] 从配置文件版本演化数据、版本维护历史数据等版本数据中挖掘
                 配置频繁模式, 进而提取配置约束. ConfEx         [24] 则应用了文本相似度匹配算法, 依据配置相关的关键字字典, 识别海
                 量配置文件中的配置约束规则.
                    基于配置文件样本挖掘的方法, 其优势在于不受特定编程语言的限制, 但具有较强的局限性, 一方面这类方法
                 需要大量的历史配置文件样本, 方法效果依赖样本数据质量. 另一方面, 这类方法依赖预定义模板, 需要大量专家
                 知识的预先输入, 效果受预定义模板的质量影响较大.
                  1.1.3    基于自然语言文本分析的方法
                    有少数研究工作基于软件配置相关的自然语言文本提取配置约束. ConfTypeInferer 是                    Xu  等人  [25] 开发的根据
                 配置项名称推断配置项类型的工具, 推断依据是事先归纳的配置类型分类树. PracExtractor 是                      Xiang  等人  [26] 开发
                 的配置约束提取工具, Xiang      等人首先挖掘配置推荐类型语句的词频特征和语法结构特征, 通过配置推荐语句筛
                                                          [27]
                 选和模式匹配两个步骤提取配置推荐规则. ConfInLog              基于静态分析方法分析日志打印点, 筛选配置项相关的日
                 志模板, 随后从软件日志包含的文本语料中提取配置约束关系. Mandal 等人                    [28] 的方法思路和  Xiang  等人类似, 但
                 是  Mandal 等人在语句筛选阶段应用了预训练模型             BERT, 使用大量标注数据来训练分类器筛选配置规则相关的
                 语句, 后续依然使用模式匹配方法提取配置约束规则.
                    由于自然语言信息结构化较差, 分析难度大, 目前的研究相对较少, 且已有方法高度依赖人工预先定义约束模
                 板, 这对研究人员在相关软件领域的知识水平提出了较高要求. 同时, 已有工作只能分析单个配置相关的配置条
                 件, 且对于语句逻辑的分析能力较差, 无法适应多种多样的自然语言表达形式.
   222   223   224   225   226   227   228   229   230   231   232