Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1094811.1094839acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Adding trace matching with free variables to AspectJ

Published: 12 October 2005 Publication History

Abstract

An aspect observes the execution of a base program; when certain actions occur, the aspect runs some extra code of its own. In the AspectJ language, the observations that an aspect can make are confined to the current action: it is not possible to directly observe the history of a computation.Recently, there have been several interesting proposals for new history-based language features, most notably by Douence et al. and by Walker and Viggers. In this paper, we present a new history-based language feature called tracematches that enables the programmer to trigger the execution of extra code by specifying a regular pattern of events in a computation trace. We have fully designed and implemented tracematches as a seamless extension of AspectJ.A key innovation in our tracematch approach is the introduction of free variables in the matching patterns. This enhancement enables a whole new class of applications in which events can be matched not only by the event kind, but also by the values associated with the free variables. We provide several examples of applications enabled by this feature.After introducing and motivating the idea of tracematches via examples, we present a detailed semantics of our language design, and we derive an implementation from that semantics. The implementation has been realised as an extension of the abc compiler for AspectJ.

References

[1]
abc. The AspectBench Compiler. Home page with downloads, FAQ, documentation, support mailing lists, and bug database. http://aspectbench.org.]]
[2]
Thomas Ball, Byron Cook, Vladimir Levin, and Sriram K. Rajamani. SLAM and static driver verifier: Technology transfer of formal methods inside Microsoft. In Eerke Boiten, John Derrick, and Graeme Smith, editors, Integrated Formal Methods, pages 1--20, 2004.]]
[3]
Christoph Bockisch, Mira Mezini, and Klaus Ostermann. Quantifying over dynamic properties of program execcution. In 2nd Dynamic Aspects Workshop (DAW05), pages 71--75, 2005.]]
[4]
Eric Bodden. Concern specific languages and their implementation with abc. SPLAT workshop at AOSD. Download: http://www.bodden.de/publications, 2005.]]
[5]
María Augustina Cibrán and Bart Verheecke. Dynamic business rules for web service composition. In 2nd Dynamic Aspects Workshop (DAW05), pages 13--18, 2005.]]
[6]
Adrian Colyer, Andy Clement, George Harley, and Matthew Webster. Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ development tools. Addison-Wesley, 2004.]]
[7]
R. Douence, P. Fradet, and M. Südholt. A framework for the detection and resolution of aspect interactions. In Proceedings of the ACM SIGPLAN/SIGSOFT Conference on Generative Programming and Component Engineering (GPCE'02), pages 173--188, 2002.]]
[8]
R. Douence, O. Motelet, and M. Sudholt. A formal definition of crosscuts. In Akinori Yonezawa and Satoshi Matsuoka, editors, Reflection 2001, volume 2192 of Lecture Notes in Computer Science, pages 170--186. Springer, 2001.]]
[9]
Rémi Douence, Pascal Fradet, and Mario Südholt. Composition, reuse and interaction analysis of stateful aspects. In Karl Lieberherr, editor, 3rd International Conference on Aspect-oriented Software Development, pages 141--150, 2004.]]
[10]
Remi Douence, Pascal Fradet, and Mario Südholt. Trace-based aspects. In Aspect-oriented Software Development, pages 141--150. Addison-Wesley, 2004.]]
[11]
Rémi Douence, Thomas Fritz, Nicolas Loriant, Jean-Marc Menaud, Marc Ségura, and Mario Südholt. An expressive aspect language for system applications with arachne. In Aspect-Oriented Software Development, pages 27--38, 2005.]]
[12]
Thomas Fritz, Marc Ségura, Mario Südholt, Egon Wuchner, and Jean-Marc Menaud. An application of dynamic AOP to medical image generation. In 2nd Dynamic Aspects Workshop (DAW05), pages 5--12, 2005.]]
[13]
Erich Gamma. JHotDraw. Available for download from http://sourceforge.net/projects/jhotdraw, 2004.]]
[14]
Simon Goldsmith, Robert O'Callahan, and Alex Aiken. Relational queries over program traces. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications, 2005.]]
[15]
Joseph D. Gradecki and Nicholas Lesiecki. Mastering AspectJ: Aspect-Oriented Programming in Java. Wiley, 2003.]]
[16]
Seth Hallem, Benjamin Chelf, Yichen Xie, and Dawson Engler. A system and language for building system-specific, static analyses. In ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 69--82, 2002.]]
[17]
Jan Hannemann and Gregor Kiczales. Design pattern implementation in Java and AspectJ. In OOPSLA, pages 161--173, 2002.]]
[18]
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of AspectJ. In J. Lindskov Knudsen, editor, European Conference on Object-oriented Programming, volume 2072 of Lecture Notes in Computer Science, pages 327--353. Springer, 2001.]]
[19]
I. Kiselev. Aspect-oriented programming with AspectJ. SAMS, 2002.]]
[20]
Ramnivas Laddad. AspectJ in Action. Manning, 2003.]]
[21]
Karl J. Lieberherr, Jeffrey Palm, and Ravi Sundaram. Expressiveness and complexity of crosscut languages. In Proceedings of the eth workshop on Foundations of Aspect-Oriented Languages (FOAL '05), 2005.]]
[22]
Michael Martin, Benjamin Livshits, and Monica S. Lam. Finding application errors using PQL: a program query language. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications, 2005.]]
[23]
Hidehiko Masuhara, Gregor Kiczales, and Chris Dutchyn. A compilation and optimization model for aspect-oriented programs. In Compiler Construction, volume 2622 of Springer Lecture Notes in Computer Science, pages 46--60, 2003.]]
[24]
Russell Miles. AspectJ cookbook. O'Reilly, 2004.]]
[25]
Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for Java. In 12th International Conference on Compiler Construction, volume 2622 of Lecture Notes in Computer Science, pages 138--152, 2003.]]
[26]
Klaus Ostermann, Mira Mezini, and Christoph Bockisch. Expressive pointcuts for increased modularity. In ECOOP, 2005.]]
[27]
Jens Palsberg, Boaz Patt-Shamir, and Karl J. Lieberherr. A new approach to compiling adaptive programs. Science of Computer Programming, 29(3):303--326, 1997.]]
[28]
Volker Stolz and Eric Bodden. Temporal Assertions using AspectJ. In Fifth Workshop on Runtime Verification (RV'05), Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, 2005.]]
[29]
Raja Vallée-Rai, Etienne Gagnon, Laurie J. Hendren, Patrick Lam, Patrice Pominville, and Vijay Sundaresan. Optimizing Java bytecode using the Soot framework: Is it feasible? In Compiler Construction, 9th International Conference (CC 2000), pages 18--34, 2000.]]
[30]
Wim Vanderperren, Davy Suvé, María Augustina Cibrán, and Bruno De Fraine. Stateful aspects in JAsCo. In Workshop on Software Composition at ETAPS, 2005.]]
[31]
Robert Walker and Kevin Viggers. Implementing protocols via declarative event patterns. In ACM Sigsoft International Symposium on Foundations of Software Engineering (FSE-12), pages 159--169, 2004.]]

Cited By

View all
  • (2024)Automatic Compositional Checking of Multi-object TypeState Properties of SoftwarePrinciples of Verification: Cycling the Probabilistic Landscape10.1007/978-3-031-75783-9_1(3-40)Online publication date: 13-Nov-2024
  • (2023)Instrumentation for RV: From Basic Monitoring to Advanced Use CasesRuntime Verification10.1007/978-3-031-44267-4_23(403-427)Online publication date: 1-Oct-2023
  • (2023)CCMOP: A Runtime Verification Tool for C/C++ ProgramsRuntime Verification10.1007/978-3-031-44267-4_18(339-350)Online publication date: 1-Oct-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
October 2005
562 pages
ISBN:1595930310
DOI:10.1145/1094811
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 40, Issue 10
    Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming systems languages and applications
    October 2005
    531 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1103845
    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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 October 2005

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. aspect-oriented programming
  2. program monitoring

Qualifiers

  • Article

Conference

OOPSLA05
Sponsor:

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)18
  • Downloads (Last 6 weeks)3
Reflects downloads up to 09 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Automatic Compositional Checking of Multi-object TypeState Properties of SoftwarePrinciples of Verification: Cycling the Probabilistic Landscape10.1007/978-3-031-75783-9_1(3-40)Online publication date: 13-Nov-2024
  • (2023)Instrumentation for RV: From Basic Monitoring to Advanced Use CasesRuntime Verification10.1007/978-3-031-44267-4_23(403-427)Online publication date: 1-Oct-2023
  • (2023)CCMOP: A Runtime Verification Tool for C/C++ ProgramsRuntime Verification10.1007/978-3-031-44267-4_18(339-350)Online publication date: 1-Oct-2023
  • (2023)Evaluating the Perceptual Properties of Crosscutting Concerns Occurrence Points Specifications in Embedded SoftwareDesigning Modern Embedded Systems: Software, Hardware, and Applications10.1007/978-3-031-34214-1_1(3-15)Online publication date: 11-Jun-2023
  • (2023)Sound Concurrent Traces for Online MonitoringModel Checking Software10.1007/978-3-031-32157-3_4(59-80)Online publication date: 2-May-2023
  • (2023)Opportunistic Monitoring of Multithreaded ProgramsFundamental Approaches to Software Engineering10.1007/978-3-031-30826-0_10(173-194)Online publication date: 22-Apr-2023
  • (2022)The Use of UML Diagrams to Enhance Dynamic Feature Location Techniques2022 International Conference on Innovation and Intelligence for Informatics, Computing, and Technologies (3ICT)10.1109/3ICT56508.2022.9990768(285-292)Online publication date: 20-Nov-2022
  • (2021)Verifying correct usage of context-free API protocolsProceedings of the ACM on Programming Languages10.1145/34342985:POPL(1-30)Online publication date: 4-Jan-2021
  • (2021)CrySL: An Extensible Approach to Validating the Correct Usage of Cryptographic APIsIEEE Transactions on Software Engineering10.1109/TSE.2019.294891047:11(2382-2400)Online publication date: 1-Nov-2021
  • (2020)Prioritizing Runtime Verification Violations2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST)10.1109/ICST46399.2020.00038(297-308)Online publication date: Oct-2020
  • Show More Cited By

View Options

Get Access

Login options

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