TU Delft
Education Type
Education print this page print this page     
2010/2011 Electrical Engineering, Mathematics and Computer Science Master Computer Science
Model-Driven Software Development
Responsible Instructor
Name E-mail
Prof.dr. E. Visser    E.Visser@tudelft.nl
Contact Hours / Week x/x/x/x
0/0/2/2 lecture + 0/0/4/4 lab
Education Period
Start Education
Exam Period
Course Language
Expected prior knowledge
- compiler construction (required)
- software engineering
- web programming (advised)
Course Contents
Model-driven software development aims to improve software development
by employing high-level, domain-specific models in the implementation,
integration, maintenance, and testing of software systems. Models
capture designs at a higher-level of abstraction. Unlike technical
documentation which has a fragile connection to the implementation of
a software system, models are an integral part of the software life
cycle. Developers translate designs into models for an appropriate
meta-model, which are then automatically transformed to
implementations. Thus, with an appropriate modelling language, the
effort of producing a new software system decreases and maintenance is
reduced to model maintenance.

This course studies the paradigm of model-driven software development
and the methods and techniques available for its realization. Topics
include 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 the
domain-specific web programming language WebDSL as an example of DSL
design. In the second part you study and apply techniques for DSL
design and implementation building an IDE and code generator for a
language of your choice.


* Domain

- analysis and description of the domain of software systems
- technical domains vs business domains
- problem domain vs solution domain

* Model

- formal description of the results of domain analysis with models

* Modeling language

- meta modeling: formal description of the concrete and abstract
syntax of modeling languages
- meta meta modeling: description of the language of language

* Transformation

- definition of the semantics of models using transformations
- model-to-model transformation (desugaring)
- model-to-code transformation (code generation)
- static analysis of models
- local vs context-sensitive transformations
- template engines vs code generation by model transformation
- code quotation and quasi quotation

There are many ways in which these core concepts can be realized.

* Mechanims

- mechanisms for the realization of models, languages and transformations
- grammarware: contex-free grammars + rewriting and/or attribute grammars
- model ware: graph schemas + graph rewriting or object manipulation
- xml ware: XML schemas + XML transformation (XSLT)
- in this course the emphasis will be on the use of SDF for syntax
definition and Stratego for transformation; other approaches are

* Policies

- policies and trade-offs in the design of languages and transformations

* Methods

- methods for the systematic development of models, languages, transformations

* Economics

- when is it economically viable to apply model-driven software development

Study Goals
- understanding the core concepts of model-driven software development

- modeling software systems using domain-specific modeling languages

- designing and implementing domain-specific languages capturing the
analysis of an application domain and its implementation techniques

- understanding and applying formalisms for declarative language definition

- understanding trade-offs in language design and code generation
Education Method
Lectures + lab assignments + homework assignments
Homework assignments + lab assignments