Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Join point interfaces for safe and flexible decoupling of aspects

Published: 20 February 2014 Publication History

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.
[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.
[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.
[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.
[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.
[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.
[7]
C. Clifton and G. T. Leavens. 2006. MiniMAO1: An imperative core language for studying aspect oriented reasoning. Sci. Comput. Program. 63, 312--374.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[15]
P. T. Eugster and R. Guerraoui. 2004. Distributed programming with typed events. IEEE Softw. 21, 2, 56--64.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[23]
K. Hoffman and P. Eugster. 2012. Trading obliviousness for modularity with cooperative aspectoriented programming. ACM Trans. Softw. Engin. Methodol. 22, 3.
[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.
[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.
[26]
R. Jagadeesan, A. Jeffrey, and J. Riely. 2006. Typed parametric polymorphism for aspects. Sci. Comput. Program. 63, 267--296.
[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.
[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.
[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.
[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.
[31]
R. Laddad. 2003. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Press.
[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.
[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.
[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.
[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.
[36]
M. Odersky, L. Spoon, and B. Venners. 2008. Programming in Scala: A Comprehensive Step-by-Step Guide. Artima Inc.
[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.
[38]
A. Paepcke, Ed. 1993. Object-Oriented Programming: The CLOS Perspective. MIT Press.
[39]
D. Parnas. 1972. On the criteria for decomposing systems into modules. Comm. ACM 15, 12, 1053--1058.
[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.
[41]
J. C. Reynolds. 1983. Types, abstraction, and parametric polymorphism. Inf. Process. 83, 513--523.
[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.
[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.
[44]
F. Steimann. 2013. Personal communication.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.

Cited By

View all
  • (2020)Interfaces for Modular Reasoning in Context-Oriented ProgrammingProceedings of the 12th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3422584.3423152(1-7)Online publication date: 21-Jul-2020
  • (2019)JPIAspectZ: A Formal Requirement Specification Language for Joint Point Interface AOP ApplicationsEngineering, Technology & Applied Science Research10.48084/etasr.27749:4(4338-4341)Online publication date: 10-Aug-2019
  • (2019)Chemical foundations of distributed aspectsDistributed Computing10.1007/s00446-018-0334-632:3(193-216)Online publication date: 1-Jun-2019
  • Show More Cited By

Index Terms

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

    Recommendations

    Comments

    Information & Contributors

    Information

    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
    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
    Accepted: 01 January 2013
    Revised: 01 January 2013
    Received: 01 May 2012
    Published in TOSEM Volume 23, Issue 1

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Aspect-oriented programming
    2. advice dispatch
    3. explicit announcement
    4. implicit announcement
    5. interfaces
    6. join point polymorphism
    7. modularity
    8. typing

    Qualifiers

    • Research-article
    • Research
    • Refereed

    Funding Sources

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 10 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2020)Interfaces for Modular Reasoning in Context-Oriented ProgrammingProceedings of the 12th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3422584.3423152(1-7)Online publication date: 21-Jul-2020
    • (2019)JPIAspectZ: A Formal Requirement Specification Language for Joint Point Interface AOP ApplicationsEngineering, Technology & Applied Science Research10.48084/etasr.27749:4(4338-4341)Online publication date: 10-Aug-2019
    • (2019)Chemical foundations of distributed aspectsDistributed Computing10.1007/s00446-018-0334-632:3(193-216)Online publication date: 1-Jun-2019
    • (2017)Towards a development process for maturing Delta-oriented software product linesProceedings of the 8th ACM SIGPLAN International Workshop on Feature-Oriented Software Development10.1145/3141848.3141853(41-50)Online publication date: 23-Oct-2017
    • (2017)Aspect-Oriented Programming ReloadedProceedings of the 21st Brazilian Symposium on Programming Languages10.1145/3125374.3125383(1-8)Online publication date: 21-Sep-2017
    • (2017)Detecting broken pointcuts using structural commonality and degree of interestScience of Computer Programming10.1016/j.scico.2017.06.011150(56-74)Online publication date: Dec-2017
    • (2016)Mixing of Join Point Interfaces and Feature-Oriented Programming for Modular Software Product LineProceedings of the 9th EAI International Conference on Bio-inspired Information and Communications Technologies (formerly BIONETICS)10.4108/eai.3-12-2015.2262534(433-437)Online publication date: 24-May-2016
    • (2016)Application-specific language-oriented modularity: a case study of the ovirt projectCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892692(178-183)Online publication date: 14-Mar-2016
    • (2016)Reasoning tradeoffs in languages with enhanced modularity featuresProceedings of the 15th International Conference on Modularity10.1145/2889443.2889447(13-24)Online publication date: 14-Mar-2016
    • (2016)A type-and-effect system for asynchronous, typed eventsProceedings of the 15th International Conference on Modularity10.1145/2889443.2889446(42-53)Online publication date: 14-Mar-2016
    • Show More Cited By

    View Options

    Get Access

    Login options

    Full Access

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media