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.
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- C. Clifton and G. T. Leavens. 2006. MiniMAO1: An imperative core language for studying aspect oriented reasoning. Sci. Comput. Program. 63, 312--374. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- P. T. Eugster and R. Guerraoui. 2004. Distributed programming with typed events. IEEE Softw. 21, 2, 56--64. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- K. Hoffman and P. Eugster. 2012. Trading obliviousness for modularity with cooperative aspectoriented programming. ACM Trans. Softw. Engin. Methodol. 22, 3. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- R. Jagadeesan, A. Jeffrey, and J. Riely. 2006. Typed parametric polymorphism for aspects. Sci. Comput. Program. 63, 267--296. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- R. Laddad. 2003. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Press. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- M. Odersky, L. Spoon, and B. Venners. 2008. Programming in Scala: A Comprehensive Step-by-Step Guide. Artima Inc. Google ScholarDigital Library
- 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 ScholarDigital Library
- A. Paepcke, Ed. 1993. Object-Oriented Programming: The CLOS Perspective. MIT Press. Google ScholarDigital Library
- D. Parnas. 1972. On the criteria for decomposing systems into modules. Comm. ACM 15, 12, 1053--1058. Google ScholarDigital Library
- 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 ScholarDigital Library
- J. C. Reynolds. 1983. Types, abstraction, and parametric polymorphism. Inf. Process. 83, 513--523.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- F. Steimann. 2013. Personal communication.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- É. 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 ScholarDigital Library
- É. 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 ScholarDigital Library
- É. 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
Index Terms
- Join point interfaces for safe and flexible decoupling of aspects
Recommendations
Join point interfaces for modular reasoning in aspect-oriented programs
ESEC/FSE '11: Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineeringWhile aspect-oriented programming supports the modular definition of crosscutting concerns, most approaches to aspect- oriented programming fail to improve, or even preserve, modular reasoning. The main problem is that aspects usually carry, through ...
A brief tour of join point interfaces
AOSD '13 Companion: Proceedings of the 12th annual international conference companion on Aspect-oriented software developmentIn standard AspectJ, aspects and base code are often insufficiently decoupled, as aspects hold pointcuts, which can contain explicit textual references to base code. This hinders aspect evolution and reuse, and may hinder reasoning about aspects on the ...
Cooperative aspect-oriented programming
Aspect-oriented programming (AOP) seeks to improve software modularity via the separation of cross-cutting concerns. AOP proponents often advocate a development strategy where programmers write the main application (base code), ignoring cross-cutting ...
Comments