JUCS - Journal of Universal Computer Science 20(5): 587-614, doi: 10.3217/jucs-020-05-0587
A Toolset for Checking SPL Refinements
expand article infoFelype Ferreira, Rohit Gheyi§, Paulo Borba, Gustavo Soares|
‡ Federal University of Pernambuco, Recife, Brazil§ Campina Grande, Brazil| Federal University of Campina Grande, Campina Grande, Brazil
Open Access
Abstract
Developers evolve software product lines (SPLs) manually or using typical program refactoring tools. However, when evolving an SPL to introduce new features or to improve its design, it is important to make sure that the behavior of existing products is not affected. Typical program refactorings cannot guarantee that because the SPL context goes beyond code and other kinds of core assets, and involves additional artifacts such as feature models and configuration knowledge. Besides that, we typically have to deal with a set of alternative assets that do not constitute a well-formed program in an SPL. As a result, manual changes and existing program refactoring tools may introduce behavioral changes or invalidate existing product configurations. To reduce such risks, we propose approaches and implement four tools for making product line evolution safer. These tools check if SPL transformations preserve the behavior of the original SPL products. They implement different and practical approximations of refinement notions from a theory for safely evolving SPLs. Besides specifying the algorithms of each approach, we compare them with respect to soundness, performance and code coverage in 35 evolution scenarios of an SPL with 32 KLOC.
Keywords
software product lines, safe evolution, refactoring, checking tools