The job of a developer often boils down to write and give structure to the code, but few of them leave a source of documentation to understand this structure in its maintenance phase. The person in charge of this maintenance then fits into the role of an explorer in search of such information. During this research, he will answer his questions using tools that allow him to better respond to his questions. There are a multitude of tools that uses query languages to query the source code. In addition to these tools, which are mainly made for static queries, there are many techniques to collect execution traces. This thesis proposes to implement a query language for querying the execution traces (from Java programs), as query tools for source code do. In this thesis, we will begin by a review of the literature ( "Querying Code") in order to have an overview of existing languages and their weaknesses. Then, based on this research and through an incremental ap-proach, we imagined, created and tested our own language. During the test phase, we developed a script of questions to test our theoretical choice of composition and for testing the scalability of this language. Our approach shows that our language is able to incorporate new features without having to change our founding bases. The results also highlight the importance of the relationship between then static and dynamic universes of a program during the questioning phase of a program. We showed that it’s possible, using the right approach, to create a query language binding the dynamic universe from execution traces to a static universe and therefore obtain a good level of expressiveness.
|Date of Award||29 Aug 2016|
|Supervisor||Vincent Englebert (Supervisor)|
- Code Querying
- query language
- execution trace