Intensional changes avoid co-evolution!

Modularization is key to support the maintainability of software systems. In some cases, however, maintenance requires certain modules to evolve together. This phenomenon complicates software maintainability and is commonly referred to as co-evolution. In this paper, we tackle co-evolution in the domain of change-based feature-oriented programming (ChOP). In ChOP, feature modules -- each matching the implementation of one requirement -- are specified as sets of first-class change objects. Our solution is based on intensional changes: descriptive changes that are automatically evaluated with respect to the other feature modules before they are applied. We present a maintenance scenario and use it to show how intensional changes avoid co-evolution.

[1]  Bram Adams,et al.  Co-evolution of source code and the build system , 2009, 2009 IEEE International Conference on Software Maintenance.

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

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

[4]  Roel Wuyts,et al.  Detecting unanticipated aspect interferences at runtime with compositional intentions , 2009, RAM-SE@ECOOP.

[5]  Kris Gybels,et al.  Arranging language features for more robust pattern-based crosscuts , 2003, AOSD '03.

[6]  Ademar Aguiar,et al.  Towards detecting and solving aspect conflicts and interferences using unit tests , 2007, SPLAT.

[7]  Serge Demeyer,et al.  Software Evolution , 2010 .

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

[9]  Jia Liu,et al.  Modeling Interactions in Feature Oriented Software Designs , 2005, FIW.

[10]  Lodewijk Bergmans,et al.  Composing crosscutting concerns using composition filters , 2001, CACM.

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

[12]  Kim Mens,et al.  Co-Evolution of Object-Oriented Software Design and Implementation , 2002 .

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

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

[15]  Yannis Smaragdakis,et al.  Implementing reusable object-oriented components , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[16]  Gregor Kiczales,et al.  Discussing aspects of AOP , 2001, CACM.

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

[18]  Jorge Vallejos,et al.  Flexible features: making feature modules more reusable , 2009, SAC '09.

[19]  Theo D'Hondt,et al.  Change-oriented software engineering , 2007, ICDL '07.

[20]  Theo D'Hondt,et al.  Intensional changes: modularizing crosscutting features , 2010, SAC '10.