Synthesizing Configuration File Specifications with Association Rule Learning

Synthesizing Configuration File Specifications with Association Rule Learning
复制标题

DOI:
10.1145/3133888
复制
发表时间:
2017-10-01
影响因子:
1.8
通讯作者:
Piskac, Ruzica
Piskac, Ruzica
中科院分区:
其他
文献类型:
--
作者:
Santolucito, Mark;Zhai, Ennan;Piskac, Ruzica

文献摘要

被引文献

相似文献

配置错误导致的系统故障是当今软件系统可靠性受损的主要原因之一。尽管已经提出了许多用于配置误差检测的技术,但通常只能在发生误差后应用这些方法。主动验证配置文件是一个具有挑战性的问题,因为1)软件配置通常用结构较差的和未型的“语言”编写,而2)指定配置验证的规则在实践中很具有挑战性。本文介绍了Configv,这是一种通用软件配置的验证框架。我们的框架工作如下:在预处理阶段,我们首先自动得出规范。一旦有规格,我们检查给定的配置文件是否遵守该规范。学习规范的过程通过三个步骤工作。首先,configv将一组培训的配置文件(不一定都是正确的)解析为结构良好且概率的中间表示形式。其次,基于关联规则学习算法,Configv从这些中间表示形式中学习规则。这些规则在文件中出现的关键字之间建立了关系。最后,configv使用规则图分析来完善结果规则。 Configv能够检测各种配置错误,包括订购错误,整数相关错误,类型错误和缺少的输入错误。我们通过在GitHub上验证公共配置文件来评估Configv,并表明Configv可以检测这些文件中的已知配置错误。
System failures resulting from configuration errors are one of the major reasons for the compromised reliability of today's software systems. Although many techniques have been proposed for configuration error detection, these approaches can generally only be applied after an error has occurred. Proactively verifying configuration files is a challenging problem, because 1) software configurations are typically written in poorly structured and untyped "languages", and 2) specifying rules for configuration verification is challenging in practice. This paper presents ConfigV, a verification framework for general software configurations. Our framework works as follows: in the pre-processing stage, we first automatically derive a specification. Once we have a specification, we check if a given configuration file adheres to that specification. The process of learning a specification works through three steps. First, ConfigV parses a training set of configuration files (not necessarily all correct) into a well-structured and probabilistically-typed intermediate representation. Second, based on the association rule learning algorithm, ConfigV learns rules from these intermediate representations. These rules establish relationships between the keywords appearing in the files. Finally, ConfigV employs rule graph analysis to refine the resulting rules. ConfigV is capable of detecting various configuration errors, including ordering errors, integer correlation errors, type errors, and missing entry errors. We evaluated ConfigV by verifying public configuration files on GitHub, and we show that ConfigV can detect known configuration errors in these files.