Chapter

ECOOP'97 — Object-Oriented Programming

Volume 1241 of the series Lecture Notes in Computer Science pp 220-242

Date:

Aspect-oriented programming

  • Gregor KiczalesAffiliated withXerox Palo Alto Research Center
  • , John LampingAffiliated withXerox Palo Alto Research Center
  • , Anurag MendhekarAffiliated withXerox Palo Alto Research Center
  • , Chris MaedaAffiliated withXerox Palo Alto Research Center
  • , Cristina LopesAffiliated withXerox Palo Alto Research Center
  • , Jean-Marc LoingtierAffiliated withXerox Palo Alto Research Center
  • , John IrwinAffiliated withXerox Palo Alto Research Center

* Final gross prices may vary according to local VAT.

Get Access

Abstract

We have found many programming problems for which neither procedural nor object-oriented programming techniques are sufficient to clearly capture some of the important design decisions the program must implement. This forces the implementation of those design decisions to be scattered throughout the code, resulting in “tangled” code that is excessively difficult to develop and maintain. We present an analysis of why certain design decisions have been so difficult to clearly capture in actual code. We call the properties these decisions address aspects, and show that the reason they have been hard to capture is that they cross-cut the system's basic functionality. We present the basis for a new programming technique, called aspect-oriented programming, that makes it possible to clearly express programs involving such aspects, including appropriate isolation, composition and reuse of the aspect code. The discussion is rooted in systems we have built using aspect-oriented programming.