一句话:SiMPOSE 在控制流自动机层面对 N 个程序变体做可配置的 N 路合并,自动生成叠加以支持家族式分析。
现代软件常以众多相似版本或变体的形式存在,通常由同一代码库派生(如 clone-and-own)。在产品线工程中,家族式分析相比逐变体分析能显著提升质量保障效率,但它依赖将所有程序变体以语法良构、语义健全且保持变体语义的方式叠加(superimposition),这在实践中难以手工获得。本文提出并演示 SiMPOSE 方法,能够自动为给定的 N 个程序版本/变体生成叠加,从而支持对变体丰富软件的家族式分析。SiMPOSE 基于一种新的 N 路模型合并技术,工作在 C 程序的控制流自动机(CFA)表示层面,CFA 是许多近期软件分析工具采用的统一程序抽象。文章展示了 SiMPOSE 支持的多种合并策略,包括逐变体、N 路合并、增量式 2 路合并以及基于划分的 N/2 路合并,并演示如何系统比较这些策略对家族式单元测试生成的效率与效果的影响。工具、使用演示及相关文档与工件已在网上公开。
Modern software often exists in many different, yet similar versions and/or variants, usually derived from a common code base (e.g., via clone-and-own). In the context of product-line engineering, family-based analysis has shown very promising potential for improving efficiency in applying quality-assurance techniques to variant-rich software, as compared to a variant-by-variant approach. Unfortunately, these strategies rely on a product-line representation superimposing all program variants in a syntactically well-formed, semantically sound and variant-preserving manner, which is manually hard to obtain in practice. We demonstrate the SiMPOSE methodology for automatically generating superimpositions of N given program versions and/or variants facilitating family-based analysis of variant-rich software. SiMPOSE is based on a novel N-way model-merging technique operating at the level of control-flow automata (CFA) representations of C programs. CFAs constitute a unified program abstraction utilized by many recent software-analysis tools. We illustrate different merging strategies supported by SiMPOSE, namely variant-by-variant, N-way merging, incremental 2-way merging, and partition-based N/2-way merging, and demonstrate how SiMPOSE can be used to systematically compare their impact on efficiency and effectiveness of family-based unit-test generation. The SiMPOSE tool, the demonstration of its usage as well as related artifacts and documentation can be found at http://pi.informatik.uni-siegen.de/projects/variance/simpose.
DOI 原文 ·
@inproceedings{paperbot5221,
title = {SiMPOSE - Configurable N-Way Program Merging Strategies for Superimposition-Based Analysis of Variant-Rich Software},
author = {Dennis Reuling and Udo Kelter and Sebastian Ruland and Malte Lochau},
booktitle = {ASE},
year = {2019},
doi = {10.1109/ase.2019.00120}
}