[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
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)Runtime verification on abstract finite state modelsJournal of Systems and Software10.1016/j.jss.2024.112138216(112138)Online publication date: Oct-2024
  • (2023)Dynamic Program Analysis with Flexible Instrumentation and Complex Event Processing2023 IEEE 34th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE59848.2023.00048(742-751)Online publication date: 9-Oct-2023
  • (2023)Runtime Verification Prediction for Traces with DataRuntime Verification10.1007/978-3-031-44267-4_8(148-167)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 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
  • 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
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: 12 October 2005
Published in SIGPLAN Volume 40, Issue 10

Check for updates

Author Tags

  1. aspect-oriented programming
  2. program monitoring

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)15
  • Downloads (Last 6 weeks)2
Reflects downloads up to 21 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Runtime verification on abstract finite state modelsJournal of Systems and Software10.1016/j.jss.2024.112138216(112138)Online publication date: Oct-2024
  • (2023)Dynamic Program Analysis with Flexible Instrumentation and Complex Event Processing2023 IEEE 34th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE59848.2023.00048(742-751)Online publication date: 9-Oct-2023
  • (2023)Runtime Verification Prediction for Traces with DataRuntime Verification10.1007/978-3-031-44267-4_8(148-167)Online publication date: 1-Oct-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
  • (2022)Runtime Verification Past Experiences and Future ProjectionsComputing and Software Science10.1007/978-3-319-91908-9_25(532-562)Online publication date: 11-Mar-2022
  • (2022)A Monitoring Tool for Linear-Time $$\mu $$HMLCoordination Models and Languages10.1007/978-3-031-08143-9_12(200-219)Online publication date: 14-Jun-2022
  • (2022)RVprio: A tool for prioritizing runtime verification violationsSoftware Testing, Verification and Reliability10.1002/stvr.181332:5Online publication date: 7-Mar-2022
  • (2021)RML: Theory and practice of a domain specific language for runtime verificationScience of Computer Programming10.1016/j.scico.2021.102610205(102610)Online publication date: May-2021
  • (2021)Runtime verification of train control systems with parameterized modal live sequence chartsJournal of Systems and Software10.1016/j.jss.2021.110962177(110962)Online publication date: Jul-2021
  • (2021)From parametric trace slicing to rule systemsInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-021-00608-023:2(209-228)Online publication date: 1-Apr-2021
  • Show More Cited By

View Options

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