title: Automatic, compositional construction of Java models
keywords: Java, Graph transformation, Flow graph
topics: Graphs , Languages , Logics and semantics
committee: Arend Rensink


For analysing programs, various intermediate models are available that abstract away from a lot of operational detail but retain enough semantic information to be able to understand the functionality, catch certain types of bugs automatically and perform compiler optimisation as well. Prime among those are flow graphs and call graphs.

The construction of such models is non-trivial for a real-life programming language such as Java. In this project, the challenge is to use graph transformation to capture the essential nature of control flow and call structure in Java programs, resulting in a definition that is maintainable and extensible (for instance to future Java versions) as well as compositional. When done well, existing tooling, in particular the graph transformation tool GROOVE, can be used to actually perform the construction fully automatically.

There is some prior work on which to build, which however is based on an old version of Java. A successful completion of this project will be publishable in an international venue.