A Toolset for Checking SPL Refinements
Felype Ferreira (Federal University of Pernambuco, Brazil)
Rohit Gheyi (Federal University of Campina Grande, Brazil)
Paulo Borba (Federal University of Pernambuco, Brazil)
Gustavo Soares (Federal University of Campina Grande, Brazil)
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: checking tools, refactoring, safe evolution, software product lines
Categories: D.2.13, D.2.4, D.2.5, D.2.7