Aspectual Collaborations: Combining Modules and Aspects

Complex behavior often resists clean modularization in object-oriented languages. Aspectoriented programming tackles this problem by providing ¤exible module boundaries that can span and partition classes. However, in order to achieve this ¤exibility, valuable modularity mechanisms, such as encapsulation and external composition, are lost. The ability to separately compile or reason about a modular unit is also compromised. We propose that this tradeoff is not necessary, and that by expressing aspects as part of our modules, we can restore lost modular properties while maintaining aspectual features. As a concrete demonstration, we present the main features of Aspectual Collaborations, and show how these interact to combine modularity with aspectual behavior. The expressiveness of Aspectual Collaborations, AspectJ, and Hyper/J are compared using a challenge problem, allowing us to estimate the effectiveness of the approach.

[1]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[2]  Siobhán Clarke,et al.  Separating Crosscutting Concerns Across the Lifecycle: From Composition Patterns to AspectJ and Hyper/J , 2001 .

[3]  Siobhán Clarke,et al.  Towards a standard design language for AOSD , 2002, AOSD '02.

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

[5]  Matthias Felleisen,et al.  Units: cool modules for HOT languages , 1998, PLDI.

[6]  Erik Ernst,et al.  Family Polymorphism , 2001, ECOOP.

[7]  Peter Wegner,et al.  The Object-Oriented Classification Paradigm , 1987, Research Directions in Object-Oriented Programming.

[8]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[9]  Gary T. Leavens,et al.  MultiJava: modular open classes and symmetric multiple dispatch for Java , 2000, OOPSLA '00.

[10]  강문설 [서평]「The Unified Modeling Language User Guide」 , 1999 .

[11]  Harold Ossher,et al.  Subject-oriented composition rules , 1995, OOPSLA.

[12]  Johan Ovlinger Modular programming with aspectual collaborations , 2002, OOPSLA '02.

[13]  Mira Mezini Maintaining the consistency of class libraries during their evolution , 1997, OOPSLA '97.

[14]  Siobhán Clarke,et al.  Composition patterns: an approach to designing reusable aspects , 2001, ICSE 2001.

[15]  Mira Mezini,et al.  Programming with Aspectual Components , 1999 .

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

[17]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[18]  Mira Mezini,et al.  Integrating independent components with on-demand remodularization , 2002, OOPSLA '02.

[19]  Gregor Kiczales,et al.  D: A Language Framework for Distributed Programming , 1997 .

[20]  Cristina V. Lopes,et al.  Abstracting Process-to-Function Relations in Concurrency Object-Oriented Applications , 1994, ECOOP.

[21]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[22]  David Notkin,et al.  Architectural Reasoning in ArchJava , 2002, ECOOP.

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

[24]  Karl J. Lieberherr,et al.  A case for statically executable advice: checking the law of demeter with AspectJ , 2003, AOSD '03.

[25]  Cristina Videira Lopes,et al.  Graph-based optimizations for parameter passing in remote invocations , 1995, Proceedings of International Workshop on Object Orientation in Operating Systems.

[26]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[27]  C. Q. Lee,et al.  The Computer Journal , 1958, Nature.

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

[29]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[30]  Shmuel Katz,et al.  A superimposition control construct for distributed systems , 1993, TOPL.

[31]  Stephen N. Freund,et al.  Adding type parameterization to the Java language , 1997, OOPSLA '97.

[32]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[33]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[34]  Erik Ernst Separation of Concerns and then What , 2000 .

[35]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[36]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[37]  Mira Mezini,et al.  PIROL: a case study for multidimensional separation of concerns in software engineering environments , 2000, OOPSLA '00.

[38]  Erik Ernst Syntax Based Modularization: Invasive or Not? , 2000 .

[39]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[40]  Cristina V. Lopes,et al.  Recent Developments in Aspect , 1998, ECOOP Workshops.