<!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 Case Study in Combining Formal Verification and Model-Driven Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Selma Djeddai</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mohamed Mezghiche</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Strecker</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IRIT (Institut de Recherche en Informatique de Toulouse) Universit ́e de Toulouse</institution>
          ,
          <addr-line>Toulouse</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>LIMOSE, Universit ́e de Boumerd`es Facult ́e des Sciences</institution>
          ,
          <addr-line>Boumerd`es</addr-line>
          ,
          <country country="DZ">Algeria</country>
        </aff>
      </contrib-group>
      <fpage>275</fpage>
      <lpage>289</lpage>
      <abstract>
        <p>Formal methods are increasingly used in software engineering. They ofer a formal frame that guarentees the correctness of developments. However, they use complex notations that might be dificult to understand for unaccustomed users. It thus becomes interesting to formally specify the core components of a language, implement a provably correct development, and manipulate its components in a graphical/textual editor. This paper constitutes a first step towards using Model Driven Engineering (MDE) technology in an interactive proof development. It presents a transformation process from functional data structures, commonly used in proof assistants, to Ecore Models. The transformation is based on an MDE methodology. The resulting meta-models are used to generate graphical or textual editors. We will take an example to illustrate our approach: a simple domain specific language. This guiding example is a Java-like language enriched with assertions.</p>
      </abstract>
      <kwd-group>
        <kwd />
        <kwd>Model Driven Engineering</kwd>
        <kwd>Model Transformation</kwd>
        <kwd>Formal Methods</kwd>
        <kwd>Verification</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Domain Specific Languages (DSL) have conquered many diferent aspects of
computer science. They are used in diferent fields such as aerospace,
webservices, multi-media, etc. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Certain DSLs define their semantics in natural
languages. However, even though these tend to be quite easy to understand,
they usually sufer from incompleteness in some cases and ambiguity in others.
Therefore, there emerges a need for defining the formal semantics of DSLs in a
mathematically founded framework using proof assistants. Such a phase consists
in defining the abstract syntax of a DSL and then grafting a semantics on top
of it, using well-understood mechanisms like structural recursion or inductive
relations. Such a semantics is often not executable, but other elements of a
formal development are, such as compilers or static analyses whose correctness is
proved on the basis of the formal semantics.
      </p>
      <p>
        Interactive proof assistants such as Coq [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] or Isabelle [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] often use paradigms
stemming from functional programming (type systems, function definitions), but
they are as such not a programming language. It is however possible to export
the formal development to programming languages such as Caml [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] or Scala [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
A formally verified compiler, for example, can therefore be efectively executed
in a standard programming language.
      </p>
      <p>In order to improve the user interface for interacting with a DSL, we aim at
a textual or graphical concrete syntax as provided, for example, by the Eclipse
Xtext or GMF environments. Frequent changes of the DSL during the design
phase make it necessary to adapt this interface easily and to re-generate it
automatically, as far as possible.</p>
      <p>Xtext</p>
      <p>DSL Textual Syntax</p>
      <p>MDE</p>
    </sec>
    <sec id="sec-2">
      <title>Proof Assistant OOP</title>
      <p>
        This paper studies the interplay of these formalisms (see Figure 1), and thus
constitutes a first step towards using Model Driven Engineering (MDE) [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ]
technology in an interactive proof development. The guiding example (see
Section 3) is a Java-like language enriched with assertions developed by ourselves
for which no of-the-shelf definition exists. This “meta-model” (in MDE
parlance) is suficiently complex to illustrate the method and to be a case study of
realistic size for a DSL. However, its formal model can be entirely defined as an
inductive datatype (and this is so for most formally defined languages). In this
case study, we can therefore not demonstrate some aspects of our work, such as
the translation of genuine graph structures that go beyond instances of inductive
data types.
      </p>
      <p>Section 2 constitutes the technical core of the article; it describes a
translation from data models in the functional programming world, used in verification
environments, to meta models in Ecore: the core language of the Eclipse
Modeling Framework. We illustrate the methodology in Section 3 with a case study.
In Section 4 we compare our work to other approaches, before concluding in
Section 5 with perspectives of further work.</p>
      <sec id="sec-2-1">
        <title>From Datatypes to Meta-Models</title>
        <p>In this part, we present in detail the translation process from functional data
types to meta-models. We start in Section 2.1 by giving an overview of our
methodology, then we introduce the source and the target of the transformation
in Sections 2.2 and 2.3 respectively. The essence of the translation is further
developed in Section 2.4.
2.1</p>
        <sec id="sec-2-1-1">
          <title>Methodology</title>
          <p>
            Model Driven Engineering (MDE) is a software development methodology where
the (meta-)models are the central elements in the development process. A
metamodel defines the elements of a language. The instances of theses elements are
used to construct a model of the language. A model transformation is defined
by a mapping from elements of the source meta-model to those of the target
meta-model. Consequently, each model conforms to the source meta-model can
be automatically translated to an instance model of the target meta-model. The
Object Management Group (OMG) [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ] defined the Model Driven Architecture
(MDA) standard [
            <xref ref-type="bibr" rid="ref9">9</xref>
            ], as specific incarnation of the MDE.
          </p>
          <p>
            We apply this method in order to define a generic transformation process from
datatypes (used in functional programming) to Ecore models. Figure 2 shows an
overview of our approach. Using an EBNF representation of the datatype
definition grammar [
            <xref ref-type="bibr" rid="ref3">3</xref>
            ], we derive a meta-model of datatypes. This meta-model is the
source meta-model of our transformation. We also define a subset of the Ecore
meta-model [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] to be the target meta-model. In order to perform the
transformation, we defined a set of transformation rules (detailed in Section 2.4) that
maps components of the meta-model of datatypes to those of Ecore Meta-model.
These rules have been implemented in the application presented in Section 3.2.
          </p>
          <p>EBNF representation
of a Datatype’s</p>
          <p>Grammar</p>
          <p>Functional
Datatype</p>
          <p>Meta−Model
&lt;&lt;ConformsTo&gt;&gt;</p>
          <p>&lt;&lt;ConformsTo&gt;&gt;
Datatype
Definition</p>
          <p>Datatype
Model</p>
          <p>Transformation Rules
&lt;&lt;Implements&gt;&gt;</p>
          <p>Datatype To</p>
          <p>Ecore</p>
          <p>Ecore</p>
          <p>Meta−Model
&lt;&lt;ConformsTo&gt;&gt;</p>
          <p>Ecore
Model
Fig. 2. Overview of the Transformation Method</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>Source Meta-Model : The Datatype Meta-Model</title>
          <p>
            Functional programming supplies us with a rich way to describe data structures.
However, since some features are not supported by Ecore, we have only defined
a subset, that contains the essential elements composing datatypes. Figure 3
depicts the datatype metamodel that is constructed from a subset of datatype’s
declarations grammar [
            <xref ref-type="bibr" rid="ref3">3</xref>
            ].
          </p>
          <p>A Module may contain several Type Definition s. Each Type Definition has a
Type Constructor. It corresponds to the data types’ name. It is also composed
of at least one Constructor Declaration. These declarations are used to express
variant types. Type declarations have names, it is the name of a particular type
case. It takes as argument some (optional) type expressions which can either
represent a Primitive Type (int, bool, float, etc.) or also a data type defined
previously in the module. The list option is used to represent lists in functional
programming. The type option feature describes the presence or the absence of
a value. The ref option is used for references (pointers).</p>
          <p>We enriched the type definition grammar with a new element named
Accessor. It is a function introduced by a special annotation (*@accessor*). It
allows to assign a name to a special field of the type declaration. This element
is essential for the transformation process, its absence would lead to nameless
structural features.</p>
        </sec>
        <sec id="sec-2-1-3">
          <title>Target Meta-Model: The Ecore Meta-Model</title>
          <p>
            Our target metamodel is a subset of the Ecore metamodel. Ecore is the core
language of Eclipse Modeling Framework (EMF) [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ]. It allows to build Java
applications based on model definitions. It unifies three technologies: Java, XML
and UML. Actually, it is possible to describe a model in one of the three
technologies and generate it in the other two. It also allows to develop and integrate
Eclipse plug-ins.
          </p>
          <p>
            The Meta Object Facility (MOF) standardized by the OMG defines a subset
of UML class diagram [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ]. It represents the Meta-Meta-Model of UML. Ecore
is comparable to MOF but simpler. They are similar in their ability to specify
classes, structural and behavioral features, inheritance and packages.
          </p>
          <p>Figure 4 represents a subset of the Ecore language. This subset contains
essentially the elements that are needed for the transformation process. Its main
components are:
– The EPackage is the root element in serialized Ecore models. It encompasses</p>
          <p>EClasses and EDataTypes.
– The EClass component represents classes in Ecore. It describes the structure
of objects. It contains EAttributes and EOperations.
– The EDataType component represents the types of EAttributes, either
predefined (types: Integer, Boolean, Float, etc.) or defined by the user. There is
a special datatype to represent enumerated types EEnum, each enumeration
is called EEnumLiteral.
– EReferences is comparable to the UML Association link. It defines the kinds
of the objects that can be linked together. The containment feature is a
Boolean value that makes a stronger type of relations. When it is set to true,
it represents a whole/part relationship known as “by-value aggregation” in
UML.
2.4</p>
        </sec>
        <sec id="sec-2-1-4">
          <title>From Datatypes to Meta-Models</title>
          <p>The transformation method is from functional datatypes to Ecore meta-models.
To precisely define transformation rules, the transformation method is presented
in a formal notation by the Tr() function. In each case we start by an informal
description, then we present it formally and finally we show an efective exemple.</p>
          <p>T r : DataT ypes −→ Ecore M eta-model</p>
          <p>
            The following translation functions are given for a concrete syntax in the
style of Caml [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ]. Since most functional languages (including the language of
proof assistants) have great similarities, the concrete syntax can be mapped to
diferent functional languages.
          </p>
          <p>Rule DatatypeToEClass When the datatype is formed of only one
constructor, it is translated to an EClass. The EClass name is the name of the type
constructor.</p>
          <p>T r(tpConstr = cn t1...tn) = createEClass();
setN ame(tpConstr);
T rtype(acci, ti)
/ 1 ≤ i ≤ n
Example:
datatype tpConstr =</p>
          <p>Cn of int ∗ string ∗ ...∗ bool
Rule DatatypeToEEnum Datatypes composed only of constructors (without
typexpr s) are translated to EEnums which are usually employed to model
enumerated types in Ecore. There, each constructor from the datatype model is
translated into an EEnumLiteral.
T r(tpConstr = cn1|...|cnp) = createEEnum();
setN ame(tpConstr);</p>
          <p>T rconstrNm(cni) / 1 ≤ i ≤ p</p>
          <p>T rconstrNm(cni) = EEnumLiteral(cni) / 1 ≤ i ≤ p
Example:
datatype tpConstr =</p>
          <p>Cn1 |Cn2 |... | CnN
Rule DatatypeToEClasses When constructor declarations are composed of
more than one constructor declaration containing type expressions: a first EClass
is created to represent the type constructor (tpConstr ). Then, for each
constructor, an EClass is created too, and inherits from the tpConstr one.</p>
          <p>T r(tpConstr = cd1|...|cdn)
= createEClass();
setN ame(tpConstr);
T rdecl(cdi)
/ 1 ≤ i ≤ n
T rdecl : ConstructorDeclaration −→ EClass
T rdecl(cni t1...tm) = createEClass();
setN ame(cni);
setSuperT ype (EClass(tpConstr));
T rtype(accj , tj )
/ 1 ≤ j ≤ m
Example:
datatype tpConstr =</p>
          <p>Cn1 of string
|Cn2 of int
|...</p>
          <p>|CnN of bool
Rule PrimitivTypeToEAttribute If a type expression is formed of a
primitive type, the translation function generates a new EAttribute. The name of
this EAttribute is the name of its corresponding accessor, and its type is the
EMF representation of the the primitive type : EInt for int, EBoolean for bool,
EString for string, etc.</p>
          <p>T rtype : (accessor, type) −→ EStructualF eature
T rtype(acc, primT p) = createEAtrribute();
setN ame(acc);
setT ype(primT pEMF );
Example:
datatype tpConstr =</p>
          <p>Cn of int ∗ string ∗ ...∗ bool
Rule TypeToEReference When a type expression contains a type which is
not a primitive type, the latter has to be previously defined in the Isabelle theory.
Then, a containment link is created between the current EClass and the EClass
referenced by type constructor, and the multiplicity is set to 1.
Example:
datatype tpConstr =</p>
          <p>Cn oftpConstr2
Rule TypeOptionToMultiplicity The type expressions can also appear in
the form of a type list. In this case the multiplicity is set to 0...*. The type
expression type option is used to express whether a value is present or not. It
returns None, if it is absent and Some value, if it is present. This is modeled by
changing the cardinality to 0...1.</p>
          <p>T rtype : (accessor, type) −→ EStructualF eature
T rtype(acc, t list) = T rtype(acc, t)
setLowerBound(0);
setU pperBound(∗);
T rtype(acc, t option) = T rtype(acc, t)
setLowerBound(0);
setU pperBound(1);
Example:
datatype tpConstr =</p>
          <p>Cn oftpConstr2 list</p>
          <p>The last case that we deal with, is type ref which is used to represent
pointers. It is translated to references without containments.</p>
          <p>T rtype(acc, t ref) = T rtype(acc, t)</p>
          <p>setContainment(F alse);
Example:
datatype tpConstr =</p>
          <p>Cn of tpConstr2 ref
3</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>Case Study</title>
        <p>In this section, we apply the method presented in Section 2 on a detailed example
that consist of a Domain Specific Language. We start by the DSL definition, then
we show the architecture of the application before finishing with the efective
results of the transformation.
3.1</p>
        <sec id="sec-2-2-1">
          <title>Presentation of the Case Study</title>
          <p>
            We are currently working on a real-time dialect of the Java language allowing
us to carry out specific static analyses of Java programs. We only sketch this
language here; details are described in [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ]. This language is not a genuine subset
of Java, since we have added annotations characterizing timing behavior of
program parts that are inserted in particular comments into the program. Neither
is the language a superset of Java, because we have to impose syntactic
restrictions on the shape of the program, and also static restrictions on the number of
objects that are allocated.
          </p>
          <p>
            All this made us opt for writing our own syntax analysis, which is integrated
into the Eclipse Xtext environment [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ]. After syntax analysis and verification
of the above-mentioned static restrictions, the program together with its timing
annotations is translated to Timed Automata (TA) for model checking. The
language is currently not entirely stable and will be modified while we refine and
improve the translation from Java to TA, and while the formal model evolves.
          </p>
          <p>The formal aspect comes into play at the following point: We are currently
developing a real-time semantics of Java in the proof assistant Isabelle, based on
an execution semantics using inductive relations. Performing the translation for
the whole language description would generate a huge metamodel that couldn’t
be presented in the paper. We thus choose to present a only an excerpt of it,
corresponding to a method definition.</p>
          <p>Figure 6 shows the datatype definitions in the Isabelle proof assistant, where
a method definition is composed of a method declaration, a list of variables,
and statements. Each method declaration has an access modifier that specifies
its kind. It also has a type, a name, and some variable declarations. The stmt
datatype describes the statements allowed in the method body: Assignments,
Conditions, Sequence of statements, Return and the annotation statement (for
timing annotations). In this example we use Booleans, integers, strings for types
and values.
3.2</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>Implementation: DatatypesToEcore</title>
          <p>
            Our approach is implemented using the Eclipse environment which includes
among others
– Eclipse Modeling Framework (EMF) [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ]: a framework for modeling and
code generation that builds tools and applications based on data models.
– Eclipse Modeling Project (EMP) [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ]: a framework allowing the
manipulation of DSLs by defining their (textual/graphical) concrete syntax based on
a corresponding metamodel.
          </p>
          <p>Figure 5 shows the architecture of our application. There, green arrows represent
model transformations or code generation. The base element is an Isabelle theory
where both of the datatypes and the properties to be checked are defined. The
corresponding meta-model is generated using the translation function described
in Section 2.4. Starting from a generated Ecore meta-model, we use the Xtext
tool to define a textual concrete syntax. First, Xtext builds an EBNF grammar
depending on the structure of the metamodel. The grammar is then adapted
using the right key words of the language, yielding a textual editor as an Eclipse
plug-in.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Isabelle</title>
      <p>Theory</p>
      <p>DSL
Graphical
/Textual
Notation</p>
    </sec>
    <sec id="sec-4">
      <title>Meta−</title>
    </sec>
    <sec id="sec-5">
      <title>Model</title>
    </sec>
    <sec id="sec-6">
      <title>Generated</title>
    </sec>
    <sec id="sec-7">
      <title>Code for DSL tool</title>
      <p>This part of the theory was given as input to the implementation of our
translation rules presented in Section 2.4. The resulting Ecore diagram is presented
in Figure 7.</p>
      <p>As it is shown on the figure, data type definitions built only of type
constructors (Tp, AccModifier , Binop, Binding ) are treated as enumerations in the
metamodel. Whereas Datatype MethodDecl composed of only one constructor
derive a single class. As for type expressions that represent list of types (like
accModifier list in varDecl ), they generate a structural feature in the corresponding
class and their multiplicities are set to (0...*). The result of type definitions
containing more than one constructor and at least a type expression (stmt and expr )
is modeled as a number of classes inheriting from a main one. Finally, the
translation of the int, bool and string types is straightforward. They are translated
to respectively EInt, EBoolean and EString.</p>
      <p>
        Fig. 6. Datatypes in Isabelle
EMF models are comparable to Unified Modeling Language Class diagrams. For
this fact we are interested in the mappings from other formal languages to UML
Class diagrams. Some research is dedicated to establishing the link between these
two formalisms. We cite the work of Idani &amp; al. that consists of a generic
transformation of UML models to B constructs [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and vice-versa [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. The authors
propose a metamodel-based transformation method based on defining a set of
structural and semantic mappings from UML to B (a formal method that allows
to construct a program by successive refinement, using abstract specifications).
      </p>
      <p>
        Similarly, there is an MDE based transformation approach for generating
Alloy (a textual modeling language based on first order logic) specifications
from UML class diagrams and backwards [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>
        Delahaye &amp; al. describe in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] a formal and sound framework for
transforming Focal specification into UML models.
      </p>
      <p>These methods enable to generate UML component from a formal
description but their formal representation is significantly diferent from our needs:
functional data structures.</p>
      <p>
        Also, graph transformation tools [
        <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
        ] permit to define source and target
metamodels all along with a set of transformation rules and use graphical
representations of instance models to ease the transformation process. However, the
verification functionality they ofer is often limited to syntactic aspects (such as
confluence of transformation rules) and does not allow to model deeper
semantic properties (such as an operational semantics of a programming language and
proofs by bisimulation).
      </p>
      <p>Our approach combines the two views by ofering the possibility to define
the abstract syntax of a DSL, to run some verifications on the top of it and
to generate the corresponding metamodel to graphically document the formal
developments. Furthermore, this metamodel can be used to easily generate a
textual editor using Xtext facilities.
5</p>
      <sec id="sec-7-1">
        <title>Conclusion</title>
        <p>Our work constitutes a first step towards a combination of interactive proof and
Model Driven Engineering. We have presented a generic method based on MDE
for transforming data type definitions used in proof assistants to Class diagrams.</p>
        <p>The approach is illustrated with the help of a Domain Specific Language
developed by ourselves. It is a Java-like language enriched with annotations.
Starting from data type definitions, set up for the semantic modeling of the DSL
we have been able to generate an EMF meta-model. In addition to its benefits for
documenting and visualizing the DSL, it is manipulated in the Eclipse workbench
to generate a textual editor as an Eclipse plug-in.</p>
        <p>Currently, we are working on extending subset of data type definitions by
adding a way to transform parameterized types to generic types in Ecore. And
coupling our work with the generation of provably correct object oriented code
from proof assistants. Moreover, we intend to work on the opposite side of
transformation, the possibility to generate data structure definitions from class
diagrams.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. van Deursen,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Klint</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Visser</surname>
          </string-name>
          , J.:
          <article-title>Domain-specific languages: An annotated bibliography</article-title>
          .
          <source>SIGPLAN Notices</source>
          <volume>35</volume>
          (
          <year>2000</year>
          )
          <fpage>26</fpage>
          -
          <lpage>36</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. http://coq.inria.fr/: Coq proof assistant website (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Nipkow</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paulson</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          , Wenzel, M.:
          <article-title>Isabelle/HOL. A Proof Assistant for HigherOrder Logic</article-title>
          . Volume
          <volume>2283</volume>
          of Lecture Notes in Computer Science. Springer Berlin / Heidelberg (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. http://caml.inria.fr:
          <article-title>Caml programming language website (</article-title>
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Martin</given-names>
            <surname>Odersky</surname>
          </string-name>
          et al.:
          <article-title>An Overview of the Scala Programming Language</article-title>
          .
          <source>Technical report, EPFL</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. B´ezivin, J.:
          <article-title>Model driven engineering: An emerging technical space</article-title>
          . In L¨ammel, R.,
          <string-name>
            <surname>Saraiva</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
          </string-name>
          , J., eds.
          <source>: Generative and Transformational Techniques in Software Engineering. Volume 4143 of Lecture Notes in Computer Science</source>
          . Springer Berlin / Heidelberg (
          <year>2006</year>
          )
          <fpage>36</fpage>
          -
          <lpage>64</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Selic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>The pragmatics of model-driven development</article-title>
          .
          <source>IEEE Software</source>
          <volume>20</volume>
          (
          <year>2003</year>
          )
          <fpage>19</fpage>
          -
          <lpage>25</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. OMG:
          <article-title>Meta Object Facility (MOF) Core v</article-title>
          .
          <volume>2</volume>
          .0 Document. (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kleppe</surname>
            ,
            <given-names>A.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Warmer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bast</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          : MDA Explained :
          <article-title>The Model Driven Architecture : Practice and Promise</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Longman</surname>
          </string-name>
          Publishing Co., Inc., Boston, MA, USA (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Gronback</surname>
          </string-name>
          , R.C.:
          <string-name>
            <surname>Eclipse Modeling Project: A Domain-Specific Language (DSL) Toolkit. Addison-Wesley</surname>
          </string-name>
          , Upper Saddle River, NJ (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Budinsky</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brodsky</surname>
            ,
            <given-names>S.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merks</surname>
          </string-name>
          , E.: Eclipse Modeling Framework. Pearson
          <string-name>
            <surname>Education</surname>
          </string-name>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. France, R.B.,
          <string-name>
            <surname>Evans</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lano</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>The UML as a formal modeling notation</article-title>
          .
          <source>Computer Standards &amp; Interfaces</source>
          <volume>19</volume>
          (
          <year>1998</year>
          )
          <fpage>325</fpage>
          -
          <lpage>334</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Baklanova</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Strecker</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>F</surname>
          </string-name>
          ´eraud, L.:
          <article-title>Resource Sharing Conflicts Checking in Multithreaded Java Programs</article-title>
          .
          <source>Informal Proceedings FAC'12</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Eclipse</surname>
          </string-name>
          <article-title>Community: Tutorials and documentation for Xtext 2</article-title>
          .0 (
          <issue>2011</issue>
          ) http: //www.eclipse.org/Xtext/documentation/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Idani</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boulanger</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Philippe</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A generic process and its tool support towards combining UML and B for safety critical systems</article-title>
          . In Hu, G., ed.
          <source>: CAINE</source>
          ,
          <string-name>
            <surname>ISCA</surname>
          </string-name>
          (
          <year>2007</year>
          )
          <fpage>185</fpage>
          -
          <lpage>192</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Idani</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>UML models engineering from static and dynamic aspects of formal specifications</article-title>
          . In Halpin, T.A.,
          <string-name>
            <surname>Krogstie</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nurcan</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Proper</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sofer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ukor</surname>
          </string-name>
          , R., eds.
          <source>: BMMDS/EMMSAD. Volume 29 of Lecture Notes in Business Information Processing.</source>
          , Springer (
          <year>2009</year>
          )
          <fpage>237</fpage>
          -
          <lpage>250</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Shah</surname>
            ,
            <given-names>S.M.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Anastasakis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bordbar</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>From UML to Alloy and back again</article-title>
          . In Ghosh, S., ed.:
          <source>MoDELS Workshops</source>
          . Volume
          <volume>6002</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2009</year>
          )
          <fpage>158</fpage>
          -
          <lpage>171</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Anastasakis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bordbar</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Georg</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ray</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>UML2Alloy: A challenging model transformation</article-title>
          . In Engels, G.,
          <string-name>
            <surname>Opdyke</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weil</surname>
          </string-name>
          , F., eds.:
          <source>MoDELS</source>
          . Volume
          <volume>4735</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2007</year>
          )
          <fpage>436</fpage>
          -
          <lpage>450</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Delahaye</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , E´tienne,
          <string-name>
            <given-names>J.F.</given-names>
            , Vigui´e
            <surname>Donzeau-Gouge</surname>
          </string-name>
          ,
          <string-name>
            <surname>V.</surname>
          </string-name>
          :
          <article-title>A Formal and Sound Transformation from Focal to UML: An Application to Airport Security Regulations</article-title>
          . In: UML and
          <article-title>Formal Methods (UML&amp;FM)</article-title>
          .
          <source>Innovations in Systems and Software Engineering (ISSE) NASA Journal, Kitakyushu-City (Japan)</source>
          , Springer (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. de Lara, J.,
          <string-name>
            <surname>Vangheluwe</surname>
          </string-name>
          , H.:
          <article-title>Using AToM3 as a meta-case tool</article-title>
          .
          <source>In: Proceedings of the 4st International Conference on Enterprise Information Systems (ICEIS)</source>
          ,
          <string-name>
            <surname>Ciudad</surname>
            <given-names>Real</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spain</surname>
          </string-name>
          (
          <year>2002</year>
          )
          <fpage>642</fpage>
          -
          <lpage>649</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ehrig</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ermel</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , H¨ansgen,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Generation of visual editors as Eclipse plug-ins</article-title>
          .
          <source>In: Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering. ASE '05</source>
          , New York, NY, USA, ACM (
          <year>2005</year>
          )
          <fpage>134</fpage>
          -
          <lpage>143</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>