Foundations for MDA-based Forward Engineering
Journal of Object Technology
Model Driven Architecture (MDA) is an emerging technology that is supposed to provide a technical framework for information integration and tools interoperation; many UML tools claim to be compliant with it. Model-to-model transformations are essential in MDA. This article describes foundations for UML-based transformation tools. We introduce the NEREUS language to cope with concepts of UML metamodel. A transformational system to translate OCL to NEREUS was defined. In this framework, we
... ramework, we describe the NEREUS process to forward engineering UML static models to objectoriented code. Eiffel was the language of choice in which to show the feasibility of our approach. Transformations are supported by a library of reusable components and by a system of transformation rules that allow translating UML/OCL constructions to NEREUS specifications and Eiffel step-by-step. FOUNDATIONS FOR MDA-BASED FORWARD ENGINEERING 130 J OURNAL OF OBJECT TECHNOLOGY V OL. 4, NO. 1 models of systems is well supported by automated theorem prover and model checkers, however these tools are not integrated into UML-based environments. Also, these tools provide limited facilities for refactoring and reverse engineering. The OMG is promoting the MDA that is supposed to provide a technical framework for information integration and tools inter-operation based on the separation of platform specific models (PSM) from platform independent models (PIM). Many tools claim to compliant with MDA. It is still evolving and some problems have been detected in the transformation processes that require flexible code generation mechanisms [Kleppe03] . Formal and semi-formal techniques can play complementary roles in MDA-based software development processes. We consider this integration beneficial for both semiformal and formal specification techniques. On the one hand, semi-formal techniques have the ability to visualize language constructions allowing a great difference in the productivity of the specification process, especially when the graphical view is supported by means of good tools. On the other hand, formal specifications allow us to produce a precise and analyzable software specification and automate model-to-model transformations. The combination of UML and formal specifications offers the best of both worlds to software developer. In this article we describe foundations for MDA-based forward engineering. Metamodeling is one key of the MDA. In this direction, we define the NEREUS language to cope with concepts of UML metamodel. In particular this language is relation-centric, that is it expresses different kinds of relations (dependency, association, aggregation, composition) as primitives to develop specifications. Much more information can be included in the specification metamodel using the combination of UML and OCL (Object Constraint Language) [Warmer03]. A transformational system to translate OCL to NEREUS was defined. NEREUS can be viewed as a communication bridge between UML and other algebraic languages and between UML and object oriented languages. The UML/OCL is used to generate high-level specifications which are independent of any implementation technology. These specifications are tailored to specify realizations that fit a specific technology, which in turn are used to generate the code. Eiffel was the language of choice in which to show the feasibility of our approach. The process is based on the adaptation of reusable components that are defined in a framework that fits MDA. All of the proposed transformations can be automated; they can be integrated into iterative and incremental software development processes supported by the UML-based tools. Following this approach we can use the transformations of the forward engineering process and apply them backwad to reverse engineer code to a UML diagram. The structure of the rest of this article is as follows. Section 2 discusses related work. Section 3 gives a brief description of the NEREUS language. Section 4 describes the NEREUS process to forward engineering UML models. Section 5 analyses a mapping from UML/OCL to NEREUS. Section 6 describes how to transform NEREUS specifications into Eiffel. Finally, Section 7 concludes and discusses further work.