<!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>
      <issn pub-type="ppub">1613-0073</issn>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Exploring flexible models in agile MDE</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Artur Boronat</string-name>
          <email>artur.boronat@leicester.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Computing and Mathematical Sciences, University of Leicester</institution>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <fpage>0000</fpage>
      <lpage>0003</lpage>
      <abstract>
        <p>Semi-structured data has become increasingly popular in data science and agile software development due to its ability to handle a wide variety of data formats, which is particularly important in data lakes where raw data is often semi-structured or ambiguous. Model-driven engineering (MDE) tools can provide a high-level, abstract representation of a system or process, making it easier to understand and navigate data. However, relying on data models to describe metadata of raw data can create challenges when working with semi-structured data, which can contain errors, inconsistencies, and missing data.</p>
      </abstract>
      <kwd-group>
        <kwd>EMF</kwd>
        <kwd>model transformation</kwd>
        <kwd>flexible MDE</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>CEUR
ceur-ws.org</p>
    </sec>
    <sec id="sec-2">
      <title>1. Introduction</title>
      <p>
        The increasing popularity of semi-structured data in agile software development and data
science projects is due to its ability to handle a wide variety of data formats and heterogenous
data. This is particularly important in data lakes, where raw data is often semi-structured or
ambiguous, requiring data wrangling processes to infer metadata to aid in data analysis [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>Model-driven engineering (MDE) is a software development approach that uses software
models as a central artifact to capture the structure and behavior of systems. In the case
of data, a software model can represent its structure, including the attributes, relationships,
and constraints between them. MDE tools provide a high-level, abstract representation of a
system or process, which can make it much easier to understand and navigate the data. This is
especially important when working with semi-structured data, which can be highly variable
and may not conform to a strict schema or data model. MDE tools also provide a more formal,
rigorous approach to software development, with a focus on model validation and consistency
checking. This can be helpful when working with semi-structured data, which can contain
errors, inconsistencies and missing data.</p>
      <p>
        However, such reliance on data models to describe the meta-data of raw data also hinders
the application of MDE tools in this context, since the lack of such models is, precisely, what
characterizes semi-structured data. This rigidity can create challenges in terms of modeling and
integrating data from multiple sources [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Moreover, the majority of MDE practitioners who
have been successful have either built their own modeling tools, made heavy adaptations of
of-the-shelf tools, or spent a lot of time working around them. These adaptations introduce
accidental complexity, which can add to the dificulties of using MDE tools [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>In this work, we propose a pragmatic approach to data-centric application development
using the Eclipse Modeling Framework. Our approach uses flexible models to enable agility
and adaptability in working with data, compared to traditional metamodel-based methods. We
propose a new metamodel for characterizing flexible models, with the aim of enabling the
development of data-centric applications that do not require an explicit schema or metamodel. This
approach allows for the loading of flexible models from a wide range of common data formats
and can handle heterogeneous data. Our approach complements existing MDE approaches by
focussing on data extraction and rapid prototyping, enabling their application in settings where
a metamodel is not available or where data is simply too messy.</p>
      <p>In this article, we start by explaining characteristics of semi-structured data and providing an
outline of the model transformation languages used in section 2. We introduce the conceptual
model of flexible metamodels in section 3. Next, we present a case study for analysing flexible
models in section 4. Finally, we discuss related work in section 5, and conclude with a summary
of our findings and directions for future research in section 6.</p>
    </sec>
    <sec id="sec-3">
      <title>2. Background</title>
      <p>This section provides an overview of two key areas: semi-structured data, which integrates
elements of both structured and unstructured data, and model transformation languages (MTLs),
which facilitate the mapping of input data to output data using defined rules and helper
operations.</p>
      <sec id="sec-3-1">
        <title>2.1. Semi-structured data</title>
        <p>Semi-structured data combines elements of structure, like tags, with unstructured components
such as free text, without adhering to a fixed schema like a metamodel. This flexibility is
beneficial in fields like big data and data integration, enabling the handling of diverse data
sources without schema constraints. Despite its versatility, semi-structured data lacks the
rigour of structured data models, which facilitate processing, manipulation, and analysis using
Model-Driven Engineering (MDE) techniques.</p>
        <p>It is common to encounter datasets that are stored in semi-structured formats, such as CSV
ifles. The dataset in Table 1 represents a collection of physical activity data recorded for a group
of patients. The data includes information about the date, time, distance, intensity, air quality,
air temperature, and heart rate of each physical activity performed by the patients. This is an
example where the dataset consists of plain tuples, where there are no further relationships
between fields of the tuple other than belonging to the tuple. The dataset contains examples
of heterogeneous data, with intensity and air quality measured using diferent scales and
variations in date format and units of measurement for distance and temperature. Additionally,
inconsistencies exist in the formatting of the data, with air temperature sometimes not written</p>
        <p>Air Quality</p>
        <p>Good
Excellent
1
3
consistently and the blank space between figures and units occasionally missing. Furthermore,
the dataset includes gaps that indicate a lack of data for certain fields.</p>
      </sec>
      <sec id="sec-3-2">
        <title>2.2. Model transformation languages at a glance</title>
        <p>
          This work employs two flavours of YAMTL (Yet Another Model Transformation Language) [
          <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
          ],
which incorporate the most common features available in MTLs like ATL, ETL or RubyTL.
YAMTL can be used as an internal domain-specific language for model transformation within
JVM languages. Xtend1 is used to represent statically-typed MTLs and Groovy2 is used to
represent the dynamically-typed MTLs.
        </p>
        <p>The MTLs define model transformations via transformation rules that map input objects
to output objects. Input and output patterns can comprise multiple object patterns. An input
object pattern specifies the object type and a filter (or guard) condition that must be met for
applying a rule. An output object pattern creates an output object and is specified by the output
object type and a sequence of attribute bindings that initialize the object’s features (attributes
and references). Furthermore, transformation rules may use additional helper attributes and
operations that encapsulate logic to promote reuse. An attribute is a global variable whose
value is reused across transformation rule applications, while an operation is called over a list
of arguments to perform a computation.</p>
        <p>In the statically typed MTL (YAMTL Xtend), operation and attribute helpers are called using
the operation fetch, whereas in the dynamically typed MTL (YAMTL Groovy), the syntax is
more flexible and the name of operation and attribute helpers can be used directly without the
need for an explicit operator fetch. This operation is not needed in the dynamically typed MTL.</p>
        <p>In both MTLs, the operation o = fetch(i) is also used to obtain an output object o that has
already been transformed from an input object i using a model transformation rule. Such an
operation is common in MTLs and corresponds to resolveTemp() in ATL and to equivalent()
in ETL.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>3. Flexible models</title>
      <p>MTLs use metamodels to ensure that models are well-formed, and that models are
semanticallycorrect wrt any formal OCL-like constraints of the metamodel. For example, EMF models
require a metamodel, represented as an Ecore model. Even when model management tasks are</p>
      <sec id="sec-4-1">
        <title>1https://eclipse.dev/Xtext/xtend/ 2https://groovy-lang.org/</title>
        <p>programmed generically using the EMF reflective API, the metamodel is still required to be able
to access the EMF models.</p>
        <p>In this work, we want to be able to work with EMF models independently of their metamodels,
either from a statically typed context or from a dynamically typed context. This is achieved by
means of the metamodel of flexible (untyped) models, shown in Figure 1, which defines a set of
classes to represent the structure of models that do not have a fixed metamodel. We refer to
this metamodel as the flexible metamodel in the remainder of the article. Semi-structured EMF
models will be used to represent the type of semi-structured data shown in the previous section.</p>
        <p>The UntypedModel class represents the overall model. The ERecord class represents an instance
of a flexible (untyped) EObject, and the RecordField abstract class represents a field of such
EObject, either an AttributeField containing a value of type EJavaObject3, a ReferenceField
that refers to another flexible EObject, or a ContainmentField that contains other ERecord’s,
denoting hierarchical structures of objects in the model. Each ERecord points to its parent
ERecordContainer, which is the UntypedModel instance for root records and another ERecord for
non-root records. Attribute values can refer to collections of values. This metamodel captures
the essential structure of models by segregating cross-reference references, which define graph
structures in a model, from containment references, which define hierarchical structures of
3EJavaObject is the type use within an Ecore model to represent java.lang.Object in EMF.
objects in the model.</p>
        <p>The UntypedModel and ERecord classes ofer valuable functionalities that have been
incorporated into the prototype, and their performance has been assessed in the case studies. The
upcoming subsections provide a detailed explanation of these classes.</p>
        <sec id="sec-4-1-1">
          <title>3.1. ERecord class</title>
          <p>To declare a MT on flexible models in tools that require models to conform to metamodels, MTs
need to consider the flexible metamodel in Figure 1. By using this metamodel and its model
import API, tools can load semi-structured data from popular data formats, such as CSV, JSON,
or XML, as flexible models.</p>
          <p>The class ERecord ofers a dynamically-typed interface that provides accessor and mutator
methods that encapsulate its implementation. Accessor methods define how to retrieve field
values. The accessor get(fieldName) returns the value of a field fieldName as a Java Object.</p>
          <p>Since the flexible model operates with the absense of metamodel information, there is a
mutator operation for each type of field, with upsert semantics. That is, whenever a mutator
operation is called it either inserts the field value if not present in the ERecord and, if present, it
overrides it. To create new ERecords, MDE tools built atop the EMF API can use the standard
factory design pattern.</p>
          <p>In the evaluation section, we have focused on the utilization of flexible models as input for
MTs, exploring both the advantages and disadvantages of this approach.</p>
        </sec>
        <sec id="sec-4-1-2">
          <title>3.2. UntypedModel class</title>
          <p>The UntypedModel class serves as an intermediary abstraction layer between databinding libraries
and model management APIs, specifically the EMF API in this study. This layer ofers several
design benefits:
• Firstly, it decouples the data sources from the model management API, enabling the
extraction of semi-structured data from various heterogeneous sources in a unified way.
This means that third-party object mappers can be used to produce lists of records from
CSV, JSON, and XML serializations, among others.
• Secondly, it encapsulates design concerns that are commonly shared across various
semistructured data sources. For example, the ability to treat a dataset as a plain or hierarchical
structure can be reused for diferent data formats, leading to a more modular and reusable
design.
• Third, applications built using flexible models experience consistent performance across
diferent data sources, as the flexible metamodel acts as a pivot language that hides
the implementation databinding details. This uniformity is achieved by abstracting the
specificities of each data format and providing a common interface, resulting in a more
eficient and maintainable design.
• Lastly, for EMF-based tools, the notion of ERecord in flexible models enables interaction
at an object-level without having to rely on extraneous third-party APIs.</p>
          <p>Flexible models can be imported using two main methods. The first method is from
semistructured data that is represented as List&lt;Map&gt;, a format commonly obtained from widely used
databinding libraries. The import service uses the List&lt;Map&gt; type in its signature, which allows
third-party libraries to reuse this service with other formats. The transformation from List&lt;Map&gt;
to a flexible model involves a linear traversal of the data structure, creating an ERecord for each
map. The runtime complexity is  () , where  is the number of maps in the list.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>4. Case study: plain datasets</title>
      <p>The goal of this case study is to demonstrate the efectiveness of using MDE tooling for
transforming raw and semi-structured data into a more meaningful and structured model. We will
be transforming a CSV dataset into an instance of the data model in Figure 2 that describes
physical activities recorded for patients. The transformation normalizes the data into Patient’s
and PhysicalActivity’s, filtering away some fields that are not relevant. In addition, free-form
strings are converted into enumeration literals. In the resulting data model, it is easier to
perform advanced analysis and gain insights into the data. The use of a data model also enables
us to validate the data.</p>
      <p>This MT is used to analyze the overhead for loading semi-structured data and for assessing
the flexibility that it provides in MT engines. The transformation CSV2PA is unidirectional and
out-of-place, meaning that the source model is not altered during the transformation. The MT
loads semi-structured data in CSV format and extracts data as instances of classes in the domain
model of Figure 2. Datasets of diferent sizes along a logarithmic scale have been generated, and
the sizes are reported in Table 2. The MT consists of one rule and one static operation, shown
below. This transformation is defined using the dynamically typed MTL. Object variables may
refer to objects matched by in pattern elements, e.g., r, and by out pattern elements, e.g., a.</p>
      <p>In the MT CSV2PA, shown in the Listing 1, each row is translated into a PhysicalActivity
instance, and each unique patient_id in a row gives rise to a Patient instance that is related to
the PhysicalActivity instance corresponding to the row. The MT assumes that that each row
of a dataset is available in memory as an ERecord. The rule matches each row in the dataset and
creates Patient’s and PhysicalActivities.</p>
      <p>Missing data can be dealt with using filter conditions and data processing helpers. For example,
we have decided that only those activities that correspond to a patient will be processed. The
iflter r.patient_id.isNotEmpty() performs this check. To initialize the structural features of
a Patient, the transformation leverages the dynamic capabilities of the MTL, using the field
name as the accessor. Data wrangling at the attribute level is delegated to helpers, which handle
tasks such as checking null values, data splitting, analysis, and conversion. These helpers use
common programming language features and require no further elaboration in this study. When
data is missing helpers can be defined to supply a default value. Alternatively, a guard can be
used to initialize the corresponding structural feature if the corresponding field isNotEmpty().</p>
      <p>The operation getPatient in the listing below creates a Patient instance for a given
patient_id. This operation is called using the expression getPatient([ 'patient_id' :
r.patient_id ]), which indicates the operation symbol getPatient and a list of parameter
bindings name : value. Static operations are functional ensuring that is patient_id
corresponds to one single Patient instance. In the body of the operation, the parameter bindings
can be fetched by name, as declared in the invocation of the operation.
1 operation('getPatient') {
2 def p = PAFactory.createPatient()
3 p.patientID = Integer.valueOf(patient_id)
4 p
5 }</p>
      <p>Notable syntactic advantages of the dynamically typed MT with respect to the statically-type
one are that ERecord fields can be accessed using regular accessor methods and cast expressions
are not required.</p>
      <p>The MT CSV2PA has been executed over models that were generated using a size factor of  .
The size factor  determines the number of rows in the models, such that the total number of
rows is equal to 10 . To generate values for the patient_id field, a random range between 0
and 10 −1 is used. As a result, each patient typically has about 10 associated activities.</p>
      <p>In the CSV2PA case study, we established a performance baseline by evaluating the eficiency
of the Jackson library4 for loading datasets in CSV format. To map the loaded records to
untyped objects, we used the method importUntypedModelFromCSV(path: String), which uses
the Jackson library to parse the CSV file and then uses the method importUntypedModel(data:
List&lt;Map&gt;), from Figure 1, to create an untyped model in memory in the specified domain. This
allowed us to quantify the overhead introduced by the mapping process. Figure 3 shows the
baseline performance of the Jackson library to load the dataset in memory and the run-time
of loading untyped models. The run time of loading untyped models includes the run time of
loading CSV files with the Jackson library. The experiments show that datasets containing up
to 105 examples can be loaded as untyped models in less than a second. The dataset with a
million examples ( 53 MB) took around six seconds to load. The experimental results suggest
that loading large untyped models is feasible and can be done in a reasonable amount of time.
Furthermore, loading datasets as untyped models scales well relative to the load run-time with
the Jackson library.</p>
      <p>Figure 3 shows a slight overhead (measured in milliseconds) when transforming untyped
models using dynamically-typed MTLs. This is due to the fact that accessor/mutator methods
need to be resolved at run time. Nevertheless, the scalability of the transformation remains
consistent with respect to the size of the input model, as compared to the transformation
utilizing the CD metamodel. This suggests that using untyped models as input for MTs has
minimal runtime penalties.</p>
    </sec>
    <sec id="sec-6">
      <title>5. Related work</title>
      <p>In recent years, there have been several approaches proposed for managing heterogeneous data
sources for models. Below, we explore representative examples of metamodel-based approaches
for dealing with heterogeneous data sources and flexible approaches that do not enforce the use
of metamodels.</p>
      <sec id="sec-6-1">
        <title>4https://github.com/FasterXML/jackson</title>
        <sec id="sec-6-1-1">
          <title>5.1. Metamodel-based approaches</title>
          <p>
            Epsilon [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ] is a family of interoperable languages for model management built atop the Epsilon
Object Language (EOL), an OCL-based imperative language that provides support for querying
and manipulating models. Epsilon provides the Epsilon Model Connectivity (EMC)[
            <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
            ] layer
that ofers a uniform interface for interacting with models of diferent modelling technologies,
including semi-structured data formats like XML and CSV. EMC makes minimal assumptions
about the structure and the organization of the underlying modelling technologies and it
does not include concepts such as model element, type and metamodel. The main drivers for
these design decisions are to facilitate future extensions, and to avoid degradation of run-time
performance. However, each driver has to implement databinding and a load/save strategy
that is specific for each data format/domain. This means that the performance of EOL, and
Epsilon-based tools, is likely to be strongly influenced by the driver choice. Flexible models can
be regarded as an intermediate abstraction layer decoupling serialization methods from model
management APIs, where common tasks for processing semi-structured data, like inferring the
hierarhical structure of semi-structured data, can be reused across data formats. Flexible models
are EMF models themselves and the EMC layer is more abstract. On the other hand, once a
lfexible model has been imported the runtime performance of model transformation tasks is
independent of the data source used.
          </p>
          <p>
            Pinset [
            <xref ref-type="bibr" rid="ref9">9</xref>
            ] is a DSL that enables the extraction of CSV datasets from metamodel-based models in
the Epsilon platform, facilitating concise scripts and domain-specific constructs, like aggregation,
normalization and replacement of null values. Pinset is therefore used to specify transformations
that are opposite to our case study. In our approach there are two options to implement
similar tasks: 1) If the objective is to save all objects of a class as a CSV file, the solution
involves using importUntypeModelFromEmf, a generic operation that translates any EMF model
to a List&lt;Map&gt;, and then exportUntypedModelToCsv, which performs the reverse operation of
importUntypeModelFromCsv; alternatively 2) if the goal is to perform data preprocessing, it can
be defined as a transformation (MT) from a given metamodel to a flexible model, followed by
exportUntypedModelToCsv. Using flexible models eliminates the need for a new metamodel or
DSL for the intermediate results, potentially reducing accidental complexity.
          </p>
          <p>
            NeoEMF [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] is a model persistence framework designed to address scalability issues
associated with storing, querying, and transforming large and complex models. It provides a modular
architecture enabling model storage in multiple data stores, including graph, key-value, and
column databases. NeoEMF achieves scalability using a lazy-loading mechanism, which loads
objects into memory only when they are accessed. It benefits from datastore optimizations and
maintains only a small amount of elements in memory. NeoEMF is primarily designed for the
persistence of metamodel-based models, possibly using data formats like JSON, but it does not
provide support for importing semi-structured data.
          </p>
        </sec>
        <sec id="sec-6-1-2">
          <title>5.2. Flexible MDE</title>
          <p>
            Flexible or bottom-up MDE is an approach to domain and systems modeling that emphasizes
the ability to adapt to changing requirements and to work with models that are not strictly
defined by a pre-existing metamodel [
            <xref ref-type="bibr" rid="ref11 ref12 ref13">11, 12, 13</xref>
            ]. This line of research is based on the idea that
models should be able to evolve and adapt over time, rather than being fixed and rigid. This
approach can be useful in situations where requirements are rapidly changing, or where domain
experts are not familiar with formal modeling languages.
          </p>
          <p>
            Flexmi [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ] is a flexible and fuzzy parser algorithm for parsing XML documents into
inmemory models that conform to EMF metamodels. The algorithm uses an approximate matching
method to map XML element and attribute names to metamodel types and their structural
features. This approach is designed to be more forgiving and can resolve inconsistencies
between the structure and naming of metamodel elements and the contents of serialized models.
Flexmi is a metamodel-independent approach and is not limited to any particular modeling
language or metamodel. The main advantages of Flexmi are its flexibility and scalability. While
the algorithm has been developed for XML, it should be easily portable to other data formats,
like JSON and YAML. The algorithm scales linearly with the size of the XML document, and its
overhead of flexible parsing is not prohibitive for practical use. One of the main limitations is
that the current implementation does not allow for programmatically modifying and persisting
models back into XML or other structured formats. Additionally, because Flexmi relies on
fuzzy matching, there is a possibility that some mismatches may occur, leading to errors or
inaccuracies in the parsed models.
          </p>
          <p>
            FlexiMeta [
            <xref ref-type="bibr" rid="ref15">15</xref>
            ] is a dynamic meta-modeling framework that allows for the creation and
manipulation of objects at runtime without the need for a pre-defined class or schema. It uses
JavaScript, a prototype-based, weakly-typed programming language, to instantiate and serialize
model elements. FlexiMeta also provides an optional code generation process to generate
metaobjects from a metamodel, which improves model validation and conformance. The advantage
of FlexiMeta is that its host language enables the use of models in web user interfaces. Flexible
models provide a similar level of flexibility and the ability to import and export with EMF
models, making typing optional.
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>6. Conclusions</title>
      <p>While MDE provides a formal approach to software development, the lack of explicit schema
or metamodel makes it challenging to work with semi-structured data. In this article, we
introduce a conceptual model for semi-structured data in the form of flexible models that is
independent of the EMF-based model transformation technology of choice. The new metamodel
of flexible models enables the development of data-centric applications that do not require
an explicit schema or metamodel. Our approach allows for the loading of flexible models
from a wide range of common data formats and can handle heterogeneous data. From a design
perspective, flexible models ofer an intermediate abstraction layer between databinding libraries
and model management APIs that helps encapsulating persistence logic that can be reused
across semi-structured data sources.</p>
      <p>There is potential for the current import mechanisms to be improved with more eficient
loading strategies, such as parallelization, lazy loading, and incremental propagation of changes.
The current prototype is not capable of exporting flexible models as metamodel-based models, as
doing so would require reconciling data inconsistencies and missing data with the metamodel.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>I. G.</given-names>
            <surname>Terrizzano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. M.</given-names>
            <surname>Schwarz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Roth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Colino</surname>
          </string-name>
          ,
          <article-title>Data wrangling: The challenging journey from the wild to the lake</article-title>
          ,
          <source>in: Conference on Innovative Data Systems Research</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Hutchinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rouncefield</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Burden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Heldal</surname>
          </string-name>
          ,
          <article-title>A taxonomy of toolrelated issues afecting the adoption of model-driven engineering</article-title>
          ,
          <source>Softw. Syst. Model</source>
          .
          <volume>16</volume>
          (
          <year>2017</year>
          )
          <fpage>313</fpage>
          -
          <lpage>331</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Hutchinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rouncefield</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Burden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Heldal</surname>
          </string-name>
          ,
          <article-title>Industrial adoption of model-driven engineering: Are the tools really the problem?</article-title>
          ,
          <source>in: MoDELS</source>
          , volume
          <volume>8107</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2013</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>17</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Boronat</surname>
          </string-name>
          ,
          <article-title>Expressive and eficient model transformation with an internal dsl of Xtend</article-title>
          , in: MoDELS, ACM,
          <year>2018</year>
          , pp.
          <fpage>78</fpage>
          -
          <lpage>88</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Boronat</surname>
          </string-name>
          ,
          <article-title>Incremental execution of rule-based model transformation</article-title>
          ,
          <source>International Journal on Software Tools for Technology Transfer 1433-2787</source>
          (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Drivalos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. A. C.</given-names>
            <surname>Polack</surname>
          </string-name>
          ,
          <article-title>The design of a conceptual framework and technical infrastructure for model management language engineering</article-title>
          , in: ICECCS, IEEE Computer Society,
          <year>2009</year>
          , pp.
          <fpage>162</fpage>
          -
          <lpage>171</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Williams</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <article-title>A lightweight approach for managing XML documents with MDE languages</article-title>
          ,
          <source>in: ECMFA</source>
          , volume
          <volume>7349</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2012</year>
          , pp.
          <fpage>118</fpage>
          -
          <lpage>132</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Francis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <article-title>Adding spreadsheets to the MDE toolkit</article-title>
          ,
          <source>in: MODELS</source>
          , volume
          <volume>8107</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2013</year>
          , pp.
          <fpage>35</fpage>
          -
          <lpage>51</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>A. de la Vega</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Sánchez</surname>
            ,
            <given-names>D. S.</given-names>
          </string-name>
          <string-name>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <article-title>Pinset: A DSL for extracting datasets from models for data mining-based quality analysis</article-title>
          ,
          <source>in: QUATIC, IEEE Computer Society</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>91</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Daniel</surname>
          </string-name>
          , G. Sunyé,
          <string-name>
            <given-names>A.</given-names>
            <surname>Benelallam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Vernageau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gómez</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Cabot,</surname>
          </string-name>
          <article-title>NeoEMF: A multi-database model persistence framework for very large models</article-title>
          ,
          <source>Sci. Comput</source>
          . Program.
          <volume>149</volume>
          (
          <year>2017</year>
          )
          <fpage>9</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J.</given-names>
            <surname>Sánchez-Cuadrado</surname>
          </string-name>
          , J. de Lara, E. Guerra,
          <article-title>Bottom-up meta-modelling: An interactive approach</article-title>
          , in: R. B. France,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kazmeier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Breu</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          Atkinson (Eds.),
          <source>Model Driven Engineering Languages and Systems</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2012</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>19</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>H.</given-names>
            <surname>Cho</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gray</surname>
          </string-name>
          , E. Syriani,
          <article-title>Creating visual domain-specific modeling languages from end-user demonstration</article-title>
          ,
          <source>in: Proceedings of the 4th International Workshop on Modeling in Software Engineering</source>
          , MiSE '12, IEEE Press,
          <year>2012</year>
          , p.
          <fpage>22</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Zolotas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Devlin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <article-title>Type inference in flexible model-driven engineering</article-title>
          ,
          <source>in: Modelling Foundations and Applications</source>
          , Springer, Cham,
          <year>2015</year>
          , pp.
          <fpage>75</fpage>
          -
          <lpage>91</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>García-Domínguez</surname>
          </string-name>
          ,
          <article-title>Towards flexible parsing of structured textual model representations</article-title>
          ,
          <source>in: 2nd Workshop on Flexible MDE, CEUR-WS.org</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>31</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>N.</given-names>
            <surname>Hili</surname>
          </string-name>
          ,
          <article-title>A metamodeling framework for promoting flexibility and creativity over strict model conformance</article-title>
          , in: FlexMDEMoDELS,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>