Page 230 - 《软件学报》2026年第5期
P. 230
张添翼 等: LLM-Extractor: 基于大语言模型的软件配置间约束提取方法 2109
2) 配置间约束. 配置间约束指的是多个软件配置之间具有的关联约束关系, 即一个或多个配置项的设置会影
响其他配置项的取值或者生效. 例如图 2 右侧蓝色语句指出 max_wal_senders 应当大于等于 max_connections, 这
属于涉及 max_wal_senders 和 max_connections 的配置间约束.
已有工作对于单配置约束的研究已经比较完善, 但是对配置间约束提取的研究尚存在不足, 因此本文主要研
究提取多个软件配置间存在的约束关系.
2.2 研究动机
软件文本分析的主要难点在于两个方面: 如何高效分析海量的自然语言信息; 如何从非结构化文本中提取结
构化配置约束信息.
对于软件运维人员来说, 软件配置项数量众多, 文档冗长, 因此开发自动化的文档分析工具, 能够大大提高关
键配置约束信息的获取效率. 除此之外, 不同文档的行文风格可能存在差异, 表达方式难以统一, LLM 的出现和普
及提供了便捷的文本分析工具, 让我们能开发高效的文本分析方法.
为进一步阐述本文研究动机, 我们针对已有文本分析方法泛化性较差、无法挖掘配置间深层次逻辑联系的问
题, 对软件配置文档展开了深入的经验研究. 我们人工分析了配置约束相关软件文档的特点, 同时人工分析了文档
中存在的配置间约束, 并总结了已有方法无法提取的配置约束类型, 最后根据经验研究结果提出可能的解决方案.
2.2.1 经验研究
[3]
为了研究多个软件系统的软件文档中配置间约束的特点, 本文选取了 openGauss 5.0.0 、PostgreSQL 12 [49] 、
[1]
[2]
MySQL 5.7 、Squid 6 这 4 个被广泛使用的开源软件作为经验研究对象, 人工查看每个软件官网的文档目录结
构, 并选择软件配置相关的文档章节作为数据源, 每个软件都拥有数百个配置项, 如表 1 所示.
表 1 配置文档来源和配置数量统计
软件名称 版本 软件配置个数
openGauss 5.0.0 768
PostgreSQL 12 319
MySQL 5.7 1 434
Squid 6 330
我们首先对这些软件的配置文档进行抽样的阅读分析, 随机从配置全集中选取配置项对应的文段阅读分析,
同时阅读章节中可能相关的其他配置项描述, 直至从中分析提取出 100 条配置间约束关系. 对提取这些配置间约
束的过程, 我们进行了进一步的分析和总结, 获得了以下发现.
发现 1. 67% 的配置间约束关系无法通过已有研究总结的模板匹配方法提取.
已有方法 [26,28] 都首先筛选配置设置建议类型的语句, 而后使用正则表达式等模板匹配方法从语句中提取约束
规则, 经验研究表明, 100 条配置间约束关系中只有 33 条可以使用这种方法提取, 有 67 条配置约束无法使用这种
方法提取. 经过对这 67 个负样本的分析, 我们发现无法提取的原因有以下 3 点.
(a) 44.8% 的负样本对应的配置文本语句中不包含推荐性质的关键词, 例如 recommended、suggested.
(b) 20.9% 的负样本对应的配置文本语句中包含有多个配置条件, 而已有方法无法处理多个配置条件之间的
逻辑关系.
(c) 32.8% 的负样本具有已有方法模板未覆盖的表达形式. 由于已有方法通过正则表达式提取对应配置的取
值, 如果目标文本的表达方式不能被模板匹配, 就无法被识别为配置取值条件. 例如“You are advised to set this
parameter to a value greater than or equal to twice of max_changes_in_memory”中“greater than or equal to twice of
max_changes_in_memory”并未被模板成功识别, 导致该条约束未能被成功提取.
发现 2. 47% 的配置间约束无法从单个配置的描述文本中完成提取.
47 条配置约束需要结合多个配置项的描述文本来进行推断, 这些归属不同配置项的文本描述通过特定软件
功能实体链接. 图 3 展示了一条配置约束推断的思维链, 研究人员阅读 bgwriter_lru_multiplier 的描述文档时意识

