<!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>Generating Metamodels from Grammars by Chaining Translational and By-Example Techniques?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alexander Bergmayr</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel Wimmer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Business Informatics Group, Vienna University of Technology</institution>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Bridging grammarware and modelware is still challenging, though often required as a prerequisite for several model-driven engineering scenarios. For instance, in model-driven reverse engineering, program code has to be lifted to the model level before model-driven techniques are applicable. Manually building metamodels based on given grammars introduces a signi cant overhead and may lead to inconsistencies between the resulting metamodels and the grammars, especially when dealing with large languages. In previous work, we have investigated a purely translational approach that is able to semi-automatically generate metamodels from grammars by utilizing user input. In this work, we aim to provide a higher degree of automation by combining the translational approach with by-example techniques to reduce the manual e ort. In particular, knowledge is derived from concrete programs to further re ne the produced metamodels. We demonstrate a transformation chain that combines translational and by-example techniques to produce Ecore-based metamodels from EBNFbased grammars.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        In the last decade, much e ort has been invested to bridge the gap between
GrammarWare (GW) [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] and ModelWare (MW) [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], thereby gaining
advantages from both areas by transferring artifacts and techniques between these
technical spaces [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Approaches for transforming grammars into
metamodels [
        <xref ref-type="bibr" rid="ref1 ref23 ref31">1,23,31</xref>
        ], programs into models [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], and APIs into models [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] have been
presented. Furthermore, the development of concrete textual syntaxes for
(modeling) languages has been proposed [
        <xref ref-type="bibr" rid="ref12 ref14 ref19 ref27">12,14,19,27</xref>
        ]. Thus, the current research
landscape o ers several concepts, techniques, and tools to switch back and forth
between the two technical spaces. However, e ciently establishing bridges
between them at the meta-level remains still a major challenge, in particular when
artifacts from the GW technical space have to be shifted to the MW technical
space.
? This work is co-funded by the European Commission under the ICT Policy Support
Programme, grant no. 317859.
      </p>
      <p>
        Challenge. We explored such scenarios in the ARTIST project1 [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], which
aims at modernizing legacy code by a migration towards cloud environments.
Model-Driven Reverse Engineering (MDRE) o ers useful features for such
scenarios, even though these features are employable only if some prerequisites are
ful lled in the MW technical space, which includes the existence of (i) a
metamodel that corresponds to the given grammar of the program code, (ii) a parser,
i.e., a text-to-model transformation, to build models for programs, and (iii) a
printer, i.e., a model-to-text transformation, to produce programs from models
if forward engineering or round-trip engineering needs to be supported. These
artifacts facilitate e ciently switching between both technical spaces. Clearly,
certain essential properties have to be ful lled in this respect. First, the
produced metamodel has to be consistent with the grammar, i.e., a valid sentence
in the grammar needs to be expressible as a valid model of the metamodel and
vice versa. Second, the text-to-model and model-to-text transformations have to
be information-preserving. The development of such bridges between GW and
MW, even if guided by tool support, still involves several manual tasks that
require extensive e ort from a user perspective, especially when the rich features of
current metamodeling languages of the MW technical space should be exploited.
      </p>
      <p>
        Contribution. To reduce the manual e ort and the heavy involvement of users
in the development of bridges between GW and MW, we present in this paper a
transformation chain that semi-automatically generates Ecore-based
metamodels from given EBNF grammars [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. The transformation chain glues together
several transformations that serve as translators to generate an initial version
of a metamodel. To further re ne such an initial metamodel version, we
apply a by-example approach where the examples are programs expressed in the
grammar for which a metamodel is generated. This second step of the
transformation chain is novel in this context and essential to reduce the manual e ort of
the metamodel generation process and at the same time to achieve high quality
metamodels as a result of this process. For example, EBNF provides only limited
capabilities to express typed cross-references between production rules. In fact,
such information is not covered by EBNF grammars, though indeed required for
the generation of an appropriate metamodel. This kind of extra information is in
our metamodel generation process inferred by applying a by-example approach,
which is inspired from existing work on bottom-up (meta)modeling [
        <xref ref-type="bibr" rid="ref2 ref25">2,25</xref>
        ], on
grammar, schema, metamodel, and ontology recovery [
        <xref ref-type="bibr" rid="ref11 ref17 ref7">7,11,17</xref>
        ], and on
solving Model-Driven Engineering (MDE) problems by exploiting by-example
techniques, cf. [
        <xref ref-type="bibr" rid="ref13 ref21 ref28 ref3 ref30 ref32">3,13,21,28,30,32</xref>
        ] for concrete approaches and [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] for a survey.
      </p>
      <p>Structure. In Section 2, we brie y describe the background of our work and
introduce a motivating example that shows one particular challenge when
moving from GW to MW, namely how to infer types of cross-references that are
not represented in EBNF-based grammars. In Section 3, we present our
transformation chain and demonstrate its application on the motivating example by
relying on EBNF in the GW technical space, and Xtext2 and Ecore in the MW
1 http://www.artist-project.eu
2 http://www.eclipse.org/Xtext
technical space. In this context, the application of Xtext as a mediator in the
transformation chain is novel. Xtext appears to be useful because it provides
features of both technical spaces. We conclude with an outlook towards an extensive
evaluation of our approach in Section 4.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Prerequisites and Motivating Example</title>
      <p>With today's language development tools and established model transformation
techniques, metamodels and corresponding parsers/printers can be
automatically generated from grammars de ned with meta languages residing in the MW
technical space. Exploiting this automatic generation for producing
metamodels also from EBNF-based grammars, i.e., grammar de nitions residing in the
GW technical space, relies on two assumptions: (i) the heterogeneities of the
meta-languages used in GW and MW can be resolved on a syntactical level,
and (ii) the information needed to produce high quality metamodels is provided
by artifacts of the GW technical space. We assume in our transformation chain
EBNF as the meta-language in the GW context, and Xtext and Ecore as the
meta-languages in the MW context.</p>
      <p>Xtext is a language for de ning textual syntaxes of languages and allows
the generation of Ecore-based metamodels and corresponding parsers/printers.
Hence, Xtext and Ecore are well integrated with each other. As a result, the
challenge is to bridge EBNF with one of the two candidates. Xtext seems to
be the preferable choice as an intermediate format, thereby avoiding to lose
the concrete syntax elements typically expressed in an EBNF grammar because
Ecore is capable of representing elements from an abstract syntax perspective,
only. Thus, Xtext may serve as a mediator between EBNF and Ecore as it is a
hybrid approach, comprising technological features and meta-language concepts
from both technical spaces.
2.1</p>
      <sec id="sec-2-1">
        <title>Motivating Example: The MiniJava Grammar</title>
        <p>Let us take MiniJava3 as a concrete example language that is expressed in EBNF
and for which we want to generate a metamodel. Furthermore, for the purpose
of this paper, let us focus on one concrete production rule from the MiniJava
grammar, as shown in Listing 1.1.</p>
        <sec id="sec-2-1-1">
          <title>Listing 1.1: Production rule ClassDeclaration in EBNF</title>
          <p>C l a s s D e c l a r a t i o n = " class " , Identifier , [ " extends " , I d e n t i f i e r ] ;
I d e n t i f i e r = f 'a ' j 'b ' j . . . g</p>
          <p>Straightforwardly translating the ClassDeclaration production rule expressed
in EBNF to a parsing rule expressed in Xtext would result in the Xtext-based
grammar given in Listing 1.2.
3 MiniJava is a small language related to Java that is mainly used for teaching
purposes. More information on the language may be found at: http://cs.fit.edu/
~ryan/cse4251/mini_java_grammar.html</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>Listing 1.2: Parser rule ClassDeclaration in Xtext</title>
          <p>C l a s s D e c l a r a t i o n : " c l a s s " n a me=I D E N T I F I E R ( " e x t e n d s " s u p e r C l a s s=
,! I D E N T I F I E R ) ? ;
terminal I D E N T I F I E R : ( ' a ' j ' b ' j . . . ) ;</p>
          <p>Besides some small syntactical di erences, we are able to express the
ClassDeclaration rule in both meta-languages in a similar way. However, Xtext
provides several additional features compared to EBNF. These features facilitate
the generation of meaningful Ecore-based metamodels from Xtext-based
grammars. In particular, Xtext allows us to distinguish between di erent kinds of
rule calls. In the context of our example, the rst rule call is used to express the
name of a declared MiniJava class while the second rule call actually represents a
cross-reference to the class, which serves as super class. If we do not distinguish
between these two di erent intentions of the rule calls, we would end up with
just having String-typed attributes in the corresponding Ecore-based metaclasses
generated from the Xtext grammar instead of having typed references as well.
Figure 1(a) depicts the metaclass corresponding to the ClassDeclaration rule in
Listing 1.2. However, what we actually would like to achieve is the metaclass as
illustrated in Figure 1(b) because it provides a typed reference for expressing
inheritance relationships between MiniJava classes.</p>
          <p>(a)
(b)</p>
          <p>When taking a closer look at our ClassDeclaration rule in Listing 1.2, a better
solution is to make use of Xtext's support for cross-references and exploit built-in
terminals provided in terms of a library. Listing 1.3 depicts the required Xtext
grammar to obtain the desired metaclass in Figure 1(b).</p>
        </sec>
        <sec id="sec-2-1-3">
          <title>Listing 1.3: Desired parser rule ClassDeclartion in Xtext</title>
          <p>C l a s s D e c l a r a t i o n : " c l a s s " n a me=ID ( " e x t e n d s " s u p e r C l a s s =[</p>
          <p>,! C l a s s D e c l a r a t i o n ] ) ? ;</p>
          <p>This example shows that with a straightforward translation of EBNF-based
grammars to Xtext-based grammars, we may not obtain the metamodel which we
would expect from the perspective of the MW technical space. Thus, additional
e ort is required to produce meaningful metamodels in the expected quality. In
the following, we present a concrete transformation chain that is able to generate
metamodels comprising typed cross-references. The type information is inferred
from example programs expressed in terms of the original grammar.
4
M
3
M
2
M
1
M</p>
          <p>Grammarware</p>
          <p>EBNF.ebnf
aLang.ebnf
aProg.java</p>
          <p>XText.xtext</p>
          <p>0
EBNF.xtext t2m</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Transformation Chain By-Example</title>
      <p>Now we are able to apply MDE techniques to actually shift a given
language de nition represented as a model towards Xtext 2 by applying a model
transformation we developed in ATL between the metamodels of EBNF and
Xtext. By relying on the printer capabilities provided by Xtext, the generation
of an Xtext-based grammar for a given language de nition is achieved 3 . This
also eliminates the M4 meta-level. The generation of an Ecore-based metamodel
for the language de nition expressed as an Xtext-based grammar 4 is
out-ofthe-box provided by Xtext. Furthermore, the Xtext-based representation of the
language de nition allows to exploit further the capabilities of Xtext, namely to
parse programs that conform to the given language 5 . The result of our
transformation chain, i.e., the Ecore-based metamodel and the models representing
the programs, is fully operable, though the quality of the generated
metamodels requires improvement 6 to render them useful for future MDE tasks that
rely on these metamodels. A by-example approach is the technique of choice to
achieve such improvements in this paper. In particular, information is derived
in this step from programs that is missing in the grammar.</p>
      <p>EBNF.ecore M2M XText.ecore</p>
      <p>XText.xtext</p>
      <p>Ecore.ecore
aLang.xmi 2m2m
aLang.xmi 3m2t aLang.xtext 4t2m aLang.ecore
aProg.xmi
6
m
2
m
3.1</p>
      <sec id="sec-3-1">
        <title>Expressing EBNF Grammars in Xtext</title>
        <p>To reach the MW technical space for the given artifacts in the GW technical
space, our current approach is to express EBNF in Xtext4 to enable the parsing of
language de nitions expressed in EBNF as well as to parse programs conforming
to this language de nitions.</p>
        <p>To automatically generate the Xtext grammar in Listing 1.3 from the EBNF
grammar given in Listing 1.1, the actual intention behind the Identi er needs to
be expressed and the type of the reference is required to be known if the intention
refers to a cross-reference, as discussed in the motivating example. Therefore,
we introduced dedicated annotations into our Xtext-based EBNF grammar to
ensure an e ective transformation of the intention behind rule calls. Listing 1.4
shows the annotated version of the ClassDeclaration production rule. The user
has to mark the rule calls that refer to the provision of the identi er values for
a language concept (cf. @id annotation) as well as for rule calls that actually
represent references to other elements (cf. @idref annotation).</p>
        <p>Listing 1.4: Annotated production rule ClassDeclartion in EBNF
C l a s s D e c l a r a t i o n = " c l a s s " , @id I d e n t i f i e r , [ " e x t e n d s " , @ i d r e f (
,! s u p e r C l a s s ) I d e n t i f i e r ] ;
I d e n t i f i e r = f ' a ' j ' b ' j . . . g ;</p>
        <p>Although with this approach the dedicated rules in the model transformation
to generate the expected result can be triggered, the type of the superClass
reference remains generic. While the annotations may be manually introduced
even in large grammars with reasonable e ort, the decision for an adequate
type appears to be challenging in general when just reasoning on the grammars
without taking a look on a larger example base. Here our design rationale is that
information that may be inferred by the user in a local context, e.g., by looking
at one particular production rule, is provided by the user, while information
that requires reasoning on a global scope is derived automatically by the help of
analyzing examples.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Transforming EBNF Grammars to Xtext</title>
        <p>On a general level, concepts of EBNF straightforwardly map to concepts of
Xtext. As Xtext provides a richer set of concepts compared to EBNF, the model
transformation between them needs to resolve certain heterogeneities. From a
technical perspective, the model transformation addresses features of Xtext that
are required to obtain an operable parser/printer. For example, identi ers are
often only informally speci ed by EBNF grammars. Xtext provides built-in
terminals that already ful ll the typical requirements. Perhaps, even more
important, the model transformation needs to deal with conceptual aspects as well.
Besides the di culties that may arise with LL-based parsing, e ectively dealing
with our annotations in the EBNF grammar falls in this category. Listing 1.5
4 An Xtext-based EBNF implementation can be found under http://xtexterience.</p>
        <p>wordpress.com/2011/05/13/an-ebnf-grammar-in-xtext
shows the required adaptations in the EBNF grammar for providing annotations
in language de nitions.</p>
        <sec id="sec-3-2-1">
          <title>Listing 1.5: Annotation support for EBNF</title>
          <p>E x p r e s s i o n _ R u l e _ R e f e r e n c e returns E x p r e s s i o n :
(f E x p r e s s i o n _ R u l e _ R e f e r e n c e g ( ( ( idRef ?= " @idref " ) ( " ( "
,!refName=NAME " ) " ) ?) j ( idName?=" @id " ) ) ? rule =[
,! P r o d u c t i o n R u l e j NAME ] ) ;</p>
          <p>Rule calls annotated with @id are transformed to \name" attributes while
@idref leads to a more complex output in the sense that a common production
rule is temporarily introduced as a default candidate for the reference end-point.</p>
          <p>Listing 1.6 shows the automatically generated Xtext grammar for the
ClassDeclaration parsing rule. Compared to Listing 1.3, the type of superClass is not
yet ClassDeclaration as this information cannot be inferred solely from the given
grammar. Instead, CommonReferenceRule serves as intermediate placeholder by
generalizing all other existing production rules in the grammar. Ideally, example
programs allow us to subsequently infer the most speci c types as depicted in
the re ned version of the grammar in Listing 1.3.</p>
          <p>Listing 1.6: Automatically generated parser rule ClassDeclartion in Xtext
C l a s s D e c l a r a t i o n : " class " name=ID ( " extends " s u p e r C l a s s =[</p>
          <p>,! C o m m o n R e f e r e n c e R u l e ] ) ? ;</p>
          <p>C o m m o n R e f e r e n c e R u l e : C l a s s D e c l a r a t i o n j . . . j . . . ;
3.3</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>By-Example Re nement of Xtext-based Grammars and</title>
      </sec>
      <sec id="sec-3-4">
        <title>Ecore-based Metamodels</title>
        <p>
          Inspired by existing work on bottom-up (meta)modeling [
          <xref ref-type="bibr" rid="ref2 ref25">2,25</xref>
          ] and on grammar,
schema, metamodel, and ontology recovery [
          <xref ref-type="bibr" rid="ref11 ref17 ref7">7,11,17</xref>
          ], we provide an additional
re nement step for the initially produced metamodels. In fact, although a
grammar of the language is available, we still miss some important information to
produce the desired metamodel that is not given by the EBNF-based grammars.
One aspect we focus on in this paper is the typing of the cross-references that
we explored particulary challenging from a users perspective when dealing with
large grammars allowing complex links between di erent kind of elements.
        </p>
        <p>By having the initially produced Xtext grammar as shown in Listing 1.6, we
already have the possibility to parse the programs into models. In these models,
the concrete links between model elements are available that can be analyzed to
produce the information to further re ne the generated cross-references of the
Xtext grammar and in the corresponding Ecore metamodel.</p>
        <p>In the by-example based re nement step, we apply a select/infer/adapt
process that|as the name already suggests|selects the language de nition parts
that may need further re nements, infers additional information from the
examples, and adapts the language de nition part by incorporating the newly inferred
information.</p>
        <p>For our concrete task of inferring the exact types, i.e., the most speci c types,
of cross-references, we show the used algorithm of the by-example reasoning
process in Listing 1.7 using OCL-like pseudo code notation. As input we need the
metamodel to be re ned (the re ned version of it is the output of the algorithm)
and the example base represented by a set of models that are produced from a
set of programs by the parser generated from our initial metamodel.</p>
        <sec id="sec-3-4-1">
          <title>Listing 1.7: By-example type re nement of cross-references</title>
          <p>var mm : M e t am o d e l ; -- input / output
var mb : Set f Model g ; -- input
-- s el e c t i on phase
Set f R e f er e n c e g r e f s T o A d a p t = mm . g e t C r o s s R e f e r e n c e s ( ) ;
r e f s T o A d a p t &gt; foreach ( ref j
-- i nf e r e n ce phase
Set f Link g links = mb &gt; collect ( m j m . g e t L i n k s O f T y p e ( ref ) ) &gt;
,!flatten ( ) ;
Set f Class g classes = links &gt; collect ( l j l . g e t T a r g e t T y p e ( ) ) &gt;
,!asSet ( ) ;
-- a d a p t a t i o n phase
i f classes . size ( ) = 1 then ref . s e t T a r g e t T y p e ( classes . first ( ) ) ;
else i f . . . endif endif
)</p>
          <p>Due to space limitations, we only show one concrete case of the type re
nement process. First, we collect in the selection phase all cross-references available
in the metamodel (because all of them are only typed to CommonReferenceRule
in the initial version of the metamodel). For the inference phase, we iterate over
this set of references and for each reference we query the instantiated links from
all models to collect the types of the target objects referenced by the links. By
converting this collection to a set, we get the information that we need for the
adaptation phase. Here we only discuss one possible case, namely if all
referenced objects are of the same type, i.e., the set has only one entry, that results
in a simple adaptation by just setting the type of the reference under study
to the inferred type. In cases where objects are referenced that are of di erent
types, more sophisticated adaptations are necessary, e.g., the introduction of
new classes that act as super classes for the inferred types, because in Ecore
only one type is allowed for each reference. Coming back to our motivating
example, when executing this algorithm on a set of example models, we are able
to transform the Xtext grammar shown in Listing 1.6 into the Xtext grammar
of Listing 1.3. From the latter, the meta-class as shown in Figure 1(b) can be
automatically derived that represents the expected metamodel de nition for the
MiniJava grammar excerpt.
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Outlook</title>
      <p>With the implementation of our transformation chain and the experimentation
with the MiniJava grammar, we achieved initial evidence that metamodels can
be automatically generated from grammars and re ned by applying by-example
based techniques. By having the latter step, we are able to infer additional
knowledge about the language that is not directly presented in the grammar de
nitions but in other tools residing in the GW technical space such as compilers.
Furthermore, the assumption of having enough examples to provide meaningful
re nements of metamodels seems valid, because the trigger for producing the
metamodels is the existence of GW artifacts that should be transferred to MW.</p>
      <p>
        On the basis of our results, we plan an extensive evaluation of our approach
with grammars from well-established languages such as Java or C# as next
steps. In particular, di erent variants of a Java metamodel [
        <xref ref-type="bibr" rid="ref15 ref8">8,15</xref>
        ] are already
available. The idea is to use them as a reference for evaluating our results from
the transformation chain. Large open-source code bases provide excellent input
for inferring potential re nements of the generated metamodels. We may then
exploit existing work for type-safe restructuring on the meta-level [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to turn
such re nements into concrete model transformations that automate this task.
By applying such model transformations, the hope is to signi cantly improve
the quality of the generated metamodels. Architectural metrics, such as, mean
features per classi ers, mean inheritance hierarchy depth, and understandability
[
        <xref ref-type="bibr" rid="ref26 ref4">4,26</xref>
        ] may serve as reference for proo ng actual improvements. The quality of
the generated metamodels seems to be crucial for their use in real MDE
scenarios where queries and transformations are formulated against the metamodels.
In this paper, we discussed an important aspect, namely computing the exact
types of cross-references, but several other aspects that may be enhanced by
applying by-example based reasoning remain as future challenges. Furthermore,
one re nement for our inferencing algorithm would be necessary for dealing with
non-global unique identi ers, such as having a eld declaration and a method
declaration with the same name. A promising approach in this context is to
incorporate Java binding rules as presented in [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Alanen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Porres</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>A Relation Between Context-Free Grammars and Meta Object Facility Metamodels</article-title>
          .
          <source>Tech. rep., Turku Centre for Computer Science</source>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bagheri</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sullivan</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Bottom-up model-driven development</article-title>
          .
          <source>In: ICSE</source>
          . pp.
          <volume>1221</volume>
          {
          <issue>1224</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Balogh</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Varro</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Model transformation by example using inductive logic programming</article-title>
          .
          <source>SoSym</source>
          <volume>8</volume>
          (
          <issue>3</issue>
          ),
          <volume>347</volume>
          {
          <fpage>364</fpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bansiya</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>C.G.</given-names>
          </string-name>
          :
          <article-title>A Hierarchical Model for Object-Oriented Design Quality Assessment</article-title>
          .
          <source>TSE</source>
          <volume>28</volume>
          (
          <issue>1</issue>
          ),
          <volume>4</volume>
          {
          <fpage>17</fpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bergmayr</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruneliere</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Canovas</surname>
            <given-names>Izquierdo</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.L.</given-names>
            , Gorron~ogoitia, J.,
            <surname>Kousiouris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Kyriazis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Langer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Menychtas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Orue-Echevarria Arrieta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Pezuela</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Migrating Legacy Software to the Cloud with ARTIST</article-title>
          .
          <source>In: CSMR</source>
          . pp.
          <volume>465</volume>
          {
          <issue>468</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bergmayr</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Retschitzegger</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zdun</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Taking the Pick out of the Bunch - Type-Safe Shrinking of Metamodels</article-title>
          . In: SE. pp.
          <volume>85</volume>
          {
          <issue>98</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Bex</surname>
            ,
            <given-names>G.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neven</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vansummeren</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Inferring XML Schema</surname>
          </string-name>
          <article-title>De nitions from XML Data</article-title>
          . In: VLDB. pp.
          <volume>998</volume>
          {
          <issue>1009</issue>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Bruneliere</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Madiot</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>MoDisco: A Generic and Extensible Framework for Model Driven Reverse Engineering</article-title>
          . In: ASE. pp.
          <volume>173</volume>
          {
          <issue>174</issue>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Canovas</given-names>
            <surname>Izquierdo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.L.</given-names>
            ,
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ,
          <source>Garc</source>
          a Molina,
          <string-name>
            <surname>J.:</surname>
          </string-name>
          <article-title>API2MoL: Automating the building of bridges between APIs and Model-Driven Engineering</article-title>
          . IST
          <volume>54</volume>
          (
          <issue>3</issue>
          ),
          <volume>257</volume>
          {
          <fpage>273</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Canovas</given-names>
            <surname>Izquierdo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.L.</given-names>
            ,
            <surname>Sanchez</surname>
          </string-name>
          <string-name>
            <surname>Cuadrado</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ,
          <source>Garc</source>
          a Molina,
          <string-name>
            <surname>J.:</surname>
          </string-name>
          <article-title>Gra2MoL: A Domain Speci c Transformation Language for Bridging Grammarware to Modelware in Software Modernization</article-title>
          .
          <source>In: Workshop on Model-Driven Software Evolution</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Drumond</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Girardi</surname>
          </string-name>
          , R.:
          <article-title>A Survey of Ontology Learning Procedures</article-title>
          . In: WONTO (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. E tinge, S.,
          <string-name>
            <surname>Voelter</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>oAW xText - A framework for textual DSLs</article-title>
          . In: Eclipse Summit Europe Conference (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Garc</surname>
            a-Magarin~o,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gomez-Sanz</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fuentes-Fernandez</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Model transformation by-example: An algorithm for generating many-to-many transformation rules in several model transformation languages</article-title>
          .
          <source>In: ICMT</source>
          . pp.
          <volume>52</volume>
          {
          <issue>66</issue>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Heidenreich</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Johannes</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karol</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seifert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wende</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Model-Based Language Engineering with EMFText</article-title>
          .
          <source>In: GTTSE</source>
          . pp.
          <volume>322</volume>
          {
          <issue>345</issue>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Heidenreich</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Johannes</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seifert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wende</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Closing the Gap between Modelling and Java</article-title>
          . In: SLE, pp.
          <volume>374</volume>
          {
          <issue>383</issue>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. ISO: ISO/IEC 14977:
          <year>1996</year>
          (E), Information technology - Syntactic metalanguage - Extended
          <string-name>
            <surname>BNF</surname>
          </string-name>
          (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Javed</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mernik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bryant</surname>
            ,
            <given-names>B.R.:</given-names>
          </string-name>
          <article-title>MARS: A metamodel recovery system using grammar inference</article-title>
          .
          <source>IST</source>
          <volume>50</volume>
          (
          <issue>9-10</issue>
          ),
          <volume>948</volume>
          {
          <fpage>968</fpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Jezequel</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Combemale</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Derrien</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guy</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rajopadhye</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Bridging the Chasm between MDE and the World of Compilation</article-title>
          .
          <source>SoSym</source>
          <volume>11</volume>
          (
          <issue>4</issue>
          ),
          <volume>581</volume>
          {
          <fpage>597</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bezivin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>TCS: a DSL for the speci cation of textual concrete syntaxes in model engineering</article-title>
          . In: GPCE (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Kappel</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Langer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Retschitzegger</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schwinger</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Model transformation by-example: A survey of the rst wave</article-title>
          .
          <source>In: Conceptual Modelling and Its Theoretical Foundations</source>
          . pp.
          <volume>197</volume>
          {
          <issue>215</issue>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Kessentini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
            ,
            <given-names>H.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boukadoum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Omar</surname>
            ,
            <given-names>O.B.</given-names>
          </string-name>
          :
          <article-title>Search-based model transformation by example</article-title>
          .
          <source>SoSym</source>
          <volume>11</volume>
          (
          <issue>2</issue>
          ),
          <volume>209</volume>
          {
          <fpage>226</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Klint</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , Lammel, R.,
          <string-name>
            <surname>Verhoef</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Toward an engineering discipline for grammarware</article-title>
          .
          <source>ACM Trans. Softw. Eng. Methodol</source>
          .
          <volume>14</volume>
          (
          <issue>3</issue>
          ),
          <volume>331</volume>
          {
          <fpage>380</fpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Kunert</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Semi-automatic Generation of Metamodels and Models From Grammars and Programs</article-title>
          .
          <source>Electr. Notes Theor. Comput. Sci</source>
          .
          <volume>211</volume>
          ,
          <issue>111</issue>
          {
          <fpage>119</fpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bezivin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aksit</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Technological spaces: An initial appraisal</article-title>
          .
          <source>In: CoopIS</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25. de Lara, J.,
          <string-name>
            <surname>Guerra</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sanchez</surname>
            <given-names>Cuadrado</given-names>
          </string-name>
          , J.:
          <article-title>Abstracting Modelling Languages: A Reutilization Approach</article-title>
          . In: CAiSE. pp.
          <volume>127</volume>
          {
          <issue>143</issue>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Ma</surname>
          </string-name>
          , H.,
          <string-name>
            <surname>Shao</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , Zhang,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Ma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            ,
            <surname>Jiang</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          :
          <article-title>Applying OO Metrics to Assess UML Meta-models</article-title>
          .
          <source>In: UML</source>
          . pp.
          <volume>12</volume>
          {
          <issue>26</issue>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Muller</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hassenforder</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>HUTN as a bridge between modelware and grammarware-an experience report</article-title>
          .
          <source>In: WISME Workshop</source>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Saada</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dolques</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
            ,
            <given-names>H.A.</given-names>
          </string-name>
          :
          <article-title>Generation of operational transformation rules from examples of model transformations</article-title>
          .
          <source>In: MoDELS</source>
          . pp.
          <volume>546</volume>
          {
          <issue>561</issue>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29. Schafer,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Thies</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Steimann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Tip</surname>
          </string-name>
          ,
          <string-name>
            <surname>F.</surname>
          </string-name>
          :
          <article-title>A Comprehensive Approach to Naming and Accessibility in Refactoring Java Programs</article-title>
          .
          <source>TSE</source>
          <volume>38</volume>
          (
          <issue>6</issue>
          ),
          <volume>1233</volume>
          {
          <fpage>1257</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>White</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
          </string-name>
          , J.:
          <article-title>Model transformation by demonstration</article-title>
          .
          <source>In: MoDELS</source>
          . pp.
          <volume>712</volume>
          {
          <issue>726</issue>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kramler</surname>
          </string-name>
          , G.:
          <article-title>Bridging Grammarware and Modelware</article-title>
          .
          <source>In: MODELS Satellite Events</source>
          . pp.
          <volume>159</volume>
          {
          <issue>168</issue>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          32.
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Strommer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargl</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kramler</surname>
          </string-name>
          , G.:
          <article-title>Towards model transformation generation by-example</article-title>
          .
          <source>In: HICSS</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>