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.
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.
Original language | English |
---|---|
Title of host publication | Programming ’17 |
Subtitle of host publication | Companion to the first International Conference on the Art, Science and Engineering of Programming |
Publisher | Association for Computing Machinery |
Number of pages | 5 |
ISBN (Print) | 978-1-4503-4836-2 |
DOIs | |
Publication status | Published - Apr 2017 |
Event | International Conference on the Art, Science, and Engineering of Programming 2017 - Brussels, Belgium Duration: 3 Apr 2017 → 6 Apr 2017 https://2017.programming-conference.org/ |
Conference
Conference | International Conference on the Art, Science, and Engineering of Programming 2017 |
---|---|
Abbreviated title | <Programming> 2017 |
Country/Territory | Belgium |
City | Brussels |
Period | 3/04/17 → 6/04/17 |
Internet address |
Keywords
- Model Driven Engineering
- Model Transformation
- Java bytecode