=Paper= {{Paper |id=Vol-154/paper-9 |storemode=property |title=Automated Model Transformation in MDA |pdfUrl=https://ceur-ws.org/Vol-154/kuznetsov.pdf |volume=Vol-154 }} ==Automated Model Transformation in MDA== https://ceur-ws.org/Vol-154/kuznetsov.pdf
                Automated Model Transformation in MDA

                                             © Mikhail Kuznetsov
                          Computational Mathematics and Cybernetics Faculty,
                             Moscow M.V.Lomonosov State University
                                        mikle.kuz@mtu-net.ru
                                    Ph.D. Advisor S.D. Kuznetsov

                      Abstract                             First during development a PIM is created. PIM is a
                                                           model of a system that contains its business-logic,
    Model Driven Architecture is a new and                 usecases and view of a system from end user’s point of
    promising approach to software development.            view without details of its actual implementation. The
    But its spread is hindered by the fact that one        fact that PIM is not bind to any platform or technology
    of its parts - automated transformation of             is most innovative and most important. When using
    software models – is not sufficiently                  MDA it is recommended to develop platform-
    developed. In this paper a language is                 independent model with a relatively high level of
    presented that can be used to define such              details, up to using a high-level platform-independent
    transformations and a tool to automatically            programming language to code system’s functionality
    execute them.                                          and creating an executable prototype.
                                                               Once PIM has sufficient details, a transition to
1 Introduction                                             Platform-Specific Model is performed. This model
                                                           describes not only user-level system functionality, but
Programmers use many different middleware platforms        also details of implementation of the system on the
and technologies, and in the future their number will      middleware platform chosen for a current project. More
only increase because new technologies are being
                                                           details are being added to the model by developers, and
developed constantly but old ones become obsolete very     necessary changes are performed, until the model is
slowly. All attempts to create a universal platform that   ready to be passed to the stage of code generation. Just
could replace all existing ones resulted only in
                                                           as in a common development process, a code can be
increased variety of technologies. The problem of          partially generated automatically from the model, and
choosing a platform for a particular project becomes       then finalized manually and compiled.
more and more important, as well as problems of                Of course, actual development process is not so
interaction and integration of heterogeneous systems       straightforward. It is nearly impossible for a complex
and migration of existing systems to a new platform
                                                           project to make a platform-independent model that
when old platform becomes outdated and no longer           would not require any modifications on later stages of
satisfies customer’s needs. The solution may be usage      development. During development of platform-specific
of a new methodology of software development.
                                                           model and even of code changes can be made in any
    Object Management Group (OMG) offers a new             higher-level models. It does not contradict MDA
approach to software development called Model Driven       development process, but when making such changes
Architecture (MDA) [9]. MDA offers several
                                                           one should keep correspondence between models: a
advantages compared to existing methodologies:             change to one model should be properly reflected in all
simplification of development of multi-platform            others. So, when using MDA three models of the
systems, ease of switching of a middleware platform,
                                                           systems are being developed simultaneously: PIM,
increased speed of development and quality of products     PSM and code, each reflecting its own level of
and much more. But all of it is possible only when         abstraction.
development tools will support the MDA technology
                                                               The idea that is placed in the core of MDA is
and help to fully realize its potential. Unfortunately     independent from modeling language and tools. But the
currently most of commercial products, even those that     developer of technology, OMG consortium, assumes
claim to support MDA, do not offer proper tools and
                                                           that modeling will be done with UML (Unified
technologies, thus efficiency of MDA in real projects is   Modeling Language) [6]. Last changes and additions to
limited.                                                   UML standard made this language much more
    MDA is based on concepts of Platform-Independent       convenient for use with MDA. UML Action Semantics
and Platform-Specific Models (PIMs and PSMs) [12].         [13] allows to describe system’s functionality on
                                                           platform-independent level, and UML Profiles make
Proceedings of the Spring Young Researcher's               creation of PSMs for specific middleware platforms
Colloquium on Database and Information Systems             easier.
SYRCoDIS, St.-Petersburg, Russia, 2005
    Separation of platform-independent and platform-        model using a pre-defined transformation definition
specific models offers major benefits for developers.       (that contains formal description of details of a specific
First of all, the process of transition between             technology or platform) [8]. This paper is dedicated to
middleware platforms and technologies becomes easier,       development of a language and tool for defining and
because PIM can be reused and only PSM has to be            executing such transformations.
created anew. A risk of early development mistakes              There are several requirements that a transformation
decreases, because it is much easier to find and correct    language has to satisfy to be efficient when used in
such mistakes on relatively simple model that is fully      MDA:
based on customer’s requirements, then on sophisticated     - Formalism          of    transformation      description.
low-level model that contains huge number of                     Transformation should be defined in a formal
implementation-specific details. Separation of the               language that has a good grammatical model, so
models is also useful for fast creation of documentation,        that the transformation tool could interpret this
integration, creation of heterogeneous systems and so            language and automatically execute it.
on.                                                         - Universality. Transformation language should
    But the main advantage of MDA is its ability to              permit creation of a wide range of transformations
increase development speed, despite the fact that two            that can cover a variety of middleware platform,
models are being made instead of one. This is achieved           including those that will appear in the future. Then
by using automated generation of platform-specific               it will always be possible to pick a standard
model by platform-independent one. The process of                transformation definition and transform a PIM of a
transition from PIM to PSM that is based on a certain            project to a modern platform, even if the PIM was
technological platform is highly formalized. UML                 made 10 years ago and the platform was developed
Profiles that are developed for all popular middleware           recently. It is desirable that the language contains
platforms contain recommendations about mapping                  means for model parameterisation and tuning, so
various UML elements to forms that are specific to a             that a single transformation definition can be used
chosen technology – but those are recommendations for            in many different projects.
a developer and not instructions for automated              - Integrity preservation. During development all
execution. With a bit more efforts and more                      models can be changed, even after transition from
formalization it is possible to convert loose form of            PIM to PSM, meaning that there should be a way to
Profiles into exact instructions. Then it is no longer           automatically      keep      conformity      between
needed to manually create PSMs, and development                  transformed models that has been achieved during
speed will increase significantly, because many details          transformation. This means that information should
required by a certain technology will be added to the            be kept about a course of transformation and about
model automatically. Besides, the number of mistakes             mapping that was established between different
that are inevitable with manual modeling will decrease           elements of the models. Then UML editing tool can
as well. Description of automatic transition to a PSM            use this information to automatically map changes
can be made once and thoroughly tested, and then used            done to one model to another one, or at least to
in all projects that use this technology. So, when using         notify a programmer what elements are no longer
MDA and automatic transition to platform-specific                consistent.
model, the development process consists of the              - Intelligibility for a human reader. One
following stages:                                                transformation definition can be used in many
- creation of the task, usecases, requirements and               projects, but all projects are different. This means
     other initial documents;                                    that it should be relatively easy to understand and
- creation of platform-independent model;                        modify it to suit specific needs. The transformation
- automatic transition from PIM to platform-specific             should be clear not only to the person who wrote it,
     model, using a standard transformation definition           but also to other people who may have to alter it. It
     developed earlier (and probably by other company)           is also desirable that the transformation is well-
     for a chosen middleware platform and/or                     structured, so that it is easier to understand what
     implementation technologies;                                effect a particular change will have on
- manual modification of both PIM and PSM,                       transformation globally.
     addition of various details;                           - Interconnected transformations. It is possible that
- automated code generation;                                     during MDA-based development multiple models
- manual coding of parts that could not be generated             of one type exist in a project. In particular, if the
     automatically, compilation.                                 project uses multiple platforms, a separate PSM is
    Transition from PSM to code is fairly well                   generated for each of them. Transformation
developed. Before MDA it was called “code                        language should be able to operate with more then
generation” and to a certain degree can be performed by          one source and generated model, it should be
almost any modeling tool for majority of programming             possible to transform multiple models within a
languages and technologies. But automated transition to          single transformation definition. It is much more
PSM is a new concept. Since PIM and PSM are both                 convenient than usage of a separate transformation
models written on UML (at least with classic MDA                 for each pair of models, since such approach allows
approach), transition is just a transformation of a UML-
    to easily track relation between model elements and        to define transformations (not UML model
    generate any necessary mediators and bridges.              transformations, but transformations in general). In
                                                               particular CWM (Common Warehouse Metamodel)
2 Various approaches to model                                  standard has such functionality [2]. The idea to use
transformation                                                 UML language to define UML transformations, just as
                                                               UML defines it’s own syntax, looks promising, but not
There are multiple approaches to definition and                very practical. Unfortunately UML is just a modeling
execution of transformation of UML models [3]. The             language, it can be used to show the fact that there is a
simplest solution is to imperatively define the procedure      mapping between certain model elements, but not to
of transformation using any algorithmic language. A            define details of such a mapping in general with enough
UML modeling toolset may contain modules that                  precision to allow automated execution. Another
contain predefined transformations that can later be           standard from UML family – QVT (Query, View,
used when necessary. Unfortunately such an approach            Transformation) [7] – is meant to fill this niche and
is badly suited for MDA-style development. First of all,       looks much more promising for use in MDA.
users cannot add their own transformation definitions or       Unfortunately, currently this standard is in early stages
modify those provided by creators of a toolset. Also           of development, and it is not possible to say when it
each toolset will handle transformations differently           will be ready or what exactly it will contain. The
even for the same middleware platforms, meaning that           standard should do several big tasks at the same time,
models created by different toolsets will likely be            and is mostly targeted not on practical use but on
incompatible with each other. Instead of being restricted      development         of      theoretical     concept       of
by choice of a middleware platform, a programmer will          metametamodeling as part of MOF (Meta Object
be restricted by choice of a modeling toolset. Finally,        Facility, the standard for representation of metamodels)
such an approach means that for each toolset a full            [11]. It is likely that this standard will be inefficient in
number of transformations should be developed for              practice, and will not satisfy requirements of MDA.
each middleware technology. This is a huge work                    One more solution is development of a specialized
compared to using a single set of transformation created       high-level language for defining model transformations
and thoroughly tested by a third party.                        and a tool for execution of such a language that would
    Another approach to transformation is usage of             be efficient for application in MDA. Probably such a
well-developed concepts and ideas from other areas of          tool will be more convenient then an adaptation of a
science. In particular, it is possible to present a UML        certain generic standard. Below we’ll review one of
model as a graph and use graph transformation                  such languages that is developed by the author.
technologies. The main disadvantage of this approach is
the fact that it uses its own terms and definitions that are   3 Fundamental scheme of the
not related to modeling. User of such transformation
                                                               transformation tool
tool will have to know not only UML modeling, but
also graph theory. And every time he wants to make a           Transformation tool can be a separate program or a part
change in transformation definition he will have to            of a larger software development toolkit. During MDA
make mental transition to graphs, and then back to             development it is used for partial automation of
UML.                                                           generation of a platform-specific model [4]. It receives
    Another solution is to use transformations of XML          the following input data:
and XMI standard. XMI [10] (XML Metadata                       - one or more source models;
Interchange) is a standard that allows to present UML          - metamodel for each model that takes part in the
as an XML document, its main purpose is storage of                  transformation;
UML models and exchange of models between different            - transformation        definition     on    a    special
tools. There are several reliable technologies for XML              transformation definition language; the definition
transformation, such as XSLT [14] and XQuery [1]. A                 depends on the metamodels and on number of
UML model can be converted to XML using XMI, then                   models that participate in the transformation, but is
this XML document can be transformed and converted                  independent from specific models.
back to UML. But such double conversion makes the                  The output data is:
transformation definition unclear for a human reader.          - a set of source models with modifications added
Also since we need to convert transformed XML                       during transformation;
document back to UML, it has to comply with XMI. On            - one or more (depending on transformation
practice this means that nearly 90% of definition of                definition, possibly zero) newly generated models
XML transformation is targeted not at actual model                  that were created during a transformation; each
transformation, but at ensuring that the result is a valid          generated model has to comply to one of the
XMI representation of a model. Of course it is very hard            metamodels supplied as input data;
to make and understand such transformations. Even a            - information about dependencies and mappings
relatively simple model transformation is defined by a              between elements of models that was established
very large and bulky XML transformation.                            during transformation; it is needed to preserve
    UML language is considered to be a universal                    conformity of models after the transformation.
modeling tool, and of course it contains its own means
    For the transformation tool there is no major               Computation of a navigation expression consists of
difference between source and generated models: both        a sequential transition from one model element to
can be modified during transformation, the difference is    another using specified directions, starting from the
only that generated model starts as empty model. So in      element that the base variable points at. If a cardinality
the future we’ll talk about set of models meaning source    of a direction is greater then one, all corresponding
and generated models combined.                              model elements are considered to be the result. This
                                                            means that the result of execution of a navigation
4 Transformation definition language                        expression is a list of all model elements that can be
                                                            reached from the element indicated by base variable by
Transformation definition consists of one or more           the specified set of directions. Navigation expression
modules. Each module has a unique name and consists         has the following properties:
of a set of transformation rules. Header of the module      - Type: metamodel element that corresponds to
can also specify the sequence of execution of rules in           elements contained in the result. Since navigation is
the module; this option will be explained later. Below           performed via metamodel, all elements of the result
we can see a part of formal definition of the language           will always have the same type. Type can be
using extended Backus-Naur form (eBNF).                          determined statically, it depends on the metamodel
                                                                 but not to the actual model.
   transformation::= *;                              - Cardinality: maximum number of elements in the
   stage::= stage  []                            result. Cardinality is determined statically.
                             { * };    - Value: a set of elements that were received as a
   sequence::= [reversed]                                        result during computation of the expression. Value
         (linear | loop | rollback | rulebyrule);                of an expression is calculated during its execution
                                                                 at an actual model.
   Each rule has a unique (in the scope of the module)          Navigation expression can begin with any local or
name and consists of select section that defines when       global variable declared earlier. Local variable is a
the rule can be applied, and generation section, that       variable that is declared in one of operators of the same
specifies actions to execute when applying the rule.        rule. Global variables are names of models that
                                                            participate in the transformation. Obviosly navigation
   transformation_rule::= rule                        expression of the first select operator of a rule always
         {   };           begins with a global variable, since no local variables
                                                            are initialized yet.
    Select section contains a sequence of selection             Generation section is a sequence of operators that
operators. Each operator defines a new variable that is     modify models. Create operator allows to add a new
called “selection variable”. The name of this variable      model element where a set of elements is possible
should be unique in the scope of the current rule, and      (where multiplicity of a corresponding metamodel
domain is a set of elements of a model specified by         association is greater then one). Navigation expression
navigation expression. Besides, select section can          in this operator should point at the set, and its type
contain qualifying conditions - logical expressions that    determines the type of created element. Delete operator
can contain selection variables declared by operators       excludes a model element from a set. Modification
that stand earlier in the rule.                             operator allows changing value of element’s attribute.
                                                            Two more operators allow adding existing element to a
   select_section::= (|)*;     set of elements or removing it from a set without
   select_operator::=forall                           deleting it from the model; those operators are
                   from ;                   necessary if metamodel contains loops or if the same
   constraint::= where ;                         element is accessible via multiple associations.

    Navigation expression is a sequence of directions          generate_section::=(
that begins with a name of an existing variable (we’ll                |
call it a base variable of the expression), symbol ‘/’ is             |
used as a separator. Direction is a name of association               |
on a metamodel that corresponds to the model that is                  |
being transformed (if more then one model participates                )*;
in the transformation, the metamodel can be determined         create_operator::=make 
by a type of the base variable). Cardinality of a                                     in ; ;
direction is multiplicity of the corresponding                 update_operator::=  =
metamodel association.                                                                        ; ;
                                                               delete_operator::= delete ; ;
   nav_expression::=                                     include_operator::=include 
                iteration_pair(/, );                                   in ; ;
                                                               exclude_operator::=exclude 
                                                                                      in ; ;
                                                              keep it in mind when defining and executing a
                                                              transformation.
5 Execution of a transformation
                                                              6 Transformation bond and its usage in
Once a transformation tool receives a source model (or
models) and transformation definition, as well as             transformation definition
description of used metamodels, it can execute the            Every time a rule is applied a special data structure
transformation. It consists of a sequential execution of      called ‘transformation bond’ is created in addition to
modules from the definition. Execution of a module is         any actions contained in the generation section. A name
sequential repetition of two steps: finding a rule that can   of this structure is the same as rule’s name, and its
be applied and applying this rule.                            attributes have the same names and types as rule’s local
    Application of a rule is determined by its select         variables. Values of those attributes are equal to values
section. Each operator of that section declares a new         of corresponding variables calculated during application
variable and defines a set of its possible values. The rule   of the rule.
can be applied to a set of model elements, where each             Transformation bonds are stored during entire
element is in the appropriate value set, and where all        process of a transformation, and possibly even after the
conditions of the select section are true. This means that    transformation is finished. They contain information
if a select section has three selection operators and no      about a course of the transformation, about application
conditions, and the operators define variables v1,v2 and      of any rule and about relations between model elements
v3 that can take on N1,N2 and N3 different values, then       established by the transformation. This information can
the rule can be applied to N1*N2*N3 different value           be used to maintain consistency between models in the
sets; if the rule has any conditions then it can be applied   process of transformation and after it. Besides,
only to those value sets where all conditions are true. A     transformation bonds may be used by a transformation
rule can be applied only to the same value set only           tool so that it can warrant that any rule is applied only
once.                                                         once to any set of values of selection variables.
    Application of a rule to a value set is execution of          It is possible to use transformation bonds explicitly
all operators in the generation section.                      in the transformation definition to establish
    The order of application of rules is determined by a      dependencies between rules. Just as navigation
special parameter in the module’s header. If its value is     expressions are used to select elements from models,
‘linear’ then rules are applied sequentially from first in    they can be used to select bonds created by rules that
module’s definition to the last; search for the next rule     were applied before the current rule. Such special
to apply starts from the last applied rule. The module is     navigation expressions begin not with a local variable
considered to be finished once the last rule in the           or a name of a model, but with a name of a
module is executed for all possible value sets. If the        transformation module, followed by a name of a rule
value of the parameter is ‘loop’, the transformation          and then a name of a variable in that rule. Since any rule
works in the same way, but upon reaching the last rule        can be applied more then one time during a
the search for applicable rules continues from the first      transformation, creating more then one instance of a
rule. The module is finished if no more rules can be          corresponding bond, cardinality of such navigation
applied. If the value of  parameter is              expression is always ‘many’. Just as with an ordinary
‘rollback’, then after each application of a rule the         navigation expression, it returns a set of model elements
search starts from the first rule in the module; the          as a result – a set of elements that were values of a
transformation is over if no more rules can be applied.       specified variable in all applications of a specified rule.
If the value is ‘rulebyrule’, then search is also
performed from the first rule in the module, but once an         ::=/
applicable rule Is found it is applied to all possible                        /;
value sets – and only then the search starts anew from
the top. All values of parameters mentioned above can             Instead of the name of a module a keyword ‘rules’
also be used with a keyword ‘reversed’, meaning that          may be used that is equal to the name of a current
the order of rules in the module is reversed and all          module.
searches are performed from the last element from                 Explicit use of transformation bonds in
module definition to the first. If no value of      transformation definition gives a powerful tool for a
parameter is specified, it is considered to be ‘rulebyrule’   programmer. It allows to define very complex rules in a
by default, since it allows fastest execution of the          short and easy to understand way.
transformation. Transformation is over once the last
module is finished.                                           7 Rule extension and templates
    It should be noted that it is not possible to warrant
that a transformation will ever be finished for any           It is possible to define a new rule as an extension of
model. In some transformations infinite loops may             existing rule. To do so one has to write a name of the
appear, especially when using ‘create element’ operator.      rule that is being extended after the name of extending
Users of the transformation definition language should        rule in that rule’s header. It is possible to extend
                                                              extensions and to make several extensions of the same
base rule, creating multi-layer hierarchy. Operators in                                                                        Association
                                                                                           Model
the extending rule can use all variables from base rule                                 name : Name 1
                                                                                                      +associations       name : Name
                                                                                                                          stereotype : Stereotype
along with their own variables (select operators can use                                                         0..n
                                                                                                                          Association_type
                                                                                              1
variables only from select section and not from                                         +classes0..n                                   1
                                                                                                                             +base
generation section).                                                                      Class
                                                                                  name : Name                                +ends     2
                                                                                  stereotype : Stereotype+class
                                                                                                                             AssociationEnd
   transformation_rule::= rule  [ : ] {                                               1
                                                                                                          1
                                                                                                                  0..n    name : Name
                                                                                         1
          ;  };                                                         +associations   cardinality : Cardinality 1
                                                                                                                          Association_end_type
                                                                          +attributes             +operations             visibility : Visibility
                                                                                        0..n        0..n
    Extension rule is applicable to a certain value set if:                   Attribute          Operation                                              1
                                                                                                              1
- base rule is applicable to this value set (actually for                   name : Name         name : Name       0..n    Parameter         +otherEnd
                                                                            type : Type         type : Type               name : Name
     its corresponding subset);                                                                                           type : Type
- value set satisfies the select section of extending                                                    +parameters

     rule;                                                           Simplified metamodel of UML class diagram.
- the extending rule was not applied to this value set
     before.                                                     block example_transform {
    Execution of an extending rule is execution of its
generation section. But unlike an ordinary rule it does          rule class_mapping {
not create a new transformation bond; instead it extends         forall src from source/classes
the bond created by application of the base rule with            make trgt in target/classes;
variables declared in the extension. It works similarly to       trgt/name=src/name;
inheritance in common programming languages: old                 }
attributes remain intact and new ones are added. Such
bonds will be shown as results of calculation of                  This is module’s header and its first rule. The rule
navigation expressions that scan for applications of the      ‘class_mapping’ for each class of source model creates
base rule as well as applications of extending rule.          a class in the target model with the same name. Each
    The concept of rule extension allows to structure the     application of this rule creates an instance of a
set of rules as well as the set of transformation bonds       transformation bond with name ‘class_mapping’ and
created by those rules. It allows easier development,         attributes ‘src’ and ‘trgt’ that point to a class in source
modification     and     understanding      of    complex     model and newly generated class correspondingly.
transformations.
    Template is a special rule that begins with a key            rule private_to_private {
word ‘abstract’. Such rule is never applicable, no matter        forall a from source/classes
the select section. But it can be used as a base rule to         forall b from a/attributes
create extensions that can be applied as normal rules. A         where b/visibility="private"
template can extend another template but not an                  forall c from target/classes
ordinary rule. Just as normal extensions, templates              forall d from rules/class_mapping
allow to structure transformation bonds and then use             where (d.src=a) and (d.trg=c)
navigation expressions that query those bonds to define          make e in c/attributes;
complex transformations.                                         e/name=b/name;
                                                                 e/type=b/type;
8 Example of transformation definition                           e/visibility="private";}
A simple transformation module with several rules is
shown below. This transformation definition is meant to           This rule copies private attributes from source to
be used for transformation of a pair of models (‘source’      target model. The select section of this rule uses
and ‘target’), both of which use UML class diagram            transformation bond created by application of previous
metamodel. First model is a source data, and second is        rule. Because of this bond an attribute is copied exactly
generated during the transformation. A simplified             to the class that is generated by the class that contains
metamodel of UML class diagram used in this                   this attribute, without the bond we would not know
transformation definition is shown on the scheme:             what class of target model to choose.

                                                                 rule public_to_private {
                                                                 forall a from source/classes
                                                                 forall b from a/attributes
                                                                 where b/visibility="public"
                                                                 forall c from target/classes
                                                                 forall d from rules/class_mapping
                                                                 where (d.src=a) and (d.trgt=c)
                                                                 make e in c/operations; // "get_elt()"
                                                                 e/name="get_"+b/name;
                                                                 e/type=b/type;
   e/visibility="public";                                       c/base=assoc;
   make f in c/operations; // "set_elt(type)"                   }
   f/name="set_"+b/name;                                        } //example_transform
   f/type="void";
   f/visibility="public";                                       The last brace marks an end of the module
   make g in f/parameters;                                   “example_transform”.
   g/name=make_unique_name(b/name);
   g/type=b/type;                                            9 Conclusion.
   make h in c/attributes; // "private elt"
   h/name=b/name;                                                MDA technology has a potential to become a new
   h/type=b/type;                                            stage in evolution of software development toolkits and
   h/visibility="private";                                   methods. But it is possible only if tools are created that
   }                                                         are specially developed to support this technology and
                                                             utilize its full potential. Existing tools that claim to
    This rule maps public attributes to private and          support MDA are mostly minor modification of old
creates corresponding ‘get’ and ‘set’ pairs of operations.   tools that do not provide necessary functionality. One of
A function “make_unique_name” that is used in this           the main problems that slow down appearance of new
rule is a built-in function with a relatively simple         generation of tools is automated model transformation.
functionality: it returns a string-name that is warranted    Existing approaches from other areas of mathematics
to be unique in the scope of a model. Exact                  and informatics are inefficient for practical tasks of
implementation of this function may differ in different      MDA-based development. That’s why development of a
transformation tools.                                        new system and language is important.
                                                                 This work offers a transformation definition
    abstract rule all_inherited {                            language that is mostly meant to be used for automated
    forall inherit_trgt from source/classes                  transformation of UML models. During development of
    forall inherit_src from source/classes;                  this language a special attention was paid to make it
    }                                                        suitable for MDA tasks, and to make it easier to
    rule directly_inherited:all_inherited {                  understand for a human. A prototype tool is being
    forall assoc from inherit_trgt/associations              developed that supports this language and executes
    where ((assoc/stereotype=”generalization”) and           model transformations.
     (assoc/otherend=inherit_src))
    }                                                        References:
    rule indirectly_inherited:all_inherited {
                                                             [1] D. Chamberlin. XQuery: An XML query language.
    forall r1 from rules/directly_inherited
                                                                 IBM systems journal, no 4, 2002.
    where r1/inherit_trgt=inherit_trgt
                                                             [2] Common Warehouse Metamodel (CWM)
    forall r from rules/all_inherited
                                                                 Specification. OMG Documents, Feb. 2001.
    where         ((r/inherit_trgt=r1/inherit_src) and
                                                                 http://www.omg.org/cgi-bin/apps/doc?formal/03-
(r/inherit_src=inherit_src))
                                                                 03-02.pdf
    }
                                                             [3] Krzysztof Czarnecki, Simon Helsen. Classification
                                                                 of Model Transformation Approaches. University
   This set of a template and two rules defines the
                                                                 of Waterloo, Canada, 2003.
concept of “indirect inheritance” (if by inheritance we
                                                             [4] Keith Duddy, Anna Gerber. Declarative
mean generalization association). The rules themselves
                                                                 Transformation for Object-Oriented Models.
do not modify the model, but they create transformation
                                                                 Transformation of Knowledge, Information, and
bonds that can be used by other rules. For example, here
                                                                 Data: Theory and Applications, 2003.
is a rule that generates a generalization association
                                                             [5] M. Kuznetsov. Model Driven Architecture and
between a class and all its direct and indirect ancestors:
                                                                 Transformation of UML Models. In SYRCoDIS,
                                                                 pages 82-86. May 2004.
   rule inheritance {
                                                             [6] Martin Flower. UML Distilled: A Brief Guide to
   forall a from rules/indirectly_inherited
                                                                 the Standard Object Modeling Language, Third
   make b in a/inherit_src/associations;
                                                                 Edition. Addison Wesley, 2003.
   b/cardinality=”1”;
                                                             [7] Tracy Gardner, Catherine Griffin A review of
   make c in a/inherit_trgt/associations;
                                                                 OMG MOF 2.0 Query / Views / Transformations
   c/cardinality=”1”;
                                                                 Submissions and Recommendations towards the
   c/stereotype=”generalization”;
                                                                 final Standard. http://www.omg.org/docs/ad/03-08-
   b/other_end=c;
                                                                 02.pdf
   c/other_end=b;
                                                             [8] Anna Gerber, Michael Lawley, Kerry Raymond,
   make assoc in target/associations;
                                                                 Jim Steel, Andrew Wood. Transformation: The
   include b in assoc/ends;
                                                                 Missing Link of MDA. Proceedings 1st
   include c in assoc/ends;
   b/base=assoc;
    International Conference on Graph Transformation
    (ICGT 2002), 2002.
[9] Anneke Kleppe, Jos Warmer, Wim Bast. MDA
    Explained. The Model Driven Architecture:
    Practice and Promise. Pearson Education, 2003.
[10] Jernej Kovse, Theo Härder. Generic XMI-Based
    UML Model Transformations. ZDNet UK
    Whitepapers, 2002.
[11] Meta-Object Facility (MOF) specification, version
    1.4 . OMG Documents, Apr. 2002.
    http://www.omg.org/cgi-bin/apps/doc?formal/02-
    04-03.pdf
[12] Joaquin Miller and Jishnu Mukerji(eds.). MDA
    Guide Version 1.0. OMG document, 2003.
    http://www.omg.org/mda/mda_files/MDA_Guide_
    Version1-0.pdf
[13] Daniel Varro, Andras Pataricza. UML Action
    Semantics For Model Transformation Systems.
    Periodica Polytechnica, no. 3-4, 2003.
[14] XSL Transformations (XSLT) v1.0. W3C
    Recommendation, Nov. 1999.
    http://www.w3.org/TR/xslt