Feature-Oriented Programming with FeatureIDE

Feature-oriented programming is a specialized form of generative programming. A specialized composition mechanism generates program variants out of code fragments. In contrast to conditional compilation, this approach allows to realize separation of concerns, meaning that features are implemented in isolation, while features in preprocessor annotated code intermix with each other. In this chapter, we introduce feature-oriented programming and the general process of how FeatureIDE helps to implement software product lines using this approach.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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