<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Rigorous Framework for Model-Driven Development</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Liliana Favre</string-name>
          <email>lfavre@exa.unicen.edu.ar</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universidad Nacional del Centro de la Provincia de Buenos Aires Comisión de Investigaciones Científicas de la Provincia de Buenos Aires Argentina</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>The Model Driven Architecture (MDA) is an initiative of the Object Management Group (OMG) to model-centric software development. MDA distinguishes different kinds of models: Platform Independent Models (PIM), Platform Specific Models (PSM) and code models. Metamodeling plays a key role in MDA. A combination of formal specification techniques and metamodeling can help us to address Model-Driven Developments (MDD). In this paper we describe a MDA framework that comprises the NEREUS metamodeling notation, a system of transformation rules to bridge the gap between UML/OCL and NEREUS and, the definition of MDA-based components and model/metamodeling transformations. NEREUS can be viewed as an intermediate notation open to many other formal languages. In particular, we show how to integrate NEREUS with algebraic languages such as CASL.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        The Object Management Group (OMG) is facing a paradigm shift from
objectoriented software development to model-centric development [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. A recent OMG
initiative is the Model Driven Architecture (MDA), which is emerging as a technical
framework to improve productivity, portability, interoperability, and maintenance
[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        MDA promotes the creation of abstract models that are developed independently
of a particular implementation technology and automatically transformed by tools
into models for specific technologies. All artifacts such as requirements
specification, architecture descriptions, design descriptions and code, are regarded
as models. MDA distinguishes platform independent models (PIMs), platform
specific models (PSMs) and code models. UML combined with the Object
Constraint Language (OCL) is the most widely used way for writing either PIMs or
PSMs [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>In MDA, one of the key features is the notion of automatic transformations that
are used to convert a model in a source language into a model in a target language.
A Model-Driven Development (MDD) is carried out as a sequence of model
transformations.</p>
      <p>In this paper, we analyze the integration of MDD with knowledge developed by
the formal method community. MDD can take advantage of the different formal
languages and the diversity of tools developed for prototyping, model validations
and model simulations.</p>
      <p>We describe a MDA framework that facilitates model-to-model transformations,
focusing on UML metamodels. It was designed to automate different tasks that are
at the core of MDA, such as refining and refactoring.</p>
      <p>The framework comprises a megamodel for defining MDA components, the
metamodeling notation called NEREUS and, the definition of metamodeling/model
transformations using UML/OCL and NEREUS.</p>
      <p>
        A megamodel is a set of elements that represent and/or refer to UML-based
models and metamodels at different levels of abstraction (PIMs, PSMs, and code)
and structured by different transformation relationships. NEREUS can be viewed as
an intermediate notation open to many other formal specifications such as algebraic,
functional or logic ones. We define a system of transformation rules to transform
automatically UML/OCL models into NEREUS. We also show how to convert
NEREUS specifications to algebraic languages such as CASL [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>This paper is organized as follows. Section 2 presents a megamodel for defining
MDA-based components. Section 3 describes how to formalize metamodels in the
intermediate notation NEREUS. Section 4 shows how to bridge the gap between
UML/OCL and NEREUS. Section 5 describes how to integrate the intermediate
notation NEREUS with the algebraic language CASL. Section 6 presents related
work. Finally, Section 7 concludes and discusses further work.</p>
    </sec>
    <sec id="sec-2">
      <title>2 A Megamodel for Model-Driven Development</title>
      <p>Reusable components that will be used in a MDA-based process have to be
described at different abstraction levels. To define reusable components we propose
a megamodel that integrates PIMs, PSMs and code with their respective
metamodels.</p>
      <p>We define MDA components at three different levels of abstraction: Platform
Independent Component Model (PICM), Platform Specific Component Model
(PSCM) and Implementation Component Model (ICM). The PICM includes a
UML/OCL metamodel that describes a family of all those PIMs that are instances of
the metamodel. A PIM is a model that contains no information of the platform that
is used to realize it.</p>
      <p>A PICM-metamodel is related to more than one PSCM-metamodel, each one
suited for different platforms. The PSCM metamodels are specializations of the
PICM-metamodel. The PSCM includes UML/OCL metamodels that are linked to
specific platforms and a family of PSM-models that are instances of the respective
PSCM-metamodel. Every one of them describes a family of instances
(PSMmodels). PSCM-metamodels correspond to ICM-metamodels (Fig.1).</p>
      <p>Metamodels are expressed in a combination of UML class diagrams and OCL.
The 4 main core metamodeling constructs are classes, binary associations, data
types and package. A metamodel is a description of all the concepts that can be used
in this level. For instance, the concepts of attribute, operations and associations are
part of the PIM metamodel, the concepts of table, column and foreign keys are part
of PSM-relational metamodel and the concepts of constructor and method are part of
the Java metamodel.</p>
      <p>A metamodeling transformation specifies a mapping between models built using
types specified in metamodels. In this case, the transformation is a specification of a
mechanism to convert the elements of a model conforming to a particular
metamodel into elements of another model that conforms to another (possibly the
same) metamodel.</p>
      <p>Fig. 1 shows the different correspondences that may be held between several
models and metamodels. For instance we use the megamodel to create specifications
of solutions for several design patterns. The transformation of UML models can be
supported by using design patterns that are described at three different abstraction
levels: the PICM includes a PIM metamodel whose instances are several pattern
solutions; the PSCM includes metamodels for particular platforms and, the ICM
level includes metamodels for different programming languages. Metamodels avoid
defining as many components as different pattern solutions can appear.</p>
      <p>A transformation rule in OCL is defined by its name, a source model element, a
target model element, a source condition, a target condition and a set of mapping
rules. The source condition is an invariant that states the conditions that must be
held in the source model for the transformation rule to be applied. The target
condition is an invariant that must be held in the target model. A transformation
between models is a sequence of OCL transformations. The transformation rules are
declarative and have several features: bidirectionality, traceability and incremental
consistency.</p>
      <p>Developing reusable components requires a high focus on software quality. MDA
can take advantages of formal languages and tools developed around them. The
traditional techniques for verification and validation are still essential to achieve
software quality. The formal specifications are of particular importance for
supporting testing of applications, for reasoning about correctness and robustness of
models and for generating code “automatically” from abstract models.</p>
      <p>
        In this direction we investigate how to formalize MDA megamodels. The
formalization implies to specify UML/OCL model/metamodels and
model/metamodel transformations. Considering that different tools could be used to
validate or verify models at different abstraction levels (PIMs, PSMs, or
implementations), we propose to formalize the megamodel in an intermediate
notation called NEREUS [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. We define one bridge between UML/OCL and
NEREUS. For a subsequent translation into formal languages, NEREUS may serve
as a source language. In the following section we describe the NEREUS notation.
co nform sTo
bridge U M L/O C L
M etamodel Transf
N ER EU S
M etamodel Transf
U M L/O C L
M odel Transf
N ER EU S
M odel Transf.
      </p>
      <p>U M L/O C L</p>
      <p>P IM
N E R E U S</p>
      <p>M O D E L
P IM
U M L /O C L</p>
      <p>M O D E L
P SM
N E R E U S</p>
      <p>M ET A M O D E L
P SM - J 2E E
U M L /O C L
M ET A M O D E L</p>
      <p>P SM -J2 E E
N E R E U S</p>
      <p>M O D E L
P SM -J2 E E
U M L /O C L
M O D E L</p>
      <p>N E R E U S</p>
      <p>M ET A M O D E L
U M L /O C L
M ET A M O D E L
C O D E</p>
      <p>P SM
N E R E U S</p>
      <p>M ET A M O D E L
P SM
U M L /O C L
M ET A M O D E L
P SM
N E R E U S</p>
      <p>M O D E L
P SM
U M L /O C L
M O D E L</p>
      <p>N E R E U S</p>
      <p>M ET A M O D E L
U M L /O C L
M ET A M O D E L</p>
      <p>C O D E</p>
    </sec>
    <sec id="sec-3">
      <title>3 NEREUS, a Metamodeling Notation</title>
      <p>To enable automatic transformation of a model, we need metamodels to be written
in a well-defined language. The formalization of metamodels can help us to address
MDA. We propose to specify UML static models, metamodels and
metametamodels in the intermediate notation NEREUS that is independent of any
specific formal language and can be translated into specific ones.</p>
      <p>NEREUS consists of several constructions to express classes, associations and
packages. It distinguishes clientship, inheritance and subtyping relations. The
IMPORTS, INHERITS and IS-SUBTYPE-OF clauses express clientship, inheritance
and subtyping relations respectively. Subtyping is like inheritance of behavior, while
inheritance relies on the module viewpoint of classes. A notion closely related with
subtyping is polymorphism, which satisfies the property that each object of a
subclass is at the same time an object of its superclasses.</p>
      <p>NEREUS distinguishes deferred and effective parts. The DEFERRED clause
declares new types or operations that are incompletely defined. The EFFECTIVE
clause either declares new types or operations that are completely defined, or
completes the definition of some inherited type or operation.</p>
      <p>Operations are declared in the FUNCTIONS clause that introduces the operation
signatures, the list of their arguments and result types. They can be declared as total
or partial. NEREUS allows us to specify operation signatures in an incomplete way.
NEREUS supports higher-order operations (a function f is higher-order if functional
sorts appear in a parameter sort or the result sort of f). In the context of OCL
Collection formalization, second-order operations are required. In NEREUS it is
possible to specify any of the three levels of visibility for operations: public,
protected and private. NEREUS provides the construction LET… IN. to limit the
scope of the declarations of auxiliary symbols by using local definitions.</p>
      <p>Several useful predefined types are offered in NEREUS, for example Collection,
Set, Sequence, Bag, Boolean, String, Nat and enumerated types.</p>
      <p>NEREUS provides a taxonomy of constructor types that classifies binary
associations according to kind (aggregation, composition, association, association
class, qualified association), degree (unary, binary), navigability (unidirectional,
bidirectional) and, connectivity (one-to-one, one-to-many, many-to-many). The
package is the mechanism provided by NEREUS for grouping classes and
associations and controlling its visibility.</p>
      <p>
        Fig. 2 depicts a simplified version of the UML metamodel and its NEREUS
specification. The metamodel includes the core modeling concepts of the UML class
diagrams, including classes, associations and packages. A detailed description of
NEREUS may be found at [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
    </sec>
    <sec id="sec-4">
      <title>4 A Bridge between UML and NEREUS</title>
      <p>We define a bridge between UML class diagrams together with OCL invariants and
pre- and postconditions into a NEREUS specification. The text of the NEREUS
specification is completed gradually. First, the signature and some axioms are
obtained by instantiating reusable schemes. Next, associations are transformed by
using the constructor type Association. Finally, OCL specifications are transformed
using a set of transformation rules. Then, a specification that reflects all the
information of UML diagram is constructed.</p>
      <p>Analyzing OCL specifications we can derive axioms that will be included in the
NEREUS specifications. Preconditions written in OCL are used to generate
preconditions in NEREUS. Postconditions and invariants allow us to generate
axioms in NEREUS. The transformation process of OCL specifications to NEREUS
is supported by a system of transformation rules.</p>
      <p>M o d e lE lem e n t
n a m e: S trin g
typ e 1
1
typ e
1
D a taT yp e
o w n e r
1</p>
      <p>An operation can be specified in OCL by means of pre- and post-conditions. Self
can be used in the expression to refer to the object on which the operation was called,
and the name result is the name of the returned object, if there is any. The names of
the parameter (parameter1,...) can also be used in the expression. To refer to the
value of a property at the start of the operation, one has to postfix the property name
with "@", followed by the keyword "pre". For example, the OCL specification for an
operation called AddPerson is translated as follows:</p>
      <p>OCL
AddPerson (p:Person)
pre:notmeetings-&gt;
meetings@pre-&gt;including (p)</p>
      <sec id="sec-4-1">
        <title>NEREUS</title>
        <p>
          AddPerson:
Participates (a) x Person (p) -&gt; Participates
pre : not includes (getMeetings (a), p)
Axioms a:Participates; p:Person;…
getMeetings(AddPerson (a,p)) =
including (getMeetings (a), p)
In this section we examine the relation between NEREUS and algebraic languages
using CASL (Common Algebraic Specification Language) as a common algebraic
language [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>context M eeting:: checkDate():Bool OCL
post: result = self.participants -&gt;collect(meetings ) -&gt;forA ll(m | m&lt;&gt; s elf and
m.isConfirmed implies (after(s elf.end,m.start) or after(m.end,s elf.s tart)))
context M eeting::is Confirmed ()
post: result= self.checkdate() and s elf.numConfirmedParticipants &gt; 2
context Pers on:: numMeeting ( ): Nat
post: result = self.meetings -&gt; s ize
context Pers on :: numConfirmedM eeting ( ) : Nat
post: result= s elf.meetings -&gt; s elect (is Confirmed) -&gt; s ize
OCL
v. operation(v’) v-&gt;operation (v’)
v.attribute
context A object.rolename
e.op
collection-&gt; op (v:Elem/ |boolean-expr-with-v)
op ::=select| forAll| reject| exists</p>
        <sec id="sec-4-1-1">
          <title>Rule 1</title>
          <p>T → Op (&lt;parameterLis t&gt;) : ReturnType
post: expr</p>
        </sec>
        <sec id="sec-4-1-2">
          <title>Rule 2</title>
          <p>T-&gt; forAll op (v:Type|bool-exprwith-v)
op::= exists|select |reject</p>
        </sec>
        <sec id="sec-4-1-3">
          <title>Rule 3</title>
          <p>T -&gt; collect ( v :type|v.property)</p>
        </sec>
        <sec id="sec-4-1-4">
          <title>NEREUS</title>
          <p>Operation (v,v’)
attribute (v )
getRolename (A, object)</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>RULES</title>
        <p>op (Translate NEREUS (e))</p>
        <sec id="sec-4-2-1">
          <title>LET FUNCTIO NS</title>
          <p>f: Elem -&gt; Boolean</p>
        </sec>
        <sec id="sec-4-2-2">
          <title>AXIO MS v : Elem</title>
          <p>f (v)= T ranslate NEREUS (boolean-expr-with-v )
IN op (collection, f)
END-LET
----------------------------------opv (collection, [f(v)]) concise notation
AXIOMS t : T, ...</p>
          <p>TranslateNEREUS (exp)
forAllv op (TranslateNEREUS (T),
TranslateNEREUS (bool-exprwith-v)
collectv (Translate NEREUS (T),
Translate NEREUS (v.property))</p>
        </sec>
        <sec id="sec-4-2-3">
          <title>CLAS S Pers on...</title>
        </sec>
        <sec id="sec-4-2-4">
          <title>AXIOMS p:Pers on; s,s ’: S tring; Pa: Participates</title>
          <p>numConfirmedMeetings (p) =
s ize(s electm (getM eetings (Pa,p), [is Confirmed (m)] ) Rule 1, 2
numM eetings (p) = s ize (getM eetings (Pa, p)) Reglas 1</p>
        </sec>
        <sec id="sec-4-2-5">
          <title>END-CLAS S</title>
          <p>CLAS S M eeting…</p>
        </sec>
        <sec id="sec-4-2-6">
          <title>AXIOMS m,m1:Meeting; s,s ’:S tring; d,d’,d1,d1’:Date; b,b’:Boolean;</title>
        </sec>
        <sec id="sec-4-2-7">
          <title>Pa:Participates</title>
          <p>is Confirmed (cancel(m)) = Fals e
is Confirmed (m)=checkDate(m) and NumConfirmedParticipants (m) &gt; 2 Rule 1
checkDate(m) = Rules 1, 2,3
forAllme (collectp (getParticipants (Pa,m), [getM eetings (Pa, p)]), [consistent (m,me)])
cons is tent(m,m1)= not (is Confirmed(m1)) or (end(m) &lt; s tart(m1)orend(m1)&lt; start(m))
NEREUS
NumConfirmedParticipants (m) = size (getParticipants (Pa,m))</p>
        </sec>
        <sec id="sec-4-2-8">
          <title>END-CLAS S</title>
          <p>Fig. 4. Integrating UML/OCL with NEREUS: A System of Transformation Rules</p>
          <p>CASL is an expressive and simple language based on a critical selection of
known constructs such as subsorts, partial functions, predicates, first-order logic,
and structured and architectural specifications.</p>
          <p>Architectural specifications impose structure on implementations, whereas
structured specifications only structure the text of specifications. CASL is supported
by tools and facilitates interoperability of prototyping and verification tools.</p>
          <p>
            We have defined the translation of NEREUS to CASL. A detailed description
may be found at [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ]. An interesting problem is how to translate associations.
NEREUS and UML follow similar structuring mechanisms of data abstraction and
data encapsulation. The algebraic languages do not follow these structuring
mechanisms in an UML style. In UML an association can be viewed as a local part
of an object. This interpretation can not be mapped to classical algebraic
specifications which do not admit cyclic import relations.
          </p>
          <p>We propose an algebraic specification that consider associations belonging to the
environment in which an actual instance of the class is embedded. Let Assoc be a
bi-directional association between two classes called A and B, the following steps
can be distinguished in the translation process:
Step1: Regroup the operations of classes A and B distinguishing operations local to
A, local to B and, local to A and B and Assoc.</p>
          <p>Step 2: Construct the specifications A’ and B’ from A and B where A’ and B’
include local operations to A and B respectively.</p>
          <p>Step 3: Construct specifications Collection[A’] and Collection[B’] by instantiating
reusable schemes.</p>
          <p>Step 4: Construct a specification Assoc (with Collection [A’] and Collection[B’]) by
instantiating reusable schemes in the component Association.</p>
          <p>Step 5: Construct the specification AssocA+B by extending Assoc with A’, B’ and
the operations local to A’, B’ and Assoc</p>
          <p>We exemplify these steps with the transformation of Person&amp;Meeting. Fig. 5.
depicts the relations among the specifications built in the different steps and, the
final specification in CASL.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>6 Related Work</title>
      <p>
        Several metamodeling approaches have been proposed to Model-Driven
development [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Currently a lot of research is performed in the
direction of how to express model transformations [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] propose an approach
which uses metamodeling patterns that capture the essence of mathematical
relations. The proposed technique is to adopt a pattern which models a
transformation relationship as a relation or collections of relations, and encode this
as an object model. In [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], it was defined an extension of a metamodeling language
to specify mappings between metamodels based on concepts presented in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
forall
select
collect
      </p>
      <sec id="sec-5-1">
        <title>PARTICIPATES</title>
      </sec>
      <sec id="sec-5-2">
        <title>SETPERSON</title>
      </sec>
      <sec id="sec-5-3">
        <title>SETMEETING</title>
        <p>PERSON
name
set-name</p>
        <p>
          MEETING
Fig. 5. Integrating NEREUS with CASL
[
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] compares and contrasts two approaches to model transformations: one is graph
transformation and the other is a relational approach. [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] proposes a taxonomy for
the classification of several existing and proposed model-to-model transformations
approaches.
        </p>
        <p>
          Currently, few tools provide limited support for MDA paradigm. Some of them
are AndroMDA, OptimalJ and ArcStyler, among others [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. The existing
MDAbased tools do not provide sophisticated transformation from PIM to PSMs.
        </p>
        <p>The following differences between our approach and some existing ones are
worth mentioning. There are UML formalizations based on different languages that
do not use an intermediate language. However, this extra step provides some
advantages. NEREUS is a notation that can be used to mediate between UML and
different formal languages. Any number of formal languages can be connected
without having to write transformation systems from OCL to different formal
languages. A formal specification clarifies the intended meaning of metamodels and
helps to validate PIM models. NEREUS can provide a neutral basis for transforming
PIM to PSMs. Also, intermediate specifications may be needed for refactoring and
for forward and reverse engineering purposes based on formal specifications.</p>
        <p>Although OCL is a textual language, OCL expressions rely on UML class
diagrams, i.e., the syntax context is determined graphically. OCL does also not have
the solid background of a classical formal method. Then, it is interesting to integrate
UML/OCL with formal languages. Our approach avoids defining transformation
systems as well as the formal languages being used. We define an only bridge
between UML/OCL and NEREUS by means of a transformational system consisting
of a small set of transformation rules that can be automated.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>7 Conclusions</title>
      <p>In this paper, we describe a uniform framework for Model Driven Development that
integrates UML/OCL specifications with formal languages.</p>
      <p>NEREUS would allow us to take advantage of all the existing theoretical
background on formal methods using different tools in different stages of MDD.
NEREUS could be used to validate initial models, whose quality will determine the
quality of the transformed models. Rather than requiring that designers manipulate
metamodels and formal specifications, we want to define foundations for MDA tools
that permit designers to directly manipulate UML/OCL models they have created.
However, meta-designers need to understand metamodels and metamodel
transformations.</p>
      <p>
        We are validating the megamodel through forward engineering, reverse
engineering, model refactoring and pattern applications. In [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] we describe how to
forward engineering UML static models to object-oriented code in a model driven
fashion. We have defined MDA components of standard design patterns. We foresee
to integrate our results in the existing UML CASE tools experimenting with
different platforms such as .NET and J2EE.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Abmann</surname>
            ,
            <given-names>U</given-names>
          </string-name>
          . (ed.)
          <source>: Proc. of Model-Driven Architecture: Foundations and Applications</source>
          , Linkoping University, Switzerland (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Akehurst</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kent</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>A: Relational Approach to Defining Transformations in a Metamodel</article-title>
          . In: Jezequel,
          <string-name>
            <given-names>J. M.</given-names>
            ,
            <surname>Hussmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Cook</surname>
          </string-name>
          , S. (eds):
          <source>Lecture Notes in Computer Science</source>
          , Vol
          <volume>2460</volume>
          , Springer-Verlag, Berlin Heidelberg New York (
          <year>2002</year>
          )
          <fpage>243</fpage>
          -
          <lpage>258</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Atkinson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuhne</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>The Role of Metamodeling in MDA</article-title>
          . In: Bezivin,
          <string-name>
            <surname>J.</surname>
          </string-name>
          , France, R. (eds):
          <source>Proc. UML</source>
          '2002 Workshop in Software Model Engineering (WiSME
          <year>2002</year>
          ).
          <source>Technical Report</source>
          , University of Nantes, www.metamodel.com/wisme-2002 (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bezivin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Valduriez</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>On the need for Megamodels</article-title>
          . In: Bettin J. et. al (eds):
          <source>Proc. Best Practices for Model-Driven Software Development (MDSD</source>
          <year>2004</year>
          ),
          <source>OOSPLA</source>
          <year>2004</year>
          , Vancouver, Canada (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bidoit</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mosses</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>CASL User Manual- Introduction to Using the Common Algebraic Specification Language</article-title>
          .
          <source>Lecture Notes in Computer Science</source>
          , Vol.
          <volume>2900</volume>
          , Springer-Verlag, Berlin Heidelberg New York (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Büttner</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Realizing UML Metamodel Transformations with AGG</article-title>
          . In: Heckel,
          <string-name>
            <surname>R</surname>
          </string-name>
          . (ed):
          <source>Electronic Notes in Theoretical Computer Science</source>
          , Vol
          <volume>109</volume>
          (
          <year>2004</year>
          )
          <fpage>31</fpage>
          -
          <lpage>42</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Caplat</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sourrouille</surname>
          </string-name>
          , J.:
          <article-title>Model Mapping in MDA</article-title>
          . In: Bezivin,
          <string-name>
            <surname>J</surname>
          </string-name>
          . France, R. (eds):
          <source>Proc. UML</source>
          '2002 Workshop in Software Model Engineering (WiSME
          <year>2002</year>
          ), http://www.metamodel.com/wisme-2002 (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helsen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Classification of Model Transformation Approaches</article-title>
          . In: Bettin,
          <string-name>
            <surname>J</surname>
          </string-name>
          et al.
          <source>(eds) Proc. OOSPSLA'03 Workshop on Generative Techniques in the Context of Model-Driven Architecture, www.oopsla.acm.org/oopsla2003</source>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Evans</surname>
            , a. Sammut,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Willans</surname>
          </string-name>
          , S. (eds):
          <source>Metamodeling for MDA Workshop</source>
          , York, England (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Favre</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A Formal Mapping between UML Static Models and Algebraic Specifications</article-title>
          . In: Evans,
          <string-name>
            <given-names>A</given-names>
            . France, R.,
            <surname>Moreira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <surname>B</surname>
          </string-name>
          . (eds):
          <article-title>Practical UMLBased Rigorous Development Methods-Countering or Integrating the eXtremist, Lecture Notes in Informatics (P 7) SEW, GI Edition</article-title>
          ,
          <string-name>
            <surname>Alemania</surname>
          </string-name>
          (
          <year>2001</year>
          )
          <fpage>113</fpage>
          -
          <lpage>127</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Favre</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Foundations for MDA-based Forward Engineering</article-title>
          .
          <source>Journal of Object Technology (JOT)</source>
          , Vol
          <volume>4</volume>
          , no 1 (
          <year>2005</year>
          )
          <fpage>129</fpage>
          -
          <lpage>154</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Favre</surname>
            ,
            <given-names>L:</given-names>
          </string-name>
          <article-title>The NEREUS Language</article-title>
          .
          <source>Technical Report, INTIA; Universidad Nacional del Centro</source>
          ,
          <source>Argentina</source>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          et. al. (ed.):
          <source>Proceedings WISME</source>
          <year>2004</year>
          , Workshop in Software Model Engineering, Lisboa, Portugal (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Haussmann</surname>
          </string-name>
          , J.:
          <article-title>Relations-Relating metamodels</article-title>
          . In: Evans,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Sammut</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Williams</surname>
          </string-name>
          ,
          <string-name>
            <surname>J</surname>
          </string-name>
          . (eds):
          <source>Proc. Metamodeling for MDA. First International Workshop</source>
          , York, UK (
          <year>2003</year>
          )
          <fpage>147</fpage>
          -
          <lpage>161</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Kuster</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sendall</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wahler</surname>
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Comparing Two Model Transformation Approaches</article-title>
          . In: Bezivin,
          <string-name>
            <surname>J.</surname>
          </string-name>
          et. al (eds):
          <source>Proc. OCL&amp;MDE'</source>
          <year>2004</year>
          ,
          <article-title>OCL</article-title>
          and Model Driven Engineering Workshop , Portugal (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>MDA</surname>
          </string-name>
          .
          <article-title>The Model Driven Architecture, OMG</article-title>
          . www.omg.org/mda (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>OCL</given-names>
            <surname>Specification</surname>
          </string-name>
          .
          <article-title>Versión 2.0</article-title>
          . Documento ptc/
          <fpage>03</fpage>
          -03-14. www.omg.org (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. OMG. Object Management Group Documents. www.omg.org (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>UML</given-names>
            <surname>Tools</surname>
          </string-name>
          . In www.objectsbydesign.com/tools/ (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>