Published at the 10th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2017).
Paper is available.
Research prototype and initial evaluation artefacts are available on GitHub.
The maintenance of modern systems often requires developers to perform complex and error-prone cognitive tasks, which are caused by the obscurity, redundancy, and irrelevancy of code, distracting from essential maintenance tasks.
Typical maintenance scenarios include multiple branches of code in repositories, which involves dealing with branch-interdependent changes, and aspects in aspect-oriented programming, which requires in-depth knowledge of behavior-interdependent changes. Thus, merging branched files as well as validating the behavior of statically composed code requires developers to conduct exhaustive individual introspection.
In this work we present the VirtualEdit for associative, commutative, and invertible model composition that enables simultaneous editing of multiple model versions or variants through dynamically derived virtual models. We implemented the approach in terms of an open-source framework that enables the maintenance of multi-versioned and aspect-oriented software through selective focus on specific parts of code, which are significant for a particular maintenance task.
The VirtualEdit framework is evaluated based on its application to the most popular publicly available Xtext-based languages. Our results indicate that our approach is surprisingly easy to include in other languages and can be used in a prototypical fashion.
You can obtain the latest version of VirtualEdit by directly downloading the VirtualEdit project archive file or clone the VirtualEdit GitHub repository, the the IntellEdit project archive file or clone the IntellEdit GitHub repository and the the XMLIntelledit project archive file or clone the XMLIntelledit GitHub repository.
Watch VirtualEdit in action by proceeding with the following simple steps:
Note that aspects are re-executed as soon as file changes have been saved.