This chapter describes a model-driven development process in terms of the key activities and their interdependencies. We begin by describing the main activities for a simplified system in which there is a single application source model and a single target implementation model, both of which apply to a single platform. We then expand the discussion to cover the issues involved in iterating a specific process in the presence of multiple platforms.
Broadly speaking, we developers carry out two main activities. First, we formalize knowledge of a subject matter, and then we render that knowledge as an implementation. In MDA, one carries out this activity by building a model of a platform in a modeling language that can be transformed into others. The second activity is to map that formalized knowledge onto a target platform to create a system.
System development should, of course, take place in an iterative, incremental fashion. Thus, there will be repetition of these two basic activities on succeeding increments of the system, and sometimes we'll make an iteration back to a previous increment if we learn that it's incorrect. And although we have, naturally, tested both the models and the mapping functions as we've gone along, we also need to test the final system to be delivered.