Aspect-Oriented Programming Reloaded

Many programs have crosscutting concerns for which neither procedural nor object-oriented programming adequately modularize, which has led to the idea of aspect-oriented programming (AOP). However, AOP has not found favor with the programming languages community due to a belief that AOP breaks classical modularity and modular reasoning. We propose a new AOP programming model that enables both crosscutting modularity and modular reasoning. This model is implemented by AspectJML, a general-purpose aspect-oriented extension to Java. It supports modular crosscutting concerns using key object-oriented mechanisms, such as hierarchical structure, and allows reasoning that scales to ever-larger programs.

[1]  Markus Mohnen Interfaces with default implementations in Java , 2002, PPPJ/IRE.

[2]  Marco Tulio Valente,et al.  On the benefits of quantification in AspectJ systems , 2010, Journal of the Brazilian Computer Society.

[3]  Gary T. Leavens,et al.  Information Hiding and Visibility in Interface Specifications , 2007, 29th International Conference on Software Engineering (ICSE'07).

[4]  Harold Ossher,et al.  Asymmetrically vs. Symmetrically Organized Paradigms for Software Composition , 2002 .

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

[6]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[7]  Barbara Liskov,et al.  Keynote address - data abstraction and hierarchy , 1988, OOPSLA '87.

[8]  Sérgio Soares,et al.  Implementing distribution and persistence aspects with aspectJ , 2002, OOPSLA '02.

[9]  Gregor Kiczales,et al.  Fluid AOP join point models , 2006, OOPSLA '06.

[10]  Éric Tanter Controlling Aspect Reentrancy , 2008, J. Univers. Comput. Sci..

[11]  Gary T. Leavens,et al.  Ptolemy: A Language with Quantified, Typed Events , 2008, ECOOP.

[12]  Mira Mezini,et al.  Expressive Pointcuts for Increased Modularity , 2005, ECOOP.

[13]  Gary T. Leavens,et al.  Reasoning tradeoffs in languages with enhanced modularity features , 2016, MODULARITY.

[14]  Gary T. Leavens,et al.  How the design of JML accommodates both runtime assertion checking and formal verification , 2003, Sci. Comput. Program..

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

[16]  G. Kiczales,et al.  Aspect-oriented programming and modular reasoning , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[17]  Cecília M. F. Rubira,et al.  Exceptions and aspects: the devil is in the details , 2006, SIGSOFT '06/FSE-14.

[18]  Márcio Ribeiro,et al.  A design rule language for aspect-oriented programming , 2013, J. Syst. Softw..

[19]  David Garlan,et al.  Adding implicit invocation to traditional programming languages , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[20]  Kris Gybels,et al.  Arranging language features for more robust pattern-based crosscuts , 2003, AOSD '03.

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

[22]  Gary T. Leavens,et al.  Modular aspect-oriented design rule enforcement with XPIDRs , 2013, FOAL.

[23]  Shigeru Chiba,et al.  Do we really need to extend syntax for advanced modularity? , 2012, AOSD '12.

[24]  Hridesh Rajan,et al.  Unifying aspect- and object-oriented design , 2009, TSEM.

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

[26]  Eric Bodden,et al.  Join point interfaces for safe and flexible decoupling of aspects , 2014, TSEM.

[27]  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).

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

[29]  Gary T. Leavens,et al.  Behavioral Subtyping, Specification Inheritance, and Modular Reasoning , 2015, ACM Trans. Program. Lang. Syst..

[30]  Christian Kästner,et al.  Revisiting Information Hiding: Reflections on Classical and Nonclassical Modularity , 2011, ECOOP.

[31]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

[32]  Barbara Liskov,et al.  Data Abstraction and Hierarchy , 1987 .

[33]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

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

[35]  Gary T. Leavens,et al.  Specification and verification of object-oriented programs using supertype abstraction , 1995, Acta Informatica.

[36]  Yuanyuan Song,et al.  Modular aspect-oriented design with XPIs , 2010, ACM Trans. Softw. Eng. Methodol..

[37]  Gary T. Leavens,et al.  Enforcing information hiding in interface specifications: a client-aware checking approach , 2015, MODULARITY.

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

[39]  Daniel M. Zimmerman,et al.  AspectJML: modular specification and runtime checking for crosscutting contracts , 2014, MODULARITY.

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

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