<!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>Taming the Shrew - Resolving Structural Heterogeneities with Hierarchical CPNs∗</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>M. Wimmer</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>G. Kappel</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>A. Kusel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>W. Retschitzegger</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>J. Schoenboeck</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>W. Schwinger</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Johannes Kepler University Linz</institution>
          ,
          <country country="AT">Austria</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Vienna University of Technology</institution>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <fpage>353</fpage>
      <lpage>368</lpage>
      <abstract>
        <p>Model transformations play a key role in the vision of ModelDriven Engineering (MDE) whereby the overcoming of structural heterogeneities, being a result of applying different meta-modeling constructs for the same semantic concept, is a challenging, recurring problem, urgently demanding for reuse of transformations. In this respect, an approach is required which (i) abstracts from the concrete execution language allowing to focus on the resolution of structural heterogeneities, (ii) keeps the impedance mismatch between specification and execution low enabling seamless debuggability, and (iii) provides formal underpinnings enabling model checking. Therefore, we propose to specify model transformations by applying a set of abstract mapping operators (MOPs), each resolving a certain kind of structural heterogeneity. For specifying the operational semantics of the MOPs, we propose to use Transformation Nets (TNs), a DSL on top of Colored Petri Nets (CPNs), since it allows (i) to keep the impedance mismatch between specification and execution low and (ii) to analyze model transformations by evaluating behavioral properties of CPNs.</p>
      </abstract>
      <kwd-group>
        <kwd>Model Transformation Reuse</kwd>
        <kwd>Hierarchical CPNs</kwd>
        <kwd>Structural Heterogeneities</kwd>
        <kwd>Mapping</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        MDE is a current trend in software engineering where models are used as
firstclass artifacts throughout the software lifecycle [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], which are then
systematically transformed to concrete implementations. In this respect, model
transformations play a vital role, representing the key mechanism for vertical
transformations like the generation of code and horizontal transformations like model
exchange between different modeling tools, to mention just a few. In the
context of transformations between different metamodels and their corresponding
models, the overcoming of structural heterogeneities, being a result of applying
different meta-modeling constructs for the same semantic concept [
        <xref ref-type="bibr" rid="ref11 ref13">11, 13</xref>
        ] is a
challenging, recurring problem, urgently demanding for reuse of transformations.
      </p>
      <p>
        In this respect, reusable transformations should abstract from a concrete
transformation language, allowing to (preferably graphically) specify
transformations in an explicit specification view without having to struggle with the
intricacies of a certain transformation language. Secondly, for being able to
debug and comprehend resulting specifications, the impedance mismatch between
the specification view and the executable formalism needs to be minimized,
demanding for a debugging view which retains the structure of the specification
view, i.e., components used in the specification view should not get scattered in
the debugging view. Finally, since debugging can only provide limited evidence
of correctness by means of a set of test runs, the underlying executable formalism
for the execution view should provide means to enable model checking [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        We therefore propose to specify horizontal model transformations by means
of abstract mappings representing a set of reusable transformation components,
called mapping operators (MOPs), to resolve recurring structural heterogeneities.
These MOPs operate on different levels of granularity, i.e., we provide a set of
kernel MOPs representing the basic functionality needed for resolving structural
heterogeneities and a set of composite MOPs encapsulating several kernel MOPs,
thus enhancing scalability of our approach. In order to specify the operational
semantics of the MOPs, we propose to use TNs [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], a DSL on top of CPNs [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ],
since TNs allow to keep the impedance mismatch between specification view and
debugging view low by encapsulating the transformation logic of a single MOP
together with the metamodels and the models. Thereby debuggability and
comprehensibility are fostered, i.e., the ability of finding and reducing the number
of bugs. Moreover, the underlying CPNs allow to specify reusable components
in the form of modules, which can be nested in a hierarchical way, allowing to
accordingly represent composite MOPs. Therefore the main contribution of this
paper is to enable reuse also on the execution level, i.e., the Petri Net layer.
Finally, the formal underpinnings of CPNs allow the application of generally
accepted behavioral properties to analyze the transformation specification. The
whole framework is called TROPIC – TRansformations On Petri nets In Color.
      </p>
      <p>The remainder of this paper is structured as follows. Section 2 introduces a
motivating example, Section 3 concentrates on the specification of a
transformation and Section 4 deals with the debugging thereof. The subsequent Section
5 shows how TNs are represented in standard CPNs and how behavioral
properties are exploited to analyze the transformation specification. Lessons learned
are discussed in Section 6 and related work is surveyed in Section 7. Finally,
Section 8 concludes the paper with an outlook on future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivating Example</title>
      <p>Structural heterogeneities between different metamodels occur due to the fact
that semantically equivalent concepts can be expressed by different
metamodeling concepts, e.g., explicitly by classes or only by attributes. Fig. 1 shows an</p>
      <p>Source Target
properties 0..*</p>
      <p>Property
name : String
type : String
n:1
target 1 Class
name : String
references
0..*
Reference
name : String
upperBound : Int
lowerBound : Int</p>
      <p>1
opposite</p>
      <p>S1:ClassDiagram
references classes properties
references nCa1m:Cel=a‘sPserson‘ properties</p>
      <p>target target
l()es1doMM lunRopaw1pmoe:eReprrBpBe=ooofu‘suehinntureddesb=n=ac0n1ed‘ tnPyap1me:Pe=r=‘oS‘pftnrieanrmgt‘ey‘</p>
      <p>opposite
nuRpa2pm:eRerBe=of‘uewnrifdeen‘=c1e tnPyap2me:Pe=r=‘oS‘pltnrieanmrgt‘ey‘
lowerBound = 0
1:1
1:n
relationships
0..*
Relationship
name : String</p>
      <p>r2oles
example used throughout the rest of the paper which exhibits common structural
heterogeneities between metamodels, applying different modeling constructs to
represent relationships as can be found e.g., in Ecore3 or in Entity-Relationship
Models. The ClassDiagram shown on the left side of Fig. 1, only provides
unidirectional references, thus bidirectionality needs to be modeled by a pair of
opposite references. In contrast to that, the ERDiagram explicitly represents
bidirectionality, allowing to express relationships in more detail, e.g., using roles.</p>
      <p>In the following, the main correspondences between the ClassDiagram and
the ERDiagram are shortly described. On the level of classes, three main
correspondences can be recognized, namely 1:1 correspondences, 1:n correspondences
and n:1 correspondences, which are also indicated by dotted lines in Fig. 1. 1:1
correspondences can be found (i) between the root classes ClassDiagram and
ERDiagram as well as (ii) between Class and Entity. Regarding 1:n
correspondences, again two cases can be detected, namely (i) between the class Property
and the classes Attribute and Type and (ii) between the class Reference and
the classes Role and Cardinality. Although these are two occurrences of a 1:n</p>
      <sec id="sec-2-1">
        <title>3 http://www.eclipse.org/modeling/emf/</title>
        <p>correspondence, there is a slight difference between them, since in the first case
only for distinct values of the attribute Property.type, an instance of the class
Type should be generated. Finally, there is one occurrence of a n:1
correspondence, namely between the class Reference and the class Relationship. It is
classified as n:1 correspondence, since for every pair of References, that are
opposite to each other, a corresponding Relationship has to be established.
Considering attributes, only 1:1 correspondences occur, e.g., between Class.name
and Entity.name, whereas regarding references, 1:1 correspondences and 0:1
correspondences can be detected. Concerning the first category, one example
thereof arises between ClassDiagram.classes and ERDiagram.entities.
Regarding the latter category, e.g., the relationship ERDiagram.types exists in the
target without any corresponding counterpart in the source.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Specification View</title>
      <p>
        As mentioned before, the actual specification of a transformation problem should
abstract from a concrete transformation language allowing the transformation
designer to focus on the resolution of structural heterogeneities without having to
struggle with the intricacies of a certain transformation language. Therefore we
propose to specify model transformations by means of abstract mappings being
a declarative description of the transformation, as known from the area of data
engineering [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. For this we provide a library of composite MOPs [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. Thereby
we identified typical mapping situations being 1:1 copying, 1:n partitioning, n:1
merging, and 0:1 generating of objects, for which different MOPs are provided.
In this respect, reuse is leveraged as the proposed MOPs are generic in the sense
that they abstract from concrete metamodel types since they are typed by the
core concepts of current meta-modeling languages like Ecore or MOF (i.e., class,
attributes, references). To further structure the mapping process we propose to
specify mappings in two steps.
      </p>
      <p>In a first step, composite MOPs, describing mappings between classes are
applied, providing an abstract blackbox-view (cf. Fig. 2). Every composite MOP
consists of so-called kernel MOPs, thus the composite behavior is realized by
a set of basic building blocks. These kernel MOPs are responsible for resolving
structural heterogeneities and therefore they have to be able to map classes,
attributes, and references in all possible combinations and mapping cardinalities.
In this respect, MOPs are provided for copying exactly one object, value, or link
from source to target, respectively (denoted as C(lass)2C(lass),
A(ttribute)2A(ttribute), and R(eference)2R(eference)). Moreover, MOPs are needed for merging
objects, values, and links (denoted as C2nC, A2nA, and R2nR) resolving the
structural heterogeneity that concepts in the source metamodel are more fine-grained
than in the target metamodel. Finally, MOPs are needed for generating a target
element without an obvious source element (denoted as 02C, 02A, and 02R) to
resolve heterogeneities resulting from expressing the same modeling concept with
different meta-modeling concepts – a situation which often occurs in
metamodSource</p>
      <p>Mapping</p>
      <p>Target
eling practice.4 In a second sCtecpl, thC eC2CcoCmpositeclMCOPs, which solely describe a
mapping between classes at first, havTe to be refined to also map attributes and</p>
      <p>C
references in the so-called whatittre1box-Av2Aie wA by theattur1sAage of kernel MOPs (cf.
ex</p>
      <p>A A C
panded Copier (b) in Fig. 2).RFreuf1rthermoRreCR2,RkeRrnerelfM1ROPs can be used to assemble
new, user-defined composite MOPs.</p>
      <p>As a concrete syntax for MOPs wT e aCre using a subset of the UML 2
component diagram concepts enabling the specification of model transformations in
a plug &amp; play manner. With this formalism, every MOP is defined as a
dedicated component, representing a modular part of the transformation
specification which encapsulates an arbitrary complex structure and behavior, providing
well-defined interfaces. Every MOP has input ports with required interfaces (left
side of the component) as well as output ports with provided interfaces (right
side of the component), typed to classes (C), attributes (A), and relationships
(R) (cf. Copier (b) in Fig. 2). Since there are dependencies between MOPs,
e.g., a value can only be set after the owning object has been created, MOPs
dealing with the transformations of classes additionally offer a trace port (T)
at the bottom providing context information, indicating which target object has
been produced from which source object(s). This port can be used by
dependent MOPs to access context information via required context ports (T). In case
of MOPs dealing with the mapping of attributes the corresponding interface is
shown via one port on top, or in case of MOPs dealing with the mapping of
ref4 Please note, that although composite MOPs for 1:n partitioning are provided, no
additional kernel MOps are needed, since such situations can be simulated by n x 1:1
MOps.
erences via two ports, whereby the top port depicts the required source context
and the bottom port the required target context (cf. Copier (b) in Fig. 2).</p>
      <p>
        For solving the running example, several composite MOPs have been applied
as can be seen in Fig. 2. Table 1 presents an overview of the used composite
MOPs to solve the example as well as their composition of kernel MOPs. For a
detailed classification and description of all available kernel as well as composite
MOPs we refer to [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. To resolve the 1:1 correspondences between ClassDiagram
and ERDiagram as well as between Class and Entity in our example we
applied two Copiers since for every source object a corresponding target object
should be generated (cf. MOPs (a) and (b) in Fig. 2)). The whitebox-view of
the Copier (b) thereby shows the mapping of class Class to class Entity using
a C2C MOP. Moreover, the attribute Class.name is mapped to the attribute
Entity.name by using an A2A MOP. Finally, the reference Class.properties
is mapped to the reference Entity.attribute using a R2R MOP. To split the
attributes of the class Reference to the target classes Role and Cardinality a
VerticalPartitioner is applied (cf. MOP (d) in Fig. 2). Besides this default
behavior, aggregation functionality is sometimes needed as is the case when
splitting the Property concept into the Attribute and Type concepts, since a Type
should only be instantiated for distinct Property.type values (cf. MOP (c) in
Fig. 2). To merge two Reference objects to a single Relationship object a
VerticalMerger is applied (cf. MOP (e) in Fig. 2).
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Debugging View</title>
      <p>
        In the previous section we showed how structural heterogeneities can be resolved
by applying MOPs resulting in a declarative mapping specification. In order
to execute this specification it has to be translated into an executable
formalism, i.e., every MOP has to be assigned an operational semantics. Thereby, the
impedance mismatch between the declarative specification and the actual
operational semantics should be minimized in order to foster comprehensibility and
debuggability. Since current transformation languages (cf. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] for an overview)
provide only a limited view on a model transformation problem, i.e., they do not
visualize the actual metamodel and model being transformed, we proposed the
TN formalism [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], being a DSL on top of CPNs [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The basic idea of TNs is to
represent the transformation logic together with the metamodels and the models,
whereby metamodel elements are represented by places, model elements by the
according markings and the actual transformation logic by a system of
transitions. Thus, an explicit runtime model is provided which can be used to observe
the runtime behavior of a certain transformation. In the following we describe
the core concepts of TNs as well as the adaptations introduced in comparison
to standard CPNs to better suit the domain of model transformations.
      </p>
      <p>Representation of Metamodels and Models. Since we rely on the core
concepts of an object-oriented meta-metamodel the graph which represents the
metamodel consists of classes, attributes, and references which are represented
by according places in TNs. Therefore Fig. 3 depicts a place for the class Class
as well as one place for the attribute Class.name and one place for the reference
Class.properties. The graph which represents a conforming model consists of
objects, data values and links which are represented by tokens in the according
places. For every object that occurs in a model a one-colored ObjectToken is
produced, which is put into a place that corresponds to the respective class in
the source metamodel, e.g., the token C1 in the Class place and the tokens P1 and
P2 in the place Property, representing the objects of the source model depicted
at the bottom of Fig. 1. The color is realized through a unique value that is
derived from the object id (OID). For every value, two-colored AttributeTokens
are produced whereby the upper color represents the object and the lower color
the actual value, e.g., the C1|Person token represents the value “Person” of
the attribute Class.name for the object C1 in Fig. 3. Finally, for every link a
two-colored ReferenceToken is produced. The outer color refers to the color of
the token that corresponds to the owning object. The inner color is given by
the color of the token that corresponds to the referenced target object, which is
depicted by the corresponding tokens in the Class.properties place in Fig. 3.</p>
      <p>Specification of Transformation Logic. The actual transformation logic
is specified by means of a system of transitions and additional places, so-called
trace places storing context information which reside in-between those places
representing the original input and output metamodels. Transitions consist of
so-called query tokens (LHS of the transition) representing the pre-condition of
a certain transition, whereas production tokens (RHS of the transition) depict its
postcondition. Thereby different query and production tokens for objects, values,
links and context information are provided whose colors represent variables that
are bound during execution, i.e, colors of query tokens are not the required colors
for input tokens, instead they describe configurations that have to be fulfilled by
input tokens. In the copying sceanrio the color of the production tokens depend
on the color of the query tokens, e.g., the production token and the query token</p>
      <sec id="sec-4-1">
        <title>Cnalamses ‘Pcecrs11on‘</title>
        <p>properties</p>
        <p>Fig. 3. Debugging View of Copier MOP
of the C2C transition exhibit the same color and therefore the source and the
target object tokens exhibit the same color (cf. Fig. 3). However, it is also possible
to produce a token of a not yet existing color if a target object is needed which
does not directly correspond to a source object, e.g., in case a C2nC MOP which
merges several source objects to a single new target object. Furthermore, to
represent trace ports of MOPs, trace places containing context tokens indicate
which target object has been created from which source object(s). Thereby the
color(s) of the slot (left side) indicate(s) the used source object(s) whereas the
generated target object is represented by the color of the remaining slice (right
side of token). Since object tokens are simply copied in case of the depicted C2C
transition source and target context tokens exhibit equal colors (cf. Fig. 3(a)).
Only if context information is available in a trace place, dependent transitions,
e.g., the A2A and R2R transitions, are able to fire. For this, they query the
context tokens in order to add a value or a link to the target object acquired
from the context token (cf. Fig. 3(b)). Please note that in case of creating a
new target object, source and target color of the context tokens differ from each
other. Thus, dependent transitions must be able to cope with differently colored
context tokens and therefore the context query tokens of the dependent A2A
and R2R transitions in Fig. 3 show different colors (which are only variables and
are therefore also able to match for same colored tokens).</p>
        <p>Adaptations of Standard CPNs. In contrast to standard CPNs, TNs
exhibit a different default firing behavior, i.e., tokens are not consumed per default
(therefore source tokens are preserved in their corresponding source places). This
is since all possible token combinations must be taken into account. For example,
if the R2R transition would consume Class tokens and Property tokens from
the trace places (cf. Fig. 3), the transition could fire only once although multiple
Properties would be available, since there is a 1:n relationship between Class
and Property. Moreover, if more than one transition accesses a certain place,
consuming firing behavior would lead to erroneous race conditions.</p>
        <p>Summarizing, TNs provide a formalism to specify the operational
semantics of the provided MOPs. Thereby TNs reduce the impedance mismatch
between the abstract declarative mapping specification and the actual operational
semantics since there is a 1:1 correspondence between kernel MOPs and
transitions. Additionally, all artifacts in a model transformation, i.e., metamodel,
transformation logic and the involved models are represented in a homogenous
view. Furthermore, as query and production tokens are only typed to the core
concepts of object-oriented metamodels (class, attributes and references) the
specified transformation logic can be reused between arbitrary metamodels (as
intended by the MOPs). Due to the fact that every MOP is realized by an
independent set of transitions every MOP can be debugged individually, thus
enabling a component-oriented debugging approach.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Execution View</title>
      <p>
        Since TNs represent a DSL on top of CPNs they can be fully translated into
existing CPN concepts to make use of efficient execution engines and their properties
to analyze model transformations [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. The actual translation is transparent to
the user since a TN is automatically converted to an according CPN using the
ASAP platform [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. The ASAP platform provides an EMF-based
implementation of the PNML standard5 for CPNs. The CPN model can then be used to
check the syntax of the corresponding TN, to simulate the TN and to
calculate behavioral properties for the specified model transformations. Since every
MOP is realized by an independent set of TN transitions we provide pre-defined
hierarchical CPNs for kernel and composite MOPs, detailed in the following.
Furthermore, the application of behavioral properties for analyzing model
transformations is shown.
5.1
      </p>
      <p>Representation of Kernel MOPs
Kernel MOPs and their respective operational semantics in TNs can be
represented by means of modules or so-called substitution transitions in hierarchical
CPNs whereby the ports of the substitution transitions are only typed by classes,
attributes, and references. The ports are then bound to the corresponding socket
places being the places derived from the source and target metamodel. In the
following we show how to realize the non-consuming behavior in CPNs as well
as the translation of kernel MOPs to hierarchical CPNs.</p>
      <p>
        Adaptations of Standard CPNs. To realize the non-consuming firing
behavior, a so-called history place is introduced for every transition. It stores all
token combinations that have already been fired by this transition in a sorted
list in order not to blow up the state space, i.e., there is no difference if token P1
or token P2 has been transformed first in our scenario. The history place is
connected to the corresponding transition whereby a guard condition prevents the
transition from firing a certain token combination twice. Moreover, the standard
arcs are replaced by so-called test arcs, which do not consume tokens from the
connected input places. For further details on the translation of TNs to CPNs
we refer the interested reader to [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
      </p>
      <p>MOPs mapping Classes. In case of kernel MOPs dealing with the
mapping of classes, e.g., a C2C MOP as depicted in Fig. 4(a), the in- and outports
have to be typed to the colorset Class (colset Class = record object :
INT * name : STRING). As a C2C MOP simply copy tokens, the same arc
inscription can be found on the in- and outgoing arcs (represented by the same
colors of query and production token in TNs). Furthermore, kernel MOPs
mapping classes provide context information stored in the context port6. The
colorset Context thereby defines a record consisting of a list of classes (since more
than one class can be used to enable the transition in case of a C2nC) and a
target class (colset Context = record source:SourceContext * target :
Class; colset SourceContext = list Class;).</p>
      <sec id="sec-5-1">
        <title>5 http://www.pnml.org/</title>
        <p>6 Note that ports providing context information in MOPs and CPNs are used to
enable dependent MOPs or transitions, i.e, they provide required tokens to enable a
transition, whereas the history concepts solely hinders multiple firings of transition
in CPNs
1`{object=2,name="C1"} nil
history</p>
        <p>History
h InsertSorted[id] h
I/Osource {Cslaosu{srcoeb=je[c{to=bidje,cnta=mide,=nalitm}e=lit}]C,2C[not {(Loibstje.ecxt=isitds,(nfnamx=e=&gt;lCito}ntOaiuntsta(xrg,[eitd],1C)l)ahs)s]
target={object=id,name=lit}}
Context I/Ocontext</p>
        <p>MOPs mapping Attributes or References. In case of kernel MOPs
dealing with the mapping of attributes or references, e.g., an A2A MOP or
R2R MOP as depicted in Fig. 4(b) and (c), the ports have to be typed to the
colorset Attribute and Reference respectively (colset Attribute = record
object:INT * name:STRING * valueId : INT * value : STRING; colset
Reference = record source:INT * sname: STRING * target:INT * tname:
STRING;). Since attributes and references should only be transformed if the
owning object of an attribute or the source and target objects of a reference have
already been transformed, the guard condition of the transition not only prevents
the multiple firing but additionally checks if the context place already contains
the necessary context information. If the condition is fulfilled, an attribute or
reference token is produced whereby the new owning object tid is acquired from
the context tokens (cf. arc inscription at the in- and outgoing arcs from context
places Fig. 4(b) and (c)). These hierarchical CPNs can then be assembled to
more coarse-grained hierarchical CPNs to represent, e.g., a Copier as shown in
Fig. 4(d). In the following, composite MOPs are elaborated in more detail.
Specification View. In Section 3 we introduced coarse-grained composite MOPs
which encapsulate several kernel MOPs, e.g., a Copier consists of exactly one
C2C, and several MOPS for mapping attributes or references. As can be seen in
Table 1, composite MOPs can not only consist of kernel MOPs but might
encompass composite ones themselves, e.g., VerticalPartitioner which consists of
a Copier and an ObjectGenerator (cf. Fig. 5(a)). In our running example this
MOP was used to split the source concept Property into the concepts Attribute
(achieved by the contained Copier) and Type, whereby a Type should only be
instantiated for distinct Property.type values overcoming the heterogeneity that
a concept is expressed as an attribute in the source metamodel and as a class in
the target metamodel (achieved by the contained ObjectGenerator).</p>
        <p>Debugging View. The relation between composite and the kernel MOPs
can be seen in the debugging view (cf. Fig. 5(b)). First, the C2C transition of the
copier streams the corresponding object tokens, thus creating an Attribute for
every Property. The thereby generated context information enables the A2A
transition in order to set the Attribute.name values. Second, the A2C
transition generates a Type object token for distinct Property.type values, which
is indicated by the distinctInputValue annotation on the transition meaning
that only context information in the according trace place is generated but no
new target token in case that a value occurs several times. Therefore, the trace
place of the ObjectGenerator composite MOP contains two Property.type
tokens which both have been mapped to the same Type object (depicted by the
equal target color of the context tokens) since both source tokens have the same</p>
        <sec id="sec-5-1-1">
          <title>Pnarompeerty C cl C C CT2C C</title>
          <p>type Aattr1 A C ACA2A A A parAttr1 A</p>
          <p>C02R R R ref R type</p>
          <p>C parent C1 1Attribute
1 1nam*e</p>
          <p>Property p1 p2
name ‘fnpam1e‘ ‘lnpam2e‘
type ‘Sptrin1g‘ ‘Sptrin2g‘
childC T t2 T t1</p>
          <p>Fig. 5. Different Views of VerticalPartitioner
value ‘‘String’’. In order not to produce too many attribute tokens the
dependent A2A MOP has to match only for distinct target colors of context tokens
resulting in distinct output values (indicated by the according annotation in (cf.
Fig. 5(b)). Finally, the generated Attribute and Type objects have to be
accordingly linked by the reference Attribute.type. Since there is no according source
reference available we have to generate this reference by applying a 02R MOP.
Nevertheless, the transformation designer has to define during specification how
the generated target objects are related to each other in the source model. In
our example the intention is to generate a reference for every Attribute object
having set an according Attribute.type value. In order to get this input the
InputGen transition collects the tokens and thereby generates (self) references.
These references can then be processed by the Linker component which finally
produces the according Attribute.type references.</p>
          <p>Execution View. In order to represent the different levels of granularity, the
corresponding hierarchical CPN again consists of several nested ones, thus
leading to multi-level hierarchical CPNs. As shown in Fig. 5(c) the
VerticalPartitioner consists of two substitution transitions, being a Copier and an
ObjectGenerator. As already shown in the debugging view (cf. Fig. 5(b)), the main part of
an ObjectGenerator is an A2C kernel MOP. Since only for distinct values a new
target object should be generated, an additional values place containing a list
of records (colset A2CList = list A2C; colset A2C = record value:INT
* target:Class), expressing which values have already been converted to a
certain class token, is introduced (cf. Fig. 5(d)). The conditions on the outgoing
arcs to the target place and to the values places ensure that a token is only
created if the value has not been contained in the values list before. In contrast
to that, context information is produced for any firing of the transition whereby
the source object is connected to an already existing class target token if the
values list contains an according entry, i.e., if a Type has already been created
for a certain Property.type value. To represent the fact that a Type object has
no according counterpart in the source model, we generate a new object id which
is the task of the (fusion) place NewColPlace and the according arc inscriptions
represented by a newly colored object production token in TNs.
5.3</p>
          <p>
            Behavioral Properties to Analyze Mappings
Although the operational semantics of MOPs is predefined, configuration errors
might occur when applying the MOPs in the specification phase leading to an
erroneous interplay between MOPs. In the following we show how typical errors
can be detected by means of behavioral properties of the underlying CPNs [
            <xref ref-type="bibr" rid="ref20">20</xref>
            ].
          </p>
          <p>Model Comparison using Boundedness Properties. Typically, the first
step in analyzing the correctness of a transformation is to compare the generated
target model to an expected target model. To identify wrong or missing target
elements in terms of tokens automatically, Boundedness properties can be
applied. An example thereof could be the A2C MOP in the above example which
creates target tokens for distinct values only. Therefore dependent transitions
need to generate a distinct output as well, e.g., to set the Type.name value only
once. If this is not specified by the user accordingly, too many Type.name tokens
are generated which can be detected by comparing the Boundedness properties
of the according place of the generated model to the expected target model.</p>
          <p>Checking Interplay of MOPs using Liveness Properties. Another
source of error during the refinement of composite MOPs by kernel MOPs is
the mapping of dependent attributes and references. In case that MOPs dealing
with attributes and references are connected to wrong source or target context
ports the corresponding transition is not able to fire which can be detected by
Liveness Properties such as Dead Transition Instances or L0-Liveness.</p>
          <p>Termination and Confluence Analysis using Dead and Home
Markings. A transformation specification must always terminate, thus the state space
has to contain at least one Dead Marking, which is typically ensured by the
history concept. Moreover, it has to be ensured that a dead marking is always
reachable, meaning that a transformation specification is confluent, which can
be checked by the Home Marking. Furthermore, it is possible to check if a
certain marking, i.e., the target marking derived from the expected target model, is
reachable. If this marking is equal to the Dead and Home Marking it is ensured
that the specified mapping always generates the expected target model.
6</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Lessons Learned</title>
      <p>This section presents lessons learned and discusses key features of our approach.</p>
      <p>Kernel MOPs Enable Extensibility. Kernel MOPs form the basis for
overcoming structural heterogeneities and thereby have to exhibit a well-defined
operational semantics. Since composite MOPs are solely based on kernel MOPs,
the composite operational semantics results from the operational semantics of the
kernel MOPs. Therefore, the library of composite MOPs can be easily extended
on basis of the kernel MOPs without the need of adapting the compilation to
TNs and CPNs, respectively.</p>
      <p>CPNs Allow for Parallel Execution. As CPNs exhibit an inherent
concurrency, parallel execution of transformation logic is possible thereby increasing
the efficiency of a transformation execution. In particular, mappings between
classes are independent from each other and therefore the transformation of
objects can be fully parallelized. The same is true for depending attributes and
references which can also be transformed in parallel after the owning objects
have been created and thus the needed context tokens are available.</p>
      <p>Visual Formalism Eases Debugging and Understandability. TNs
provide a visual formalism for defining model transformations which is especially
useful for debugging purposes, since the actual execution of a certain model
transformation can be simulated. In this respect, the transformation of model
elements can be directly followed by observing the flow of tokens and therefore
undesired results can be detected easily.</p>
      <p>
        History Ensures Termination. As mentioned above, TNs introduce a
specific firing behavior in that transitions do not consume the source tokens
satisfying the precondition but hold them in a history. Thus, a transition can
only fire once for a specific combination of input tokens prohibiting infinite loops,
even for test arcs or cycles in the net. Only if a transition occurs in a cycle
and if it produces new objects every time it fires, the history concept can not
ensure termination. Such cycles, however, can be detected at design time and are
automatically prevented for TNs. In contrast to model transformation languages
based on graph grammars, where termination is undecidable in general [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], TNs
ensure termination already at design time.
      </p>
      <p>State Space Explosion Limits Model Size. A known problem of model
checking and thus also of behavioral properties of Petri Nets is that the state
space might become very large. Currently, the full occurrence graph is
constructed to calculate properties leading to memory and performance problems
for large source models and transformation specifications. Often a marking M
has n concurrently enabled, different binding elements leading all to the same
marking. Nevertheless, the enabled markings can be sorted in n! ways, resulting
in an explosion of the state space. As model transformations typically do not
care about the order how certain elements are bound, the number of bindings
can be reduced to 2n bindings, thus enhancing scalability of our approach.
7</p>
    </sec>
    <sec id="sec-7">
      <title>Related Work</title>
      <p>In the following, related work is summarized according to the proposed views.</p>
      <p>
        Specification View. In the area of model engineering only the ATLAS
Model Weaver (AMW) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] provides a dedicated mapping tool allowing the
definition of model transformations independent of a concrete transformation
language. By extending the weaving metamodel, one can define the abstract syntax
of new weaving operators which roughly correspond to our MOPs. The semantics
of weaving operators is determined by a higher-order transformation [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], taking
a model transformation as input and generating another model transformation
as output. Compared to our approach, the weaving models are compiled into
low-level ATL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] transformation code which is in fact a mixture of declarative
and imperative language constructs. Thus, this solution exhibits an impedance
mismatch, hindering the understanding and debugging of the resulting code.
      </p>
      <p>
        Debugging View. Concerning model transformations in general, there is
little debugging support available. Most often only low-level information
available through the execution engine is provided, but traceability according to the
higher-level correspondence specifications is missing. For example, in the Fujaba
environment, a plugin called MoTE [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] compiles TGG rules [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] into Fujaba
story diagrams that are implemented in Java, which obstructs a direct
debugging on the level of TGG rules. In [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], the generated source code is annotated
accordingly to allow the visualization of debugging information in the generated
story diagrams, but not on the TGG level. Concerning the understandability of
model transformations in terms of a visual representation and a possibility for
a graphical simulation, only graph transformation approaches like Fujaba allow
for a similar functionality. However, these approaches neither provide an
integrated view on all transformation artifacts nor do they provide an integrated
view on the whole transformation process in terms of the past state, i.e., which
rules fired already, the current state, and the prospective future state, i.e., which
Petri Nets &amp; Concurrency { 367
rules are now enabled to fire. Therefore, these approaches provide snapshots of
the current transformation state, only.
      </p>
      <p>
        Execution View. Current transformation languages provide only limited
support to analyze transformation specifications as summarized in the
following. In the area of graph transformations some work has been conducted that
uses Petri Nets to check properties of graph production rules. Thereby, the
approach proposed in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] translates individual graph rules into a Place/Transition
Net and checks for its termination. Another approach is described in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], where
the operational semantics of a visual language in the domain of production
systems is described with graph transformations. The production system models as
well as the graph transformations are transformed into Petri Nets in order to
make use of analysis techniques for checking properties of the production system
models. Finally, a recent work by de Lara and Guerra [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] proposes to translate
QVT-Relations into CPNs - on the one hand to provide a formal semantics for
QVT Relations and on the other hand to analyze QVT Relations specifications
pursuing similar ideas as followed in our previous work [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. Nevertheless, these
approaches are using Petri Nets only as a back-end for analyzing properties of
transformations, whereas we are using a DSL on top of CPNs as a front-end for
model transformations, thereby fostering debuggability.
8
      </p>
    </sec>
    <sec id="sec-8">
      <title>Future Work</title>
      <p>
        Currently, only the most important concepts of modeling languages, i.e., classes,
attributes and relationships have been considered by our MOPs. It would be
desirable, however, to extend our MOP library to be able to deal also with
concepts such as inheritance or complex mathematical operations. Furthermore,
only a basic prototype of the proposed debugging view is available. We therefore
focus on improving our prototype, e.g., by accordingly visualizing the findings
of the formal properties. Concerning verification support, we focused on small
mapping scenarios up to now only, not least due to the state space explosion
problem. Nevertheless the ASAP platforms provides the possibility to specify
own algorithms to explore the state space which could additionally be adopted
to the domain of model transformation to enable verification support for larger
scenarios. To further support the transformation designer in complementing the
mapping in the whitebox-view, auto-completion strategies should be
incorporated. In this respect, we will investigate on matching strategies [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] which may
be applied to automatically derive attribute and relationship mappings.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Bernstein</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Melnik</surname>
          </string-name>
          .
          <source>Model management 2</source>
          .
          <article-title>0: manipulating richer mappings</article-title>
          .
          <source>In Proc. of SIGMOD'07</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          . ACM,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>J. B</surname>
          </string-name>
          <article-title>´ezivin</article-title>
          .
          <source>On the Unification Power of Models. Journal on Software and Systems Modeling</source>
          ,
          <volume>4</volume>
          (
          <issue>2</issue>
          ):
          <fpage>31</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>E. M.</given-names>
            <surname>Clarke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Grumberg</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D. A. Peled. Model</given-names>
            <surname>Checking</surname>
          </string-name>
          . The MIT Press,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          .
          <article-title>Feature-based Survey of Model Transformation Approaches</article-title>
          .
          <source>IBM Systems Journal</source>
          ,
          <volume>45</volume>
          (
          <issue>3</issue>
          ):
          <fpage>621</fpage>
          -
          <lpage>645</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>J. de Lara</surname>
            and
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Guerra</surname>
          </string-name>
          .
          <article-title>Formal Support for QVT-Relations with Coloured Petri Nets</article-title>
          .
          <source>In Proc. of MoDELS'09</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. J. de Lara and
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          .
          <source>Automating the Transformation-Based Analysis of Visual Languages. Formal Aspects of Computing</source>
          ,
          <volume>21</volume>
          ,
          <year>Mai 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>M.</given-names>
            <surname>Del Fabro</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Valduriez</surname>
          </string-name>
          .
          <article-title>Towards the efficient development of model transformations using model weaving and matching transformations</article-title>
          .
          <source>SoSyM</source>
          ,
          <volume>8</volume>
          (
          <issue>3</issue>
          ):
          <fpage>305</fpage>
          -
          <lpage>324</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>L.</given-names>
            <surname>Geiger</surname>
          </string-name>
          .
          <article-title>Model Level Debugging with Fujaba</article-title>
          .
          <source>In Proceedings of 6th International Fujaba Days</source>
          , pages
          <fpage>23</fpage>
          -
          <lpage>28</lpage>
          , Dresden, Germany,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>K.</given-names>
            <surname>Jensen</surname>
          </string-name>
          and
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Kristensen</surname>
          </string-name>
          .
          <source>Coloured Petri Nets - Modeling and Validation of Concurrent Systems</source>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Allilaire</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>B´ezivin, and I. Kurtev. ATL: A Model Transformation Tool</article-title>
          . Science of Computer Programming,
          <volume>72</volume>
          (
          <issue>1-2</issue>
          ):
          <fpage>31</fpage>
          -
          <lpage>39</lpage>
          ,
          <year>June 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>V.</given-names>
            <surname>Kashyap</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Sheth</surname>
          </string-name>
          .
          <article-title>Semantic and schematic similarities between database objects: A context-based approach</article-title>
          .
          <source>The VLDB Journal</source>
          ,
          <volume>5</volume>
          (
          <issue>4</issue>
          ):
          <fpage>276</fpage>
          -
          <lpage>304</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>A.</given-names>
            <surname>Koenigs</surname>
          </string-name>
          .
          <article-title>Model Transformation with TGGs</article-title>
          .
          <source>In Proc. of Model Transformations in Practice Workshop of MoDELS'05</source>
          ,
          <string-name>
            <surname>Montego</surname>
            <given-names>Bay</given-names>
          </string-name>
          , Jamaica,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>F.</given-names>
            <surname>Legler</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Naumann</surname>
          </string-name>
          .
          <article-title>A Classification of Schema Mappings and Analysis of Mapping Tools</article-title>
          .
          <source>In Proc. of BTW'07</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>D.</given-names>
            <surname>Plump</surname>
          </string-name>
          .
          <article-title>Termination of graph rewriting is undecidable</article-title>
          .
          <source>Fundamental Informatics</source>
          ,
          <volume>33</volume>
          (
          <issue>2</issue>
          ),
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. E. Rahm and
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Bernstein</surname>
          </string-name>
          .
          <article-title>A survey of approaches to automatic schema matching</article-title>
          .
          <source>The VLDB Journal</source>
          ,
          <volume>10</volume>
          (
          <issue>4</issue>
          ):
          <fpage>334</fpage>
          -
          <lpage>350</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>M. Tisi</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Fraternali</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Ceri</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <article-title>B´ezivin. On the Use of HigherOrder Model Transformations</article-title>
          .
          <source>In Proc. of ECMDA-FA'09</source>
          , pages
          <fpage>18</fpage>
          -
          <lpage>33</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. D. Varro´,
          <string-name>
            <given-names>S.</given-names>
            <surname>Varro</surname>
          </string-name>
          ´-Gyapay,
          <string-name>
            <given-names>H.</given-names>
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Prange</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Taentzer</surname>
          </string-name>
          .
          <article-title>Termination Analysis of Model Transformation by Petri Nets</article-title>
          .
          <source>In Proc. of ICGT'06</source>
          , pages
          <fpage>260</fpage>
          -
          <lpage>274</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>R.</given-names>
            <surname>Wagner</surname>
          </string-name>
          .
          <article-title>Developing Model Transformations with Fujaba</article-title>
          .
          <source>In Proc. of the 4th Int. Fujaba Days</source>
          <year>2006</year>
          , pages
          <fpage>79</fpage>
          -
          <lpage>82</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>M.</given-names>
            <surname>Westergaard</surname>
          </string-name>
          and
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Kristensen</surname>
          </string-name>
          .
          <article-title>The Access/CPN Framework: A Tool for Interacting with the CPN Tools Simulator</article-title>
          .
          <source>In Proc. of the 30th Int. Conf. on Applications and Theory of Petri Nets</source>
          , pages
          <fpage>313</fpage>
          -
          <lpage>322</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>M. Wimmer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Kappel</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kusel</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Retschitzegger</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Schoenboeck</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Schwinger</surname>
          </string-name>
          . Right or Wrong?
          <article-title>- Verification of Model Transformations using Colored Petri Nets</article-title>
          .
          <source>In Proc. of 9th DSM Workshop</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>M. Wimmer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Kappel</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kusel</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Retschitzegger</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>Scho¨nb¨ock, and</article-title>
          <string-name>
            <given-names>W.</given-names>
            <surname>Schwinger</surname>
          </string-name>
          .
          <article-title>Surviving the Heterogeneity Jungle with Composite Mapping Operators</article-title>
          .
          <source>In Proc. of ICMT'10</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>M. Wimmer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kusel</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Schoenboeck</surname>
            , G. Kappel,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Retschitzegger</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Schwinger</surname>
          </string-name>
          . Reviving QVT Relations:
          <article-title>Model-based Debugging using Colored Petri Nets</article-title>
          .
          <source>In Proc. of MoDELS'09</source>
          , pages
          <fpage>727</fpage>
          -
          <lpage>732</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>M. Wimmer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kusel</surname>
            , J. Scho¨nbo¨ck, T. Reiter,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Retschitzegger</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Schwinger</surname>
          </string-name>
          .
          <article-title>Lets's Play the Token Game - Model Transformations Powered By Transformation Nets</article-title>
          .
          <source>In Proc. of PNSE'09</source>
          , pages
          <fpage>35</fpage>
          -
          <lpage>50</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>