Bidirectional Compiler for Software Evolution

Lead Research Organisation: University of Bristol
Department Name: Computer Science

Abstract

We aim to improve the process of software evolution by reducing the disruption caused by updating third-party software.
It is common for downstream developers to customise and optimise third-party software to suit their intended use. But since the source code of the third-party software is usually unavailable to downstream developers, such customisation are often difficult and labour intensive. Moreover, there is a software evolution problem, as when the upstream software vender releases an update, the downstream customisations to the existing version
risk being overwritten. This disruption in software update is costly to users, and delays potentially safety- and security-critical updates being performed.
In this project, we address this problem by applying bidirectional-transformation techniques to compiler construction. By making compilers bidirectional, one will be able to automatically generate human-readable source code from the low-level executable. The backward generated source code will serve the following due objectives. 1. Being more susceptible to both human and automated reasoning, it will simplify the software customisation process, reducing manual effort and improve reliability. 2. Being consistent to the customised
executable, it keeps the customisation, which will not be overwritten by incoming updates to the executable. The bidirectional-transformation process will then be able to "synchronise" the customised source code and the updated executable to automatically merge the customisation with the incoming update, minimising the need for
manual intervention.

Publications

10 25 50