Quantified, Typed Events for Improved Separation of Concerns

Implicit invocation and aspect-oriented languages provide related but distinct mechanisms for separation of concerns. Implicit invocation languages have explicitly announced events, which runs registered observer methods. Aspect-oriented languages have implicitly announced events, called “join points,” which run methodlike but more powerful advice. A limitation of implicit invocation languages is their inability to refer to a large set of events succinctly. They also lack the expressive power of aspect-oriented advice, and require code to manage event registration and announcement. Aspect-oriented languages also have several limitations, including the potential for fragile dependence on syntactic structure that may hurt maintainability, limits in the set of join points and the reflective contextual information that they make available. Quantified, typed events solve all these problems. They extend implicit invocation languages with a key idea from aspectoriented languages: the ability to quantify over events (join points). Programmers declare named event types that contain information about the names and types of event arguments (exposed context). An event type declaratively identifies an expression as an event. This event type can then be used to quantify over all such events. Event types reduce the coupling between the observers and the set of events, and similarly between the advising and advised code.

[1]  Michael Eichberg,et al.  Pointcuts as Functional Queries , 2004, APLAS.

[2]  Gary T. Leavens,et al.  Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning , 2002 .

[3]  David A. Schmidt The structure of typed programming languages , 1994, Foundations of computing series.

[4]  Gary T. Leavens,et al.  A design discipline and language features for modular reasoning in aspect-oriented programs , 2005 .

[5]  John R. Gurd,et al.  A join point for loops in AspectJ , 2006, AOSD '06.

[6]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[7]  Hridesh Rajan,et al.  Aspect language features for concern coverage profiling , 2005, AOSD '05.

[8]  David C. Luckham,et al.  An Event-Based Architecture Definition Language , 1995, IEEE Trans. Software Eng..

[9]  Gary T. Leavens,et al.  MAO: Ownership and Effects for More Effective Reasoning About Aspects , 2007, ECOOP.

[10]  G.C.N. Yeung,et al.  Principles of programming languages: Design, evaluation, and implementation , 1985, Proceedings of the IEEE.

[11]  H. Rajan,et al.  Type-Based Quantification of Aspect-Oriented Programs , 2006 .

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

[13]  Friedrich Steimann The paradoxical success of aspect-oriented programming , 2006, OOPSLA '06.

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

[15]  David Notkin,et al.  Reconciling environment integration and software evolution , 1992, TSEM.

[16]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[17]  Jürgen Graf,et al.  Using pointcut delta analysis to support evolution of aspect-oriented software , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[18]  David Garlan,et al.  Formalizing Design Spaces: Implicit Invocation Mechanisms , 1991, VDM Europe.

[19]  Yuanyuan Song,et al.  Modular software design with crosscutting interfaces , 2006, IEEE Software.

[20]  David Walker,et al.  Harmless advice , 2006, POPL '06.

[21]  N. Kicillof,et al.  On the need for setpoints , 2005 .

[22]  Hridesh Rajan,et al.  Eos: instance-level aspects for integrated system design , 2003, ESEC/FSE-11.

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

[24]  Yuanyuan Song,et al.  Information hiding interfaces for aspect-oriented design , 2005, ESEC/FSE-13.

[25]  Gary T. Leavens,et al.  MiniMAO: An imperative core language for studying aspect-oriented reasoning , 2006, Sci. Comput. Program..

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

[27]  Jonathan Aldrich,et al.  Open Modules: Modular Reasoning About Advice , 2005, ECOOP.

[28]  Sven Apel,et al.  Types and modularity for implicit invocation with implicit announcement , 2010, TSEM.

[29]  Matthias Felleisen,et al.  A Programmer's Reduction Semantics for Classes and Mixins , 1999, Formal Syntax and Semantics of Java.

[30]  Mira Mezini,et al.  Separation of Concerns with Procedures, Annotations, Advice and Pointcuts , 2005, ECOOP.

[31]  Gary T. Leavens,et al.  MiniMAO1: Investigating the Semantics of Proceed , 2005 .

[32]  Radha Jagadeesan,et al.  Typed parametric polymorphism for aspects , 2006, Sci. Comput. Program..

[33]  H. Rajan,et al.  Classpects: unifying aspect- and object-oriented language design , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

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

[35]  Gopalan Nadathur,et al.  System Description: Teyjus - A Compiler and Abstract Machine Based Implementation of lambda-Prolog , 1999, CADE.

[36]  Suresh Jagannathan,et al.  Metalevel building blocks for modular systems , 1994, TOPL.

[37]  Kris Gybels,et al.  On the Existence of the AOSD-Evolution Paradox , 2003 .