Model translation : a UML-based specification technique and active implementation approach
Many software applications involve models of data that are manipulated by the application. There is often a need to transform (or translate) the data from one model, into another in which the data is differently structured. In addition, there is an increasing requirement to pass data between different applications, which invariably have different formats for their data models. Both of these issues require a translation of the modelled data from one form to another. The process of translating a model from one form to another is known as model transformation or model translation. The literature on model transformation includes a number of techniques for specifying transformations. However, the majority of these techniques are grammar-based specifications, many of which use a textual grammar, although some make use of graphical (graph) grammars. These subsequently lead to a monolithic one-step implementation process that performs the transformation. This thesis addresses two issues that are related to the area of model transformation. Firstly, it addresses the need for a standard notation that can be used for writing model translator specifications. Secondly, a technique for implementing model translators is developed that actively performs the transformation. Rather than a single step process, that must be executed every time the source model changes, the active implementation approach presented performs a continuous translation updating the target model every time a change is made to the source model. The specification technique makes use of the standardised Unified Modelling Language (UML) and Object Constraint Language (OCL) for specifying a transformation relationship between two object-oriented models, each of which is also specified using UML and OCL. The implementation approach uses an event-based version of the observer pattern enabling the construction of translator to be formed from a number of mini-translator parts, each of which monitors a small set of components. These mini-translators act upon events generated by the model components and update the transformed components to reflect the changes. The specification and implementation techniques described can be applied to many problem areas. In particular this thesis discusses their application to Multiple View Visual Languages (i.e. the UML itself) and automatic performance model generation.