Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy

The obliviousness property of AspectJ conflicts with the ability to reason about an AspectJ program in a modular fashion. This makes debugging and maintenance dicult. In object-oriented programming, the discipline of behavioral subtyping allows one to reason about programs modularly, despite the somewhat oblivious nature of dynamic binding; however, it is not clear what discipline would help AspectJ programmers obtain modular reasoning. We describe this problem in detail, and sketch a solution that allows programmers to tell both “superimposition” and “evolution” stories in their AspectJ programs.

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

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

[3]  Gary T. Leavens,et al.  Reasoning about object-oriented programs that use subtypes , 1990, OOPSLA/ECOOP '90.

[4]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[5]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[6]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

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

[8]  Gary T. Leavens,et al.  Weak behavioral subtyping for types with mutable objects , 1995, MFPS.

[9]  Gary T. Leavens,et al.  Forcing behavioral subtyping through specification inheritance , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[10]  Michel Bidoit,et al.  TAPSOFT '97: Theory and Practice of Software Development , 1997, Lecture Notes in Computer Science.

[11]  Martín Abadi,et al.  A Logic of Object-Oriented Programs , 1997, Verification: Theory and Practice.

[12]  Jan Vitek,et al.  Flexible Alias Protection , 1998, ECOOP.

[13]  Stanley M. Sutton,et al.  Multi-Dimensional Separation of Concerns , 1999 .

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

[15]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

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

[17]  Curtis Charles Clifton,et al.  MultiJava: Design, implementation, and evaluation of a Java-compatible language supporting modular open classes and symmetric multiple dispatch , 2001 .

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

[19]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[20]  Joshua J. Bloch Effective Java : programming language guide , 2001 .

[21]  Lodewijk Bergmans,et al.  Composing crosscutting concerns using composition filters , 2001, CACM.

[22]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[23]  Harold Ossher,et al.  Using multidimensional separation of concerns to (re)shape evolving software , 2001, CACM.

[24]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

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

[26]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[27]  Peter Müller,et al.  Modular Specification and Verification of Object-Oriented Programs , 2002, Lecture Notes in Computer Science.

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

[29]  Ivan Kiselev,et al.  Aspect-Oriented Programming with AspectJ , 2002 .

[30]  Gary T. Leavens,et al.  Modular specification of frame properties in JML , 2003, Concurr. Comput. Pract. Exp..

[31]  Ruzanna Chitchyan,et al.  Persistence as an aspect , 2003, AOSD '03.

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