<!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>Multi-level Language Descriptions</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of ICT, University of Agder</institution>
          ,
          <addr-line>Grimstad</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Language descriptions are a multi-level issue. In particular, the denition and handling of instantiation semantics connects three levels. This paper looks at two language workbenches without support for multi-level modelling and their handling of the multi-level part of language descriptions. From these observations, the importance of runtime instantiation in terms of an underlying machine is established.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Levels in modelling and in programming are typically considered in a hierarchy
that is given by instantiation. Generally, the main idea of multi-level modelling
is to provide ways to not only inuence the instances of a model, but also the
instances of these, as observed in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. In the area of language description, this
concerns instantiation semantics, which is about instantiation of the instances.
      </p>
      <p>
        Therefore, instantiation semantics, also known as structural semantics, is a
multi-level issue. The same is true for execution semantics, which is based on
the instantiation semantics since executions are sequences of instance structures.
This paper will not discuss execution semantics; the interested reader is pointed
to [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for more information.
      </p>
      <p>
        The problem of instantiation semantics is approached by observing two tools,
LanguageLab [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and MPS [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Both tools are language workbenches, and not
multi-level modelling tools. However, they handle instantiation semantics, which
is a multi-level issue.
      </p>
      <p>
        The experience with the tools is used to propose a framework for the
discussion of instantiation semantics and multi-level modelling. The framework is
used to revisit two old problems of non-multi-level approaches as discussed in
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. First, using only two levels leads to ambiguous classication, in that it is
dicult to place the concepts on the correct levels. An example from UML are
the two concepts Node and NodeInstance, which should be on the same level,
as they both belong to the same language, but need to be on dierent levels, as
they describe aspects that are on dierent levels. The second problem concerns
the replication of model elements, mostly due to the fact that instantiation is
available between every two levels and this has to be described on each level.
      </p>
      <p>
        This kind of problems has lead to the idea that the OMG architecture is
broken and has to be xed. Multi-level modelling [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] came to the rescue, allowing
instantiation over several levels. Several approaches for multi-level modelling have
been proposed, among them orthogonal (linguistic plus ontological) approaches
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], deep instantiation (potencies and clabjects) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and powertype-based
approaches [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. They solve the problems with the architecture, but also bring a
new level of complexity.
      </p>
      <p>Our experience with the tools shows that language descriptions can be
handled in the OMG architecture based on the concept of runtime environment.</p>
      <p>This paper continues with Sect. 2 which explains levels and their relation to
language descriptions. Section 3 looks into tool handling of instantiation
semantics. In Sect. 4, underlying machines and instantiation are considered. Section 5
introduces runtime environments, leading to a discussion of the two problems in
Sect. 6. Finally, the paper is summarized in Sect. 7.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Metamodelling and MDA</title>
      <p>
        OMG has dened model-driven architecture (MDA) for using models in the
development process, see [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. MOF [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and UML [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] are key languages of the
MDA, but MDA is open for other languages. MDA is based on an understanding
of a four-level hierarchy of abstractions as illustrated in the table below. M0 is
OMG Level
      </p>
      <p>Examples</p>
      <p>Grammar example OCL example
M3 = meta languages MOF EBNF
M2 = languages UML metamodel Java grammar
M1 = models UML model a program
M0 = instances objects of UML classes a run
MOF
OCL language
a formula
a truth value
the lowest level. It contains concrete (runtime) objects. The next level (M1)
includes the models that describe the M0 objects. On top of M1 there is a level
describing how models are formed, which is a meta-model or language level,
called M2. Finally, the architecture is closed with a level M3 (meta-language)
that is supposed to both describe M2 as well as describing itself.
2.1</p>
      <sec id="sec-2-1">
        <title>Denition and Use</title>
        <p>
          The relation between levels is the denition-use relation, where the higher level
provides the denition and the lower level includes the use. This is the
instantiation relation (meta-relation) as for example stated in [
          <xref ref-type="bibr" rid="ref21 ref8">8, 21</xref>
          ]. As an example,
the denition of a program on M1 is related to a use (a run) on level M0. In [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ],
this level-crossing relation is called linguistic instantiation. The second related
dimension, called ontological instantiation, is discussed in Sect. 6.
        </p>
        <p>
          Denition and use refer to roles, not to absolute properties. This means that
the same entity can be both use and denition depending on context, which leads
to the notion of clabjects in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. This way all the four OMG levels are spanned
by the denition-use relation, connecting two adjacent levels thereby raising an
arbitrary number of levels, see also [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. With the denition-use relation only
crossing one level boundary, MDA is not a multi-level approach per se.
        </p>
        <p>The denition-use relation is also known as type-element pattern, where a
denition (type) gives rise to a number of uses (elements). The connection
between denition and use is provided by a semantic function, associating the
denition with a set of possible uses. The denition-use relation also appears
between compile time (denition) and runtime (use). Typically, the denition is
read-only while the use is read/write.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Language Descriptions</title>
        <p>
          Formal language descriptions on OMG level M2 have the aspects structure,
syntax, and semantics ([
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]).
        </p>
        <p>Language structure denes the concepts of the language and their relation to
each other, maybe as a MOF class diagram. This way, the structure aspect allows
describing all possible instances in a generative way. In addition, constraints
restrict the possible instances by rejecting some of them as invalid.</p>
        <p>The syntax aspect can have dierent kinds of presentation, e.g. textual,
graphical, and tabular presentations and a mixture of them. It is often dened by the
specication of a presentation domain and a one-to-one mapping between
presentation domain and structure.</p>
        <p>The semantics (meaning) can be given in several dierent ways. For
example, semantics can dene language instance execution (operational semantics), or
dene a mapping into another language (transformation semantics). An
important part of operational semantics is instantiation semantics, i.e. the way how
instances of the language are instantiated.</p>
        <p>Each language aspect requires a meta-language for its description, which
amounts to a potentially large number of meta-languages. MOF is an example
of a meta-language for structure, while OCL is an example for constraints.</p>
        <p>In this paper, instantiation semantics is most important. It is dened by the
language itself (on M2) and might depend on the actual program (on M1). It
describes how to create objects at runtime (M0). This way it is a multi-level
issue. In fact, none of the other language aspects are multi-level, as structure,
syntax, and transformation do only cross one level boundary.</p>
        <p>
          With instantiation semantics, the language bridges three levels, see [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>1. the language specication, or the meta-model,</title>
        <p>2. the user specication, or the model, and
3. objects of the model.</p>
        <p>After the two-level denition-use, this introduces a three-level pattern that is
repeated in MDA: M2-M1-M0, M3-M2-M1, M3-M3-M2.
3
3.1</p>
        <p>MPS</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Levels and Instantiation in Tools</title>
      <p>
        Meta-Programming System (MPS) [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] is a tool to dene domain-specic
languages. It is geared towards professional developers and is often used in a Java
environment. It is written in Java, but can be used with other languages as well.
The mbeddr project [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] has applied MPS to programming of embedded devices
in a C/C++ environment.
      </p>
      <p>The general philosophy of MPS can be explained in connection with the
OMG four-level architecture. The meta-languages (M3) in MPS are predened
by the platform and xed. Being a professional tool, MPS has a large variety of
meta-languages to describe all aspects of languages.</p>
      <p>The rst main activity in MPS is the description of a language on M2 using
the M3 languages. This language description is translated by MPS into MPS
internal Java code thereby creating an IDE for the language described. An
example is the denition of a Petrinet language with the MPS meta-languages for
structure, constraints, text syntax, transformation, intentions, and behaviour.</p>
      <p>The second main activity in MPS is the denition of programs or
specications on M1 in the IDE for the language dened on M2. MPS provides a
projectional editor starting from the internal objects and showing either a default
view or a language-dened view. If the programs written should be executable,
a transformation has to be provided, typically into Java. If this is the case, then
user programs are transformed into standard Java programs.</p>
      <p>Finally, MPS does not care for M0, as it relies on the built-in execution and
instantiation as given by Java (or C++, if C++ code is generated). This way,
M0 need not be handled in MPS.</p>
      <p>For the levels M3-M2 and M2-M1, MPS uses its built-in instantiation
semantics, which is accessible using an internal language called S (for structure). For
instantiation between M1 and M0, the instantiation semantics of the generated
code is used.
3.2</p>
      <sec id="sec-3-1">
        <title>LanguageLab</title>
        <p>
          LanguageLab [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] is an educational tool for language description theory. Only a
few languages exist in LanguageLab and they are related to teaching or to the
platform itself. LanguageLab provides very simple meta-languages for structure,
textual syntax and transformation, thereby being much simpler than MPS.
        </p>
        <p>An example is the basic structure meta-language, which is dened using the
basic meta-languages for structure, text syntax and transformation.</p>
        <p>LanguageLab favours a relative approach and does not use absolute levels as
MDA. In particular, all the levels M3, M2, M1, and M0 are similar in
LanguageLab. This is achieved by a modular approach, where the main entity is a module,
which can be a language or a specication or a meta-language. Modules come
with two sets of interfaces: provided interfaces (lower interfaces) in the sense of
denitions, that are available for use, and required interfaces (upper interfaces),
which are uses of denitions on the next upper level. This way, LanguageLab
mirrors the denition-use relation.</p>
        <p>LanguageLab is implemented in Java, but the user has no access to the
implementation. The user only sees the languages provided. This is achieved by
the denition of a platform, which is the underlying abstract runtime machine of
LanguageLab. This platform provides instantiation, presentation and mapping
primitives and thus allows languages to be dened and executed. LanguageLab
uses the same platform instantiation between any two adjacent levels.
3.3</p>
      </sec>
      <sec id="sec-3-2">
        <title>Bootstrapping</title>
        <p>Both MPS and LanguageLab claim to be bootstrapped, i.e. the meta-languages
given in them are dened in the platform itself.</p>
        <p>LanguageLab has two parts of the tool, the platform and the languages. The
semantics of the languages is provided by mapping them to the elements of
the platform. So an editor description is mapped to a runtime editor in the
platform. Normally, LanguageLab modules are dened by other LanguageLab
modules, but it is not a problem to dene them by themselves. In this case,
the upper module is read-only, while the lower one is read/write. For bootstrap,
the meta-languages are dened using a read-only version of themselves, which
is then translated to the platform primitives. Execution in the platform is given
by the underlying LanguageLab machine.</p>
        <p>MPS bootstrapping is more tricky. The MPS meta-languages are translated
into Java. This Java code is related to several interfaces and stubs for the MPS
tool platform. When these interfaces are used, the platform ensures the correct
result. In addition to the interfaces, MPS also uses the specications in the
languages for cross-referencing and similar purposes.</p>
        <p>In order to achieve bootstrapping in MPS, the previous generated code is
stored and used for generating the new version of the code. Then, the new
code is compiled and a new version of the platform is provided. Again, the old
version of the module is used in a read-only way in order to produce the new
one. The trick is to generate the same code as before, in particular the same
concept identiers, because otherwise it would not be possible to connect the
old instances of concepts to the new generated concepts.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Machines: MOF-VM</title>
      <p>
        Semantics, in particular instantiation semantics, is based on an underlying
mechanism that provides basic execution and instantiation. This mechanism could be
very low level as in machine code, where an indication of a memory area leads to
the provision of an actual memory (simple instantiation). It could also be more
high level as in a virtual machine that features class instantiation. In this paper,
the basis is a mechanism that provides general object-oriented instantiation with
the name MOF-VM (see also [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]). This is similar to the underlying instantiation
in MPS and LanguageLab, see also Fig. 1. MOF-VM is a virtual machine that
has instantiation semantics like MOF, which means that classes dened in the
MOF-VM can be instantiated into objects. This way, all existing instances are
internally MOF-VM objects, including the objects on M2, M1, and M0.
      </p>
      <p>Figure 1 shows the underlying MOF-VM instantiation on the right-hand side.
A class RT_ActiveClass is instantiated and yields an object :RT_ActiveClass
with the attribute name being Factory . That instantiation is internal.</p>
      <p>The left-hand-side shows the language instantiation with Factory being an
instance of ActiveClass. While the right bottom shows the default presentation
coming from the platform, the left bottom shows the language-dened
presentation. Both presentations show the same internal object. The last relation in the
gure called applied mapping is explained in Sect. 5.</p>
      <p>In Fig. 1, language instantiation is a composition of three relations: applied
mapping, MOF-VM instantiation , and presentation. The MOF-VM instantiation
is built-in and provides the level-crossing relation in the OMG architecture. By
using the MOF-VM instantiation, language denitions do not need to cross levels
in order to dene their (linguistic) instantiation.</p>
      <p>Instantiation in MOF as a language works in the same way - using the built-in
MOF-VM instantiation. MOF-VM instantiation is related to the MDA platform
denition and not the language denition of MOF. This means that apart from
linguistic and ontological instantiation, there is also MOF-VM (runtime)
instantiation, which is used to achieve linguistic instantiation. It is crucial to keep
these three apart when trying to understand instantiation semantics.</p>
      <p>An important point is the presentation in Fig. 1. The objects on the
righthand side (grey) do not have any presentation, because they are objects of the
underlying machine (MOF-VM). The notation used in Fig. 1 is therefore just an
ad-hoc presentation of these objects.</p>
      <p>Even though MOF-VM provides execution and instantiation, it is abstract.
There will be a target platform below MOF-VM used as concrete real machine
for execution. There are known and proven techniques and methods to achieve
this mapping onto a real machine, and this paper does not go into these details.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Runtime Environment</title>
      <p>
        As discussed in Sect. 2, each language has to dene how to instantiate its
elements, e.g. what are instances of classes, modules, methods, and variables. The
structures (possible states) existing at runtime are commonly called runtime
environment (RTE). RTE states are purely structural and runtime state changes
are based on them, see also [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. The read-only program itself is somehow
available in the runtime state, such that the execution can refer to the program. The
denition of RTE belongs to the language, i.e. level M2. But also the
specication might inuence the RTE, such that the denition has to be done on level
M1. In order to sort out the levels, we distinguish several kinds of elements in
the RTE as follows.
      </p>
      <p>Global elements are runtime elements coming from the language, e.g.
predened libraries, program counter, and exception storage. They are xed by
the language on M2, and are independent of the specic program.
Local elements relate to language concepts and describe how these are
instantiated at runtime. They are related to their respective concepts, but are
xed on the level of the language (M2), like storage areas for static variables.
For any language concept, the instantiation can yield none (1:0), one (1:1),
or many (1:n) runtime elements depending on the language.</p>
      <p>Dependent elements are similar to local elements, but they depend on the
specic program. Objects of classes and stack frames for methods are two
examples. They cannot be dened statically on level M2. Instead, on M2
a mapping from the language concepts to the runtime structures can be
dened. Again, the mapping can be 1:0, 1:1 and 1:n.</p>
      <p>In Fig. 1, the instantiation from M2 to M1 is dened by a (meta-)language
on M3. MOF-VM knows by means of an applied mapping that it should use
RT_ActiveClass in order to instantiate ActiveClass (Fig. 1). The applied
mapping (M2) is a use of the dened mapping (M3), see Fig. 2. All the dierent kinds
of runtime elements can be captured with such a dened mapping .</p>
      <p>Similarly, the instantiation semantics of a language description (RTE
structure) is dened at M2 as a mapping from the program on M1 to the MOF-VM
classes on M1, which then get instantiated at M0 as MOF-VM objects.</p>
    </sec>
    <sec id="sec-6">
      <title>Solving Multi-level Modelling Problems</title>
      <p>Based on the concepts presented in Sect. 5, we revisit the two problems
mentioned in the introduction: use of non-multi-level approaches leads to (1)
ambiguous classication and (2) replication of model elements.</p>
      <p>MPS and LanguageLab are not multi-level, but still they do not have these
problems. What is their solution? For the problem (2), both tools use a
relative approach, where languages are not placed on xed levels, but denitions of
languages are placed relative to their uses.</p>
      <p>
        For the solution to problem (1), we have to look more closely into the three
kinds of instantiation. Figure 3 shows the combination of the relations dened
mapping (D), applied mapping (A), and presentation (P). On the left of the gure,
the user view of instantiation is presented. On level M0, a dummy presentation
of the runtime object for Factory is used, in order to make the gure complete.
Most often, the objects on M0 have no language-dened presentation. To the
right, there are the three instances of the language denition and use pattern
stretching over three levels each: M2-M1-M0, M3-M2-M1, and M4-M3-M2. All
level-crossing on the right part is MOF-VM instantiation. A similar pattern is
also used quite often in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], and it is the natural way to think when using
language-oriented programming [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>The important part of Fig. 3 is the level M2, as here we have three relations
at the same time. The same would be true for any higher levels, but Fig. 3 does
not show all these relations. In particular, there is a presentation relation on
each level, connecting the runtime view and the language view. These two are
separate, therefore there is no ambiguous classication. Clabjects show these two
in one presentation, which blurs the dierence between them. BTW, clabjects
would look dierently on levels M1 and M0.</p>
      <p>When it comes to expressing the mappings, there are many ways to do this.
A simple way to dene a mapping for local elements and maybe even for global
elements are attributes with potency 2 in a deep modelling context.</p>
      <p>
        A modelling language on M2 may provide as many ontological levels as
needed, see also [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Its RTE has to dene instantiation for each of them,
indicating what elements can appear on level M0, based on runtime instantiation.
This way ontological language levels can be captured with the MDA architecture.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Summary</title>
      <p>This paper has reviewed the multi-level needs for language descriptions, in
particular instantiation semantics. MOF-VM (runtime) instantiation as a basis for
linguistic instantiation was found to be the backbone of the OMG four-level
architecture and strict meta-modeling.</p>
      <p>The denition of runtime environment is essentially the denition of
instantiation semantics. RTE is not dened out of thin air, but related to an underlying
machine, which is MOF-VM in this article. Several possible kinds of instantiation
relations between specication and RTE were identied. They are specied for
a language as a mapping between specication and MOF-VM, which is dened
at language level and used at specication level.</p>
      <p>There are three kinds of instantiation: linguistic, ontological, and runtime
instantiation.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Khne</surname>
          </string-name>
          .
          <article-title>Meta-level independent modelling</article-title>
          .
          <source>In International Workshop on Model Engineering at 14th European Conference on ObjectOriented Programming</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Khne</surname>
          </string-name>
          .
          <article-title>The essence of multilevel metamodeling</article-title>
          .
          <source>In UML 2001-The Unied Modeling Language. Modeling Languages, Concepts</source>
          ,
          <source>and Tools</source>
          , pages
          <year>1933</year>
          . Springer Berlin Heidelberg,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Khne</surname>
          </string-name>
          .
          <article-title>Model-driven development: A metamodeling foundation</article-title>
          .
          <source>Software</source>
          , IEEE,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Jean</surname>
            <given-names>BØzivin</given-names>
          </string-name>
          and Olivier GerbØ.
          <article-title>Towards a Precise Denition of the OMG/MDA Framework</article-title>
          .
          <source>Proceedings of ASE'01, Automated Software Engineering</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Tony</given-names>
            <surname>Clark</surname>
          </string-name>
          , Cesar Gonzalez-Perez, and
          <string-name>
            <surname>Brian</surname>
          </string-name>
          Henderson-Sellers.
          <article-title>A foundation for multi-level modelling</article-title>
          .
          <source>In Proceedings of the Workshop on Multi-Level Modelling co-located with ACM/IEEE 17th International Conference on Model Driven Engineering Languages &amp; Systems (MoDELS</source>
          <year>2014</year>
          ), Valencia, Spain,
          <year>September 28</year>
          ,
          <year>2014</year>
          ., pages
          <fpage>4352</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Sergey</given-names>
            <surname>Dmitriev</surname>
          </string-name>
          .
          <article-title>Language oriented programming: The next programming paradigm</article-title>
          .
          <source>JetBrains onBoard</source>
          ,
          <volume>1</volume>
          (
          <issue>2</issue>
          ),
          <year>2004</year>
          . URL: http://www.onboard.jetbrains.com/is1/articles/04/10/lop/mps.pdf, accessed
          <year>2015</year>
          -
          <volume>06</volume>
          -05.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. OMG Editor.
          <source>OMG Meta Object Facility (MOF) Core Specication Version 2.4.2. Technical report</source>
          , Object Management Group,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Jean-Marie Favre</surname>
          </string-name>
          .
          <article-title>Meta-model and model co-evolution within the 3D software space</article-title>
          .
          <source>In Proceedings of ELISA</source>
          <year>2003</year>
          ,
          <year>September 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Terje</given-names>
            <surname>Gjłster</surname>
          </string-name>
          and
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Prinz</surname>
          </string-name>
          .
          <article-title>Languagelab 1.1 user manual</article-title>
          .
          <source>Technical report</source>
          , University of Agder,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Terje</surname>
            <given-names>Gjłster</given-names>
          </string-name>
          , Andreas Prinz, and
          <string-name>
            <given-names>Jan P.</given-names>
            <surname>Nytun.</surname>
          </string-name>
          MOF-VM:
          <article-title>Instantiation revisited</article-title>
          .
          <source>In Proceedings of the 4th International Conference on Model-Driven Engineering and Software Development</source>
          , pages
          <fpage>137144</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Cesar</surname>
            Gonzalez-Perez and
            <given-names>Brian</given-names>
          </string-name>
          <string-name>
            <surname>Henderson-Sellers</surname>
          </string-name>
          .
          <article-title>A powertype-based metamodelling framework</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          ,
          <volume>5</volume>
          (
          <issue>1</issue>
          ):
          <fpage>7290</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Anneke</given-names>
            <surname>Kleppe</surname>
          </string-name>
          and
          <string-name>
            <given-names>Jos</given-names>
            <surname>Warmer</surname>
          </string-name>
          .
          <source>MDA Explained. AddisonWesley</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Juan De Lara, Esther Guerra, and Jesoes SÆnchez Cuadrado.
          <article-title>When and how to use multilevel modelling</article-title>
          .
          <source>ACM Trans. Softw</source>
          . Eng. Methodol. ,
          <volume>24</volume>
          (
          <issue>2</issue>
          ):
          <volume>12</volume>
          :
          <fpage>112</fpage>
          :
          <fpage>46</fpage>
          ,
          <year>December 2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Liping</surname>
            <given-names>Mu</given-names>
          </string-name>
          , Terje Gjłster, Andreas Prinz, and Merete Skjelten Tveit.
          <article-title>Specication of modelling languages in a exible meta-model architecture</article-title>
          .
          <source>In Software Architecture, 4th European Conference, ECSA 2010</source>
          , Copenhagen, Denmark,
          <source>August 23-26</source>
          ,
          <year>2010</year>
          . Companion Volume , pages
          <fpage>302308</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. OMG Editor.
          <source>Unied Modeling Language: Infrastructure version 2</source>
          .
          <article-title>4.1 (OMG Document formal/</article-title>
          <year>2011</year>
          -08-05) .
          <source>OMG Document</source>
          . Published by Object Management Group, http://www.omg.org,
          <year>August 2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Vaclav</surname>
            <given-names>Pech</given-names>
          </string-name>
          , Alex Shatalin, and Markus Vlter.
          <article-title>JetBrains MPS as a tool for extending java</article-title>
          .
          <source>In Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools</source>
          ,
          <source>PPPJ '13</source>
          , pages
          <fpage>165168</fpage>
          . ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Andreas</surname>
            <given-names>Prinz</given-names>
          </string-name>
          , Birger Młller-Pedersen, and
          <string-name>
            <given-names>Joachim</given-names>
            <surname>Fischer</surname>
          </string-name>
          .
          <article-title>Object-oriented operational semantics</article-title>
          .
          <source>In Proceedings of SAM</source>
          <year>2016</year>
          , LNCS 9959 , Berlin, Heidelberg,
          <year>2016</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>James</surname>
            <given-names>Rumbaugh</given-names>
          </string-name>
          , Ivar Jacobson, and
          <string-name>
            <given-names>Grady</given-names>
            <surname>Booch</surname>
          </string-name>
          .
          <article-title>The Unied Model Language Reference Manual, second Edition</article-title>
          .
          <article-title>Published by Pearson Education, Inc</article-title>
          .,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>Markus</given-names>
            <surname>Scheidgen</surname>
          </string-name>
          and
          <string-name>
            <given-names>Joachim</given-names>
            <surname>Fischer</surname>
          </string-name>
          .
          <source>Human Comprehensible and Machine Processable Specications of Operational Semantics</source>
          , pages
          <fpage>157171</fpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. TamÆs Szab, Markus Voelter, Bernd Kolb, Daniel Ratiu, and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Schaetz</surname>
          </string-name>
          . Mbeddr:
          <article-title>Extensible languages for embedded software development</article-title>
          .
          <source>In Proceedings of the 2014 ACM SIGAda Annual Conference on High Integrity Language Technology, HILT '14</source>
          , pages
          <fpage>1316</fpage>
          , New York, NY, USA,
          <year>2014</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21. Paul Sammut Tony Clark,
          <string-name>
            <given-names>Andy</given-names>
            <surname>Evans</surname>
          </string-name>
          and
          <string-name>
            <given-names>James</given-names>
            <surname>Williams</surname>
          </string-name>
          . Applied Metamodelling.
          <article-title>A Foundation for Language Driven Development</article-title>
          . Xactium,
          <year>2004</year>
          . Available at http://www.xactium.com.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>