Section: Application Domains
Model-driven System Interoperability
Historically the first application area of MDE was code generation from abstract models. A typical example is generation of Java code from UML models or of platform-dependent from platform-independent software artifacts. As discussed above, the subject of reverse engineering was the second major historical application field for MDE, with the discovery of structured precise models from heterogeneous and often unstructured systems.
The two first applications of MDE were thus mainly forward and reverse engineering of software systems. In these contexts, transformations were executed at software production or at software maintenance time. In the recent period however, an important evolution occurred towards the application area of system interoperability. In this new context, transformations are performed while systems are in execution. For example, a set of transformations may keep two different tools synchronized, by exchange of structured data or even by interpretation of complex events. This approach revisits tool interoperability by considering the associated metamodels. Our proposal to the CESAR (see 7.9 ) reference technology platform uses these ideas for defining the notion of virtual tool [19] . The establishment of correspondences between technical spaces (e.g., Eclipse Modeling and Microsoft DSL tools or OSLO) follows similar schemas [30] . Another example is the interoperability of graphical tools [15] .