首页> 外文期刊>ACM transactions on software engineering and methodology >Automated N-way Program Merging for Facilitating Family-based Analyses of Variant-rich Software
【24h】

Automated N-way Program Merging for Facilitating Family-based Analyses of Variant-rich Software

机译:自动化的N-way程序合并,有助于基于系列的丰富软件变异分析

获取原文

摘要

Nowadays software tends to come in many different, yet similar variants, often derived from a common code base via clone-and-own. Family-based-analysis strategies have recently shown very promising potential for improving efficiency in applying quality-assurance techniques to such variant-rich programs, as compared to variant-by-variant approaches. Unfortunately, these strategies require a single program representation superimposing all program variants in a syntactically well-formed, semantically sound, and variant-preserving manner, which is usually not available and manually hard to obtain in practice. In this article, we present a novel methodology, called SIMPOSE, for automatically generating superimpositions of existing program variants to facilitate family-based analyses of variant-rich software. To this end, we propose a novel N-way model-merging methodology to integrate the control-flow automaton (CFA) representations of N given variants of a C program into one unified CFA representation. CFA constitute a unified program abstraction used by many recent software-analysis tools for automated quality assurance. To cope with the inherent complexity of N-way model-merging, our approach (1) utilizes principles of similarity-propagation to reduce the number of potential N-way matches, and (2) enables us to decompose a set of N variants into arbitrary subsets and to incrementally derive an N-way superimposition from partial superimpositions. We apply our tool implementation of SIMPOSE to a selection of realistic C programs, frequently considered for experimental evaluation of program-analysis techniques. In particular, we investigate applicability and efficiency/effectiveness tradeoffs of our approach by applying SIMPOSE in the context of family-based unit-test generation as well as model-checking as sample program-analysis techniques. Our experimental results reveal very impressive efficiency improvements by an average factor of up to 2.6 for test-generation and up to 2.4 for model-checking under stable effectiveness, as compared to variant-by-variant approaches, thus amortizing the additional effort required for merging. In addition, our results show that merging all N variants at once produces, in almost all cases, clearly more precise results than incremental step-wise 2-way merging. Finally, our comparison with major existing N-way merging techniques shows that SIMPOSE constitutes, in most cases, the best efficiency/effectiveness trade-off.
机译:如今,软件趋于出现许多不同但又相似的变体,通常是通过克隆和拥有而从通用代码库派生的。与逐变量方法相比,基于家庭的分析策略最近显示出非常有前途的潜力,可以提高将质量保证技术应用于此类丰富变量程序的效率。不幸的是,这些策略需要单个程序表示形式,以语法良好格式,语义合理和变体保留的方式叠加所有程序变体,这通常是不可用的,并且在实践中很难手动获得。在本文中,我们介绍了一种称为SIMPOSE的新颖方法,该方法可自动生成现有程序变体的叠加,以促进基于家族的变体丰富软件的分析。为此,我们提出了一种新颖的N向模型合并方法,以将C程序的N个给定变体的控制流自动机(CFA)表示集成到一个统一的CFA表示中。 CFA构成了一个统一的程序抽象,许多近期的软件分析工具都使用CFA来进行自动化质量保证。为了应对N向模型合并的内在复杂性,我们的方法(1)利用相似性传播的原理来减少潜在的N向匹配的次数,并且(2)使我们能够将N个变体的集合分解为任意子集并从局部叠加中逐步得出N向叠加。我们将SIMPOSE的工具实现应用于一系列实际的C程序,这些程序经常被认为是对程序分析技术进行实验评估。特别是,我们通过在基于家庭的单元测试生成以及模型检查(作为样本程序分析技术)的上下文中应用SIMPOSE,来研究我们方法的适用性和效率/有效性的权衡。我们的实验结果表明,与逐变量方法相比,在稳定有效的情况下,测试生成效率平均提高了2.6倍,模型检查平均提高了2.4倍,从而分摊了合并所需的额外工作量。此外,我们的结果表明,几乎所有情况下,一次合并所有N个变体所产生的结果显然要比增量式逐步2路合并更精确。最后,我们与现有的主要N向合并技术的比较表明,在大多数情况下,SIMPOSE是最佳的效率/效果折衷方案。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号