Scalable analysis of variable software
Abstract
The advent of variability management and generator technology enables users to derive individual variants from a variable code base based on a selection of desired configuration options. This approach gives rise to the generation of possibly billions of variants that, however, cannot be efficiently analyzed for errors with classic analysis techniques. To address this issue, researchers and practitioners usually apply sampling heuristics. While sampling reduces the analysis effort significantly, the information obtained is necessarily incomplete and it is unknown whether sampling heuristics scale to billions of variants. Recently, researchers have begun to develop variability-aware analyses that analyze the variable code base directly exploiting the similarities among individual variants to reduce analysis effort. However, while being promising, so far, variability-aware analyses have been applied mostly only to small academic systems. To learn about the mutual strengths and weaknesses of variability-aware and sampling-based analyses of software systems, we compared the two strategies by means of two concrete analysis implementations (type checking and liveness analysis), applied them to three subject systems: Busybox, the x86 Linux kernel, and OpenSSL. Our key finding is that variability-aware analysis outperforms most sampling heuristics with respect to analysis time while preserving completeness.
BibTeX
@inproceedings{Liebig-al:FSE13,
author = {J{\"{o}}rg Liebig and
Alexander von Rhein and
Christian K{\"{a}}stner and
Sven Apel and
Jens D{\"{o}}rre and
Christian Lengauer},
title = {Scalable analysis of variable software},
booktitle = {{ESEC/SIGSOFT} {FSE}},
pages = {81--91},
publisher = {{ACM}},
year = {2013},
}