To me, the most fascinating aspect of software is its potential to be used, shaped, and, to some extent, even created by people with non-software related professions. This is more or less in line with the value proposition of Model-Driven Engineering (MDE), a sub-field of Software Engineering that aims to replace code with higher abstractions referred to as “models” (think state machines, flowcharts, class diagrams, and you’re in the right area).
Although technically promising, MDE has historically been plagued by its reliance on tools that were difficult to learn and use productively by software developers, let alone domain experts in other fields. This is the pain point I addressed in my PhD research, for which I was fortunate enough to work under the supervision of Harald Störrle at the Technical University of Denmark.
End-user modelers are domain experts who create and use models as part of their work. They are typically not Software Engineers, and have little or no programming and meta-modeling experience. However, using model manipulation languages developed in the context of Model-Driven Engineering often requires such experience. These languages are therefore only used by a small subset of the modelers that could, in theory, benefit from them.
The goals of this thesis are to substantiate this observation, introduce the concepts and tools required to overcome it, and provide empirical evidence in support of these proposals. To achieve its first goal, the thesis presents the findings of a Systematic Mapping Study showing that human factors topics are scarcely and relatively poorly addressed in model transformation research. Motivated by these findings, the thesis explores the requirements of end-user modelers, and proposes the VM* family of model manipulation languages addressing them. This family consists of the Visual Model Query Language (VMQL), the Visual Model Constraint Language (VMCL), and the Visual Model Transformation Language (VMTL). They allow modelers to specify and execute queries, constraints, and transformations using their modeling notation and editor of choice.
The VM* languages are implemented via a single execution engine, the VM* Runtime, built on top of the Henshin graph-based transformation engine. This approach combines the benefits of flexibility, maturity, and formality. To simplify model editor integration, the VM* Runtime is deployed as a collection of lightweight Web Services. The claim that VM* languages offer end-user modelers superior learnability compared to existing model manipulation languages is verified empirically via user experiments complemented by qualitative evidence.