An Algebra for Refactoring and Feature-Oriented Programming
A Software Product Line (SPL) is a set of programs that share features (i.e., user-visible program characteristics) and that differ in features. SPLs are commonly developed by reusing code from a shared code base. The code base of an SPL as well as the individual products are target of refactoring to maintain them or to integrate them with other programs. To develop proper refactoring tools, the authors must formalize the challenges faced and must distinguish stand-alone-program refactoring from SPL refactoring. They clarify the relationship between refactoring and SPLs, develop a formal, algebraic model of refactorings and SPL-implementation techniques, and prove important properties for the algebraic structure of refactorings in this setting.