<!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>JSMF: a exible JavaScript Modelling Framework</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jean-Sebastien Sottet</string-name>
          <email>jean-sebastien.sottet@list.lu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nicolas Biri</string-name>
          <email>nicolas.biri@list.lu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Luxembourg Institute of Science and Technology</institution>
          ,
          <addr-line>5 avenue des Hauts Fourneaux, Esch/Alzette</addr-line>
          ,
          <country country="LU">Luxembourg</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Model-Driven Engineering (MDE) technologies are more and more used outside the software engineering eld such as the typical cases of code generation and formal validation and veri cation. In fact, MDE is applied to many di erent modelling situations such as regulation, law compliance, data analytics, etc. In these domains, we often face incomplete and/or evolving requirements, which implies the need for speci c modelling facilities. In particular, we must be able to relax standard metamodel de nition in order to express uncertainty and unforeseen modelling constructs. However metamodels are important for dealing with computer-based manipulation of models: from the exible models a (new) metamodel should emerge. It will freeze the modelling language features that permit: model transformation, comparison, evolution, etc. In this article we propose a framework called JSMF, based on JavaScript. It allows for de ning a exible metamodel, to freely de ne models and provide controls for checking the level of conformance. We also show how to use JSMF for the incremental de nition of a frozen metamodel, starting from a exible one.</p>
      </abstract>
      <kwd-group>
        <kwd>Flexible modelling</kwd>
        <kwd>Conformance relaxation</kwd>
        <kwd>Natural modelling</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Model-Driven Engineering (MDE) is increasingly applied to modelling cases
where the traditional approach of building models that conform to a precise
and pre-de ned metamodel is not su cient (e.g., enterprise modelling). Indeed,
models are built by domain experts that are not using traditional modelling
tools. Surveys regarding enterprise models [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] show that domains experts are
more eager to use home-grown and semi-structured languages than using a
traditional modelling language, de ned by a strict metamodel. These modelling
situations (e.g., an enterprise architect trying to build organizational view of the
enterprise) often require a more exible modelling tool support [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Many reasons
could explain this need for freedom: exploration of a new domain, unclear
border of model purpose, imprecise/incomplete knowledge about the system under
study, etc.
      </p>
      <p>
        If a exible modelling environment (i.e., not enforcing strict conformance)
allows for better handling of models for speci c situations, it lacks the MDE key
capabilities, e.g., model transformation, computation, comparison, etc. In order
to allow computer based manipulations of such models, the exible (meta)model
should be progressively frozen [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] ensuring the modelling continuum [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Once
frozen, the metamodel becomes a rigid metamodel as opposed to a exible
metamodel.
      </p>
      <p>Many approaches exist for bridging sketching tools/free modelling and the
MDE approach trying to reconcile inconsistencies between exible models and
their underlying metamodel. In this article we will not investigate the alignment
of drawing tools elements and metamodel concepts nor try to infer types for
model elements. We rather propose a framework that allows for 1/ de ning
level of exibility regarding the conformance relation, 2/ consequently being
able to de ne models that not strictly conform to a metamodel (e.g.: by adding
properties), 3/ making new metamodel emerging for raw elements.</p>
      <p>We will rst introduce the JSMF framework as a general overview focusing on
its exibility feature. In a second time, we depict our vision of model exibility
based on (meta)models features. Finally, we propose a reconciliation mechanism
for the conformance relation.
2</p>
    </sec>
    <sec id="sec-2">
      <title>JavaScript Modelling Framework - JSMF</title>
      <p>
        The JavaScript Modelling Framework (JSMF) has been designed for providing
a exible modelling environment that could support the requirements of natural
modelling [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. It is a JavaScript-embedded Domain Speci c Language (DSL)
inspired by the Eclipse Modelling Framework (EMF) in its basic functions but
that relies on JavaScript dynamic typing and on a relative independence between
a metamodel and a model. JSMF also comes with a set of tools (not detailed
in this article) to manipulate and compute properties about models: JSTL for
model-to-model transformation, model checking and querying facilities.
Notion of model and metamodel. In JSMF, the notion of model is seen as a
container: it contains model elements which can be shared amongst models.
A model can contain metamodel or model elements independently. An explicit
reference to a (meta)model (i.e., reference model) can be added to a model but
is not mandatory.
      </p>
      <p>Model elements. JSMF actually di ers from existing EMF
translation/adaptation in JavaScript like, for instance, EMFJSON 1 or a lightweight EMF
implementation in JavaScript JSMF 2: it does not copy the instantiation mechanism
of EMF/Java using the JavaScript prototype. On the contrary a model element
conforms to a metamodel element only using instantiation mechanism. But it
does not prevent from adding any properties (i.e., like any standard JavaScript</p>
      <sec id="sec-2-1">
        <title>1 see: https://github.com/emfjson/emfjson-jackson 2 see: https://github.com/dslmeinte/jsmf</title>
        <p>object). Rules for setting (and getting) attributes and references are dynamically
created at object creation but can be adapted afterwards. Moreover the
metamodel and model can evolve independently, the model is just keeping a reference
to the metamodel that has been used for its creation (which can be inconsistent).</p>
        <p>In JSMF, a metamodel can be de ned using di erent syntaxes as shown in
Listing 1. The classical syntax is inspired by the EMF API. In the example,
a Family is a new instance of class Class. This Family class has an attribute
lastname of type String - here we use the basic type of JavaScript. One can
also use jsmf.String (as shown below as a type element). In JSMF, types are
simply functions that returns true if the given value in a model (i.e., during
instantiation) is valid for this type. When we provide String, it's implicitly
translated in the jsmf.String function that returns true for any string. The
Family class has also a relation named members that related it to a class Person
with a cardinality (0..*) as de ned by JSMF.Cardinality.any.</p>
        <p>The compact syntax is largely inspired by the one used in JavaScript for
de ning raw objects. Here, we present a class Person that has no super-type
(empty array of types []) and has two attributes firstname and age of
respective type String and jsmf.Positive.
// Compact ( JavaScript Object ) Notation
const Person = Class . newInstance ( ' Person ', [] ,</p>
        <p>{ firstname : String , age : jsmf . Positive })
// Classical Syntax - EMF like
const Family = Class . newInstance ( ' Family ')
Family . addAttribute ( ' lastname ', String )
Family . addReference ( ' members ', Person , jsmf . Cardinality . Some )
Listing 1. De nition of Person and Family in JSMF using two possible syntaxes</p>
        <p>As a basic feature of JSMF we allow to de ne relationships that target any
class of any type, see Listing 2. This is equivalent to referencing the EMF
EObject Class. This is a rst form of exibility: it means that any class can be
targeted by such relation (i.e., target type of this reference is not discerned). For
example, the previous Family declaration would be the following if we want to
accept any class instance as a member of a family:
const Family = Class . newInstance ( ' Family ')
Family . addAttribute ( ' lastname ', String )
Family . addReference ( ' members ', jsmf . JSMFAny ,
jsmf . Cardinality . Some )</p>
        <p>Listing 2. De nition of annotation</p>
        <p>As a summary, the features and the conceptual structure of the JSMF (meta)modelling
environment is de ned in the Figure 1. In JSMF a class can inherit from
multiple classes, combining all the properties together. However, if a model element
is overridden into multiple inherited classes (e.g., the same attributes de ned
many times), only the last class is taken as the only de nition 3.</p>
      </sec>
      <sec id="sec-2-2">
        <title>3 alike rst versions (e.g., 2.3) of Python programming language.</title>
        <p>Alike many object inspired modelling frameworks, a JSMF Class has many
attributes and references. Attributes are classically de ned (name, type and
mandatory attributes). References are partially classically de ned: reference
point at a TargetElement. Target elements can be a precise class or any JSMF
element: JSMFAny.</p>
        <p>
          One speci city of JSMF is that we can de ne an associated class which
could quality the reference/relation, i.e., providing additional information such as
weight, probability, etc. Through references one can directly de ne a relationship:
proposing an opposite reference and an opposite cardinality. Cardinalities are
de ned as follow by prede ned set of min/max: [
          <xref ref-type="bibr" rid="ref1">0,1</xref>
          ], [
          <xref ref-type="bibr" rid="ref1 ref1">1,1</xref>
          ], [0,*], [1..*].
        </p>
        <p>For building modelling elements that conform to metamodel elements two
notations also exists: a classical object (EMF-like) construction (create object
rst, then set attributes) or the compact JavaScript one.
// Expanded notation &amp; new
const john = new Person ()
john . f ir st na me = ' John '
john . age = 46
// Compact notation &amp; n e w I n s t a n c e
const kennedy = Family . n e w I n s t a n c e ({ name : ' Kennedy ' ,
members : [ john ]})</p>
        <p>Listing 3. De nition of annotation
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Flexibility</title>
      <p>As presented in the previous section, JSMF looks like a classical framework that
takes bene ts from JavaScript dynamic typing. In this section we show how
JSMF could that o ers more exibility than traditional approaches. In order to
build a exible modelling support, several rules needed to be relaxed as well.
Relaxing the conformance relation allow models to be adapted to various
situations. For instance, for adapting (meta)model to the domain being discovered
or to overcome language limitation regarding a peculiar purpose.
3.1</p>
      <sec id="sec-3-1">
        <title>De ning Flexible (Meta)Models</title>
        <p>
          Within JSMF, relaxing the conformance can apply to an entire model or just to
some elements. As a result we allow each (meta)model element to be con gured
separately. A metamodel which has some exible modelling elements can be
referred to as a proto-metamodel. Like proto-languages [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], proto-metamodel
de nes a \partial and exible structure" that a model could conform to. Some
elements may not be de ned, used di erently amongst domain engineers and
more importantly the language and models can still evolve.
        </p>
        <p>We have identi ed some important properties for setting the exibility level.
Attributes optionals/mandatory: By default in JSMF, attributes are
optional but they can be set as mandatory thanks to an option in the attribute
de nition.</p>
        <p>Attributes types: The types can be checked or not, same applies to
typeimposed constraints (e.g., a Number between 0 and 20).</p>
        <p>References cardinalities: The cardinality can be checked or not. Not
checking the cardinalities means setting a 0..* cardinality.</p>
        <p>References targeted type: As shown before, targeted types can be loosely
de ned using JSMFAny. There is a slight di erence between using JSMFAny
and not checking type. For the latter the declared type can be a hint.
References opposite: The opposite relation can be checked or not (including
the opposite cardinality).</p>
        <p>The level of exibility can change all along the life-cycle of a metamodel.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Flexibility management in JSMF</title>
        <p>JSMF provides facilities to de ne the exibility of the models class by class and
even at the attributes and references level. By default, a JSMF (meta)model
comes with the following exibility rules:
{ Attributes types are checked when we assign a value to an attribute slot. If
the attribute is mandatory, JSMF check that the value is unde ned.
Assigning an invalid value to an attribute slot will raise an exception.
{ Reference targeted types are checked. An error is raised when an attempt is
made to assign the wrong type to a reference.
{ References cardinalities are not dynamically checked.
{ Additional-attributes and references can be de ned on an existing object.</p>
        <p>JSMF allows a ne management of the two rst items of the list above
(attribute types and mandatory checking, and reference type checking). We can
either modify the de nition of the exibility of an attribute or reference at its
declaration or later on for a whole class. Here, in Listing 4 we revisit the example
of Listing 1 but we replace the Family class by a de nition with a exible
reference members and we set the whole Person class as exible.
// Set the whole Person class as Flexible
Person . setFlexible ( true )
// And thus is a ( stupid but ) valid instance declaration
const john = Person . newInstance ({ firstname : 42 , age : ' John '})
// errorCallback define the flexible behaviour of members
const Family = Class . newInstance ( ' Family ', [] ,
{ lastname : { type : String , mandatory : true }} ,
{ members : { target : Person</p>
        <p>, errorCallback : jsmf . onError . silent }})
const smith = Family . newInstance ( ' Smith ')
// We can assign something else than a Person to members
smith . members = [ smith ]</p>
        <p>Listing 4. Flexibility declaration example</p>
        <p>As written in Listing 4, the exibility of a whole class can be set thanks
to the setFlexible method. For a single attribute or reference, one can use
errorCallback during the declaration to de ne the behaviour of JSMF when a
type error is encountered. Several default methods are provided to handle these
type errors. Here, we use onError.silent, which discards the type error and
performs the assignment. More advanced methods can be de ned, allowing for
example to correct some errors before the assignment.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Checking conformance</title>
        <p>Whilst model exibility can be desirable in an exploration phase, it may not t
with all production purposes. We need tools to assess how a model di ers from
its metamodel and then to reconcile them. JSMF provides a checking tool that
will check basic construction rules (attributes and references types,
cardinalities, extra attributes or references) as well as metamodel-speci c constraints (a
la OCL). The checker returns a JavaScript object containing all the constraints
violations of a model. These violations are grouped by constraint type and come
with a detailed context that allows precise identi cation of the issue location
in the model. In Figure 5, we use the exible Person and Family to provide a
rst sketch of a model instance with some di erences its reference model
(metamodel).
const DomesticPet = jsmf . Class . newInstance ( ' DomesticPet ', [] ,
{ name : String , race : String })
Person . setFlexible ( true )
const FamilyModel = new Model (' FamilyModel ', {},</p>
        <p>[ Family , Person ])
const kennedy = Family . newInstance ({ name : 'Kennedy '})
const john = new Person ({ firstname : 'John ',</p>
        <p>birthdate : new Date ('1917 -05 -29 ')})
const jackie = Person . newInstance ({ firstname : ' Jacqueline ',
nickname : 'Jackie ', birthdate : new Date ('1929 -07 -28 ')})
const charlie = DomesticPet . newInstance ({ name :'Charlie ',
race : 'Welsh Terrier '})
kennedy . members = [john , jackie , charlie ]
const Families = new Model (' Families ', FamilyModel ,
[ kennedy , jackie , john , charlie ])</p>
        <p>Listing 5. Flexible metamodel and model instance</p>
        <p>If we check the Families model (typing Families.check()), we obtain as a
result a JavaScript object that gather all the errors, grouped by error type. The
conformance check of the example of Listing 5 catches the following error:
{ The family object Kennedy has a eld lastname which is mandatory but
unde ned.
{ The Kennedy Family also has a member that is not a Person, Charlie.
{ Several elements ave additional attributes: Jacqueline has a birthdate and a
nickname, and John has a birthdate.</p>
        <p>To give an insight of the object representation, Listing 6 provides an excerpt
of the conformance check object. Note that this is a raw output of a JavaScript
object, not intended to be used as-is for human comprehension. The excerpt
shows the reference type violation entries. It is composed of a unique error. The
error is de ned as a heterogeneous list, where the rst element is the model
element that contains the error (the Kennedy family), the second element is
the reference name that contains the error (members) and the third element is
the wrongly typed element (the dog Charlie). The advantage of the output as
a JavaScript object is that we have a direct access to the model elements that
do not conform to the reference model. Thus we can access and modify them
directly.</p>
        <p>{ // ...</p>
        <p>referencesTypeRule :
[ [ { lastname : undefined , members : [ Object ], name : '
Kennedy ' },
'members ',
{ name : 'Charlie ', race : 'Welsh Terrier ' } ] ],
// ...}</p>
        <p>Listing 6. An excerpt of check result</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Metamodel and Model reconciliation</title>
      <p>The Metamodel and Model reconciliation involves applying di erent modi
cations to the model and to the proto-metamodel to obtain, ideally, a model and
a metamodel such that the rst conforms to the latter. As an embedded DSL
language, and thanks to its exibility, JSMF can take advantage of JavaScript
expressiveness to tweak both the model and the metamodel quite easily. A
classical reconciliation session consists in applying modi cations to the model and
metamodels and observing the conformance errors of the resulting (meta)models.</p>
      <p>A subtlety is that, as explained in Section 2, evolution of a metamodel element
is not immediately replicated on elements that conform to it. We provide two
functions, refreshElement and refreshModel to respectively resynchronize an
element or a whole model with an up-to-date metamodel.</p>
      <p>Based on the example in Listing 5 we illustrate the two major reconciliation
approaches: modi cation of the model elements to conform to the metamodel
and the converse.</p>
      <p>Applying change directly to the model. Let's decide that lastname is the correct
attribute name for a family name. Thus, we must change the kennedy object
accordingly, which can be done in two JavaScript instructions: kennedy.lastname
= kennedy.name; delete kennedy.name. Here, the metamodel is unchanged,
we have just xed a model element.</p>
      <p>Applying change directly to the metamodel. Changes to the metamodel can be
performed manually or through heuristics functions. Manually, we can for
example add a nickname attribute to the Person class quite easily and then we just
have to refresh the model elements, as follows:
Person.addAttribute('nickname', String)
jsmf.refreshModel(Families)
Discovering metamodel structure from a model. Changes can also come from
the models used here as an archetypal example. Note that we are not addressing
the discovery of a full metamodel from a exible model, but rather re ne some
parts (i.e. class) of a exible metamodel. One can decide that a model element
is an archetypal representation of a class, thus updating the metamodel
accordingly. The properties of the object (note that this also works for non-JSMF
objects) are examined (as key-value pairs) and the attribute types inferred from
the current data, notably using JavaScript's typeof. For references, we make
the assumption that they target only JSMF elements. For instance, the Jackie
Kennedy instance can help in building or updating the Person class by invoking
the archetypalDiscovery function. The Person gets 3 attributes, here adapted
from log trace:
attributes:
{ firstname:[Function: isString], //...</p>
      <p>nickname:[Function: isString], //...</p>
      <p>birthdate:[Function: isDate], //... }</p>
    </sec>
    <sec id="sec-5">
      <title>Related work</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] the authors introduce the requirements for a exible metamodelling
environment. They classi ed the di erent usage and nature of metamodels to be
used in either exible or rigid modelling scenarios. Models can be de ned
independently from a metamodel (metamodel is then built from the model).
      </p>
      <p>
        In the rst extreme of exibility, metamodels are not pre-de ned and are
inferred from models. The approaches of [
        <xref ref-type="bibr" rid="ref11 ref2">2, 11</xref>
        ] also support this type of scenario.
In a same idea, [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] works on partially rigid metamodels. It involves inference
only for the exible part taking bene ts from rigid parts. We did not go deep into
inference mechanisms used to create metamodel [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] from example models.
However, it should be implemented as an additional module in the JSMF framework.
Moreover, most of these approaches [
        <xref ref-type="bibr" rid="ref11 ref13">13, 11</xref>
        ] come with graphical editor allowing
users to draw any shape and then assign structure and semantic to them. This
last point is beyond of the scope of the article.
      </p>
      <p>
        The concept of Muddle [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] o ers the same capabilities as JSMF. It allows for
the de nition of models that follow a \partial" structure de ned by a metamodel
that can be translated into a EMF (meta)model. In this work, we opt for a direct
handling of both exible and rigid models into our framework.
      </p>
      <p>
        A posteriori typing [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] o ers to separate the instantiation mechanism from
typing/classifying. JSMF does not directly support this process but embed tools
to support similar situations: relying on metamodel and model reconciliation
mechanisms (see Section 4).
      </p>
      <p>
        Finally, the approach of [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] is close to the current capabilities of JSMF. In
JSMF setting a speci c level of error is equivalent to relaxing the conformance
(i.e., the model element partially conforms to its metamodel element).
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>We have presented JSMF4, a exible modelling framework which allows to
dene both relaxed and rigid conformance. JSMF, as we have shown in this article,
comes with the possibility to check the conformance (dynamically and statically)
comparing the models and metamodels and reconciling them together in both
directions: i.e., by enforcing conformance (Metamodel! Model) or by discovering
structure from an example (Model! Metamodel). With JSMF any part of any
modelling element (its attributes and references) can be made exible by
disabling (i.e., silencing) the -dynamic- type checking used when assigning values.
However, exibility without control would not be useful. In order to retain
bene ts from MDE tools (e.g., model transformations) we need to get back to rigid
modelling elements. We have designed a static checker that helps in identifying
issues and supporting a progressive translation to a classical MDE approach.
As such, JSMF can be seen as a prototyping environment before applying more
traditional/industrial MDE solutions. The exibility of JSMF is ideal during the
exploration of a new domain, problematic, etc.
4 see https://js-mf.github.io/ for implementation and more components.</p>
      <p>
        Future work will focus on investigating inference (e.g., type inference) for
ambiguous modelling elements or from any data source. Notably we aim at
supporting natural modelling sessions [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] relying on natural interaction (e.g.,
tangible objects, shapes, etc.).
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Bjekovic</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sottet</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Favre</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Proper</surname>
            ,
            <given-names>H.A.</given-names>
          </string-name>
          :
          <article-title>A framework for natural enterprise modelling</article-title>
          .
          <source>In: Proceeding of the 15th IEEE Conference on Business Informatics</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Cho</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Syriani</surname>
          </string-name>
          , E.:
          <article-title>Creating visual domain-speci c modeling languages from end-user demonstration</article-title>
          .
          <source>In: Proceedings of the 4th International Workshop on Modeling in Software Engineering</source>
          . pp.
          <volume>22</volume>
          {
          <fpage>28</fpage>
          . IEEE Press (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>De Lara</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guerra</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cuadrado</surname>
            ,
            <given-names>J.S.:</given-names>
          </string-name>
          <article-title>A-posteriori typing for model-driven engineering</article-title>
          .
          <source>In: Model Driven Engineering Languages and Systems (MODELS)</source>
          ,
          <year>2015</year>
          ACM/IEEE 18th International Conference on. pp.
          <volume>156</volume>
          {
          <fpage>165</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Gabrysiak</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Luders,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Seibel</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>How can metamodels be used exibly</article-title>
          .
          <source>In: Proceedings of ICSE 2011 workshop on exible modeling tools</source>
          ,
          <source>Waikiki/Honolulu</source>
          . vol.
          <volume>22</volume>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Hoppenbrouwers</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Freezing Language;
          <article-title>Conceptualisation processes in ICT supported organisations</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Nijmegen, The
          <string-name>
            <surname>Netherlands</surname>
          </string-name>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <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>Information and Software</source>
          Technology pp.
          <volume>948</volume>
          {
          <issue>968</issue>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matragkas</surname>
            ,
            <given-names>N.D.</given-names>
          </string-name>
          , Rodr guez, H.H.,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          :
          <article-title>Programmatic muddle management</article-title>
          .
          <source>In: XM@ MoDELS</source>
          . pp.
          <volume>2</volume>
          {
          <issue>10</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Malavolta</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lago</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muccini</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pelliccione</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tang</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>What Industry Needs from Architectural Languages: A Survey</article-title>
          .
          <source>IEEE Trans. Software Eng</source>
          . (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Ossher</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bellamy</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Amid</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Anaby-Tavor</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Callery</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Desmond</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vries</surname>
            , J.d., Fisher,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frauenhofer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krasikov</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simmonds</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Swart</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Business Insight Toolkit: Flexible Pre-requirements Modeling</article-title>
          .
          <source>In: ICSE Companion</source>
          . pp.
          <volume>423</volume>
          {
          <fpage>424</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Salay</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chechik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Supporting agility in mde through modeling language relaxation</article-title>
          .
          <source>In: XM@ MoDELS</source>
          . pp.
          <volume>20</volume>
          {
          <issue>27</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Sanchez-Cuadrado</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Lara</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guerra</surname>
          </string-name>
          , E.:
          <article-title>Bottom-up meta-modelling: An interactive approach</article-title>
          .
          <source>In: International Conference on Model Driven Engineering Languages and Systems</source>
          . pp.
          <volume>3</volume>
          {
          <fpage>19</fpage>
          . Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Zarwin</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bjekovic</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Favre</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sottet</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Proper</surname>
          </string-name>
          , H.:
          <article-title>Natural modelling</article-title>
          .
          <source>Journal of Object Technology</source>
          <volume>13</volume>
          (
          <issue>3</issue>
          ),
          <volume>1</volume>
          {
          <fpage>36</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Zolotas</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matragkas</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Devlin</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          :
          <article-title>Type inference in exible model-driven engineering</article-title>
          .
          <source>In: European Conference on Modelling Foundations and Applications</source>
          . pp.
          <volume>75</volume>
          {
          <fpage>91</fpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>