Variability in software systems is very common and important to tailor the system to user needs and to use the system flexibly in different contexts without developing a new system from scratch for each context. For example, embedded systems with resource constraints, high-performance optimizations, and end-user customizable systems all exploit variability. However variability in software systems creates a fundamental tension between (a) reuse and (b) development and maintenance costs. On the one hand, planning variability upfront enables systematic reuse and promises to significantly reduce development effort, costs, and time to market. On the other hand, variability requires an upfront investment and causes long-term maintenance costs, because variations give rise to an exponential number of configurations with potentially intricate interactions. Especially if introduced in an ad-hoc fashion and not managed appropriately, variability can increase maintenance costs to a level that outweighs the expected benefits. This research develops and integrates reverse-engineering techniques for variability to lower upfront investments for variability and to reduce the costs of long-term maintenance caused by accidental complexity of existing ad-hoc variability implementations.

This project revisits how variable and reusable software is implemented by encouraging lightweight and incremental implementation mechanisms and providing migration mechanisms for all ad-hoc legacy implementations common in practice, including conditional compilation (#ifdef), branches, clones, textual patches, command-line parameters, and plug-ins. It integrates research from different communities, including product- line analysis, static analysis, refactoring, concern location, and architecture recovery toward a common goal of reverse engineering variability implementations . This integration will allow scaling research and practice of analyzing and migrating variability from core calculi to real-world systems of the size and complexity of the Linux kernel.

Project Start
Project End
Budget Start
2013-09-01
Budget End
2017-08-31
Support Year
Fiscal Year
2013
Total Cost
$419,522
Indirect Cost
Name
Carnegie-Mellon University
Department
Type
DUNS #
City
Pittsburgh
State
PA
Country
United States
Zip Code
15213