Refactoring Java Software Product Lines

Refactoring is a staple of Object-Oriented (OO) program development. It should be a staple of OO Software Product Line (SPL) development too. X15 is the first tool to support the refactoring of Java SPL codebases. X15 (1) uses Java custom annotations to encode variability in feature-based Java SPLs, (2) projects a view of an SPL product (a program that corresponds to a legal SPL configuration), and (3) allows programmers to edit and refactor the product, propagating changes back to the SPL codebase. Case studies apply 2316 refactorings in 8 public Java SPLs and show that X15 is as efficient, expressive, and scalable as a state-of-the-art feature-unaware Java refactoring engine.

[1]  Edoardo Vacchi,et al.  @Java: Bringing a richer annotation model to Java , 2014, Comput. Lang. Syst. Struct..

[2]  Sandro Schulze,et al.  Refactoring delta-oriented software product lines , 2013, Software Engineering & Management.

[3]  Sandro Schulze,et al.  DeltaJ 1.5: delta-oriented programming for Java 1.5 , 2014, PPPJ.

[4]  Robert Grimm,et al.  SuperC: parsing all of C by taming the preprocessor , 2012, PLDI.

[5]  Don S. Batory,et al.  Feature Models, Grammars, and Propositional Formulas , 2005, SPLC.

[6]  Gunter Saake,et al.  Variant-preserving refactorings for migrating cloned products to a product line , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[7]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[8]  Ralph E. Johnson,et al.  How do APIs evolve? A story of refactoring , 2006, J. Softw. Maintenance Res. Pract..

[9]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[10]  Jan Wloka,et al.  Tool-supported refactoring of aspect-oriented programs , 2008, AOSD.

[11]  Sven Apel,et al.  Analyzing the discipline of preprocessor annotations in 30 million lines of C code , 2011, AOSD '11.

[12]  Sven Apel,et al.  FEATUREHOUSE: Language-independent, automated software composition , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[13]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[14]  Sven Apel,et al.  Morpheus: Variability-Aware Refactoring in the Wild , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[15]  Christopher W. Pidgeon,et al.  DMS®: Program Transformations for Practical Scalable Software Evolution , 2002, IWPSE '02.

[16]  Krzysztof Czarnecki,et al.  Mining configuration constraints: static analyses and empirical results , 2014, ICSE.

[17]  Ralph Johnson,et al.  How do APIs evolveq A story of refactoring: Research Articles , 2006 .

[18]  Sebastian Erdweg,et al.  A variability-aware module system , 2012, OOPSLA '12.

[19]  Don S. Batory,et al.  Improving Refactoring Speed by 10X , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[20]  Charles Simonyi,et al.  Intentional software , 2006, OOPSLA '06.

[21]  Sebastian Erdweg,et al.  Variability-aware parsing in the presence of lexical macros and conditional compilation , 2011, OOPSLA '11.

[22]  Malte Lochau,et al.  Implementing refactorings for FOP: lessons learned and challenges ahead , 2013, FOSD '13.

[23]  Frederic Sala,et al.  NSF expedition on variability-aware software: Recent results and contributions , 2015, it Inf. Technol..

[24]  David Flanagan,et al.  Java in a Nutshell , 1996 .

[25]  Martin Erwig,et al.  The Choice Calculus: A Representation for Software Variation , 2011, TSEM.

[26]  Robert M. Fuhrer,et al.  Refactoring in the Eclipse JDT : Past , Present , and Future , 2007 .

[27]  Christian Kästner,et al.  Virtual Separation of Concerns: Toward Preprocessors 2.0 , 2010, it Inf. Technol..

[28]  William G. Griswold Program restructuring as an aid to software maintenance , 1992 .

[29]  Jan Hannemann Aspect-Oriented Refactoring : Classification and Challenges , 2006 .

[30]  Shan Shan Huang,et al.  cJ: enhancing java with safe type conditions , 2007, AOSD.

[31]  Tao Xie,et al.  Automated Inference of Pointcuts in Aspect-Oriented Refactoring , 2007, 29th International Conference on Software Engineering (ICSE'07).

[32]  João M. Fernandes,et al.  An illustrative example of refactoring object‐oriented source code with aspect‐oriented mechanisms , 2008, Softw. Pract. Exp..

[33]  Alejandra Garrido,et al.  Challenges of refactoring C programs , 2002, IWPSE '02.

[34]  Benjamin C. Pierce,et al.  Basic category theory for computer scientists , 1991, Foundations of computing.

[35]  David Flanagan Java in a nutshell, fifth edition , 2005 .

[36]  Eric Walkingshaw,et al.  Projectional editing of variational software , 2015, GPCE 2014.

[37]  Krzysztof Czarnecki,et al.  Verifying feature-based model templates against well-formedness OCL constraints , 2006, GPCE '06.

[38]  Gunter Saake,et al.  Feature-Oriented Software Product Lines , 2013, Springer Berlin Heidelberg.

[39]  Don S. Batory,et al.  Scripting parametric refactorings in Java to retrofit design patterns , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[40]  William R. Cook,et al.  Safe composition of product lines , 2007, GPCE '07.

[41]  Sven Apel,et al.  Refactoring Feature Modules , 2009, ICSR.

[42]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[43]  Dachuan Yu,et al.  Variance and Generalized Constraints for C# Generics , 2006, ECOOP.

[44]  Krzysztof Czarnecki,et al.  Evolution of the Linux Kernel Variability Model , 2010, SPLC.

[45]  Andrzej Wasowski,et al.  Concepts, Operations, and Feasibility of a Projection-Based Variation Control System , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[46]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[47]  Ina Schaefer,et al.  Pure delta-oriented programming , 2010, FOSD '10.

[48]  Viviana Bono,et al.  Delta-Oriented Programming of Software Product Lines , 2010, SPLC.

[49]  Andrew C. Myers,et al.  Parameterized types for Java , 1997, POPL '97.

[50]  Sven Apel,et al.  Virtual Separation of Concerns - A Second Chance for Preprocessors , 2009, J. Object Technol..