We strive to support the development of sustainable software systems, devised from the start to be used and maintained over an extended period of time, through dedicated tooling and novel language constructs.
To this end, our research aims to provide a solid foundation for the validation, transformation and understanding of software systems:
- We support validation by identifying bug patterns and violations of architectural regularities in code.
- We apply software transformations to the problems of API migration, automatic parallelization and multi-language refactoring.
- Finally, we provide support for the understanding of version repositories through advanced visualizations and dedicated query languages.
We specifically advance the state of the art along three main axes:
- The first axis considers multi-language systems. Analyses need to consider the impact that annotations as well as embedded domain-specific languages have on the semantics of the host program.
- The third axis considers multiple versions of code in an analysis. Here, the state of the art is challenged by the scale of version repositories and the complexity of the temporal relations between versions.