<!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>Multilevel modelling of coloured Petri nets</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alejandro Rodríguez</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Adrian Rutle</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francisco Durán</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lars Michael Kristensen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fernando Macías</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Expression 1-1-</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universidad de Málaga</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Western Norway University of Applied Sciences</institution>
          ,
          <addr-line>Bergen</addr-line>
        </aff>
      </contrib-group>
      <fpage>1</fpage>
      <lpage>1</lpage>
      <abstract>
        <p>Coloured Petri Nets (CPNs) is a modelling language for distributed systems which has been applied in a multitude of industrial cases. The supporting tool of CPNs is currently lacking important features such as having the possibility of tailoring the tool for specific domains and separation of concerns for facilitating its extensions and adaptation to new domains. In this paper, we present first steps towards using MultEcore as a multilevel modelling technique to tackle some of the CPN Tools main challenges by modelling CPNs and the CPN Tools using domain-specific multilevel modelling hierarchies. In particular, we take advantage of these hierarchies to first allow the definition of domainspecific CPNs languages and second to establish a clear separation between the CPN behaviour and the data types declarations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Model-driven software engineering (MDSE) tackles the increasing complexity of
software by utilizing abstractions and modelling techniques. Traditional
modelling approaches such as the Eclipse Modelling Framework (EMF) [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], the
Unified Modelling Language [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and MetaCase [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], limit the number of
abstraction levels. In some cases this limitation leads to an increased model complexity
and convolution [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. The main reason for this is that real-life domains do not
necessarily or naturally fit into a limited number of abstraction levels. Indeed, for
a huge number of cases, 2-level techniques are not enough to intuitively specify
certain domains [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Moreover, the construction of Domain-Specific Modelling
Languages (DSMLs) gets likewise affected by this limitation in abstraction
levels [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. As a response to these challenges, Multilevel Modelling (MLM) has been
proved a successful approach in many situations [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], such as software
architecture or enterprise/process modelling domains.
      </p>
      <p>
        One of the industrial domains in which MDSE has successfully been applied
is distributed systems. Coloured Petri Nets (CPNs) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is a framework in this
domain which facilitates, among others, specification of communication
protocols [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], data networks [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and distributed algorithms [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. However, the main tool
for CPNs, CPN Tools, is not designed to be easily extended with domain-specific
features, although DSMLs have proved to be one of the most important tools of
MDSE [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Moreover, CPN Tools [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] lacks support for basic modelling concepts
such as modularisation and separation of data type declaration from behaviour
definition, thus hampering its extensibility and adaptability to new domains.
To tackle these challenges, we propose using an MLM approach to provide an
infrastructure for CPN Tools using MultEcore, which is designed to combine
the best of both the mature ecosystem of EMF and the multilevel modelling
approach [
        <xref ref-type="bibr" rid="ref13 ref14">13, 14</xref>
        ]. Specifically, MultEcore facilitates the definition of CPN-based
metamodels—and hence DSMLs—through the support of an unlimited number
of abstraction levels. Moreover, it addresses the challenges introduced in the
CPNs case through separating CPN behaviour from data types declarations
using the so-called supplementary hierarchies. In fact, MultEcore also allows the
definition, assignment and reuse of multiple data type hierarchies. The
separation of these concerns provides an improved reusability for the construction of
domain-specific CPNs.
      </p>
      <p>In Sect. 2 we introduce CPNs main concepts and describe the aspects which
motivate this work. Section 3 presents our approach and details our contribution
based on multilevel modelling techniques. In Sect. 4 we discuss related work.
Finally in Sect. 5 we summarize conclusions and outline directions for future
work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivation</title>
      <p>
        First, we briefly introduce CPNs and recapitulate its main concepts. CPNs
belong to the class of high-level Petri nets which combine classical Petri nets
(PNs) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] with a programming language [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. The use of a programming
language provides the primitives for the definition of data types, for describing
data manipulation and for creating compact and parameterisable models. A
CPN model describes the conditions (places) of the system and the events
(transitions) that can cause the system to change its state. Arcs can connect places
to transitions or vice versa, but it is illegal to connect places with places or
transitions with transitions. Figure 1 shows a small example of how a simple CPN
model looks like with the concrete syntax we have defined. Circles like Clients
and Messages represent places, while rectangles like SendRequest and
ProcessRe[client1]
Clients
Client
[hello]
[]
[]
[]
[]
[]
      </p>
      <p>ClientsDB</p>
      <p>ClientxMessage
[]
[]
[]
[]
SendRequest</p>
      <p>ProcessRequest</p>
      <p>CtoB</p>
      <p>ClientxMessage
Messages</p>
      <p>ProcessResponse</p>
      <p>BtoC</p>
      <p>SendResponse
Message</p>
      <p>ClientxMessage
Fig. 1: CPN Model - Concrete syntax view</p>
      <sec id="sec-2-1">
        <title>CPN Tools</title>
      </sec>
      <sec id="sec-2-2">
        <title>CPN Metamodel</title>
        <p>Declarations</p>
      </sec>
      <sec id="sec-2-3">
        <title>Level 1</title>
        <p>sponse represent transitions; places and transitions are connected by means of
arcs.</p>
        <p>Each place can hold an arbitrary number of tokens, providing the marking of
the place. The tokens are generated by analyzing the initial marking expressions,
which can be either function calls or literal expressions. The set of possible token
colours is specified by means of a type (as known from programming languages),
and it is called the colour set of the place. Client, Message and ClientxMessage
are three colour sets which are written in the white rectangles below the places.
Message is represented by a content; the Client colour set consists of a name;
ClientxMessage is a structure composed by a Message and a Client (see details in
Sect. 3.3 where colour sets are defined as classes). In Fig. 1, there are two initial
marking expressions [client1] and [hello] that will generate a Client and a Message
token, respectively. The number of tokens and their colours on the individual
places represent the state of the system (called the marking of the model).</p>
        <p>
          CPN Tools [
          <xref ref-type="bibr" rid="ref1 ref9">1, 9</xref>
          ] is a tool that supports the construction, simulation
(execution), state space analysis, and performance analysis of CPN models. Although
CPN Tools has been successfully used for modelling distributed systems, there
are several challenges which motivate us to create an MLM infrastructure.
Implicit levels. In the current CPN Tools implementation there are multiple
implicit levels of abstraction which are forced into a 2-level modelling technique
(see Fig. 2a). From a multilevel modelling perspective, we identify at least four
levels as presented in Fig. 2b. The first two levels are intended to represent
Ecore—the metamodel of EMF—and the general concepts of CPNs, respectively;
it is also possible to introduce more levels between these two in order to specify
and reuse general Petri nets-like behaviour [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Below these, one can define
several levels to specify domain-specific versions of CPNs, which in turn can be
used to define CPN-based DSMLs. We estimate that, in general, two or three
levels in between will be enough to specify a certain CPN domain (note that
MultEcore does not restrict the number of levels). These DSMLs may declare
special kinds of places and transitions with special behaviour and constraints;
for example, a domain specific transition that may only allow outgoing arcs.
The Level n-1 is a specific CPN model that will be executed at Level n. The
lowest level is generated by executing the initial markings which are put on the
places in Level n-1; these are expressions that specify the tokens which allow us
to execute the model. The hierarchy shown in Fig. 2b can be assigned to the
so-called application hierarchy in MultEcore, which specifies the CPN DSML
(see Sect. 3.3).
        </p>
        <p>
          Token instantiation. The concept of token also fits perfectly within the usage of
multilevel modelling since it is defined in the Level 1, together with the rest of
basic concepts of CPNs. However, its instantiation needs to be done (at least)
two levels below. This is because simulating the model requires first the analysis
of the initial marking expressions. Therefore, it is only allowed to instantiate
tokens in the Level n. This restriction can be established by using the concept
of potency [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. In the case of MultEcore, a potency specification includes three
values: the first level where one can directly instantiate an element (min), the
last level where one can directly instantiate an element (max), and the number
of times the element can be indirectly re-instantiated (depth). For example, in
Fig. 3 the potency for the class Token will be 2-*-1, since we want to allow only
one instantiation (depth = 1) of Token two (min = 2) or more (max = *) levels
below—where ‘*’ means unbound [
          <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
          ].
        </p>
        <p>
          Data type declaration. A key difference of CPNs (with respect to traditional
PNs) is that one can define data types (colours) for the models. One of the
issues of CPN Tools comes from the fact that it mixes the data types together
with the behaviour of the system which is represented by the CPN model.
Keeping the data types and the behaviour separated provides a great potential for
flexibility and reusability. Recall that the CPN model will belong to an
application hierarchy, and now the data types that the models in the hierarchy might
use can be defined in so-called supplementary hierarchies, making them
independent from the CPN models (hierarchy with italics font in Fig. 2b). Using
MultEcore, model designers can work with different multilevel hierarchies and
fuse them with each other. This allows the concepts to have at least one type
from the levels above in the application hierarchy and potentially one other type
per incorporated supplementary hierarchy [
          <xref ref-type="bibr" rid="ref12 ref13 ref14">12–14</xref>
          ].
        </p>
        <p>Table 1 summarizes the advantages of using MLM and MultEcore as
presented in this paper. The elements appearing in the two first columns come
from the analysis of CPNs and the CPN Tools and their challenges. The last
two columns show the solutions we provide for each of the identified issues both
referring to the technique from the theoretical background and to the concrete
mechanism developed in MultEcore.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Multilevel infrastructure for CPNs</title>
      <p>One advantage of the CPNs language is that it contains few but powerful
modelling constructs, hence, the modeller has few constructs that need to master in
order to use the language. Despite this strength, creating tools with concepts
and rules tailored for specific domains would increase the potential application
of CPNs. However, CPN Tools currently lacks this kind of functionality, which
we propose to solve by introducing a multilevel infrastructure in MultEcore. In
the following, we will explain this infrastructure and argue for several advantages
which we gain by employing a multilevel modelling tool. Namely, explicit levels
of abstraction paving the way for CPN-based DSMLs, clearer specification of
behaviour by restricting instantiations of the Token concept and reusability of
data types declarations by specifying them in separated MLM hierarchies.
3.1</p>
      <sec id="sec-3-1">
        <title>Metamodel</title>
        <p>EClass 1-*-*
node@1-1-* EReference</p>
        <p>EClass 1-*-*
targetArcs@1-1-*</p>
        <p>EReference
1-*-*</p>
        <p>EClass 1-*-*
expression@1-1-*</p>
        <p>EReference
initialMarking@1-1-*</p>
        <p>EReference
EClass 1-*-*</p>
        <p>EClass 2-*-1</p>
        <p>Fig. 3: CPN Metamodel
and Transition inherit all the attributes and methods. The 3-valued potencies
(min, max, depth) of the nodes are defined in red rectangles on top of the nodes.
Potency on arrows are defined after their names, separated by ‘@’. In the case of
attributes, the value of depth is always 1 since we do not instantiate an instance
(e.g., "Bob") of a data type (e.g., string). Hence, only start and end potencies
are depicted in front of the name for attributes, with default value of 1-1.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>CPN model</title>
        <p>From the metamodel in Fig. 3, or a specialised version of it, one can create, for
example, an editor which can be used to specify CPN models. These models
(corresponding to Level n-1 in Fig. 2b) represent the systems which we model,
be it a protocol or an industrial control system. The model in Fig. 4 depicts such
a model which conforms to the metamodel in Fig. 3 and describes the abstract
syntax of the model represented in Fig. 1. We have highlighted the names of the
places and transitions that are explicitly shown in Fig. 1. This abstract syntax is
the one that MultEcore provides out-of-the-box. However, it is straightforward to
define a concrete, user-friendly syntax as the one presented in Fig. 1. The model
specifies a scenario where an arbitrary number of clients can send messages to a
broker, which acknowledges back with the corresponding messages to the clients.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Data type hierarchy</title>
        <p>Recall that a place in a CPN model (an instance of the node Place in the
metamodel) must be specified with a data type which restricts the type of tokens that
the place accepts. In our proposal, behaviour description is separated from data
types declarations; the former is specified in an application hierarchy consisting
of CPN metamodel(s) and models, the latter is specified in its own hierarchy,</p>
        <p>Client</p>
        <p>Arc 1-1-*
tg_sr2@1-1-*</p>
        <p>target
tg_clients@1-1-*
target</p>
        <p>Arc</p>
        <p>1-1-*
tg_ctob@1-1-*</p>
        <p>target
Arc 1-1-*
sc_btoc@1-1-*
Transition 1-1-* source</p>
        <p>ClientxMessage
tg_prequest@1-1-*</p>
        <p>target
tg_btoc@1-1-*
target</p>
        <p>Arc 1-1-*
Place 1-1-* ClientxMe
ssage
Transition 1-1-* tg_sresponse@1-1-*</p>
        <p>target
scso_surrecseponse@1-1-* sc_clientsdb@so1u-r1ce-*</p>
        <p>Arc</p>
        <p>1-1-*
tg_clientsdb@1-1-*
target
Place 1-1-*
which we call supplementary hierarchy. As we see in Fig. 4, some model elements
have two types: for a node, the blue ellipse specifies its type in the application
hierarchy, while the green ellipse specifies the type in a supplementary
hierarchy. One can see that Clients, Messages and ClientsDB places hold Client, Message
and ClientxMessage types, respectively. Figure 5 shows these three data types
declared as classes in an Ecore model. The Message class has an attribute content
of type String. Places of type Message will carry tokens of such type, so they will
have the shape of a typical string. The Client class has declared one attribute,
name, which will represent the name of the client. ClientxMessage describes pairs
of Client and Message elements. The same treatment of type compatibility
applies to arc expressions. There must always be a correspondence between the
supplementary types of arc expressions and places. For example, if the
supplementary type of a certain place is String, the arc expression must evaluate also
to String.
3.4</p>
      </sec>
      <sec id="sec-3-4">
        <title>Behaviour and simulation</title>
        <p>
          The behaviour can be specified with Multilevel Coupled Model Transformations
(MCMTs) [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. MCMTs are based on Graph Transformations – they are
Turing complete – so they are powerful enough to represent the CPN semantics.
        </p>
        <p>Fig. 5: Data types declarations
MCMTs allow us to specify rules across our multilevel hierarchy and can be
applied in the simulation level. In our case the simulation model will be
constructed by applying first the initial marking rules and then the behaviour rules.
With MCMTs we will be able to introduce new levels without modifying the
desired behaviour, and also to override or reuse specified behaviour when
defining DSMLs. MCMTs can also be used to specify, check and enforce inter-level
constraints. From the visualisation point of view, the simulation can be
demonstrated in the instantiation level n-1, but conceptually we have simulation at the
lowest level n.
3.5</p>
      </sec>
      <sec id="sec-3-5">
        <title>CPN-based DSMLs and constraints</title>
        <p>
          Using this multilevel infrastructure, one can further specialise the general CPN
metamodel in Fig. 3, for example, with special types of places and transitions
for a certain domain. These specialisations would be represented in metamodels
typed by the general CPN metamodel, and would correspond to DSMLs and
editors which can be used to define special CPN models. One could argue that
such specializations can be carried on using inheritance in the same metamodel.
However, the use of inheritance means that the metamodel becomes more
complex, it collects concepts for a certain domain which would not be useful at all
for another one or it might create inconsistencies in artifacts created conforming
to such metamodel [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
        <p>
          Recall that a place in a CPN model (an instance of the node Place in the
metamodel) must be specified with a data type which restricts the type of
tokens that the place accepts. This can be specified using an inter-level constraint
which allows us to specify restrictions that need to be evaluated across different
levels [
          <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
          ]. This constraint could be expressed using a property/constraint
specification language such as the LTL language defined in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. However, here
we use MCMTs, since the constraint can be expressed by a simple implication.
The intuition outlined in Fig. 6 shows that a token (instantiated in the
simulation level) can only reside in a place if their data types are identical. The META
block displays two levels separated with a red line and specifies that a token
cannot be instantiated in the same level as P. In the level above the red line we
can see such restriction in the potency on the Token node. In the FROM and
TO blocks we can see how the pattern specifies that, for a token z to reside in a
place p, both must have the same supplementary type Y. Note that it might be
several levels between META and FROM/TO blocks.
        </p>
        <p>CPN-based DSMLs may come with domain specific constraints which reflect
the rules of the domain. For example, we could create a metamodel for a DSML
in which we specify the place Buffer and the transition SendMessage where only
outgoing arcs are allowed from SendMessage to Buffer. Such domain specific
restriction can also be specified using an inter-level constraint, where creating
an arc from SendMessage to Buffer would be disallowed.</p>
        <sec id="sec-3-5-1">
          <title>META</title>
        </sec>
        <sec id="sec-3-5-2">
          <title>FROM</title>
          <p>P
Token
p
z
Place 1-1-* Y</p>
          <p>P
Y</p>
          <p>TO</p>
          <p>P</p>
          <p>Y
p</p>
          <p>tk
tokens</p>
          <p>Token</p>
          <p>Y
z
We are not aware of other proposals for MLM infrastructures for CPNs.
Therefore, in this section we compare our proposal with other MDSE frameworks that
facilitate the definition of CPN models.</p>
          <p>
            Renew [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] is a Java-based high-level Petri net simulator that provides a
flexible modelling approach based on reference nets. The tool is not designed to
be easily extended to other Petri net formalisms or for defining domain-specific
variants for a tailored environment, which is the main focus of our approach.
          </p>
          <p>
            The ePNK [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ] is an Eclipse based platform for developing and integrating
Petri nets tools. The tool provides a fixed Petri net metamodel which the
modeller needs to extend (using inheritance relations) to provide the new Petri net
type. This approach lacks, first, the separation of concepts in different levels of
abstractions and, second, facilities for the definition of domain-specific versions
since this would imply to modify the metamodel which already mixes two levels
of abstraction (the core model and the new defined Petri net type).
5
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusions</title>
      <p>In this paper we have described how multilevel modelling and the use of
MultEcore can improve the CPNs language and associated tools and provide more
flexibility, adaptability and reusability for domain-specific variants.</p>
      <p>The MultEcore tool allows to work with separate projects—each one
representing a hierarchy—and combine them in a flexible way. Our application
hierarchy corresponds to the CPN project, that will contain at least the CPN
metamodel to define CPN models. The data types to be used in the application
hierarchy can be declared in several supplementary hierarchies.</p>
      <p>As part of the future work, we plan to create a stronger support for data types
declarations. We will incorporate the possibility of using collections (Lists, Maps,
etc.) to create complex structures as data types. Moreover, current CPN Tools
allows to organize a model into different modules, however they are managed in
the same file. We plan to extend our approach to take into account modularity
in the models providing an efficient mechanism to structure them.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>1. CPN tools. http://cpntools.org/.</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>2. MetaCase. metacase.com/.</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>3. UML. http://www.uml.org/.</mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>C.</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Kühne</surname>
          </string-name>
          .
          <article-title>Reducing accidental complexity in domain models</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ):
          <fpage>345</fpage>
          -
          <lpage>359</lpage>
          ,
          <year>Jul 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>J.</given-names>
            <surname>Billington</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Diaz</surname>
          </string-name>
          .
          <article-title>Application of Petri nets to Communication Networks: Advances in Petri nets</article-title>
          , volume
          <volume>1605</volume>
          . Springer Science &amp; Business
          <string-name>
            <surname>Media</surname>
          </string-name>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>J.</given-names>
            <surname>Desel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Reisig</surname>
          </string-name>
          , and G. Rozenberg, editors.
          <source>Lectures on Concurrency and Petri Nets, Advances in Petri Nets</source>
          , volume
          <volume>3018</volume>
          <source>of LNCS</source>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>K.</given-names>
            <surname>Jensen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Kristensen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Wells</surname>
          </string-name>
          .
          <article-title>Coloured petri nets and cpn tools for modelling and validation of concurrent systems</article-title>
          .
          <source>International Journal on Software Tools for Technology Transfer</source>
          ,
          <volume>9</volume>
          (
          <issue>3</issue>
          ):
          <fpage>213</fpage>
          -
          <lpage>254</lpage>
          ,
          <year>Jun 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>E. Kindler.</surname>
          </string-name>
          <article-title>EPNK: A Generic PNML Tool Users' and Developers' Guide</article-title>
          .
          <source>DTU Informatics</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Kristensen</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Christensen</surname>
          </string-name>
          .
          <article-title>Implementing coloured petri nets using a functional programming language</article-title>
          .
          <source>Higher-order and symbolic computation</source>
          ,
          <volume>17</volume>
          (
          <issue>3</issue>
          ):
          <fpage>207</fpage>
          -
          <lpage>243</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>O.</given-names>
            <surname>Kummer</surname>
          </string-name>
          .
          <article-title>Renew-the reference net workshop</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>J. D. Lara</surname>
            , E. Guerra, and
            <given-names>J. S.</given-names>
          </string-name>
          <string-name>
            <surname>Cuadrado</surname>
          </string-name>
          .
          <article-title>When and how to use multilevel modelling</article-title>
          .
          <source>ACM Transactions on Software Engineering and Methodology (TOSEM)</source>
          ,
          <volume>24</volume>
          (
          <issue>2</issue>
          ):
          <fpage>12</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>F.</given-names>
            <surname>Macías</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Stolz</surname>
          </string-name>
          .
          <article-title>Multilevel modelling with multecore a contribution to the multi 2017 challenge</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>F.</given-names>
            <surname>Macías</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Stolz</surname>
          </string-name>
          .
          <article-title>MultEcore: Combining the best of fixed-level and multilevel metamodelling</article-title>
          .
          <source>In MULTI</source>
          , volume
          <volume>1722</volume>
          <source>of CEUR Workshop Proceedings. CEUR-WS.org</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>F.</given-names>
            <surname>Macías</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Stolz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rodriguez-Echeverria</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Wolter</surname>
          </string-name>
          .
          <article-title>An approach to flexible multilevel modelling</article-title>
          . To appear in EMISAJ, available at http://ict.hvl.no
          <article-title>/approach-flexible-multilevel-modelling/.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>F.</given-names>
            <surname>Macías</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Wolter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Durán</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Rodriguez-Echeverria</surname>
          </string-name>
          .
          <article-title>Multilevel coupled model transformations for precise and reusable definition of model behaviour. Submitted for publication</article-title>
          , online at https://goo.gl/wJ5VQk,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>P.</given-names>
            <surname>Mohagheghi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Gilani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Stefanescu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Fernández</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Nordmoen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Fritzsche</surname>
          </string-name>
          .
          <article-title>Where does model-driven engineering help? Experiences from three industrial cases</article-title>
          .
          <source>Software and System Modeling</source>
          ,
          <volume>12</volume>
          (
          <issue>3</issue>
          ):
          <fpage>619</fpage>
          -
          <lpage>639</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>W.</given-names>
            <surname>Reisig</surname>
          </string-name>
          .
          <article-title>Petri nets: an introduction</article-title>
          , volume
          <volume>4</volume>
          . Springer Science &amp; Business
          <string-name>
            <surname>Media</surname>
          </string-name>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>W.</given-names>
            <surname>Reisig</surname>
          </string-name>
          .
          <article-title>Elements of distributed algorithms: modeling and analysis with Petri nets</article-title>
          . Springer Science &amp; Business
          <string-name>
            <surname>Media</surname>
          </string-name>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>A.</given-names>
            <surname>Rutle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Macías</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Durán</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rodriguez-Echeverría</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Wolter. Describing Behaviour</surname>
          </string-name>
          <article-title>Models through Reusable, Multilevel, Coupled Model Transformations</article-title>
          .
          <source>Proceedings of NWPT 2016</source>
          , pages
          <fpage>49</fpage>
          -
          <lpage>51</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>D.</given-names>
            <surname>Steinberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Budinsky</surname>
          </string-name>
          , E. Merks, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Paternostro</surname>
          </string-name>
          .
          <article-title>EMF: eclipse modeling framework</article-title>
          .
          <source>Pearson Education</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>J. D. Ullman</surname>
          </string-name>
          .
          <article-title>Elements of ML programming. Prentice-Hall, Inc</article-title>
          .,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>M. Völter</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Benz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Dietrich</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Engelmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Helander</surname>
            ,
            <given-names>L. C. L.</given-names>
          </string-name>
          <string-name>
            <surname>Kats</surname>
            , E. Visser, and
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Wachsmuth. DSL</surname>
          </string-name>
          Engineering - Designing,
          <article-title>Implementing and Using Domain-Specific Languages. dslbook</article-title>
          .org,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>