skip to main content
10.1145/3079368.3079392acmotherconferencesArticle/Chapter ViewAbstractPublication PagesprogrammingConference Proceedingsconference-collections
research-article

An MDE Approach for Modular Program Analyses

Published: 03 April 2017 Publication History

Abstract

Program analyses are an important tool to check if a system fulfills its specification. A typical implementation strategy for program analyses is to use an imperative, general-purpose language like Java, and access the program to be analyzed through libraries that offer an API for reading, writing and manipulating intermediate code, such as BCEL or ASM for Java bytecode. We claim that this hampers reuse and interoperability.
In this paper, we propose an Ecore-metamodel for covering Java bytecode completely, which can act as a common basis for program analyses. Code analyses as well as instrumentations can then be defined as model transformations in a declarative language. As a consequence, the implementation of program analysis becomes more concise, more readable and more modular. We demonstrate the effectiveness of this approach by two case studies: profiling of timing performance and model checking of reachability requirements. We also provide tools to generate instances of our bytecode metamodel from Java code in the class file format and vice versa.

References

[1]
D. Ansaloni. Self-refining aspects for dynamic program analysis. In Proceedings of the Tenth International Conference on Aspect-oriented Software Development Companion, AOSD '11, pages 75--76, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0606-5.
[2]
J. Bengtsson, K. G. Larsen, F. Larsson, P. Pettersson, and W. Yi. UPPAAL --- a tool suite for automatic verification of real-time systems. In Proc. of Workshop on Verification and Control of Hybrid Systems III, number 1066 in Lecture Notes in Computer Science, pages 232--243. Springer-Verlag, Oct. 1995.
[3]
W. Binder, J. Hulaas, and P. Moret. Reengineering standard Java runtime systems through dynamic bytecode instrumentation. In Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), pages 91--100, Sept 2007.
[4]
C. Bockisch, A. Sewe, H. Yin, M. Mezini, and M. Aksit. An in-depth look at ALIA4J. Journal of Object Technology, 11(1):7:1--28, Apr. 2012. ISSN 1660-1769.
[5]
E. Bruneton, R. Lenglet, and T. Coupaye. ASM: a code manipulation tool to implement adaptable systems. Adaptable and extensible component systems, 30: 19, 2002.
[6]
F. Budinsky. Eclipse Modeling Framework: a developer's guide. Addison-Wesley Professional, 2004.
[7]
A. Chander, J. C. Mitchell, and I. Shin. Mobile code security by Java bytecode instrumentation. In DARPA Information Survivability Conference amp; Exposition II, 2001. DISCEX '01. Proceedings, volume 2, pages 27--40 vol.2, 2001.
[8]
N. Delgado, A. Q. Gates, and S. Roach. A taxonomy and catalog of runtime software-fault monitoring tools. IEEE Transactions on Software Engineering, 30 (12):859--872, Dec 2004. ISSN 0098-5589.
[9]
J. Dongarra, A. D. Malony, S. Moore, P. Mucci, and S. Shende. Performance instrumentation and measurement for terascale systems. In Computational ScienceâĂŤICCS 2003, pages 53--62. Springer, 2003.
[10]
M. Eichberg, M. Monperrus, S. Kloppenburg, and M. Mezini. Model-driven engineering of machine executable code. In European Conference on Modelling Foundations and Applications, pages 104--115. Springer, 2010.
[11]
EMF. Eclipse Modeling Framework website. https://www.eclipse.org/modeling/emf/, Apr. 2016.
[12]
A. Q. Gates, O. Mondragon, M. Payne, and S. Roach. Instrumentation of intermediate code for runtime verification. In Software Engineering Workshop, 2003. Proceedings. 28th Annual NASA Goddard, pages 66--71, Dec 2003.
[13]
JBCPP. Java bytecode metamodel and jbc++ plug-in website. https://bitbucket.org/bmyildiz/java-bytecode-metamodel-repository, June 2016.
[14]
K. A. Lindlan, J. Cuny, A. D. Malony, S. Shende, B. Mohr, R. Rivenburgh, and C. Rasmussen. A tool framework for static and dynamic analysis of object-oriented software with templates. In Super computing, ACM/IEEE 2000 Conference, pages 49--49, Nov 2000.
[15]
C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI'05, pages 190--200, New York, NY, USA, 2005. ACM. ISBN 1-59593-056-6.
[16]
Oracle. Java class file format, website. https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html, May 2016.
[17]
R. F. Paige, D. S. Kolovos, L. M. Rose, N. Drivalos, and F. A. C. Polack. The design of a conceptual framework and technical infrastructure for model management language engineering. In Proceedings of the 2009 14th IEEE Int. Conference on Engineering of Complex Computer Systems, ICECCS '09, pages 162--171, Washington, DC, USA, 2009. IEEE Computer Society. ISBN 978-0-7695-3702-3. URL http://dx.doi.org/10.1109/ICECCS.2009.14.
[18]
D. Steinberg, F. Budinsky, E. Merks, and M. Paternostro. EMF: Eclipse Modeling Framework. Pearson Education, 2008.
[19]
A. Van Deursen, P. Klint, and J. Visser. Domain-specific languages: An annotated bibliography. Sigplan Notices, 35(6):26--36, 2000.
[20]
C. Wang, X. Mao, Z. Dai, and Y. Lei. Research on automatic instrumentation for bytecode testing and debugging. In IEEE International Conference on Computer Science and Automation Engineering (CSAE), volume 1, pages 268--274, May 2012.
[21]
B. M. Yildiz, A. Rensink, C. M. Bockisch, and M. Akşit. A model-derivation framework for timing analysis of Java software systems. Technical Report TRCTIT-15-08, Centre for Telematics and Information Technology, University of Twente, Enschede, December 2015.

Cited By

View all
  • (2024)Mutation Testing of Java Bytecode: A Model-Driven ApproachProceedings of the ACM/IEEE 27th International Conference on Model Driven Engineering Languages and Systems10.1145/3640310.3674103(237-248)Online publication date: 22-Sep-2024
  • (2023)MMT: Mutation Testing of Java Bytecode with Model Transformation2023 ACM/IEEE International Conference on Model Driven Engineering Languages and Systems Companion (MODELS-C)10.1109/MODELS-C59198.2023.00015(35-39)Online publication date: 1-Oct-2023
  • (2017)How to Efficiently Build a Front-End Tool for UPPAAL: A Model-Driven ApproachDependable Software Engineering. Theories, Tools, and Applications10.1007/978-3-319-69483-2_19(319-336)Online publication date: 17-Oct-2017

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
Programming '17: Companion Proceedings of the 1st International Conference on the Art, Science, and Engineering of Programming
April 2017
193 pages
ISBN:9781450348362
DOI:10.1145/3079368
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]

In-Cooperation

  • AOSA: Aspect-Oriented Software Association

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 03 April 2017

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

Programming '17

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 05 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Mutation Testing of Java Bytecode: A Model-Driven ApproachProceedings of the ACM/IEEE 27th International Conference on Model Driven Engineering Languages and Systems10.1145/3640310.3674103(237-248)Online publication date: 22-Sep-2024
  • (2023)MMT: Mutation Testing of Java Bytecode with Model Transformation2023 ACM/IEEE International Conference on Model Driven Engineering Languages and Systems Companion (MODELS-C)10.1109/MODELS-C59198.2023.00015(35-39)Online publication date: 1-Oct-2023
  • (2017)How to Efficiently Build a Front-End Tool for UPPAAL: A Model-Driven ApproachDependable Software Engineering. Theories, Tools, and Applications10.1007/978-3-319-69483-2_19(319-336)Online publication date: 17-Oct-2017

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media