µABC: A Minimal Aspect Calculus

Aspect-oriented programming is emerging as a powerful tool for system design and development. In this paper, we study aspects as primitive computational entities on par with objects, functions and horn-clauses. To this end, we introduce μABC, a name-based calculus, that incorporates aspects as primitive. In contrast to earlier work on aspects in the context of object-oriented and functional programming, the only computational entities in μABC are aspects. We establish a compositional translations into μABC from a functional language with aspects and higher-order functions. Further, we delineate the features required to support an aspect-oriented style by presenting a translation of μABC into an extended π-calculus.

[1]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

[2]  Gary T. Leavens,et al.  Parameterized Aspect Calculus: A Core Calculus for the Direct Study of Aspect-Oriented Languages , 2003 .

[3]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[4]  Oege de Moor,et al.  Measuring the dynamic behaviour of AspectJ programs , 2004, OOPSLA.

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

[6]  Andrew M. Pitts,et al.  MJ: An imperative core calculus for Java and Java with effects , 2003 .

[7]  Jean-Jacques Lévy,et al.  A Calculus of Mobile Agents , 1996, CONCUR.

[8]  Harold Ossher,et al.  Multi-Dimensional Separation of Concerns and the Hyperspace Approach , 2002 .

[9]  Mitchell Wand A Semantics for Advice and Dynamic Join Points in Aspect-Oriented Programming , 2001, SAIG.

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

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

[12]  David Walker,et al.  Aspects, Information Hiding and Modularity , 2003 .

[13]  David Walker,et al.  A theory of aspects , 2003, ICFP '03.

[14]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

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

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

[17]  Albert Benveniste,et al.  The synchronous approach to reactive and real-time systems , 1991 .

[18]  Radha Jagadeesan,et al.  A Typed Calculus of Aspect-oriented Programs? , 2003 .

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

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

[21]  Samuel B. Williams,et al.  ASSOCIATION FOR COMPUTING MACHINERY , 2000 .

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

[23]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[24]  Shriram Krishnamurthi,et al.  Pointcuts and advice in higher-order languages , 2003, AOSD '03.

[25]  Lodewijk Bergmans Composing Concurrent Objects-Aplying Composition Filters for the Development And Reuse of Concurrent , 1996 .

[26]  Radha Jagadeesan,et al.  A Calculus of Untyped Aspect-Oriented Programs , 2003, ECOOP.

[27]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[28]  Robin Milner,et al.  The Polyadic π-Calculus: a Tutorial , 1993 .

[29]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[30]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[31]  Lujo Bauer,et al.  A Calculus for Composing Security Policies , 2002 .