Skip to main content

Aspect-oriented programming

  • Conference paper
  • First Online:
Book cover ECOOP'97 — Object-Oriented Programming (ECOOP 1997)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1241))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Bibliography

  1. Aksit M., Wakita K., et al., Abstracting object interactions using composition filters, in proc. ECOOP”93 Workshop on Object-Based Distributed Programming, pp. 152–184, 1993.

    Google Scholar 

  2. Bobrow D. G., DeMichiel L. G., et al., Common Lisp Object System Specification, in SIGPLAN Notices, vol. 23, 1988.

    Google Scholar 

  3. Chiba S., A Metaobject Protocol for C++, in proc. Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 95), Austin, 1995.

    Google Scholar 

  4. Consel C, Program Adaptation based on Program Transformation, in proc. ACM Workshop on Strategic Directions in Computing Research, 1996.

    Google Scholar 

  5. Harrison W. and Ossher H., Subject-oriented programming (a critique of pure objects), in proc. Conference on Object-Oriented Programming: Systems, Languages, and Applications, pp. 411–428, Washington D.C., 1993.

    Google Scholar 

  6. Henry S. and Kafura D., Software Structure Metrics Based on Information Flow, in IEEE Transactions on Software Engineering, vol. SE-7: 509–518, 1981.

    Google Scholar 

  7. Ichisugi Y., Matsuoka S., et al., Rbc1: A reflective object-oriented concurrrent language without a run-time kernel, in proc. International Workshop on New Models for Software Architecture '92; Reflection and Meta-Level Architecture, pp. 24–35, 1992.

    Google Scholar 

  8. Irwin J., Loingtier J.-M., et al., Aspect-Oriented Programming of Sparse Matrix Code, Xerox PARC, Palo Alto, CA. Technical report SPL97-007 P9710045, February, 1997.

    Google Scholar 

  9. Kiczales G., Foil for the Workshop on Open Implementation, Xerox PARC, Web pages, http://www.parc.xerox.com/spl/eca/oi/workshop-94/foil/main.html

    Google Scholar 

  10. Kiczales G., Why are Black Boxes so Hard to Reuse?, Invited Talk, OOPSLA'94, Video tape, Web pages, http://www.parc.xerox.com/spl/eca/oi/gregor-invite.html

    Google Scholar 

  11. Kiczales G., des Rivères J., et al., The Art of the Metaobject Protocol. Book published by MIT Press, 1991.

    Google Scholar 

  12. Kiczales G., Lamping J., et al., Open Implementation Design Guidelines, in proc. International Conference on Software Engineering, (Forthcoming), 1997.

    Google Scholar 

  13. Lieberherr K. J., Silva-Lepe I., et al., Adaptive Object-Oriented Programming Using Graph-Based Customization, in Communications of the ACM, vol. 37(5): 94–101,1994.

    Article  Google Scholar 

  14. Lopes C. V. and Kiczales G., D: A Language Framework for Distributed Programming, Xerox PARC, Palo Alto, CA. Technical report SPL97-010 P9710047, February, 1997.

    Google Scholar 

  15. Lopes C. V. and Lieberherr K., Abstracting Process-to-Function Relations in Concurrent Object-Oriented Applications, in proc. European Conference on Object-Oriented Programming, pp. 81–99, Bologna, Italy, 1994.

    Google Scholar 

  16. Lopes C. V. and Lieberherr K., AP/S++: Case-Study of a MOP for Purposes of Software Evolution, in proc. Reflection'96, pp. 167–184, S. Francisco, CA, 1996.

    Google Scholar 

  17. Maeda C., Lee A., et al., Open Implementation Analysis and Design, in proc. Symposium on Software Reuse (To Appear, May 1997), 1997.

    Google Scholar 

  18. Mahoney J. V., Functional Visual Routines, Xerox Palo Alto Research Center, Palo Alto SPL95-069, July 30, 1995, 1995.

    Google Scholar 

  19. Massalin H. and Pu C., Threads and Input/Output in the Synthesis Kernel, in Proceedings of the 12th ACM Symposium on Operating Systems Principles: pp 191–201, 1989.

    Google Scholar 

  20. Matsuoka S., Watanabe T., et al., Hybrid Group Reflective Architecture for Object-Oriented Concurrent Reflective Programming, in European Conference on Object Oriented Programming: pp 231–250, 1991.

    Google Scholar 

  21. McClure C, A Model for Program Complexity Analysis, in proc. 3rd International Conference on Software Engineering, Los Alamitos, CA, 1978.

    Google Scholar 

  22. Mendhekar A., Kiczales G., et al., RG: A Case-Study for Aspect-Oriented Programming, Xerox PARC, Palo Alto, CA. Technical report SPL97-009 P9710044, February, 1997.

    Google Scholar 

  23. Okamura H., Ishikawa Y., et al., Al-1/d: A distributed programming system with multi-model reflection framework, in proc. International Workshop on New Models for Software Architecture '92; Reflection and Meta-Level Architecture, pp. 36–47,1992.

    Google Scholar 

  24. Okamura H., Ishikawa Y., et al., Metalevel Decomposition in AL-1/D, in proc. International Symposium on Object Technologies for Advanced Software, pp. 110–127, 1993.

    Google Scholar 

  25. Parnas D. L., Designing Software for Extension and Contraction, in proc. 3rd International Conference on Software Engineering, pp. 264–277, 1978.

    Google Scholar 

  26. Parnas D. L., On a ‘Buzzword': Hierarchical Structure, in proc. IFIP Congress 74, pp. 336–339, 1974.

    Google Scholar 

  27. Parnas D. L., On the Criteria to be Used in decomposing Systems into Modules, in Communications of the ACM, vol. 15(2), 1972.

    Google Scholar 

  28. Pu C, Autrey T., et al., Optimistic Incremental Specialization: Streamlining a Commercial Operating System, in proc. 15th ACM Symposium on Operating Systems Principles (SOSP'95), 1995.

    Google Scholar 

  29. Rational, Rational Web pages, Rational Software Corporation, Web pages, http://www.rational.com

    Google Scholar 

  30. Rumbaugh J., Blaha M., et al., Object-Oriented Modeling and Design. Book published by Prentice Hall, 1991.

    Google Scholar 

  31. Seiter L. M., Palsberg J., et al., Evolution of Object Behavior Using Context Relations, in proc. Fourth ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 46—57, San Francisco, 1996.

    Google Scholar 

  32. Smith B. C, Reflection and Semantics in a Procedural Language LCS Technical Report, M.I.T., Cambridge, MA, 1982.

    Google Scholar 

  33. Steele G. L., Common LISP: The Language, 2nd Edition. Book published by Digital Press, 1990.

    Google Scholar 

  34. Wand M. and Friedman D. P., The Mystery of the Tower Revealed: A Non-Reflective Description of the Reflective Tower, in Proceedings of the ACM Conference on LISP and Functional Programming: pp 298–307. ACM, 1986.

    Google Scholar 

  35. Watanabe T. and Yonezawa A., Reflection in an object-oriented concurrent language, in proc. ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 88), pp. 306–315, San Diego, CA, 1988.

    Google Scholar 

  36. Yau S. and Collofello J., Some Stability Measures for Software Maintenance, in tse, vol. SE-6: 545–552, 1980.

    Google Scholar 

  37. Yokote Y., The Apertos Reflective Operating System: The Concept and its Implementation, in proc. Conference on Object-Oriented Programming: Systems, Languages, and Applications, 1992.

    Google Scholar 

  38. Yonezawa A. and Watanabe T., An Introduction to Object-Based Reflective Concurrent Computation, in Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, SIGPLAN Notices, 24(4), Agha G., Wegner P., et al., Eds., 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Mehmet Akşit Satoshi Matsuoka

Rights and permissions

Reprints and permissions

Copyright information

© 1997 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kiczales, G. et al. (1997). Aspect-oriented programming. In: Akşit, M., Matsuoka, S. (eds) ECOOP'97 — Object-Oriented Programming. ECOOP 1997. Lecture Notes in Computer Science, vol 1241. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0053381

Download citation

  • DOI: https://doi.org/10.1007/BFb0053381

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-63089-0

  • Online ISBN: 978-3-540-69127-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics