<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A metamodeling level transformation from UML sequence diagrams to Coq</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Chao Li</string-name>
          <email>zerochaoli@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Liang Dou</string-name>
          <email>ldou@cs.ecnu.edu.cn</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Zongyuan Yang</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>East China Normal University Shanghai</institution>
          ,
          <country country="CN">China</country>
        </aff>
      </contrib-group>
      <fpage>147</fpage>
      <lpage>157</lpage>
      <abstract>
        <p>Modeling is an important aspect of UML formal verification that directly affects the quality and efficiency of the verification. Formal models are the foundation of formal verification. As UML diagrams only have semi-formal semantics, they cannot be used for formal verification directly. Recent studies present model transformation from semi-formal UML models to formal models to solve the issues. In this paper, a metamodeling level transformation tool from UML sequence diagrams to formal Coq codes is presented. Using Kermeta (a metamodeling language) and predefined transformation rules that directly added to the metamodel of UML sequence diagrams, models of UML sequence diagrams are transformed into XMI, an intermediate format, and finally to formal Coq codes. This paper is part of our formal verification work for UML sequence diagrams, and the automatically generated Coq codes can be used for further formal verification using the theorem proof assistant Coq in our related works. This paper perfects the whole verification work and provides useful support to improve the integration density of formal verification in the formalization process of UML sequence diagrams.</p>
      </abstract>
      <kwd-group>
        <kwd>UML sequence diagrams</kwd>
        <kwd>model transformation</kwd>
        <kwd>formal verification</kwd>
        <kwd>metamodeling</kwd>
        <kwd>Kermeta</kwd>
        <kwd>Coq</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Unified Modeling Language (UML) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is standardized by Object Management
Group (OMG), and has a set of notations to specify and model target system
at varying levels of abstraction. For its powerful modelling capability, UML is
increasingly popular in the design stage of model-based software development.
      </p>
      <p>
        Despite the wide use of UML, a number of problems have been identified
due to its semi-formal semantics. For example, a developer’s understanding of
UML models may differ from the designer’s understanding, tools for analyzing
UML models may be limited to syntactic analysis [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and system flaws may fail
to be revealed in the design phase. In order to provide UML correct foundation
of formal semantics, formal methods are getting popular to analyze UML
models. Formal methods are the application of precise mathematical fundamentals
and techniques to specify systems (formal specification) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and provide a
systematical way to check the soundness and correctness of system models (formal
verification) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Hence, UML formal verification (UFV) makes up for the
deficiencies of UML itself and eliminates the inconsistency of different understanding
to system design.
      </p>
      <p>UML sequence diagrams have been widely used in the early stage of software
development process. Different objects or processes are represented by parallel
vertical lines in a sequence diagram. Objects or processes communicate with each
other via messages that are represented by horizontal arrows. UML sequence
diagrams play an important role in helping developers understand the runtime
behaviours of system. Thus, it is important to verify the models when using
UML sequence diagrams in the design stage.</p>
      <p>
        A great deal of UFV works have been done, most of them focus on two
aspects: the transformation rules from models of UML diagrams to formal models,
and the verification process based on the formal models. In previous work [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], we presented formal semantics of UML sequence diagrams and implemented
formal verification of the correctness of the semantics in Coq [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], but the
transformation for UML sequence diagrams to Coq presentations is implemented
manually and transformation rules are not presented systematically. Manual
transformation has low efficiency in dealing with large scale models. In this work, we
present the systematic transformation rules, and implement the automatic
metamodeling level transformation from UML sequence diagrams models to formal
Coq presentations, which is the foundation for further formal verification. We
have developed a prototype transformation tool using metamodeling languages
Kermeta [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        Metamodeling is the process to define a modeling language completely and
precisely. The abstract syntax of modeling language is described by a metamodel,
which is also defined in a metamodeling language. A metamodeling language
is a superior language to describe modeling languages and it is also defined
with a metamodel. The metamodel of a metamodeling language is called
metametamodel, which is self-descibing [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Model transformation is used to create
new models based on existing models. In stead of creating models from scratch,
model transformation enables the reuse of information that was once modeled.
Metamodeling level transformation ensures that the target model confirms to
the target metamodel specification, hence, the transformation is syntactically
correct. In addition, metamodeling and model transformation are fully supported
by Kermeta. Kermeta is an executable metamodeling language which supports
metamodeling level transformation. Moreover, Kermeta stores data of model
and metamodels in XML Metadata Interchage (XMI) files, which is widely used
among different modeling tools. Hence, it is sufficient for Kermeta to transform
UML sequence diagrams to Coq.
      </p>
      <p>The rest of the paper is structured as follows. Firstly, the related work is
reviewed in Section 2. Section 3 recalls the model transformation in Kermeta
and briefly introduces Coq. Transformation rules and a case study are showed
in Section 4. Finally, we conclude in Section 5.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        A variety of formalization work has been proposed for UML diagrams over the
years. A formal framework is provided to support visual simulation of UML
models that composed of class, object, state, sequence and collaboration
diagrams, and an integrated semantics of these models is presented in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
However, it only focus on the semantics building and transformation rules of UML
diagrams, but further verification of modeling process is not considered. In [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ],
some useful rules for transforming sequence diagram to petri net are presented,
but the transformation process in that work is done manually. In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
conventional programming language, Java, is used to navigate, create, read or delete
models and model elements via specific libraries, all the transformations are at
modeling level. However, we use the metamodeling language Kermeta to
implement a metamodeling transformation tool, which can transform models of UML
sequence diagrams to formal presentations and ensure the syntactic correctness
of the transformation at the same time. In [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], UML state diagrams or
activity diagrams are firstly formalized with operational semantics, and then
translated into input code of formal verification, but they do not provide an
automatic transformation tool. In contrast, an automatic translation of state
charts and sequence diagrams into generalized stochastic nets is proposed in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], and their transformation are at metamodeling level.
      </p>
      <p>Our work not only presents transformation rules at metamodeling level, but
also implement a transformation process from UML sequence diagrams to Coq
codes automatically in Kermeta. The generated codes can be used for further
formal verification.
3
3.1</p>
    </sec>
    <sec id="sec-3">
      <title>Background</title>
      <p>
        Metamodeling and Model Transformation in Kermeta
Kermeta is an executable metamodeling language which supports describing
both structures and behaviours of metamodels. Kermeta is integrated with Eclipse,
and distributed as Eclipse plug-in. It is fully compatible with the OMG Essential
Meta-Object Facility (EMOF) [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and Ecore of Eclipse Modeling Framework
(EMF) [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. It provides an action language to specify the body of operations in
metamodels. The action language of Kermeta is imperative and object-oriented.
It also integrates aspect-oriented features, and supports some design-by-contract
features.
      </p>
      <p>As Kermeta relies on EMF for model storage, regular EMF metamodels,
Ecore files, can be used. These metamodels can be created and edited using the
generic model editor provided with the EMF. Operations can be added to any
class in metamodels using the action language provided by Kermeta. In addition,
once the source metamodel is created, source model that confirms to the source
metamodel can be generated manually using the model editor.</p>
      <p>Model transformation in Kermeta takes one source model as input, and
produces one target model as output. Both source model and target model should
conform to specific metamodel or abstract syntax, and transformation rules
should be defined to drive the transformation. That is, given the source model,
source and target metamodel (or abstract syntax), and transformation rules,
target model can be generated automatically.</p>
      <p>In order to write a model transformation in Kermeta, the source and target
metamodels (or abstract syntax) should be defined at first. In our work, UML
sequence diagrams is the source modeling language and Coq is the target
modeling language. Metamodel of UML sequence diagrams and abstract syntax of
Coq are explained in the following sections.
3.2</p>
      <sec id="sec-3-1">
        <title>Metamodel of UML Sequence Diagrams</title>
        <p>Lifeline, Message and InteractionFragment are contained by Interaction.
Lifeline, message and fragment are the basic elements of UML sequence
diagrams. A lifeline represents a specific object. Lifelines communicate with each
other through messages, each message triggers two events: send event and
receive event. A fragment is an instance of Event and CombinedFragment that
inherit from the abstract class InteractionFragment. Fragments describe the
behaviour information of UML sequence diagrams. Events are the basic
behavioral constructs of UML sequence diagrams and can be combined to form larger
behavioral constructs called CombinedFragment. A combined fragment consists
of an interaction operator, one or more operands which are comprised of events
or combined fragments, and an optional guard condition. A combined fragment
covers a set of lifeline and decides the execution mode and condition of fragments
(events or combined fragments).
3.3
Coq is a theorem proof assistant. The Calculus of Inductive Constructions (CIC)
is the underlying core language of Coq. CIC is based on the calculus of
constructions extended by inductive definitions as they are known from the constructive
type theory.</p>
        <p>The Coq abstract syntax represents UML sequence diagrams as an inductive
type as below, which enables reasoning by case analysis and induction.
Inductive Seq : Set :=
|Skip : Seq
|E : Event -&gt; Seq
|Alt : Seq -&gt; Seq -&gt; Seq
|Opt : Seq-&gt; Seq
|Strict : Seq -&gt; Seq -&gt; Seq
|Loop : nat -&gt; Seq -&gt; Seq
|Par : Seq -&gt; Seq -&gt; Seq.</p>
        <p>Seq is defined inductively as events and operators in the Coq abstract syntax.
Skip represents an empty graph. An E represents an event. Event is the basic
element, it consists of its type and a message, it is defined as :</p>
        <p>Definition Event := Type * Message.</p>
        <p>Type ∈ {?,!}, ! represents sending, and ? represents receiving. Message is defined
as a triple :</p>
        <p>Definition Message := mName * Lifeline * Lifeline.
mName represents the name of the message, a message has two lifelines, the first
one represents a lifeline sends the message, the second one represents a lifeline
receives the message. Furthermore, operators are considered in our work, they
decide the execution mode between fragments. We only consider five interaction
operators: alt, opt, par, loop and strict. Among the operators, opt is unary
and other operators are binary. What calls for special attention is that, two
events always occur accompanying a message, these two events are considered
as a special combined fragment with strict execution mode.</p>
        <p>Models of UML sequence diagrams should be transformed to events and
operators definitions that confirm to the abstract syntax. This is discussed in
the following section.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>The metamodeling Transformation work</title>
      <p>In the preceding sections, we have described the core concepts of our
transformation tool, a more detailed description of the transformation process in our
tool is shown in Fig.2.</p>
      <p>Step1(Manually): Design model of the target system in modeling tools,
and load the model into our tool.</p>
      <p>Step2(Automatically): Transform the model of UML sequence diagrams
to Coq codes with the transformation rules, all these rules are added to classes
of UML sequence diagrams metamodel using our tool. This process is also
implemented automatically.</p>
      <p>Step3(Automatically): Output of model transformation are provided to
Coq as input. Further formal verification is based on this output.
Once the source metamodel and the target abstract syntax are defined, models of
target system can be transformed to Coq codes confirms to the abstract syntax.
The transformation has two steps. In the first step, all the events of source
model are transformed to events definition in Coq. In the second step, behaviour
elements of source model, i.e. events and combined fragments, are transformed
to operators definition in Coq. Before transformation rules of events are given,
transformation rule of message is defined in Rule 1.</p>
      <p>Rule 1. In UML sequence diagrams, a message is transmitted from one
lifeline to another lifeline, this message should be mapped to message variable
definition in Coq.</p>
      <p>According to Rule 1, we can obtain the Coq codes of the message in Fig.3:</p>
      <p>Definition m_m1: Message :=("m1","L1","L2").</p>
      <p>Once the transformation rules of message is defined, Rule 2 for events
transformation is given as below.</p>
      <p>Rule 2. In UML sequence diagrams, when a message named m1 is
transmitted, two related events occur, one is send event: sm1, another is receive event:
rm1, these two events should be mapped to event variable definition and
initialization in Coq.</p>
      <p>According to Rule 2, we can obtain the Coq input codes of the events in
Fig.3:</p>
      <p>Definition sm1: Event := (!,m_m1).</p>
      <p>Definition rm1: Event := (?,m_m1).</p>
      <p>According to the two definitions above, we can obtain the ultimate Coq input
codes of the events in Fig.3 :</p>
      <p>Definition sm1: Event := (!,("m1","L1","L2"))</p>
      <p>Definition rm1: Event := (?,("m1","L1","L2"))</p>
      <p>Execution modes between fragments describe the structure information of
UML sequence diagrams. In the second step, we define the transformation rules
of behaviour information. We start with the transformation rule of events.</p>
      <p>Rule 3. In UML sequence diagrams, two events, send event and receive event,
always accompanies a message, the execution mode between them is strict. Two
events of this message are considered as a special combined fragment with strict
execution mode and should be mapped to operators definition and initialization
in Coq.</p>
      <p>According to Rule 3, we can obtain the operators codes of the two events in
Fig.3:</p>
      <p>strict(E sm1)(E rm1)</p>
      <p>Rule 4. In UML sequence diagram, a combined fragment is comprised of
one operator and fragments, fragments ∈ {Event,CombinedF ragment}, and
we specify that any two adjacent fragments without operators are in strict
execution mode. Combined fragments in sequence diagrams should be transformed
to operators definition in Coq.</p>
      <p>According to the Rule 4, we can obtain the Coq codes of the combined
fragment in Fig.4:</p>
      <p>Alt(Strict (E sm1)(E rm1))(Strict (E sm2)(E rm2))
// sm2 and rm2 is defined in the same way as sm1 and rm1
Using action language and aspect-orientation mechanism in Kermeta,
transformation rules can be added to corresponding class in the metamodel of UML
sequence diagrams.
procedure main()
//import a sequence diagram model
seq :SeqModel = loadModel(seq.xmi);
//call the method toCoq to perform transformation
coqCode : String = seq.toCoq();
//save the transformation result
saveModel(coqCode);
end main
//toCoq is added to the top level class SeqModel
procedure toCoq():String
result :String;
foreach m in message</p>
      <p>result = result + m.message2Coq();
foreach f in fragment</p>
      <p>result = result + f.fragment2Coq();
return result;
end toCoq
//message2Coq is added to class Message
procedure message2Coq():String
mName = self.name;
sLineName = getSendLineName();
rLineName = getRecLineName();
sendEvent=write2Coq(!, mName, sLineName, rLineName );
recEvent = write2Coq(?, mName, sLineName, rLineName );
return sendEvent + recEvent;
end message2Coq
// fragment2Coq is added to class InteractionFragment
procedure fragment2Coq():String
//(1)when fragment is event
if(self.isInstanceOf(OcreenceSpecification))then
if(self.type ==send)then
result = result + event2Coq(self.name, send);
else if(self.type ==receive)then</p>
      <p>result = result + event2Coq(self.name, receive);
//(2) when fragment is combinedFragment
else if(self.isInstanceOf(CombinedFragment))then
if(self.operand == opt)then</p>
      <p>result = result + CombinetoCoq (operand, self.name);
else
leftOp = self;
rightOp = nextFragment;
result = result + CombinetoCoq(operand, leftOp, rightOp);
//transform every subfragment in combinedfragment
foreach f in self.operand.fragment</p>
      <p>result = result + f.fragment2Coq();
return result;
end fragment2Coq
Operation event2Coq transforms a send or receive event to Coq codes,and
operation Combine2Coq transforms a combined fragment with unary or binary
operators to Coq codes.
4.3</p>
      <sec id="sec-4-1">
        <title>A Case Study</title>
        <p>In this section, a simple example is presented to illustrate our transformation.
Fig.5 shows a scene that a user sends his account id and password to the
Automatic Teller Machine (ATM)and get a reply from it. If logged in successfully,
the user can check balance or withdraw money.</p>
        <p>After reading the XMI file of Fig.5 and parse it, our transformation tool
automatically extract the useful information and transform it to formal Coq
codes that confirms to the abstract syntax we have defined:
Definition sid :Event :=(!,("id","User","ATM")
Definition rid :Event :=(?,("id","User","ATM")
Definition spwd :Event :=(!,("pwd","User","ATM")
Definition rpwd :Event :=(?,("pwd","User","ATM")
Definition sloginSucc :Event :=(!,("loginSucc","ATM","User")
Definition rloginSucc :Event :=(?,("loginSucc","ATM","User")
Definition swithdraw :Event :=(!,("withdraw","User","ATM")
Definition rwithdraw :Event :=(?,("withdraw","User","ATM")
Definition scheck :Event :=(!,("check","User","ATM")
Definition rcheck :Event :=(?,("check","User","ATM")
Definition sloginFail :Event :=(!,("loginFail","ATM","User")
Definition rloginFail :Event :=(?,("loginFail","ATM","User")
Definition ExampleSeq :Seq :=</p>
        <p>Strict (Strict (Strict (E sid)(E rid))(Strict (E spwd)(E rpwd)))
(Alt(Strict(Strict (E sloginsucc)(E rloginsucc))(Opt (Strict (Strict
(E swithdraw)(E rwithdraw))(Strict (E scheck)(E rcheck)))))
(Strict (E sloginfail)(E rloginfail))).
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>Modeling is an important step in the UML diagrams formalization, it lays the
foundation for further formal verification. In this paper, we focus on the model
transformation for UML sequence diagrams and implement a metamodeling
transformation tool in Kermeta. Firstly, metamodel of UML squence diagrams
and exact definition of Coq abstract syntax are given. Then, using predefined
transformation rules that directly added to the classes in UML sequence
diagrams metamodel, models of UML sequence diagrams are automatically
transformed to Coq codes so that further verification could be done. Finally, we
present a case study to show the result of model transformation. The result can
be as the input codes for formal verification in Coq theorem prover.</p>
      <p>We consider model concepts of sequence diagrams but not the whole, we can
further define and extend our transformation rules. Another future direction is
to extend the transformation to implement the transformation of UML state
diagrams. In addition, our transformation tool is integrated with Kermeta, but
separated with the verification process, we hope to combine them together and
package them as a new exe or web-based tool in future.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgment</title>
      <p>This work is supported by National Natural Science Foundation of China (No.61070226).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Jacobson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          ,
          <source>The Unified Modelling Language Reference Manual</source>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. R. France,
          <article-title>The UML as a formal modeling notation</article-title>
          ,
          <source>Computer Standards and Interfaces</source>
          , vol.
          <volume>19</volume>
          , pp.
          <fpage>325</fpage>
          -
          <lpage>334</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bttner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Richters</surname>
          </string-name>
          ,
          <article-title>USE: A UML-based specification environment for validating UML and OCL</article-title>
          ,
          <source>Science of Computer Programming</source>
          , vol.
          <volume>69</volume>
          , pp.
          <fpage>27</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>R.</given-names>
            <surname>Van Der Straeten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Simmonds</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Jonckers</surname>
          </string-name>
          ,
          <article-title>Using description logic to maintain consistency between UML models</article-title>
          ,
          <source>Modeling Languages and Applications</source>
          , pp.
          <fpage>326</fpage>
          -
          <lpage>340</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zuo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Dou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Xu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <article-title>Mechanized sementics of UML sequence diagrams</article-title>
          ,
          <source>International Conference on Engineering and Applied Science</source>
          , Colombo, Sri Lanka, Dec.
          <fpage>27</fpage>
          -29
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>L.</given-names>
            <surname>Dou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Lu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Xie</surname>
          </string-name>
          ,
          <article-title>Towards mechanized semantics of UML sequence diagrams and refinement relation</article-title>
          ,
          <source>The 24th IASTED International Conference on Modelling and Simulation</source>
          , Banff, Canada, vol.
          <volume>69</volume>
          ,
          <string-name>
            <surname>July</surname>
          </string-name>
          17-19
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>7. Coq, http://coq.inria.fr.</mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>8. Kermeta, http://www.kermeta.org.</mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>D.</given-names>
            <surname>Cetinkaya</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Verbraeck</surname>
          </string-name>
          ,
          <article-title>Metamodeling and model transformations in modeling and simulation</article-title>
          ,
          <source>Proceedings of the Winter Simulation Conference, Winter Simulation Conference</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. OMG, XML Metadata Interchange, version
          <volume>1</volume>
          .2, http://www.omg.org/,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>M. Gogolla</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Ziemann</surname>
            , and
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Kuske</surname>
          </string-name>
          ,
          <article-title>Towards an integrated graph based semantics for uml</article-title>
          ,
          <source>Electr. Notes Theor. Comput. Sci</source>
          , vol.
          <volume>72</volume>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>O. R.</given-names>
            <surname>Ribeiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Fernandes</surname>
          </string-name>
          ,
          <article-title>Some rules to transform sequence diagrams into Coloured Petri Nets</article-title>
          ,7th Workshop and
          <article-title>Tutorial on Practical Use of Coloured Petri Nets and the CPN Tools (CPN</article-title>
          <year>2006</year>
          ), pp.
          <fpage>37</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>D. H. Akehurst</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Bordbar</surname>
            , and
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Evans</surname>
          </string-name>
          , SiTra: Simple transformations in java,
          <source>Model Driven Engineering Languages and Systems</source>
          . Springer Berlin Heidelberg, pp.
          <fpage>351</fpage>
          -
          <lpage>364</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>S.</given-names>
            <surname>Gnesi</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Mazzanti</surname>
          </string-name>
          ,
          <article-title>A model checking verification environment for UML statecharts</article-title>
          ,
          <source>In XLIII Annual Italian Conference AICA, Udine</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>R.</given-names>
            <surname>Eshuis</surname>
          </string-name>
          ,
          <article-title>Symbolic model checking of UML activity diagrams</article-title>
          ,
          <source>ACM Transactions on Software Engineering and Methodology (TOSEM)</source>
          , vol.
          <volume>15</volume>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>38</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>S.</given-names>
            <surname>Bernardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Donatelli</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Merseguer</surname>
          </string-name>
          ,
          <article-title>From UML sequence diagrams and statecharts to analysable Petri Net models</article-title>
          ,
          <source>Proceedings of the 3rd international workshop on Software and performance</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>S.</given-names>
            <surname>Bernardi</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Merseguer</surname>
          </string-name>
          ,
          <article-title>Performance evaluation of UML design with stochastic well-formed nets</article-title>
          ,
          <source>Journal of Systems and Software</source>
          , vol.
          <volume>11</volume>
          , pp.
          <fpage>1843</fpage>
          -
          <lpage>1865</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. OMG, MOF
          <volume>2</volume>
          .0 Core Final Adopted Specification, http://www.omg.org/cgibin/doc?ptc/03-10-04,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Mark</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Pinsky</surname>
          </string-name>
          ,
          <source>The EMF Book, Warner Books</source>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>