A key benefit of system and software modeling is the ability to explore various design alternatives to reach a fixedpoint representation of a concrete system design. Among a diverse set of configuration possibilities, a model engineer must be able to explo
AUTOMATED MODEL TRANSFORMATION
Model transformation provides an opportunity to automate several of the tasks that are typically performed manually in model-driven engineering. Such automation is a key to the concepts associated with a software factory [3], which aims to remove several remaining accidental complexities associated with software development. Numerous techniques and tools have been developed to support model transformation (please see accompanying sidebar for an overview). To perform model transformations in an automated manner, modeling tools need to offer a specific language for model developers to define their own transformations and execute these transformations on demand
[4]. Our investigation into the development of a model transformation engine suggests that such a language needs to possess the following two characteristics:
The language should be domain- and user-centered. The primary goal for the design of a transformation specification language should allow users to describe a transformation using concepts from their own domain. Among the language considerations of conciseness and comprehension, the key to the design of a transformation language is a set of core abstractions that are intuitive and cover the largest possible range of situations implied by current modeling practice. To achieve this goal, a user-centered transformation language should consist of a small set (ideally a minimized set) of concepts and constructs, but be powerful enough to express a complete set of desired transformation activities.
The language should be specific to model transformation. A model transformation language needs to have full power to specify all types of modeling objects and transformation behaviors, including model navigation, model querying and model modification. This requires both a robust type system and a set of functionally rich operators. In addition to full expressiveness, such a language should provide specific constructs and mechanisms for users to describe model transformations in an efficient way. In other words, a transformation language is also a domain-specific language that captures all the features of the model transformation domain.
The Constraint-Specification Aspect Weaver (C-SAW) was designed with these two characteristics in mind. Figure 1 presents the model transformation process from the perspective of C-SAW. A set of input models, as defined by a specific domain represented by a metamodel, serve as input to C-SAW. A transformation specification is also required to define the specific changes to be made to the source models. The language that is used by C-SAW to describe a transformation specification is the Embedded Constraint Language (ECL), which was created as an extension to the Object Constraint Language (OCL). The output of C-SAW is a set of transformed target models. C-SAW is implemented as a plugin for the Generic Modeling Environment (GME), which provides an environment for defining new modeling environments [5]. The implementation issues associated with C-SAW are presented in the middle of Figure 1, which illustrate the connection between the GME modeling API with the ECL parser and interpreter. Additional information about C-SAW (including papers, software, and videos) can be found at http://www.cis.uab.edu/gray/Research/C-SAW/
Key Constructs of a Model Transformation Language
ECL provides many capabilities to assist a model engineer in writing transformation specifications that reflectively refer to concepts from the user’s modeling domain in order to refine a model in a stepwise manner [6]. This allows transformations to be written concisely and intuitively because the transformations refer to domain elements recognized by the model engineer. The ECL constructs that support such transformation include a type system, a mechanism for selecting modeling elements, and a set of operators to manipulate the source models.