Efficient versioning and configuration management are always important in software development projects. In this chapter we discuss only those MDSD-specific characteristics of this topic.
15.1 What Is Versioned?
In an MDSD project, the following aspects must be managed or versioned:
- The (generic) generation tools. Currently, these tools are often still in development themselves – because of this, it makes sense to have them under version control.
- The generator configuration, the generative part of the domain architecture. This includes the DSL/profile definition, metamodel, templates, and transformations.
- The non-generative part of the domain architecture, the MDSD platform.
- The application itself: models, specifications, and (in most cases) manually-developed code.
The generated code ideally is not versioned, because it is reproducable from the model at any given time, and thus does not constitute a real program source. Of course, this idea can be applied sensibly only if the manually-created and the generated code are separated structurally in the file system. This is one reason why we value this separation (see Section 8.2.6). In practice, it is not always 100% possible or useful, so we sometimes need a more complex procedure for such cases. We discuss this later in this chapter.
One of the goals of model-driven development is the development of several applications based on the same domain architecture. It is therefore essential to separate the platform ...