November 11, 2008 oslo

Generating code from M

On the Oslo team, we think of three kinds of models:

  1. Drawings: This is modeling to communicate from human to human, e.g. on a white board or in Visio. An architecture diagram in a design document is an example of such a thing.
  2. Model-Assisted: This is modeling where we’re talking to a computer, most often to generate code, e.g. the .edmx file used by Visual Studio to generate C# data access code.
  3. Model-Driven: Here we’re also communicating from a human to a computer, but instead of doing it at development-time to generate code, the model is actually used at run-time to drive a run-time, e.g. a Workflow definition to drive the Workflow engine.

I’ve seen various samples around the interweb on model-driven aka executable models” (some of which we’ve supplied on the Oslo DevCenter), but Kirill Chilingarashvili has done a nice little sample of combining Visual Studio’s T4 codegen language with a custom DSL in MGrammar. Enjoy!