On the impact of the optional feature problem: analysis and case studies

A software product line is a family of related programs that are distinguished in terms of features. A feature implements a stakeholders' requirement. Different program variants specified by distinct feature selections are produced from a common code base. The optional feature problem describes a common mismatch between variability intended in the domain and dependencies in the implementation. When this situation occurs, some variants that are valid in the domain cannot be produced due to implementation issues. There are many different solutions to the optional feature problem, but they all suffer from drawbacks such as reduced variability, increased development effort, reduced efficiency, or reduced source code quality. We examine the impact of the optional feature problem in two case studies from the domain of embedded database systems, and we survey different state-of-the-art solutions and their trade-offs. Our intension is to raise awareness of the problem, to guide developers in selecting an appropriate solution for their product line, and to identify opportunities for future research.

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

[2]  Yann-Gaël Guéhéneuc,et al.  Feature Location Using Probabilistic Ranking of Methods Based on Execution Scenarios and Information Retrieval , 2007, IEEE Transactions on Software Engineering.

[3]  Mira Mezini,et al.  Integrating independent components with on-demand remodularization , 2002, OOPSLA '02.

[4]  Charles W. Krueger,et al.  Point - Counterpoint: Being Proactive Pays Off - Eliminating the Adoption , 2002, IEEE Softw..

[5]  Krzysztof Czarnecki,et al.  Verifying feature-based model templates against well-formedness OCL constraints , 2006, GPCE '06.

[6]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[7]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[8]  Weishan Zhang,et al.  XVCL: XML-based variant configuration language , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[9]  Margo I. Seltzer Beyond relational databases , 2008, CACM.

[10]  Tyson R. Browning,et al.  Applying the design structure matrix to system decomposition and integration problems: a review and new directions , 2001, IEEE Trans. Engineering Management.

[11]  Antonio Ruiz Cortés,et al.  Automated Reasoning on Feature Models , 2005, CAiSE.

[12]  Dirk Muthig,et al.  Generic Implementation of Product Line Components , 2002, NetObjectDays.

[13]  Luc Bouganim,et al.  PicoDBMS: Scaling down database techniques for the smartcard , 2001, The VLDB Journal.

[14]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[15]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

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

[17]  Sven Apel,et al.  Type-Checking Software Product Lines - A Formal Approach , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[18]  Don Batory,et al.  Scaling Step-Wise Refinement , 2004, IEEE Trans. Software Eng..

[19]  Roberto Erick Lopez-Herrejon,et al.  Generating product-lines of product-families , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[20]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

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

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

[23]  William R. Cook,et al.  Safe composition of product lines , 2007, GPCE '07.

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

[25]  Sven Apel,et al.  Integrating Compositional and Annotative Approaches for Product Line Engineering , 2008 .

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

[27]  Hans-Arno Jacobsen,et al.  Towards just-in-time middleware architectures , 2005, AOSD '05.

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

[29]  Deborah Estrin,et al.  Habitat monitoring with sensor networks , 2004, CACM.

[30]  Pierre-Yves Schobbens,et al.  Disambiguating the Documentation of Variability in Software Product Lines: A Separation of Concerns, Formalization and Automated Analysis , 2007, 15th IEEE International Requirements Engineering Conference (RE 2007).

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

[32]  Mario Kolberg,et al.  Feature interaction: a critical review and considered forecast , 2003, Comput. Networks.

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

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

[35]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE.

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