Supporting program variant generation and feature files in rbFeatures

To enhance software variability, feature-oriented programming approaches can be used to identify, express, and compose programs with different behavior. One implementation for feature-oriented programming is rbFeatures. This Ruby-based implementation allows to define features as first-class entities, uses semantic annotations to indicate where coarse or fine-grained feature-specific source code is expressed, and allows runtime modification of the program behavior. In this paper, we add two more capabilities to rbFeatures. First, the Variant Generator uses the annotations in a preprocessor style to generate program variants with a fixed behavior. Both Ruby and non-Ruby files are processed, and all source code that does not belong to the current feature configuration is pruned. Second, the Feature Aggregator helps to better edit features that are scattered over different artifacts of a program. It extracts all feature-specific code from the codebase, adds metadata, and allows the generated file to be edited by developers and the changes to be merged back to the codebase. We explain the concept and implementation of both tools, and illustrate the applicability with the Redmine project management application.

[1]  Dave Thomas,et al.  Agile Web Development with Rails , 2005 .

[2]  Sven Apel,et al.  Die Rolle von Features und Aspekten in der Softwareentwicklung (The Role of Features and Aspects in Software Development) , 2008, it Inf. Technol..

[3]  Sebastian Günther,et al.  rbFeatures: Feature-oriented programming with Ruby , 2012, Sci. Comput. Program..

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

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

[6]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

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

[8]  Roberto Erick Lopez-Herrejon,et al.  Evaluating Support for Features in Advanced Modularization Technologies , 2005, ECOOP.

[9]  Andreas Classen,et al.  Tag and prune: a pragmatic approach to software product line implementation , 2010, ASE.

[10]  Thomas Leich,et al.  Access control in feature-oriented programming , 2012, Sci. Comput. Program..

[11]  Arie van Deursen,et al.  Domain-specific language design requires feature descriptions , 2002 .

[12]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

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

[14]  Stephan Herrmann,et al.  A precise model for contextual roles: The programming language ObjectTeams/Java , 2007, Appl. Ontology.

[15]  Sebastian Günther,et al.  Feature-oriented programming with Ruby , 2009, FOSD '09.

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

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

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

[19]  Sebastian Günther Multi-DSL Applications with Ruby , 2010, IEEE Software.

[20]  Sebastian Günther,et al.  Dynamically adaptable software product lines using Ruby metaprogramming , 2010, FOSD '10.

[21]  Andreas Classen,et al.  Introducing TVL, a Text-based Feature Modelling Language , 2010, VaMoS' 2010.

[22]  Oscar Nierstrasz,et al.  Classboxes: controlling visibility of class extensions , 2005, Comput. Lang. Syst. Struct..

[23]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007, 11th International Software Product Line Conference (SPLC 2007).

[24]  Stan Jarzabek,et al.  XVCL: a mechanism for handling variants in software product lines , 2004, Sci. Comput. Program..

[25]  Marco Sinnema,et al.  Tool Support for COVAMOF , 2004 .

[26]  Danilo Beuche,et al.  Variability management with feature models , 2004, Sci. Comput. Program..

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

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

[29]  Sven Apel,et al.  Guaranteeing Syntactic Correctness for All Product Line Variants: A Language-Independent Approach , 2009, TOOLS.