Model-driven software development aims to improve software developmentby employing high-level, domain-specific models in the implementation,integration, maintenance, and testing of software systems. Modelscapture designs at a higher-level of abstraction. Unlike technicaldocumentation which has a fragile connection to the implementation ofa software system, models are an integral part of the software lifecycle. Developers translate designs into models for an appropriatemeta-model, which are then automatically transformed toimplementations. Thus, with an appropriate modelling language, theeffort of producing a new software system decreases and maintenance isreduced to model maintenance.

This course studies the paradigm of model-driven software developmentand the methods and techniques available for its realization. Topicsinclude modeling, meta-modeling, technical spaces, domain analysis,domain-specific languages, code generation, and model transformation.

In the first part of the course you study and apply thedomain-specific web programming language WebDSL as an example of DSLdesign. In the second part you study and apply techniques for DSLdesign and implementation building an IDE and code generator for alanguage of your choice.