There are at least three areas of versioning that somehow have to play together:

  • models
  • generators
  • source code of your software projects

In order to be able to work with older versions of your software projects you also have to able to use older versions of models and generators. When you follow some rules, this task will become relatively easy:

  • Have older versions of generators instantly available, without having to search a lot or ask other people. Virtual Developer makes this very easy by allowing to host many different versions of one and the same generator in parallel.
  • When possible: Don’t use modeling and generation when fixing bugs in older versions of your software projects.
  • When you use file based models: When you release a version of your software project, also branch or/and tag the model files that you were using for code generation. You can use them later if you have to change the model and regenerate.
  • When you use repository based models: Let your modeling tool create a branch/tag/snapshot of your model at the time you release your software project and keep a reference to that.


It makes sense to keep generation projects that use older versions of generators in order to be sure to use the correct generation option values. The easiest way to do this is to create copies of the most actual generation projects before you upgrade the generators that are assigned to it to a newer version.