Feature Traceability for Conditional Compilation

A common task during software development, in general, and feature-oriented software development, in particular, is to locate features in domain artifacts. We discuss how to trace features that are implemented using conditional compilation. Feature traceability is especially challenging for conditional compilation, as features used in preprocessor annotations are often scattered over multiple locations and files. Locating all artifacts for a certain feature is typically referred to as the feature traceability problem. With FeatureIDE, we aim to ease the implementation with preprocessors with several views and mechanisms that help to locate features and provide an overview on their implementation and usage.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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