Software plays a critical role in our daily life. Vast amounts of money are spent on more and more complex systems. All software, regardless if it controls a plane or the game on your phone is never finished. Software changes when it contains bugs or when new functionality is added. This process of change is called software evolution. Despite what the name suggests, this is in practice a rapid process.
Software is described in a software language. Not only software can evolve, also the language it is described in. When a software language evolves, the software becomes harder to read, or often times unreadable. To prevent loss of software it needs to evolve along with its language, which is a process known as coupled evolution.
Coupled evolution occurs in various domains of computer science, such as in databases, in software models and in software code. This dissertation focuses on different aspects in the context of coupled evolution, such as evolution operators, reconstruction of evolution and the application of coupled evolution.