Flexible feature binding in software product lines

A software product line (SPL) is a family of programs that share assets from a common code base. The programs of an SPL can be distinguished in terms of features, which represent units of program functionality that satisfy stakeholders’ requirements. The features of an SPL can be bound either statically at program compile time or dynamically at run time. Both binding times are used in SPL development and have different advantages. For example, dynamic binding provides high flexibility whereas static binding supports fine-grained customizability without any impact on performance (e.g., for use on embedded systems). However, contemporary techniques for implementing SPLs force a programmer to choose the binding time already when designing an SPL and to mix different implementation techniques when multiple binding times are needed. We present an approach that integrates static and dynamic feature binding seamlessly. It allows a programmer to implement an SPL once and to decide per feature at deployment time whether it should be bound statically or dynamically. Dynamic binding usually introduces an overhead regarding resource consumption and performance. We reduce this overhead by statically merging features that are used together into dynamic binding units. A program can be configured at run time by composing binding units on demand. We use feature models to ensure that only valid feature combinations can be selected at compile and at run time. We provide a compiler and evaluate our approach on the basis of two non-trivial SPLs.

[1]  Calvin Lin,et al.  Comparing frameworks and layered refinement , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[2]  Jan Bosch,et al.  On the notion of variability in software product lines , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.

[3]  Stanley B. Lippman,et al.  Inside the C++ Object Model , 1996 .

[4]  Oscar Nierstrasz,et al.  Context-oriented Programming , 2008, J. Object Technol..

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

[6]  Martin L. Griss,et al.  Implementing Product-Line Features with Component Reuse , 2000, ICSR.

[7]  Walter Binder,et al.  HotWave: creating adaptive tools with dynamic aspect-oriented programming in Java , 2009, GPCE '09.

[8]  Olaf Spinczyk,et al.  Dynamic Aspect Weaver Family for Family-based Adaptable Systems , 2005, NODe/GSEM.

[9]  Karl J. Lieberherr,et al.  Aspectual Collaborations: Combining Modules and Aspects , 2003, Comput. J..

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

[11]  Cristina Gacek,et al.  Implementing product line variabilities , 2001, SSR '01.

[12]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[13]  Mehmet Aksit,et al.  Transactions on Aspect-Oriented Software Development I , 2006, Trans. Aspect-Oriented Software Development I.

[14]  Don Batory,et al.  Scaling step-wise refinement , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[15]  Gustavo Alonso,et al.  Controlled, systematic, and efficient code replacement for running java programs , 2008, Eurosys '08.

[16]  Thomas Leich,et al.  Tailor-made data management for embedded systems: A case study on Berkeley DB , 2009, Data Knowl. Eng..

[17]  Krzysztof Czarnecki,et al.  Staged Configuration Using Feature Models , 2004, SPLC.

[18]  Mira Mezini,et al.  Component Integration with Pluggable Composite Adapters , 2002 .

[19]  Katharina Mehner-Heindl,et al.  Improving Alignment of Crosscutting Features with Code in Product Line Engineering , 2007, J. Object Technol..

[20]  Kyo Chul Kang,et al.  A feature-oriented approach to developing dynamically reconfigurable products in product line engineering , 2006 .

[21]  Carlos José Pereira de Lucena,et al.  Refactoring product lines , 2006, GPCE '06.

[22]  Thomas Leich,et al.  Aspectual Feature Modules , 2008, IEEE Transactions on Software Engineering.

[23]  Michael Haupt,et al.  Virtual machine support for dynamic join points , 2004, AOSD '04.

[24]  Marko Rosenmüller,et al.  Automating the Configuration of Multi Software Product Lines , 2010, VaMoS.

[25]  Mansour Zand,et al.  Proceedings of the 1995 Symposium on Software reusability , 1995 .

[26]  Mark Strembeck,et al.  Object-based and class-based composition of transitive mixins , 2007, Inf. Softw. Technol..

[27]  Matthew Flatt,et al.  Jiazzi: new-age components for old-fasioned Java , 2001, OOPSLA '01.

[28]  Sven Apel,et al.  An algebraic foundation for automatic feature-based program synthesis , 2010, Sci. Comput. Program..

[29]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[30]  Gunter Saake,et al.  Code generation to support static and dynamic composition of software product lines , 2008, GPCE '08.

[31]  Andreas Classen,et al.  A Formal Semantics for Multi-level Staged Configuration , 2009, VaMoS.

[32]  Roberto Erick Lopez-Herrejon,et al.  A disciplined approach to aspect composition , 2006, PEPM '06.

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

[34]  Jan Bosch,et al.  Managing Variability in Software Product Lines , 2000 .

[35]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

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

[37]  Sven Apel,et al.  Feature cohesion in software product lines: an exploratory study , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

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

[39]  Sven Apel,et al.  An Overview of Feature-Oriented Software Development , 2009, J. Object Technol..

[40]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

[41]  Eric Eide,et al.  Edicts: implementing features with flexible binding times , 2008, AOSD.

[42]  Klaus Ostermann,et al.  Dynamically Composable Collaborations with Delegation Layers , 2002, ECOOP.

[43]  Sven Apel,et al.  Program refactoring using functional aspects , 2008, GPCE '08.

[44]  Uwe Zdun,et al.  Some Patterns of Component and Language Integration , 2004, EuroPLoP.

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