Model-Driven Software Engineering¶
Model-driven software engineering (MDE) is the practice of raising models to first-class artefacts of the software engineering process, using such models to analyse, simulate and reason about properties of the system under development, and eventually often auto-generate a part of its implementation.
MDE brings and adapts well-understood and long-established principles and practices of trustworthy systems engineering to software engineering (it is unthinkable to start constructing e.g. a bridge or an aircraft without designing and analysing several models of it first) and is used extensively in organisations that produce business- or safety-critical software (e.g. in the aerospace, automotive and robotics industries), where defects can have catastrophic effects (e.g. loss of life) or can be very expensive to remedy (e.g. require large scale product recalls). MDE is also increasingly used for non-critical systems due to the productivity and consistency benefits (largely through automated code generation) it delivers (e.g. JHipster for microservice architectures).
I have authored many highly-cited peer-reviewed papers on topics related to MDE and I am leading the development of the Epsilon open-source MDE platform under the Eclipse Foundation, which has a wide user base, including engineers at organisations such as NASA, IBM, BAE Systems and THALES. I am on the Program Committee of the ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, and I have been the Technical Director of a large European Commission project (MONDO, €2.67M) which investigated techniques for scaling up MDE technologies for very large systems. I am currently involved a £30M project that involves most of the major industrial organisations in the UK aerospace industry, and in knowledge transfer projects with Rolls-Royce and IBM UK which aim at applying the results of our MDE research on problems of interest to our industry partners.