<!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>
      <journal-title-group>
        <journal-title>October</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>A generic solution for weaving business code into executable models</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Eric Cariou Olivier Le Goaer Léa Brunschwig Franck Barbier Univ Pau &amp; Pays Adour Laboratoire d'Informatique de l'Université de Pau et des Pays de l'Adour</institution>
          ,
          <addr-line>EA3000 PAU</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Executable DSL</institution>
          ,
          <addr-line>Xmodeling, operational semantics, CASE tool, EMF</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <volume>14</volume>
      <issue>2018</issue>
      <abstract>
        <p>The separation of concerns is a fundamental principle that allows to build a software with separate parts, thereby improving their maintainability and evolutivity. Executable models are good potential representatives of this principle since they capture the behavior of a software-intensive system, that is, when, why and how calling business operations, while the latter are specified apart. EMF is the de facto framework used to create an executable DSL (xDSL) but a solution to weave business operations into it is still missing. This is compounded by the fact that such business operations can be tied to specific technological platforms that stand outside the EMF world (e.g. Android SDK). To that purpose, in this paper we describe a solution for managing business operations both at design-time (creation of executable models with EMF) and at run-time (operation calls from the deployed execution engine). This solution is generic enough to be integrated into any Java-based environment and for any xDSL.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>INTRODUCTION</title>
      <p>Executable modeling (Xmodeling) is receiving increasing
attention, and hence creation of Executable Domain Specific Languages
(xDSL) is centerstage. Executable models can be used for
simulation purpose with mock data and operations, but they may also be
deployed onto real devices. In that case, the formalism of the DSL
captures the behavior of a system, while an embedded execution
engine is responsible for the proper call of business-level operations
(APIs) provided by the targeted platform.</p>
      <p>For example, each elevator has its own firmware responsible for
opening and closing doors, winding/unwinding the cable to reach a
given floor. The actions of the elevator may be triggered according
to a set of states and transitions preferably modeled through a finite
state machine formalism. As another example, a travel booking
system running on a server inserts customers information into a
database or call Web services provided by air transport companies.
The behavior of such a system specifies when these business
routines have to be executed and under what conditions. The calls to
the various Web services may be orchestrated through a BPEL or
BPMN formalism.</p>
      <p>However, a problem arises when using and creating an
executable DSL (xDSL) for using such executable models: the data flow
management. Writing a piece of code in a classic way consists in
weaving a control flow with a data flow. Let’s consider these basic
lines of Android-inspired Java code:
1
3
5
. . .</p>
      <p>C u r s o r sms = smsManager . g e t A l l S M S ( ) ;
S t r i n g j s o n = cloudManager . c u r s o r 2 J S O N ( sms ) ;
cloudManager . s a v e ( j s o n ) ;
. . .</p>
      <p>The first line of code retrieves all the SMS stored into the
smartphone. Then, this set of SMS is passed as parameter to a second
method converting them into a neutral JSON format. Finally, in
the last line of code, this JSON contents is saved in a Cloud. The
control flow consists here in the definition of the sequence of the
method calls and on which object they are called (here smsManager
or cloudManager). The data flow consists in passing parameters to
the methods and getting the resulting objects that could be further
parameters of other methods. Here for instance, the object named
"sms" is obtained by the first method call and passed as parameter to
the second method. Of course, depending on the business methods,
the number and type of parameters can vary as needed.</p>
      <p>As an example of xDSL for applying our solution for managing
business operations, we have defined a simple DSL using EMF: PDL
for Process Definition Language. A process is composed of a set
of ordered activities. The idea is that business operations can be
associated with each activity. For our Android example, this will
lead to define a PDL model with a sequence of three activities, one
for each line of code. From now on, the control flow is reified in the
form of a PDL model and the software engineer is only in charge of
implementing the business operations. This is the execution engine
of PDL that will carry out the complete execution of the model:
once the business operation of an activity is finished, it goes to the
next activity and executes its business operation and so on till the
end of the process.</p>
      <p>However, an important problem remains: how to define the data
lfow? How does one set for an activity which is the operation to be
called, on which Java business object and with which parameters?
How does one store the result of an operation to reuse it afterward
as a parameter of the operation of another activity? This problem
is not specific to our PDL language but is a recurrent problem
when defining xDSL where executable elements are associated
with business-level operations. In this paper, we propose a generic
solution for managing a data flow during the definition of any xDSL.
It is composed of a set of meta-classes that can be added in any
Ecore metamodel to define a data flow and a set of EMF Java classes
that are used to define the execution engine thereof and that will
manage automatically the execution of business operations. This
solution is delivered as an Eclipse/EMF plugin called Xmodeling
Studio 1.</p>
      <p>We took Android as an example because development of an
Android application requires the Android SDK and the Android
Studio IDE, and it can certainly not be achieved in Eclipse/EMF. In
this paper, we describe the integration of the execution engine of a
xDSL defined with Xmodeling Studio and how to use its executable
models in any Java-based development using any IDE. We are
convinced that being able to push xDSL and models into mainstream
software development (independently of Eclipse/EMF) can lead to
a wider adoption of MDE.</p>
      <p>The rest of this paper is organized as follows. In Section 2 we
describe how a language engineer implements a xDSL, its
metamodel and execution engine, using Xmodeling Studio. In Section 3,
we explain how a software engineer uses the xDSL defined in any
Java development. Before concluding, we discuss related work in
Section 4.
2</p>
    </sec>
    <sec id="sec-2">
      <title>DEFINITION OF A XDSL</title>
      <p>In this Section, we explain how a language engineer can create a
xDSL using Xmodeling Studio with associated business operations.
As an example, we first define PDL which Ecore meta-model is
depicted on Figure 1. Roughly, a process is composed of a set of
activities, has a first and a last activity, and all these activities are
ordered through their next/previous references. The reference
currentActivity in Process enables to know which is the current
active activity when the model is interpreted by the engine. The
meta-classes Xmod_Action and Xmod_Operation (in green) are not
part of the PDL definition. They are meta-classes automatically
added by Xmodeling Studio for managing business operations as
we explain in the following.
2.1</p>
    </sec>
    <sec id="sec-3">
      <title>Meta-classes</title>
      <p>The main idea is at run-time to tag the Java objects that will be
either parameters or return values of business methods and also
the objects on which the methods are called. The pairs tag/object
are then put in a Java map (java.util.Map) that will be used by
the execution engine to retrieve the objects, as we will see in the
following.</p>
      <p>A business operation (i.e. a plain Java method in the code) is
defined with the meta-class Xmod_Operation. It has a method name,
a set of parameters, a possible return value and the object on which
it will be executed. This information (excepting the method name)
corresponds to the tags of the Java objects in the map.</p>
      <p>The meta-class Activity from PDL metamodel specializes
Xmod_Action. This is how the business operations are added on
metaelements. We have leveraged the semantics of UML state machines
for associating business operations as for an UML state: on entry,
on exit and the do action. For almost all xDSL, the execution
semantics consists in activating elements and deactivating other ones:
1The tool is available at this address: http://www.pauware.com/xmodeling
from a state to another one when following a transition, from an
activity to the next one when the current activity is finished. . . So,
these notions of entering and exiting an element can be generalized
to any xDSL. The three operations are optional. However, if one
does not want to follow our pattern, the operations link between
Activity and Xmod_Operation enables to add operations and to
execute them as desired within the execution engine.</p>
      <p>The link between our generic meta-classes and those of an Ecore
metamodel can be made in two ways with our Eclipse plugin. If
you have an existing metamodel, you have to annotate some
metaclasses: by "Xmod_main" for the root element of the Ecore
metamodel (that will help in the code generation as explained further)
and by "Xmod_action" for elements that need to specialize
Xmod_Action. Then, you launch a metamodel-to-metamodel
transformation that will add our generic meta-classes at the right place in your
metamodel. If you want to build a brand new xDSL, you create an
"Empty Xmodeling project". This will create an EMF project with
an Ecore metamodel containing our generic meta-classes. In both
cases, in the "src-gen/" directory of the EMF project, the EMF code
of our meta-classes will be placed including the built-in code for
automatically executing business operations.
2.2</p>
    </sec>
    <sec id="sec-4">
      <title>Execution engine</title>
      <p>We provide the implementation of the EMF Java classes with the
code that will automatically execute business operations. The main
part of this implementation is the execute method of
Xmod_Operation. Based on the tags, it first retrieves in the map the objects
that will be the parameters of the method and also the object on
which the method has to be called. Based on these objects and the
method name, a dynamic call of the method is made trough the
reflection mechanism of Java. If the method returns a value, it is
put in the map with the right tag.</p>
      <p>An utility class is also automatically generated for managing the
map and the models. It is put for our example in the EMF generated
PDL.util package and is called "PDLXmodUtil". This class contains
static Java methods for:
• Loading a model and getting its root element, based on the
"Xmod_main" annotation put on one meta-class of the
metamodel. In our example, this annotation has been put on the
Process meta-class, so the generated method will have the
following signature:</p>
      <p>Process loadProcess(String fileName)
• Saving a model through a root element, here again based on</p>
      <p>the "Xmod_main" annotation
• Getting and setting the object map
• Loading and saving the in-memory object map through an</p>
      <p>XML file</p>
      <p>During the execution, saving the model and the map allows to
save the complete current state of this application: both its
behavioral state and the current contents of the business objects. It can
be used to build an execution trace that can be afterwards analysed
or to reload and restart the application at a given point in time.</p>
      <p>However, depending on the size and number of the Java objects in
the map and on the size of the model, such loading and saving can
be heavy-load operations and then should be used sparingly.
1 / / c r e a t e t h e i n i t i a l c o n t e n t s o f t h e map with b u s i n e s s</p>
      <p>/ / o b j e c t s on which methods w i l l be c a l l e d
3 HashMap&lt; S t r i n g , Object &gt; map = new HashMap &lt; &gt; ( ) ;</p>
      <p>SMSManager smsManager = new SMSManager ( . . . ) ;
3 IMPLEMENTATION OF A SOFTWARE WITH 5 CloudManager cloudManager = new CloudManager ( . . . ) ;
map . put ( " sms " , smsManager ) ;</p>
      <p>A XDSL 7 map . put ( " c l o u d " , cloudManager ) ;
3.1 Business code and executable model 9 // // lgoeande r taht eed c ount ti elinttasr yo f ctlha es s PDL model through our
Once the language engineer has released its xDSL, any software P r o c e s s proc ;
engineer can used it to create a software. He/her has to provide 11 proc = PDLXmodUtil . l o a d P r o c e s s ( " SMSBackupWorkflow . xmi " ) ;
an implementation in Java for the business operations (getAllSMS, / / s e t t h e map through our g e n e r a t e d u t i l i t a r y c l a s s
cursor2JSON and save for our Android example). This develop- 13 PDLXmodUtil . setMap ( map ) ;
ment can be made in any Java environment. Then, using EMF,
he/she defines the executable PDL model. If using a textual syntax
2This concrete syntax has not yet been implemented for PDL. Currently, the PDL
model is created using the EMF generic XMI file editor as presented on Figure 2.a.
13
15
11</p>
      <p>Thanks to this generic code, the implementation of the
execution engine for PDL is straightforward. It consists mainly in
implementing the executeProcess method of Process within the EMF
generated code:
created with Xtext2, it will give the model of the Figure 2.b for our
Android example. It defines a sequence of three tasks each one
associated with one business operation (on entry for the two first and
on do for the last one). The "on" enables to express on which object
(its tag) the operation will be called, "result" the tag of the returned
object of the operation. We can notice the tag "allSMSContent"
is the result of the operation of the first activity and is passed as
parameter for the operation of the second one. In the same way, the
result of the second activity tagged "json" is passed as the parameter
of the operation of the last activity. This way, the data flow among
activities is automatically managed and our generic implemented
EMF Java classes will manage the Java objects at run-time through
their tags.</p>
      <p>For the software engineer building a business application, once
its PDL model defined, he/she has to write a code that will initialize
the contents of the map and then launch the process execution. For
instance, for our small example, it will be something like this:
(a) abstract syntax</p>
      <p>(b) textual concrete syntax
Unlike EMF standalone deployment which is done typically
exporting as RCP Application, we need a custom, minimal deployment.</p>
      <p>Indeed, the interpreter has no graphical user interface: it is rather
an autonomous executable JAR, able to take XMI files as inputs;
provided they conform to the metamodel of the given xDSL. The
core libraries coming from EMF that must be isolated from the rest
are:
• org.eclipse.emf.common.jar
• org.eclipse.emf.ecore.xmi.jar
• org.eclipse.emf.ecore.jar
• org.eclipse.ocl.pivot.jar</p>
      <p>In addition, the package of the ANTLR Parser generated by
Xtext can be embedded so that a concrete textual syntax is also
supported as input. The lightweight, low-dependency and
lowmemory footprint criterion must drive the deployment phase so
that the interpreter is truly embeddable in tiny devices like Android
smartphones for example (the four above packages have a total
size under 5 MB and even under 2 MB without the OCL run-time
verification package).</p>
      <p>As a proof of concept, we have successfully implemented a simple
Android application with Android Studio using PDL 3. It basically
requires to add in the project the EMF JAR files listed just above,
3Sources and technical details are available on http://www.pauware.com/xmodeling/
android-example.html
the JAR generated from the EMF classes for PDL including the code
of the PDL execution engine and of our generic code for managing
the data flow. The SMSBackupW ork f low .xmi file has also to be
put in the project.
3.3</p>
    </sec>
    <sec id="sec-5">
      <title>Discussion</title>
      <p>At a glance, this way of programming is more complex and less
convenient than the classic way but this is due to the basic
application example and the choice of a minimalist metamodel as a xDSL
example. Our PDL simply executes one sequence of activities and
our Java example is a sequence of lines of code. Consequently, in
both cases, the behavior is reifed under the concept of sequence.
Then, the xDSL does not ofer a more high-level and abstract way
to define the behavioral part of an application. But let’s imagine
an extension of PDL with parallel sequences and forks or joins
among them. In this case, writing by hand in Java an application
following this behavior (such as a method that must wait the end of
several parallel methods to be executed) will be a headache whereas
it will be straightforward and much quicker using the extended
PDL formalism as simply requiring to define a model. This
highlights the interest of using xDSL for defining the behavior of an
application. Another benefit of such an approach is that changing
the behavior of the application is simply made by modifying the
model and does not require to change any line of Java code (except
business operations of course).</p>
      <p>Using a map requiring to put in it all the objects used as
parameters, return values and target objects of the business methods
seems to be fastidious. But if you are using coarse-grained business
actions, once the initialization of the business objects on which the
operations will be called is done and that they have been put in the
map, the data flow is automatically managed: results of activities
will mainly be the entries of other ones as defined in the high-level
executable model. It will not be necessary to put many other objects
in the map.
4</p>
    </sec>
    <sec id="sec-6">
      <title>RELATED WORK</title>
      <p>
        Several recent research initiatives have been launched to help in
building executable DSLs and associated tools. The GEMOC
Studio [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] enables to define such DSLs with a lot of tooling features
for model edition, simulation, debugging, code generation,
definition of execution engine. . . The GEMOC initiative has for goal
to integrate diferent features and works around implementation
at large of executable DSL. Melange [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] enables also to integrate
several DSLs together and to define an execution engine in
Kermeta 34. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] provide generic approaches to add trace and
debugging features to any executable DSL. xMOF [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] allows to
defined for MOF-based DSL an execution semantics with fUML [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
[
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] is also using fUML for defining an execution semantics but for
UML profiles. Kermeta is an interesting language for developing a
xDSL: high-level executable code is added by aspect mechanisms
to meta-classes, making a clear separation between the structural
meta-model and the code manipulating the model. Then, Kermeta
can generate the equivalent Java code, that is, the running
execution engine. All these works ofer interesting and powerful features
which can be inspiring for our Xmodeling CASE tool but they do
not explicitly focus on the business part of the software application
to build as we do.
      </p>
      <p>
        Of course business code can be integrated during the software
development and even legacy code when using these tools. For
instance, [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] merges existing DSLs using Melange for specifying
business and behavorial parts of an IoT (Internet of Thing)
application. But as the development of the final software is mainly based
on Eclipse/EMF, it can make dificult to reuse some existing
frameworks and can even make some developments almost impossible
as for Android applications.
      </p>
      <p>
        [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] uses a middleware to make interacting a model execution
engine (called a virtual machine) for a xDSL with business services.
The description of the business operations is made through
dedicated script controls whereas in our approach, there are defined
directly in the executable model and associated with executable
elements. Their approach deals also with advanced features such
as runtime adaptability based on context and available resources.
With Xmodeling Studio, we focus only on the execution engine
implementation and its link with business operations in order to
make it the most simple to integrate in any Java-based software
development.
      </p>
      <p>
        fUML is used in previous citations as a language for defining the
semantics of a modeling language, i.e. at the metamodeling level,
but it has been released originally for defining the equivalent of
a programming code in UML models. One can then design for an
application the class diagrams, state machines, sequences diagrams
and any required diagrams and then add the contents of the class
methods in fUML either through a kind of activity diagram or
using a pseudo-code syntax thanks to ALF [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. For instance, [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
generates Java or C++ code from fUML specifications. The software
4http://www.kermeta.org
engineer can then add the business part of the application in the
UML models. It enables a 100% model development of a software
application which is somehow the holy grail of MDD. However in
this case, it is not possible to reuse existing code developed in a
standard programming language: everything has to be translated
under the form of UML diagrams and fUML code which is not
an easy task and is indisputably a brake on the use of these
fullmodeling techniques.
      </p>
      <p>
        At the complete opposite of these full-modeling approaches but
still in making a clear separation between the behavioral and the
business parts, there is a tool such as PauWare5 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. PauWare is
both a Java library for "programming" UML state machines and an
execution engine for them. Developing with PauWare consists in
instantiating Java library classes for creating the states and
transitions of the state machine and to associate with them business
actions coded through Java methods. With PauWare, everything is
directly defined in plain Java and using it simply required to add a
JAR file in the Java project of your favorite or required IDE. The
UML state machine is not defined with a modeling tool but is reified
under a set of instances of Java classes, that is, at a low level.
      </p>
      <p>In this paper, we propose an intermediate and pragmatic
approach where the behavioral part of an application is defined with
an executable model and the business part is defined by the
software engineer in plain Java. This allows him/her to reuse directly
existing code and to use the IDE he/she prefers or the one that is
required such as Android Studio when developing Android
mobile applications. We propose tools and techniques to glue these
behavioral and business parts together through automatic code
generation, for any executable DSL.
5</p>
    </sec>
    <sec id="sec-7">
      <title>CONCLUSION</title>
      <p>In this paper, we have presented a solution for weaving business
operations into executable elements of any xDSL. Inspired by the
semantics of UML state machines, business operations are
associated with an executable element on entry (when it is actived), on
exit (when it is deactivated) and as a do action (when running). We
provide generic meta-classes for defining business operations that
can be automatically added to any meta-model. We also provide
boilerplate EMF Java classes for these meta-classes that contain a
generic code carrying out the automatic execution of the business
operations through the Java reflection mechanism and helping in
the implementation of the execution engine of a xDSL. At run-time,
the Java objects (business objects, method parameters or returned
values) are put in a map. Our generic code will access to this map
to get or set the required objects for an operation execution. This
enables to manage the data flow among operations while the
control flow is reified within the executable model. This solution is
available trough an Eclipse/EMF plugin called Xmodeling Studio.</p>
      <p>The originality of this solution is that it is mixing modeling and
programming for an easier integration of MDE into everyday
software developments within the Java ecosystem. Whilst defining a
xDSL for simulation does not required business code, for a concrete
software development where using existing API or legacy code is
unavoidable, the link between these business parts and the
executable model must be made. The xDSL created with Xmodeling
Studio, more precisely their execution engines, can be deployed
independently of the targeted software or platforms: an Android
application, a Web server, a desktop application, an Arduino
program. . . This is due to the fact the executable model may reify any
kind of application behavior, independently of the business
operations required. They will be called by our generic EMF Java
classes.</p>
      <p>
        As perspectives, we will continue the development of Xmodeling
Studio with new features. As well-established, an executable model
contains static and dynamic elements [
        <xref ref-type="bibr" rid="ref10 ref14 ref6 ref7 ref8 ref9">6–10, 14</xref>
        ]. Static elements
define the contents of the model (for PDL, the sequence of
activities) whereas dynamic ones are used to manage the execution of
the model (here the currentActivity reference of Process
allowing to know which is the current activity under execution). The
static elements of the model must not been changed during the
execution: if you change the activities of a PDL model, you are
changing the behavior of your software. In some cases, it can be
considered for run-time adaptation [
        <xref ref-type="bibr" rid="ref19 ref8">8, 19</xref>
        ], but in most cases, it
will be an unexpected problem. Hence, we plan to control the code
written by the language engineer during the implementation of the
execution engine of his/her xDSL in order to avoid at run-time the
modification of the static elements of the executable models.
      </p>
    </sec>
    <sec id="sec-8">
      <title>ACKNOWLEDGMENTS</title>
      <p>
        The presented work is part of the MegaM@RT2 project
(Megamodeling at Runtime – Scalable Model-based Framework for
Continuous Development and Runtime Validation of Complex Systems)
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] which has received funding from the Electronic Component
Systems for European Leadership Joint Undertaking (ECSEL-JU)
under grant agreement No. 737494. This project receives support
from the European Union’s Horizon 2020 research and innovation
program and from Sweden, Spain, Italy, Finland &amp; Czech Republic.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Wasif</given-names>
            <surname>Afzal</surname>
          </string-name>
          , Hugo Bruneliere, Davide Di Ruscio, Andrey Sadovykh, Silvia Mazzini, Eric Cariou, Dragos Truscan, Jordi Cabot, Daniel Field, Luigi Pomante, and
          <string-name>
            <given-names>Pavel</given-names>
            <surname>Smrz</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>The MegaMRt2 ECSEL Project - MegaModelling at Runtime - Scalable Model-based Framework for Continuous Development and Runtime Validation of Complex Systems</article-title>
          .
          <source>In European Projects in Digital Systems Design (EPDSD)</source>
          ,
          <string-name>
            <surname>Euromicro</surname>
            <given-names>DSD</given-names>
          </string-name>
          /SEAA
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Franck</given-names>
            <surname>Barbier</surname>
          </string-name>
          .
          <year>2016</year>
          .
          <article-title>Reactive Internet Programming - State Chart XML in Action. the Association for Computing Machinery</article-title>
          and Morgan &amp; Claypool. http://www.pauware.com.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Erwan</given-names>
            <surname>Bousse</surname>
          </string-name>
          , Thomas Degueule, Didier Vojtisek, Tanja Mayerhofer, Julien Deantoni, and
          <string-name>
            <given-names>Benoit</given-names>
            <surname>Combemale</surname>
          </string-name>
          .
          <year>2016</year>
          .
          <article-title>Execution Framework of the GEMOC Studio (Tool Demo)</article-title>
          .
          <source>In Proceedings of the 2016 ACM SIGPLAN International Conference on Software Language Engineering (SLE</source>
          <year>2016</year>
          ), ACM (Ed.). https: //hal.inria.fr/hal-01355391
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Erwan</given-names>
            <surname>Bousse</surname>
          </string-name>
          , Dorian Leroy, Benoit Combemale, Manuel Wimmer, and
          <string-name>
            <given-names>Benoit</given-names>
            <surname>Baudry</surname>
          </string-name>
          .
          <year>2018</year>
          .
          <article-title>Omniscient Debugging for Executable DSLs</article-title>
          .
          <source>Journal of Systems and Software</source>
          (
          <year>2018</year>
          ). http://www.sciencedirect.com/science/article/pii/ S0164121217302765
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Erwan</given-names>
            <surname>Bousse</surname>
          </string-name>
          , Tanja Mayerhofer, Benoit Combemale, and
          <string-name>
            <given-names>Benoit</given-names>
            <surname>Baudry</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>A Generative Approach to Define Rich Domain-Specific Trace Metamodels</article-title>
          .
          <source>In 11th European Conference on Modelling Foundations and Applications (ECMFA</source>
          <year>2015</year>
          )
          <article-title>(LNCS)</article-title>
          , Vol.
          <volume>9153</volume>
          . Springer,
          <fpage>45</fpage>
          -
          <lpage>61</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Erwan</given-names>
            <surname>Breton</surname>
          </string-name>
          and
          <string-name>
            <given-names>Jean</given-names>
            <surname>Bézivin</surname>
          </string-name>
          .
          <year>2001</year>
          .
          <article-title>Towards an understanding of model executability</article-title>
          .
          <source>In Proceedings of the international conference on Formal Ontology in Information Systems (FOIS '01)</source>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Eric</given-names>
            <surname>Cariou</surname>
          </string-name>
          , Cyril Ballagny, Alexandre Feugas, and
          <string-name>
            <given-names>Franck</given-names>
            <surname>Barbier</surname>
          </string-name>
          .
          <year>2011</year>
          .
          <article-title>Contracts for Model Execution Verification</article-title>
          .
          <source>In Seventh European Conference on Modelling Foundations and Applications (ECMFA</source>
          <year>2011</year>
          )
          <article-title>(LNCS)</article-title>
          , Vol.
          <volume>6698</volume>
          . Springer,
          <fpage>3</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Eric</given-names>
            <surname>Cariou</surname>
          </string-name>
          , Olivier Le Goaer, Franck Barbier, and
          <string-name>
            <given-names>Samson</given-names>
            <surname>Pierre</surname>
          </string-name>
          .
          <year>2013</year>
          .
          <article-title>Characterization of Adaptable Interpreted-DSML</article-title>
          .
          <source>In 9th European Conference on Modelling Foundations and Applications (ECMFA</source>
          <year>2013</year>
          )
          <article-title>(LNCS)</article-title>
          , Vol.
          <volume>7949</volume>
          . Springer,
          <fpage>37</fpage>
          -
          <lpage>53</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Peter J. Clarke</surname>
            , Yali Wu,
            <given-names>Andrew A.</given-names>
          </string-name>
          <string-name>
            <surname>Allen</surname>
            , Frank Hernandez,
            <given-names>Mark</given-names>
          </string-name>
          <string-name>
            <surname>Allison</surname>
          </string-name>
          , and Robert France.
          <year>2013</year>
          .
          <article-title>Formal and Practical Aspects of Domain-Specific Languages: Recent Developments</article-title>
          .
          <source>IGI Global, Chapter</source>
          <volume>9</volume>
          :
          <article-title>Towards Dynamic Semantics for Synthesizing Interpreted DSMLs</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Benoit</surname>
            <given-names>Combemale</given-names>
          </string-name>
          , Xavier Crégut, and
          <string-name>
            <given-names>Marc</given-names>
            <surname>Pantel</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>A Design Pattern to Build Executable DSMLs and associated V&amp;V tools</article-title>
          .
          <source>In The 19th Asia-Pacific Software Engineering Conference (APSEC</source>
          <year>2012</year>
          ). IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Thomas</surname>
            <given-names>Degueule</given-names>
          </string-name>
          , Benoit Combemale, Arnaud Blouin, and
          <string-name>
            <given-names>Olivier</given-names>
            <surname>Barais</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Reusing Legacy DSLs with Melange</article-title>
          .
          <source>15th Workshop on Domain-Specific Modeling.</source>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Thomas</surname>
            <given-names>Degueule</given-names>
          </string-name>
          , Benoit Combemale, Arnaud Blouin, Olivier Barais, and
          <string-name>
            <given-names>JeanMarc</given-names>
            <surname>Jézéquel</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Melange: A Meta-language for Modular and Reusable Development of DSLs</article-title>
          .
          <source>In Proceedings of the 2015 ACM SIGPLAN International Conference on Software Language Engineering (SLE</source>
          <year>2015</year>
          ). ACM, New York, NY, USA,
          <fpage>25</fpage>
          -
          <lpage>36</lpage>
          . https://hal.inria.fr/hal-01197038/document
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Codrut</surname>
          </string-name>
          ,-Lucian Lazăr, Ioan Lazăr, Bazil Pârv, Simona Motogna, and
          <string-name>
            <surname>István-Gergely Czibula</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Tool Support for fUML Models</article-title>
          .
          <source>International Journal of Computers Communications &amp; Control</source>
          <volume>5</volume>
          ,
          <issue>5</issue>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Grzegorz</surname>
            <given-names>Lehmann</given-names>
          </string-name>
          , Marco Blumendorf, Frank Trollmann, and
          <string-name>
            <given-names>Sahin</given-names>
            <surname>Albayrak</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Meta-Modeling Runtime Models</article-title>
          .
          <source>In Models@run.time Workshop at MoDELS 2010 (LNCS)</source>
          , Vol.
          <volume>6627</volume>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Tanja</surname>
            <given-names>Mayerhofer</given-names>
          </string-name>
          , Philip Langer, Manuel Wimmer, and
          <string-name>
            <given-names>Gerti</given-names>
            <surname>Kappel</surname>
          </string-name>
          .
          <year>2013</year>
          .
          <article-title>xMOF: Executable DSMLs Based on fUML</article-title>
          .
          <source>In The 2013 International Conference on Software Language Engineering (SLE '13) (LNCS)</source>
          , Springer (Ed.), Vol.
          <volume>8225</volume>
          . Springer,
          <fpage>56</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Karl</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Morris</surname>
          </string-name>
          , Mark Allison,
          <string-name>
            <surname>Fábio M. Costa</surname>
          </string-name>
          , Jinpeng Wei, and
          <string-name>
            <surname>Peter J. Clarke</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>An adaptive middleware design to support the dynamic interpretation of domain-specific models</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>62</volume>
          (
          <year>2015</year>
          ),
          <fpage>21</fpage>
          -
          <lpage>41</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>OMG</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Action Language for Foundational UML (ALF), version 1.1</article-title>
          . http://www.omg.org/spec/ALF/1.1/.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>OMG</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Semantics of a Foundational Subset for Executable UML Models (fUML), version 1.3</article-title>
          . http://www.omg.org/spec/FUML/1.3/.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Samson</surname>
            <given-names>Pierre</given-names>
          </string-name>
          , Eric Cariou, Olivier Le Goaer, and
          <string-name>
            <given-names>Franck</given-names>
            <surname>Barbier</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>A Familybased Framework for i-DSML Adaptation</article-title>
          .
          <source>In 9th European Conference on Modelling Foundations and Applications (ECMFA</source>
          <year>2014</year>
          )
          <article-title>(LNCS)</article-title>
          , Vol.
          <volume>8569</volume>
          . Springer,
          <fpage>164</fpage>
          -
          <lpage>179</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Jérémie</surname>
            <given-names>Tatibouët</given-names>
          </string-name>
          , Arnaud Cuccuru, Sébastien Gérard, and
          <string-name>
            <given-names>François</given-names>
            <surname>Terrier</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Formalizing Execution Semantics of UML Profiles with fUML Models</article-title>
          .
          <source>In 17th International Conference on Model Driven Engineering Languages and Systems (MODELS</source>
          <year>2014</year>
          )
          <article-title>(LNCS)</article-title>
          , Vol.
          <volume>8767</volume>
          . Springer,
          <fpage>133</fpage>
          -
          <lpage>148</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>