Aspects and Annotations for Controlling the Roles Application Classes Play for Design Patterns

Design patterns are an invaluable resource for developers. Yet, for some of them the implementation of an application concern and the code needed to enforce the design pattern solution can be tangled within the same class. This potent ially makes classes more complex, more prone to changes and less reusable. In order to keep the complexity of classes under manageable levels, this paper proposes a solution based on aspect-orientation. Our solution makes aspects and application classes independent of each other, while connecting code is used to concisely express the role played by classes within design patterns. Developers needing to modify the role of an application class should only update such connecting code, thus keeping changes to application code to a minimum. The performance overhead of such an approach is evaluated and compared with the standard implementation.

[1]  Giuseppe Pappalardo,et al.  Handling run-time updates in distributed applications , 2005, SAC '05.

[2]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[3]  Ira R. Forman,et al.  Java reflection in action , 2005 .

[4]  B. J. Ferro Castro,et al.  Pattern-Oriented Software Architecture: A System of Patterns , 2009 .

[5]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[6]  Ramnivas Laddad,et al.  AspectJ in Action: Enterprise AOP with Spring Applications , 2009 .

[7]  Akinori Yonezawa,et al.  Hybrid Group Reflective Architecture for Object-Oriented Concurrent Reflective Programming , 1991, ECOOP.

[8]  Walter Cazzola,et al.  SmartMethod: an efficient replacement for method , 2004, SAC '04.

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

[10]  Jan Bosch,et al.  Superimposition: a component adaptation technique , 1999, Inf. Softw. Technol..

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

[12]  Giuseppe Pappalardo,et al.  Tackling consistency issues for runtime updating distributed systems , 2010, 2010 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum (IPDPSW).

[13]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[14]  Stephan Herrmann,et al.  Object Teams: Improving Modularity for Crosscutting Collaborations , 2002, NetObjectDays.

[15]  P. Cochat,et al.  Et al , 2008, Archives de pediatrie : organe officiel de la Societe francaise de pediatrie.

[16]  Jordi Alvarez Canal Parametric Aspects: A Proposal , 2004, RAM-SE.

[17]  Stefan Hanenberg,et al.  Parametric introductions , 2003, AOSD '03.

[18]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

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

[20]  Giuseppe Pappalardo,et al.  Using aspects and annotations to separate application code from design patterns , 2010, SAC '10.