CG2007 Programme Information
Session Title Building a flexible software factory using small DSLs and Small Models

Session Type Case Study

Duration 75 minutes

Session Description

This session describes the development of the SMART-Microsoft Software Factory. This Factory works with a multi-layered architecture. We use four different Domain Specific Languages and models per DSL to model a complete application on all architectural levels. The models are all small, independent and loosely coupled with each model being stored in a text file. This is in strong contrast with UML-like approaches where a model is one monolithic thing.

The motto we have is: a model is equivalent to source code.

  • A model has the same status as source code
  • ,
  • generated code is never changed, only extended.

A model file is like a source code file. This approach has proven to lead to many advantages:

  • Code generation is done per model at the time the model is saved. This ensures we never have long waiting times for code generation where all code must be generated from one big model-repository.
  • Inter-model validation (models refer to each other) is done by the IDE. As with source code, each file is individual and separately stored and references are solved in the IDE. Any validation errors are handled by the IDE in the same way as errors in source code.
  • Version control can be done using the familiar and proven file based source control, systems. A model is just a text file.
  • Reuse of models is easier.
  • Adaptation of the Software Factory is easy because all the DSL’s are independently useable.

All of the above makes acceptance by developers high, because many things work in the same way as they are used to with source code.



Session Leaders Jos Warmer was a member of the core team that developed the UML standard, and was responsible for OCL. Jos has written books on UML (in Dutch), OCL and MDA (both in English). Jos has published many papers and is involved in organizing workshops and conferences on modeling, MDA and OCL. Currently he is responsible for the model driven software factory of the Microsoft Development Centre within the Dutch IT company Ordina.