Adaptive programming in JAsCo

In this paper we propose an extension to JAsCo for supporting Adaptive Programming in a Component-Based Software Development context. JAsCo is an aspect-oriented programming language targeted at Component-Based Software Development and allows encapsulating crosscutting concerns using highly reusable aspect beans. Adaptive Programming on the other hand, allows capturing crosscutting concerns by structure-shy adaptive visitors. We propose to implement an adaptive visitor as a regular JAsCo aspect bean. Hence, the reusability of an adaptive visitor is improved because the same visitor can be reused within different component contexts. We introduce JAsCo traversal connectors to deploy adaptive visitors, implemented as JAsCo aspect beans, upon a concrete component traversal. In addition, these traversal connectors allow to explicitly specify how the behavior of several adaptive visitors, instantiated onto the same component traversal, needs to be combined by making use of the JAsCo precedence and combination strategies. A prototype implementation of the JAsCo Adaptive Programming extension, which employs the DJ library, is available. As a proof of concept, we present an extended case study in the context of the Web Service Management Layer (WSML) project. In this case study, a set of visitors implemented in JAsCo is reused to accomplish multiple tasks.

[1]  Bertrand Meyer,et al.  On To Components , 1999, Computer.

[2]  Karl J. Lieberherr,et al.  DJ: Dynamic Adaptive Programming in Java , 2001, Reflection.

[3]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[4]  Joost Visser Visitor combination and traversal control , 2001, OOPSLA '01.

[5]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

[6]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

[7]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[8]  Karl Lieberherr,et al.  Traversing Recursive Object Structures : The Functional Visitor in Demeter , 2022 .

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

[10]  Ralf Lämmel,et al.  Typed generic traversal with term rewriting strategies , 2002, J. Log. Algebraic Methods Program..

[11]  Ankit Shah,et al.  XAspects: an extensible system for domain-specific aspect languages , 2003, OOPSLA '03.

[12]  Ralf Lämmel,et al.  Typed Combinators for Generic Traversal , 2002, PADL.

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

[14]  David H. Lorenz,et al.  Coupling Aspect-Oriented and Adaptive Programming , 2004 .

[15]  K.J. Lieberherr,et al.  Controlling the complexity of software designs , 2004, Proceedings. 26th International Conference on Software Engineering.

[16]  Karl J. Lieberherr,et al.  Aspect-oriented programming with adaptive methods , 2001, CACM.

[17]  Joost Visser,et al.  Object-oriented tree traversal with JJForester , 2001, Sci. Comput. Program..

[18]  James Coplien,et al.  Feature Interaction in Composed Systems , 2001, ECOOP Workshops.

[19]  Karl Lieberherr,et al.  DAJ : A Case Study of Extending AspectJ , .

[20]  Mira Mezini,et al.  Adaptive plug-and-play components for evolutionary software development , 1998, OOPSLA '98.

[21]  Ralf Lämmel,et al.  Strategic programming meets adaptive programming , 2003, AOSD '03.

[22]  Viviane Jonckers,et al.  AOP for Dynamic Configuration and Management of Web Services , 2003, ICWS-Europe.

[23]  Karl J. Lieberherr,et al.  Preventive Program Maintenance in Demeter/Java , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[24]  Wim Vanderperren,et al.  AOP for Dynamic Configuration and Management of Web Services , 2004, Int. J. Web Serv. Res..

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

[26]  Wim Vanderperren,et al.  JAsCo: an aspect-oriented approach tailored for component based software development , 2003, AOSD '03.

[27]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.