Tool Support for Product-Line Maintenance

Software product lines are typically instances of long-living software. One reason is that a product line must be maintained if any of its products needs maintenance. Another reason is that the goal of product lines is to foresee future evolution and plan for it in advance. Hence, product lines are typically maintained for years, and this maintenance is more challenging than that of single systems. First, product lines are typically developed by larger development teams. Second, there are more artifacts to be maintained than for a single product of the product line. Consequently, code quality and code documentation are crucial for product line maintenance. Tasks required to maintain product lines have already been touched in previous parts of the book. In this chapter, we focus on techniques that help developers to understand the product line code more easily. For brevity, we focus on feature-oriented programming only.

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

[2]  Sebastian Krieter,et al.  Tool demo: testing configurable systems with FeatureIDE , 2016, GPCE.

[3]  Yannis Smaragdakis,et al.  Implementing Layered Designs with Mixin Layers , 1998, ECOOP.

[4]  Wolfgang Schröder-Preikschat,et al.  A quantitative analysis of aspects in the eCos kernel , 2006, EuroSys.

[5]  Krzysztof Czarnecki,et al.  Staged configuration through specialization and multilevel configuration of feature models , 2005, Softw. Process. Improv. Pract..

[6]  Vasek Chvátal,et al.  A Greedy Heuristic for the Set-Covering Problem , 1979, Math. Oper. Res..

[7]  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).

[8]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[9]  Douglas C. Schmidt,et al.  Automated Diagnosis of Product-Line Configuration Errors in Feature Models , 2008, 2008 12th International Software Product Line Conference.

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

[11]  Gunter Saake,et al.  A taxonomy of software product line reengineering , 2014, VaMoS.

[12]  Sven Apel,et al.  Language-Independent and Automated Software Composition: The FeatureHouse Experience , 2013, IEEE Transactions on Software Engineering.

[13]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[14]  Sergio Segura,et al.  Automated analysis of feature models 20 years later: A literature review , 2010, Inf. Syst..

[15]  Thomas Leich,et al.  Migration from Annotation-Based to Composition-Based Product Lines: Towards a Tool-Driven Process , 2016 .

[16]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[17]  Sooyong Park,et al.  Dynamic Software Product Lines , 2008, Computer.

[18]  Sebastian Krieter,et al.  IncLing: efficient product-line testing using incremental pairwise sampling , 2016, GPCE.

[19]  Thomas Leich,et al.  FeatureIDE: An extensible framework for feature-oriented software development , 2014, Sci. Comput. Program..

[20]  Haiyan Zhao,et al.  A Propositional Logic-Based Method for Verification of Feature Models , 2004, ICFEM.

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

[22]  Gary T. Leavens,et al.  Behavioral interface specification languages , 2012, CSUR.

[23]  Marsha Chechik,et al.  A framework for managing cloned product variants , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[24]  Sven Apel,et al.  Feature-interaction detection based on feature-based specifications , 2013, Comput. Networks.

[25]  Márcio Ribeiro,et al.  Product-line maintenance with emergent contract interfaces , 2016, SPLC.

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

[27]  Marsha Chechik,et al.  Managing cloned variants: a framework and experience , 2013, SPLC '13.

[28]  Thomas Leich,et al.  FeatureC++: on the symbiosis of feature-oriented and aspect-oriented programming , 2005, GPCE'05.

[29]  Sebastian Krieter,et al.  Feature-Model Interfaces: The Highway to Compositional Analyses of Highly-Configurable Systems , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[30]  Jeff McAffer,et al.  The Eclipse 3.0 platform: Adopting OSGi technology , 2005, IBM Syst. J..

[31]  Sebastian Krieter,et al.  FeatureIDE: Taming the Preprocessor Wilderness , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[32]  Sebastian Krieter,et al.  Use-Case-Specific Source-Code Documentation for Feature-Oriented Programming , 2015, VaMoS.

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

[34]  Martin Erwig,et al.  #ifdef confirmed harmful: Promoting understandable software variation , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[35]  Krzysztof Czarnecki,et al.  A survey of variability modeling in industrial practice , 2013, VaMoS.

[36]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.

[37]  Krzysztof Czarnecki,et al.  An Exploratory Study of Cloning in Industrial Software Product Lines , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[38]  Sebastian Erdweg,et al.  Abstract Features in Feature Modeling , 2011, 2011 15th International Software Product Line Conference.

[39]  Gunter Saake,et al.  Effective product-line testing using similarity-based product prioritization , 2016, Software & Systems Modeling.

[40]  Thomas Thüm,et al.  Product-line specification and verification with feature-oriented contracts , 2015 .

[41]  Gunter Saake,et al.  Variant-preserving refactoring in feature-oriented software product lines , 2012, VaMoS.

[42]  Myra B. Cohen,et al.  Evaluating improvements to a meta-heuristic search for constrained interaction testing , 2011, Empirical Software Engineering.

[43]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[44]  Sven Apel,et al.  A comparison of product-based, feature-based, and family-based type checking , 2014 .

[45]  Gunter Saake,et al.  Potential synergies of theorem proving and model checking for software product lines , 2014, SPLC.

[46]  Thomas Thüm,et al.  Reasoning about edits to feature models , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[47]  Baldoino Fonseca dos Santos Neto,et al.  Assessing fine-grained feature dependencies , 2016, Inf. Softw. Technol..

[48]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[49]  Pierre-Yves Schobbens,et al.  Generic semantics of feature diagrams , 2007, Comput. Networks.

[50]  Øystein Haugen,et al.  Properties of realistic feature models make combinatorial testing of product lines feasible , 2011, MODELS'11.

[51]  Donald D. Cowan,et al.  Decision-making coordination and efficient reasoning techniques for feature-based configuration , 2010, Sci. Comput. Program..

[52]  Sven Apel,et al.  Strategies for product-line verification: Case studies and experiments , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[53]  Antonio Ruiz Cortés,et al.  Abductive Reasoning and Automated Analysis of Feature Models: How are they connected? , 2009, VaMoS.

[54]  Miguel A. Laguna,et al.  A systematic mapping study on software product line evolution: From legacy system reengineering to product line refactoring , 2013, Sci. Comput. Program..

[55]  Gunter Saake,et al.  Feature-context interfaces: tailored programming interfaces for software product lines , 2014, SPLC.

[56]  Thomas Leich,et al.  Tool support for feature-oriented software development: featureIDE: an Eclipse-based approach , 2005, eclipse '05.

[57]  Gunter Saake,et al.  On essential configuration complexity: Measuring interactions in highly-configurable systems , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

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

[59]  Bernhard Beckert,et al.  Verification of Object-Oriented Software. The KeY Approach - Foreword by K. Rustan M. Leino , 2007, The KeY Approach.

[60]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[61]  Charles W. Krueger,et al.  Variation Management for Software Production Lines , 2002, SPLC.

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

[63]  Sebastian Krieter,et al.  FeatureIDE: Scalable Product Configuration of Variable Systems , 2016, ICSR.

[64]  Uwe Aßmann,et al.  DeltaEcore - A Model-Based Delta Language Generation Framework , 2014, Modellierung.

[65]  Don S. Batory,et al.  A tutorial on feature oriented programming and product-lines , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[66]  Thomas Thüm,et al.  Explaining anomalies in feature models , 2016, GPCE.

[67]  Thomas Leich,et al.  FeatureIDE: A tool framework for feature-oriented software development , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[68]  Claus Brabrand,et al.  How Does the Degree of Variability Affect Bug Finding? , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[69]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[70]  Andrew P. Black,et al.  How We Refactor, and How We Know It , 2012, IEEE Trans. Software Eng..

[71]  Sebastian Krieter,et al.  Clean your variable code with featureIDE , 2016, SPLC.

[72]  Don S. Batory,et al.  Feature-oriented programming and the AHEAD tool suite , 2004, Proceedings. 26th International Conference on Software Engineering.

[73]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[74]  Ralf Lämmel,et al.  Flexible product line engineering with a virtual platform , 2014, ICSE Companion.

[75]  Raimund Dachselt,et al.  Using background colors to support program comprehension in software product lines , 2011, EASE.

[76]  Thomas Thüm,et al.  Implicit constraints in partial feature models , 2016, FOSD.

[77]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[78]  Sven Apel,et al.  An analysis of the variability in forty preprocessor-based software product lines , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.