Once you've defined which code gets generated out of which model, you might think that your MDSD job is finished. However, an important question remains: who performs transformations and code generations, and when? Conceptually, three different approaches are possible (for simplicity, in the following list and subsequent discussions I use "transformation" as an abbreviation for "model transformation or code generation"):
Those who need the result of a transformation perform it.
Those who define the source of a transformation (the source model) perform it.
A separate team performs the transformations.
Let's discuss these approaches in more detail.
Consumer-driven transformations (where those who need the result of a transformation perform it) are usually the easiest to establish as companywide policies. The consumers only need access to the source (model) and the generator(s). An added benefit is that the consumers have the understanding and the infrastructure to verify the generated result, because the reason they're performing the transformation is that they need the result for their own further processing. However, this approach has some limitations:
The consumer has to know when a new transformation is necessary. That is, the providers of the source model or of the generator(s) have to inform the consumers when a new transformation ...