Subclack: feature-oriented programming with behavioral feature interfaces

Feature-oriented programming extends object-oriented programming to support feature modularity. Feature modules typically cut across class boundaries to implement end-user-visible features. Customized program variants can be composed automatically given a selection of desired feature modules. We propose behavioral feature interfaces based on design by contract for precise localization of faulty feature modules. There are three different approaches for feature-module composition, which are considered to be equivalent in the literature. We discuss advantages and disadvantages for each approach with regard to behavioral feature interfaces. Based on our insights, we present Subclack as a new approach for feature-module composition combining the advantages of all existing approaches. In our examples, we use contracts defined in an feature-oriented extension of the Java Modeling Language, and discuss how they can be checked by means of runtime assertions.

[1]  Sven Apel,et al.  Proof Composition for Deductive Verification of Software Product Lines , 2011, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops.

[2]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

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

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

[5]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

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

[7]  Ana Moreira,et al.  Contracts for aspect-oriented design , 2008 .

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

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

[10]  Gary T. Leavens,et al.  Forcing behavioral subtyping through specification inheritance , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[11]  Don Batory,et al.  A Tutorial on Feature Oriented Programming and the AHEAD Tool Suite and the AHEAD Tool Suite , 2006 .

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

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

[14]  Reiner Hähnle,et al.  A Liskov Principle for Delta-Oriented Programming , 2012, ISoLA.

[15]  Sven Apel,et al.  Family-based deductive verification of software product lines , 2012, GPCE '12.

[16]  Bernhard Möller,et al.  An extension for feature algebra , 2009, FOSD '09.

[17]  Jianjun Zhao,et al.  Pipa: A Behavioral Interface Specification Language for AspectJ , 2003, FASE.

[18]  William R. Cook,et al.  Fitting the pieces together: a machine-checked model of safe composition , 2009, ESEC/FSE '09.

[19]  Sven Apel,et al.  Type safety for feature-oriented product lines , 2010, Automated Software Engineering.

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

[21]  Sven Apel,et al.  Detecting Dependences and Interactions in Feature-Oriented Design , 2010, 2010 IEEE 21st International Symposium on Software Reliability Engineering.

[22]  Gary T. Leavens,et al.  Beyond Assertions: Advanced Specification and Verification with JML and ESC/Java2 , 2005, FMCO.

[23]  Johan Dovland,et al.  A transformational proof system for delta-oriented programming , 2012, SPLC '12.

[24]  Gary T. Leavens,et al.  Modular aspect-oriented design rule enforcement with XPIDRs , 2013, FOAL.

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

[26]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, Electron. Notes Theor. Comput. Sci..

[27]  David H. Lorenz,et al.  Extending Design by Contract for Aspect-Oriented Programming , 2005, ArXiv.

[28]  Oscar Nierstrasz,et al.  Classbox/J: controlling the scope of change in Java , 2005, OOPSLA '05.

[29]  Elke Pulvermüller,et al.  Aspect Composition Applying the Design by Contract Principle , 2000, GCSE.

[30]  Gunter Saake,et al.  Applying Design by Contract to Feature-Oriented Programming , 2012, FASE.

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

[32]  Sven Apel,et al.  Automatic detection of feature interactions using the Java modeling language: an experience report , 2011, SPLC '11.