Morpheus: Variability-Aware Refactoring in the Wild

Morpheus: Variability-Aware Refactoring in the Wild
复制标题

DOI:
10.1109/icse.2015.57
复制
发表时间:
2015-05
期刊:
2015 IEEE/ACM 37th IEEE International Conference on Software Engineering
影响因子:
--
通讯作者:
Jörg Liebig;A. Janker;Florian Garbe;S. Apel;C. Lengauer
Jörg Liebig;A. Janker;Florian Garbe;S. Apel;C. Lengauer
中科院分区:
其他
文献类型:
--
作者:
Jörg Liebig;A. Janker;Florian Garbe;S. Apel;C. Lengauer

文献摘要

被引文献

相似文献

如今,许多软件系统都可以通过条件编译进行配置。就像任何软件系统一样,可配置系统需要在其演化过程中进行重构,但是它们固有的可变性导致了一个额外的复杂性维度,而当前的学术和工业重构引擎并没有很好地解决这个问题。为了提高技术水平,我们提出了一种可变性感知重构方法,该方法依赖于规范可变性表示和最近在可变性感知分析方面的工作。目标是保留可配置系统的所有变体的行为,而不损害一般的适用性和可伸缩性。为了演示实用性,我们开发了Morpheus,这是一个可靠的、可感知变量的重构引擎,用于带有预处理器指令的C代码。我们将Morpheus应用于三个实际的系统(Busybox、OpenSSL和SQLite),结果表明,尽管它严重依赖于满意度求解器,但它的可伸缩性相当好。通过扩展支持可变性的测试重构引擎的标准方法,我们为实现的重构的正确性提供了证据。
Today, many software systems are configurable with conditional compilation. Just like any software system, configurable systems need to be refactored in their evolution, but their inherent variability induces an additional dimension of complexity that is not addressed well by current academic and industrial refactoring engines. To improve the state of the art, we propose a variability-aware refactoring approach that relies on a canonical variability representation and recent work on variability-aware analysis. The goal is to preserve the behavior of all variants of a configurable system, without compromising general applicability and scalability. To demonstrate practicality, we developed Morpheus, a sound, variability-aware refactoring engine for C code with preprocessor directives. We applied Morpheus to three substantial real-world systems (Busybox, OpenSSL, and SQLite) showing that it scales reasonably well, despite of its heavy reliance on satisfiability solvers. By extending a standard approach of testing refactoring engines with support for variability, we provide evidence for the correctness of the refactorings implemented.