Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement

Feature-oriented programming (FOP) is a paradigm that incorporates programming language technology, program generation techniques, and stepwise refinement. In their GPCE'07 paper, Thaker et al. suggest the development of a type system for FOP to guarantee safe feature composition, i.e, to guarantee the absence of type errors during feature composition. We present such a type system along with a calculus for a simple feature-oriented, Java-like language, called Feature Featherweight Java (FFJ). Furthermore, we explore four extensions of FFJ and how they affect type soundness.

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

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

[3]  W. Cook,et al.  A Virtual Class Calculus , 2005 .

[4]  Thomas Leich,et al.  Aspect Refinement Ð Unifying AOP and Stepwise Refinement , 2007, J. Object Technol..

[5]  Roger T. Alexander,et al.  Distributing classes with woven concerns: an exploration of potential fault scenarios , 2005, AOSD '05.

[6]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

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

[8]  DeLesley Hutchins,et al.  Eliminating distinctions of class: using prototypes to model virtual classes , 2006, OOPSLA '06.

[9]  Shan Shan Huang,et al.  Expressive and safe static reflection with MorphJ , 2008, PLDI '08.

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

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

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

[13]  Klaus Ostermann,et al.  Nominal and Structural Subtyping in Component-Based Programming , 2008, J. Object Technol..

[14]  Sophia Drossopoulou,et al.  Tribe: a simple virtual class calculus , 2007, AOSD.

[15]  John C. Reynolds User-defined types and procedural data structures as complementary approaches to data abstraction , 1994 .

[16]  Sven Apel,et al.  An Overview of the gDEEP Calculus , 2008 .

[17]  Davide Ancona,et al.  Jam---designing a Java extension with mixins , 2003, TOPL.

[18]  Martin Odersky,et al.  A Nominal Theory of Objects with Dependent Types , 2003, ECOOP.

[19]  Matthew Flatt,et al.  A Framework for Modular Linking in OO Languages , 2006, JMLC.

[20]  Gary T. Leavens,et al.  MultiJava: Design rationale, compiler implementation, and applications , 2006, TOPL.

[21]  Sven Apel,et al.  Language-Independent Safe Decomposition of Legacy Applications into Features , 2008 .

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

[23]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

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

[25]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[26]  Oscar Díaz,et al.  On Refining XML Artifacts , 2007, ICWE.

[27]  Antero Taivalsaari,et al.  On the notion of inheritance , 1996, CSUR.

[28]  Vitaly Shmatikov,et al.  A Core Calculus of Classes and Mixins , 1999, ECOOP.

[29]  Luigi Liquori,et al.  FeatherTrait: A modest extension of Featherweight Java , 2008, TOPL.

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

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

[32]  Mira Mezini,et al.  Dependent classes , 2007, OOPSLA.

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

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

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

[36]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[37]  Tetsuo Tamai,et al.  McJava - A Design and Implementation of Java with Mixin-Types , 2004, APLAS.

[38]  Mirko Viroli,et al.  Lightweight family polymorphism , 2008, J. Funct. Program..

[39]  Andrew C. Myers,et al.  Scalable extensibility via nested inheritance , 2004, OOPSLA.

[40]  William R. Cook,et al.  Object-Oriented Programming Versus Abstract Data Types , 1990, REX Workshop.

[41]  Mads Torgersen The Expression Problem Revisited , 2004, ECOOP.

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

[43]  Sven Apel,et al.  Superimposition: A Language-Independent Approach to Software Composition , 2008, SC@ETAPS.

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

[45]  Martin Odersky,et al.  Scalable component abstractions , 2005, OOPSLA '05.