Schulze, SandroSchaefer, InaAßmann, UweDemuth, BirgitSpitta, ThorstenPüschel, GeorgKaiser, Ronny2017-06-302017-06-302015978-3-88579-633-6SPLs evolve over time due to new or changed requirements and need to be maintained to retain their value. To this end, refactorings have been proposed to improve the design and structure of (object-oriented) software systems. Unfortunately, traditional refactorings are not applicable offhand to SPLs, because these refactorings do not take program variability into account as first class program entities. However, recent work has shown that variability constitutes an entirely new problem dimension for refactoring and, thus, must be explicitly addressed. Hence, applying refactoring to implementation artifacts of evolving SPLs must be part of domain engineering and thus, automatically applicable to all possible program variants. In our AOSD'13 paper, we address refactoring of software product lines by presenting a catalogue and implementation of refactorings for delta-oriented SPLs. Additionally, we propose code smells to guide developers to potential refactoring opportunities. We show how code smells can aid the identification of SPL refactorings and how these refactorings improve the evolvability and maintainability of delta-oriented SPLs. Particularly, our refactorings ensure behavior preservation for all variants of the SPL (except for evolutionary refactorings). While tailored to a particular variability mechanism, our refactorings and code smells can be adopted for other mechanisms as well.enRefactoring delta-oriented software product linesText/Conference Paper1617-5468