skip to main content
research-article

Join point interfaces for safe and flexible decoupling of aspects

Published:20 February 2014Publication History
Skip Abstract Section

Abstract

In current aspect-oriented systems, aspects usually carry, through their pointcuts, explicit references to the base code. Those references are fragile and hinder important software engineering properties such as modular reasoning and independent evolution of aspects and base code. In this work, we introduce a novel abstraction called Join Point Interface, which, by design, aids modular reasoning and independent evolution by decoupling aspects from base code and by providing a modular type-checking algorithm. Join point interfaces can be used both with implicit announcement through pointcuts, and with explicit announcement, using closure join points. Join point interfaces further offer polymorphic dispatch on join points, with an advice-dispatch semantics akin to multimethods. To support flexible join point matching, we incorporate into our language an earlier proposal for generic advice, and introduce a mechanism for controlled global quantification. We motivate each language feature in detail, showing that it is necessary to obtain a language design that is both type safe and flexible enough to support typical aspect-oriented programming idioms. We have implemented join point interfaces as an open-source extension to AspectJ. A case study on existing aspect-oriented programs supports our design, and in particular shows the necessity of both generic interfaces and some mechanism for global quantification.

References

  1. J. Aldrich. 2005. Open modules: Modular reasoning about advice. In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP'05). A. P. Black, Ed., Lecture Notes in Computer Science, vol. 3586, Springer, 144--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. P. Avgustinov, A. S. Christensen, L. Hendren, S. Kuzins, J. Lhoták, O. Lhoták, O. De Moor, D. Sereni, G. Sittampalam, and J. Tibble. 2005. ABC: An extensible aspectj compiler. In Proceedings of the 4th ACM International Conference on Aspect-Oriented Software Development (AOSD'05). ACM Press, New York, 87--98. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. M. Bagherzadeh, H. Rajan, G. T. Leavens, and S. Mooney. 2011. Translucid contracts: Expressive specification and modular verification for aspect-oriented interfaces. In Proceedings of the 10th ACM International Conference on Aspect-Oriented Software Development (AOSD'11). ACM Press, New York, 141--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. E. Bodden. 2011. Closure joinpoints: Block joinpoints without surprises. In Proceedings of the 10th ACM International Conference on Aspect-Oriented Software Development (AOSD'11). ACM Press, New York, 117--128. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. G. Bracha, P. Ahe, V. Bykov, Y. Kashai, W. Maddox, and E. Miranda. 2010. Modules as objects in newspeak. In Proceedings of the 24th European Conference on Object-Oriented Programming (ECOOP'10). Lecture Notes in Computer Science, vol. 6183, Springer, 405--428. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. A. Clement, A. Colyer, and M. Kersten. 2003. Aspect-oriented programming with ajdt. In Proceedings of the ECOOP Workshop on Analysis of Aspect-Oriented Software.Google ScholarGoogle Scholar
  7. C. Clifton and G. T. Leavens. 2006. MiniMAO1: An imperative core language for studying aspect oriented reasoning. Sci. Comput. Program. 63, 312--374. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. Clifton, G. T. Leavens, C. Chambers, and T. Millstein. 2000. MultiJava: Modular open classes and symmetric multiple dispatch in java. In Proceedings of the 15th International Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA'00). ACM Press, New York, 130--145. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. B. De Fraine, E. Ernst, and M. Südholt. 2010. Essential aop: The a calculus. In Proceedings of the 24th European Conference on Object-Oriented Programming (ECOOP'10). 101--125. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. B. De Fraine, M. Südholt, and V. Jonckers. 2008. StrongAspectJ: Flexible and safe pointcut/advice bindings. In Proceedings of the 7th ACM International Conference on Aspect-Oriented Software Development (AOSD'08). ACM Press, New York, 60--71. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Dutchyn, D. B. Tucker, and S. Krishnamurthi. 2006. Semantics and scoping of aspects in higherorder languages. Sci. Comput. Program. 63, 3, 207--239. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R. Dyer, H. Rajan, and Y. Cai. 2012. An exploratory study of the design impact of language features for aspect-oriented interfaces. In Proceedings of the 11th International Conference on Aspect-Oriented Software Development (AOSD'12). É. Tanter and K. J. Sullivan, Eds., ACM Press, New York, 143--154. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. Ekman and G. Hedin. 2007. The jastadd extensible java compiler. In Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications (OOPSLA'07). 1--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. P. Eugster and K. Jayaram. 2009. Eventjava: An extension of java for event correlation. In Proceedings of the 23rd European Conference on Object-Oriented Programming (ECOOP'09). Lecture Notes in Computer Science, vol. 5653, Springer, 570--594. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. T. Eugster and R. Guerraoui. 2004. Distributed programming with typed events. IEEE Softw. 21, 2, 56--64. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Fabry, A. Kellens, and S. Ducasse. 2011. Aspectmaps: A scalable visualization of join point shadows. In Proceedings of 19th IEEE International Conference on Program Comprehension (ICPC'11). IEEE Computer Society Press, 121--130. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. R. D. Fernando, R. Dyer, and H. Rajan. 2012. Event type polymorphism. In Proceedings of the 11th Workshop on Foundations of Aspect-Oriented Languages (FOAL'12). ACM Press, New York, 33--38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. V. Gasiunas, L. Satabin, M. Mezini, A. Núñez, and J. Noyé. 2011. EScala: Modular event-driven object interactions in scala. In Proceedings of the 10th ACM International Conference on Aspect-Oriented Software Development (AOSD'11). ACM Press, New York, 227--240. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. S. Gudmundson and G. Kiczales. 2001. Addressing practical software development issues in aspectj with a pointcut interface. In Proceedings of the Workshop on Advanced Separation of Concerns.Google ScholarGoogle Scholar
  20. K. Gybels and J. Brichau. 2003. Arranging language features for more robust pattern-based crosscuts. In Proceedings of the 2nd ACM International Conference on Aspect-Oriented Software Development (AOSD'03). M. Aksit, Ed., ACM Press, New York, 60--69. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. E. Hilsdale and J. Hugunin. 2004. Advice weaving in aspectj. In Proceedings of the 3rd ACM International Conference on Aspect-Oriented Software Development (AOSD'04). K. Lieberherr, Ed., ACM Press, New York, 26--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. K. Hoffman and P. Eugster. 2007. Bridging java and aspectj through explicit join points. In Proceedings of the 9th International Symposium on Principles and Practice of Programming in Java (PPPJ'07). ACM Press, New York, 63--72. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. K. Hoffman and P. Eugster. 2012. Trading obliviousness for modularity with cooperative aspectoriented programming. ACM Trans. Softw. Engin. Methodol. 22, 3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. A. Igarashi, B. C. Pierce, and P. Wadler. 2001. Featherweight java: A minimal core calculus for java and gj. ACM Trans. Program. Lang. Syst. 23, 3, 396--450. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Inostroza, É. Tanter, and E. Bodden. 2011. Join point interfaces for modular reasoning in aspect-oriented programs. In Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE'11). New Ideas Track. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. R. Jagadeesan, A. Jeffrey, and J. Riely. 2006. Typed parametric polymorphism for aspects. Sci. Comput. Program. 63, 267--296. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. R. Khatchadourian, P. Greenwood, A. Rashid, and G. Xu. 2009. Pointcut rejuvenation: Recovering pointcut expressions in evolving aspect-oriented software. In Proceedings of the International Conference on Automated Software Engineering (ASE'09). IEEE/ACM, 575--579. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. 2001. An overview of aspectj. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP'01). J. L. Knudsen, Ed., Lecture Notes in Computer Science, vol. 2072, Springer, 327--353. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. 1997. Aspect-oriented programming. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP'97). Lecture Notes in Computer Science, vol. 1241, Springer, 220--242.Google ScholarGoogle ScholarCross RefCross Ref
  30. G. Kiczales and M. Mezini. 2005. Aspect-oriented programming and modular reasoning. In Proceedings of the 27th International Conference on Software Engineering (ICSE'05). ACM Press, New York, 49--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. R. Laddad. 2003. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. K. Lieberherr, I. Holland, and A. Riel. 1988. Object-oriented programming: An objective sense of style. In Proceedings of the 3rd International Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA'88). N. Meyrowitz, Ed., ACM Press, New York, 323--334. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. J. Liu, M. D. George, K. Vikram, X. Qi, L. Waye, and A. C. Myers. 2009. Fabric: A platform for secure distributed computation and storage. In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles (SOSP'09). ACM Press, New York, 321--334. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. H. Masuhara, G. Kiczales, and C. Dutchyn. 2003. A compilation and optimization model for aspect-oriented programs. In Proceedings of the 12th International Conference on Compiler Construction (CC'03). G. Hedin, Ed., Lecture Notes in Computer Science, vol. 2622, Springer, 46--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. H. Masuhara, H. Tatsuzawa, and A. Yonezawa. 2005. Aspectual caml: An aspect-oriented functional language. In Proceedings of the 10th ACM SIGPLAN Conference on Functional Programming (ICFP'05). ACM Press, New York, 320--330. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Odersky, L. Spoon, and B. Venners. 2008. Programming in Scala: A Comprehensive Step-by-Step Guide. Artima Inc. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. N. Ongkingco, P. Avgustinov, J. Tibble, L. Hendren, O. De Moor, and G. Sittampalam. 2006. Adding open modules to aspectj. In Proceedings of the 5th ACM International Conference on Aspect-Oriented Software Development (AOSD'06). ACM Press, New York, 39--50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Paepcke, Ed. 1993. Object-Oriented Programming: The CLOS Perspective. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. D. Parnas. 1972. On the criteria for decomposing systems into modules. Comm. ACM 15, 12, 1053--1058. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. H. Rajan and G. T. Leavens. 2008. Ptolemy: A language with quantified, typed events. In Proceedings of the 22nd European Conference on Object-oriented Programming (ECOOP'08). J. Vitek, Ed., Lecture Notes in Computer Science, vol. 5142, Springer, 155--179. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. J. C. Reynolds. 1983. Types, abstraction, and parametric polymorphism. Inf. Process. 83, 513--523.Google ScholarGoogle Scholar
  42. M. Robillard and G. Murphy. 2000. Designing robust java programs with exceptions. In Proceedings of the 8th ACM SIGSOFT International Symposium on Foundations of Software Engineering (SIGSOFT/FSE'00). 2--10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. F. Steimann. 2006. The paradoxical success of aspect-oriented programming. In Proceedings of the 21st ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA'06). ACM Press, New York, 481--497. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. F. Steimann. 2013. Personal communication.Google ScholarGoogle Scholar
  45. F. Steimann, T. Pawlitzki, S. Apel, and C. Kästner. 2010. Types and modularity for implicit invocation with implicit announcement. ACM Trans. Softw. Engin. Methodol. 20, 1, 1--43. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. M. Stoerzer and J. Graf. 2005. Using pointcut delta analysis to support evolution of aspect-oriented software. In Proceedings of the 21st IEEE International Conference on Software Maintenance. 653--656. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. K. Sullivan, W. G. Griswold, H. Rajan, Y. Song, Y. Cai, M. Shonle, and N. Tewari. 2010. Modular aspect-oriented design with xpis. ACM Trans. Softw. Engin. Methodol. 20, 2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. É. Tanter. 2010. Execution levels for aspect-oriented programming. In Proceedings of the 9th ACM International Conference on Aspect-Oriented Software Development (AOSD'10). ACM Press, New York, 37--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. É. Tanter, K. Gybels, M. Denker, and A. Bergel. 2006. Context-aware aspects. In Proceedings of the 5th International Symposium on Software Composition (SC'06). W. Löwe and M. Südholt, Eds., Lecture Notes in Computer Science, vol. 4089, Springer, 227--242. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. É. Tanter, P. Moret, W. Binder, and D. Ansaloni. 2010. Composition of dynamic analysis aspects. In Proceedings of the 9th ACM SIGPLAN International Conference on Generative Programming and Component Engineering (GPCE'10). ACM Press, New York, 113--122. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. R. Toledo, P. Leger, and É. Tanter. 2010. Aspectscript: Expressive aspects for the web. In Proceedings of the 9th International Conference on Aspect-Oriented Software Development (AOSD'10). ACM Press, New York, 13--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. M. Wand, G. Kiczales, and C. Dutchyn. 2004. A semantics for advice and dynamic join points in aspect-oriented programming. ACM Trans. Program. Lang. Syst. 26, 5, 890--910. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Join point interfaces for safe and flexible decoupling of aspects

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM Transactions on Software Engineering and Methodology
      ACM Transactions on Software Engineering and Methodology  Volume 23, Issue 1
      February 2014
      354 pages
      ISSN:1049-331X
      EISSN:1557-7392
      DOI:10.1145/2582050
      Issue’s Table of Contents

      Copyright © 2014 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 20 February 2014
      • Revised: 1 January 2013
      • Accepted: 1 January 2013
      • Received: 1 May 2012
      Published in tosem Volume 23, Issue 1

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Research
      • Refereed

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader