<!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>Consistency Recovery in Interactive Modeling</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Juri Di Rocco</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Davide Di Ruscio</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marcel Heinz</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ludovico Iovino</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ralf La¨mmel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alfonso Pierantonio</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DISIM, University of l'Aquila</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Faculty of Computer Science, University of Koblenz-Landau Germany</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Gran Sasso Science Institute</institution>
          ,
          <addr-line>L'Aquila</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-MDE projects contain different kinds of artifacts targets the web-based modeling platform MDEFORGE [5]. An such as models, metamodels, model transformations, and deltas. original aspect of MegaL/Forge is that its semantic model These artifacts are related in terms of relationships such as trans- addresses consistency recovery; the approach is inspired by foofrmarattifioanctsorancdontfhoermraelnecvea.nItnrethlaistiopnaspheirp,swine caapmtuergeamthoedetlyipnegs- our previous work on relationship maintenance in software based manner for the purpose of monitoring and recovering a language repositories [11]. In this paper, we focus on defining MDE project's consistency in response to changes that users may the consistency-recovering response to a repository change apply to the project within an interactive modeling platform. The while taking interaction with the user of a modeling platform approach supports users in experimenting with MDE projects into account. and receiving feedback upon changes on the grounds of a specific execution semantics for megamodels. The approach is validated Roadmap of the paper: Sec. II develops the running within the web-based modeling platform MDEFORGE. example of the paper. Sec. III defines syntax and semantics of Index Terms-Model management; Model repository; Consis- the required megamodeling language. Sec. IV provides a semitency recovery; Megamodeling; Modeling platforms formal account on consistency recovery. Sec. V discusses the integration of the approach into the web-based modeling platI. INTRODUCTION form MDEFORGE. Sec. VI discusses related work. Sec. VII concludes the paper.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Research context: This research is concerned with model
management [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] on top of model repositories [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
which users can access through a modeling platform [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Model repositories are a promising form of aggregating
reusable MDE artifacts such as models, metamodels, and
model transformations. Model management is the model-based
(model-driven) approach to the automated management of
collections of MDE artifacts instead of using ad-hoc tools or
lacking good automation. Modeling platforms such as Eclipse,
MDEFORGE, or MMINT are essential tools for users of model
repositories—users may either explore MDE artifacts in a
repository or they may be developers in some scope of the
repository.
      </p>
      <p>Research objective: We want to exercise an effective,
declarative (model-based), and transparent (understandable)
approach to organizing the artifacts in an MDE project (in
a model repository or not) and the relationships between the
artifacts. That is, a model-managed project has an associated
megamodel so that a user (a developer within the project)
can understand the structure of the project in megamodeling
terms. Further, the project’s consistency with the megamodel
is continuously monitored in the background of the interactive
modeling platform so that any changes can be mapped to
corrective, automated actions to be proposed to and confirmed
by the user.</p>
      <p>
        Research contribution: We address the research objective
by an emerging language design, definition, implementation,
and integration into a modeling platform. The language and its
implementation are referred to as MegaL/Forge because the
language is inspired by our previous work on linguistic
architecture, as a form of megamodeling, as realized by the MegaL
family of languages [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and the integration
      </p>
    </sec>
    <sec id="sec-2">
      <title>II. THE RUNNING EXAMPLE</title>
      <p>For brevity and focus on the key idea, we commit to a
very basic running example here: there are two models m1
and m2 that conform to the same metamodel mm with the
difference being referred to as delta and model management
operations in place to express conformance of m1 and m2
to mm, comparison so that delta represents the difference
between m1 and m2, and patching so that m2 is the result of
patching m1 according to delta. This simple example involves
enough semantical issues so that it suffices for an initial
language design discussion. In our ongoing research, we also
model more involved scenarios.</p>
      <sec id="sec-2-1">
        <title>A. An EMF-related Prelude</title>
        <p>The running example operates within the EMF
technological space. We need these types of artifacts; we use the concrete
syntax of MegaL/Forge for expressing the type definitions:
EmfModel // EMF based models (XMI representation)
EmfMetamodel &lt; EmfModel // Ecore models
EmfCompareModel &lt; EmfModel // Delta models</p>
        <p>That is, we declare types EmfModel, EmfMetamodel, and
EmfCompareModel; we organize these types in a hierarchy
(‘&lt;’). In the running example, we also need certain
modelmanagement operations on the types just declared; again,
we use the concrete syntax of MegaL/Forge for expressing
signatures of relations and functions:
conformsTo : EmfModel
compare : EmfModel
patch : EmfModel</p>
        <p>EmfMetaModel</p>
      </sec>
      <sec id="sec-2-2">
        <title>EmfModel ! EmfCompareModel</title>
      </sec>
      <sec id="sec-2-3">
        <title>EmfCompareModel ! EmfModel</title>
        <p>That is, we have access to conformance checking
(conformsTo—a relation), model comparison (compare—a function),
and delta application (patch—another function).</p>
      </sec>
      <sec id="sec-2-4">
        <title>B. An MDE Project’s Megamodel</title>
        <p>The following megamodel declares artifact ids for models
m1 and m2, the shared metamodel mm to which both models
are assumed to conform to, and the delta (difference) between
the models. Conformance, comparison, and patch application
are expressed by appropriate applications of relation
conformsTo and functions compare and path. Thus:
m1, m2 : EmfModel
mm : EmfMetaModel
conformsTo(m1, mm)
conformsTo(m2, mm)
delta : EmfCompareModel
compare(m1, m2) 7! delta
patch(m1, delta) 7! m2</p>
        <p>Let us apply the MegaL/Forge megamodel to an actual
project. That is, artifact identifiers in the megamodel are linked
to actual filenames in the underlying model repository (in fact,
a project). We may assume links as follows:
m1 = ”Family1.xmi”
m2 = ”Family2.xmi”
mm = ”FamilyMM.ecore”
delta = ”Delta.xmi”</p>
        <p>These links assume relative file names (relative to a base
URI for the project). We are concerned with two versions of a
model for describing ‘families’ (family members, i.e., persons
with names and some relationships or attributes), subject to
a suitable metamodel, and a delta (a difference) between the
two models at hand.</p>
      </sec>
      <sec id="sec-2-5">
        <title>C. Change scenarios</title>
        <p>
          The modeling artefacts are subject to evolution [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]: models
are modified and updated during the engineering process and
the metamodels evolve over time to address changes to the
requirements. Let us just imagine changes to artifacts of
the project at hand. We should also explain how we expect
to respond to these changes, thereby characterizing change
scenarios. The key idea is that function applications in the
megamodel may need to be used to recover consistency.
        </p>
        <p>1) Modify delta: We propagate this change by applying
the patch function, thereby deriving a new version of m2 that
is ‘in sync’ with m1 and delta. Thus, the following function
application facilitates consistency recovery:
patch(m1, delta) 7! m2</p>
        <p>
          We should note that we do not want to apply the
compare function (beforehand or afterwards) because we consider
changed artifacts (such as delta here) as ‘authoritative’ [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]
which we do not want to overwrite along consistency recovery.
2) Modify m1: There are two options:
means of the patch function, thereby deriving a new version
of m2 that is ‘in sync’ with m1 and delta. (Adding domain
knowledge (‘algebraic reasoning’), we know that the new
version of m2 equals the original one.) Thus, the following
list of function applications facilitates consistency recovery:
compare(m1, m2) 7! delta
patch(m1, delta) 7! m2
patch(m1, delta) 7! m2
compare(m1, m2) 7! delta
        </p>
      </sec>
      <sec id="sec-2-6">
        <title>2.b) First patch, then compare: Thus:</title>
        <p>An interactive user may disfavor this option on the grounds
of domain knowledge such that (the older version of) delta
readily captures aspects of m1 (and m2) and thus, it may not
work well for a new version of m1.</p>
        <p>3) Modify m2: We could consider applying the patch
function, thereby deriving a new version of m2 that is ‘in
sync’ with m1 and delta. This is clearly not a useful strategy,
as it would overwrite the changes just made to m2. Instead, we
need to compare m1 and m2 to compute a new delta. Thus, the
following function application facilitates consistency recovery:
compare(m1, m2) 7! delta</p>
        <p>In fact, now that we changed delta, we may want to check
that an application of the patch function would derive a model
that is equal to the existing model m2. In that case, we would
have recovered consistency in the project. Of course, this is
exactly the semantics of comparison: it provides a delta for
two models so that the second model can be derived from the
first one by applying the delta as a patch.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. LANGUAGE DEFINITION</title>
      <p>We provide a language definition of MegaL/Forge. In
particular, we define the concrete syntax by means of a
grammar and the abstract syntax by means of a metamodel.
We also briefly discuss the static semantics for well-formed
megamodels. Finally, we define what may account for a
dynamic semantics by means of a consistency notion—an
MDE project (its artifacts) to be consistent with a megamodel.</p>
      <sec id="sec-3-1">
        <title>A. Concrete Syntax</title>
        <p>The following grammar (in ANTLR notation) defines the
concrete syntax of the MegaL/Forge constructs exercised in
the present paper (Sec. II).
megamodel : declaration+;
declaration
: type // Root entity type
j subtype // Entity type as subtype
j artifact // Entity
j relation // Relation signature
j function // Function signature
j relatesTo // Relationship
j mapsTo // Function application
j link ; // Artifact binding
2.a) First compare, then patch: We apply the compare
function to the (changed) model m1 and the (unchanged)
model m2 to compute a new version of delta to be applied by
type : ID ; // Base type
subtype : ID ’&lt;’ ID ; // Subtype &lt; supertype
artifact : ID (’,’ ID) ’:’ ID ; // Artifacts of a given type
relation : ID ’:’ ID (’#’ ID) ; // Signature
function : ID ’:’ ID (’#’ ID) ’ &gt;’ ID; // Signature
relatesTo : ID ’(’ ID (’,’ ID) ’)’ ; // Relationship
mapsTo : ID ’(’ ID (’,’ ID) ’)’ ’j &gt;’ ID; // Apply function
link : ID ’=’ ’”’ LINK ’”’ ; // Bind artifact symbol to filename</p>
        <p>The type and subtype forms of declaration facilitate the
definition of a nominal classification hierarchy for artifacts.
Actual artifacts are introduced by their name (an id); see
declaration form artifact. The declaration forms relation and
function facilitate signatures including names for arguments
and results (the latter for functions only). There is a declaration
form relatesTo for expressing relationships on artifacts. There
is a declaration form mapsTo for expressing the specific
relationship of function application. Finally, there is a special
declaration form link for binding artifact symbols to files.
Making the links part of the megamodel rather than
designating a separate model for links can be compared to the use
of annotations in OO programming rather than using
XMLbased configuration.</p>
        <p>
          MegaL/Forge is a very simple member in the MegaL
language family [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. In particular, there is only one
kind of types—as opposed to languages versus artifacts versus
concepts in other MegaL languages.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Abstract Syntax</title>
        <p>The metamodel defining the abstract syntax of the language
is shown in Fig. 1. In particular, a megamodel specification
consists of a set of Artifacts of different Types. Each function
(relation) is defined by means of a Function (Relation)
declaration and the corresponding MapsTo (RelatesTo) definition.
Artifacts are arguments of Functions and Relations as shown
by the constructors of the MapsTo and RelatesTo elements.
The former consists of input and output elements, whereas the
latter consists of the set of artifacts for which the specified
relation holds. All the elements in the figure specialize a
NamedElement class (not shown in the figure for brevity)
consisting of the name attribute of type String.</p>
        <p>C. Static Semantics = Well-formedness</p>
        <p>
          A static semantics for well-formedness of
MegaL/Forgelike megamodels was defined as a definite clause program
in previous work [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. We summarize the relevant constraints
informally to make this text more self-contained.
        </p>
        <p>a) Types, artifacts, relations, and function are declared
before they are used. b) Each name can be declared once
only (‘no overloading’ here of any kind). c) The arguments of
relationships and function applications and results of function
applications must be of the types as prescribed by the
signatures of the corresponding relations and functions. d) Each
artifact symbol is linked to some filename. (We do not consider
incompletely bound megamodels here.)
D. Dynamic Semantics = Consistency</p>
        <p>
          Megamodels may have various dynamic semantics [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ];
we are interested here specifically in a semantics that captures
consistency of an MDE project with regard to a megamodel.
We provide a simple semantics of this kind from the ground
up here.
        </p>
        <p>We take consistency to mean that all relationships on
artifacts in the project, as expressed by the megamodel, i.e.,
applications of relations and functions, must hold, subject to
suitable interpretations of the applied relations or functions.
Details follow below.</p>
      </sec>
      <sec id="sec-3-3">
        <title>1) Environments for Interpretation: In an effort to set up</title>
        <p>interpretations of symbols used in megamodels systematically,
we assume an environment E which is, in fact, a triple
hEA; ER; EF i as follows:</p>
        <p>EA maps artifact symbols, as they are used in the
megamodel, to actual artifact representations in the sense
of text, JSON, etc. In the MegaL/Forge notation (see
Section II-B), we assume a mapping from artifact
symbols to files. In the semi-formal model at hand, we assume
a universe U for representations of artifacts. We use
the type U in setting up interpretations for relation and
function symbols; see below.</p>
        <p>ER maps relation symbols to their interpretations; these
are predicates of type U + ! Boolean. We use here U +
for each predicate’s argument because, in this manner, a
simple generic type suffices for all possible relations. The
idea is, of course, that a suitable interpretation enforces
a certain length (a certain number of parameters) and
appropriate representation types (subtypes of U ) for the
different parameters.</p>
        <p>EF maps function symbols to their interpretations; these
are functions of type U + ! U .</p>
        <p>As an environment effectively represents what we think
of as a ‘project’, we may also speak of consistency of a
megamodel with an environment.</p>
        <p>2) Consistency = Relational + Functional Consistency:
We speak of relational consistency when the interpretation of
all relation applications (‘relationships) in a given megamodel
m for a given environment E returns true. We speak of
functional consistency when the interpretation of all function
applications in the megamodel m with the environment E
returns true. Details of the assumed notion of interpretation
follow.</p>
        <p>A relation application r(a1; : : : ; an) with the relation
symbol r and artifact symbols a1, . . . , an as arguments is
interpreted by applying the interpretation of r to the interpretations
of a1, . . . , an, as defined by the environment. Thus:</p>
        <p>ER(r)(hEA(a1); : : : ; EA(an)i)</p>
        <p>A function application f (a1; : : : ; an) 7! an+1 with the
function symbol f , artifact symbols a1, . . . , an as arguments,
and an artifact symbol an+1 for the result is interpreted by
applying the interpretation of f to the interpretations of a1,
. . . , an, as defined by the environment, and comparing the
result with the interpretation of an 1 for equality. Thus:</p>
        <p>EF (f )(hEA(a1); : : : ; EA(an)i) = EA(an+1)</p>
        <p>For consistency to hold, the formulae as described above
should evaluate to true for all relation and function
applications.</p>
        <p>IV. CONSISTENCY RECOVERY</p>
        <p>In response to a change in a project, we perform a recovery
analysis on the megamodel to determine the function
applications (a recovery sequence) for recovering consistency, when
applied to the artifacts in the project.</p>
      </sec>
      <sec id="sec-3-4">
        <title>A. Recovery Sequence</title>
        <p>When consistency does not hold, then we may try to
‘overwrite’ artifacts according to function applications so that
consistency is recovered. The major assumption is here that
function applications, as they are part of the megamodel at
hand, suffice for consistency recovery and a suitable order can
be determined. In more detail, given a sequence of function
applications fa1, . . . , fan from a given megamodel m, we call
it a recovery sequence for a given environment E, if
E is not consistent with m.</p>
        <p>Apply fa1, . . . , fan in the given order to overwrite the
artifact symbols for the results in the environment E.
The updated environment E is now consistent with m.</p>
        <p>see the two scenarios for changing m1 in Sec. II-C2. We
may either delegate such nondeterminism to the interactive
component or enhance megamodels and the analysis thereof
to resolve nondeterminism automatically.</p>
        <p>Let us now sketch a first attempt at the desired analysis; we
defer proper treatment of nondeterminism to future work. We
need helper functions as follows:
in(m; a) returns all the function applications in the
megamodel m with the artifact symbol a as an argument.
out(fa) returns the artifact symbol for the result of the
function application fa.</p>
        <p>The main function for recovery analysis, ra, takes as
arguments the megamodel m, an artifact symbol ac indicating
the change, a sequence S of function applications, and it
returns a sequence of function applications that may be a
recovery sequence. We begin with an empty S and extend
it into the result sequence, step by step.</p>
      </sec>
      <sec id="sec-3-5">
        <title>B. Recovery Analysis</title>
        <p>It remains to define an analysis for megamodels to map
changes to recovery sequences. For simplicity, we start from
the assumption that changes are atomic in the sense that single
artifacts are changed on a discrete timeline and consistency
is to be recovered after each change. Thus, the analysis is
essentially a mapping from a megamodel m and an artifact (‘++’ is list append.) The conditions control that we select
symbol ac identifying the actual change to a sequence of function applications that can be applied to ac and results of
function applications. previous applications without though any overwriting. The
for</p>
        <p>Let us discuss expected properties of the analysis. We do mulation is nondeterministic, as different function applications
not want to map a change to a sequence that would change an could be picked in a step.
artifact that was changed previously, as such ‘overwriting’ may For instance, for the megamodel of Sec. II and ac = m1,
be semantically debatable and it may also lead to divergence. starting from S = ;, the analysis returns a sequence starting
As a special case, we do not want to apply any function with a comparison, followed by a patch as follows:
application twice. For instance, this could happen, in the compare(m1, m2) 7! delta
running example, if we were responding to model changes patch(m1, delta) 7! m2
with comparison and patching in a cyclic manner. Here we assume that the analysis respects the
megamodel</p>
        <p>We also need to address ‘nondeterminism’ in the context of defined order of function applications. (Also, ‘[’ operates on
consistency recovery. That is, there may exist megamodels and sequences rather than sets.) Proper treatment of
nondeterminchanges for which different recovery sequences are possible; ism is deferred to future work.
ra(m; ac; S) =
8 ra(m; ac; S++hfai); with fa drawn from m such that
&gt;&gt;&gt;&gt; fa 62 S; and
&gt;&gt;&lt; fa 2 in(m; ac) [ Sfa02S in(m; out(fa0)); and
&gt; out(fa) 6= ac; and
&gt;&gt;&gt;&gt; out(fa) 6= out(fa0) for all fa0 2 S:
:&gt; S; otherwise (if there is no such fa)</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>V. INTEGRATION INTO MDEFORGE</title>
      <p>
        This section presents the implementation of the presented
consistency recovery approach, which has been integrated in
the MDEFORGE platform [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. MDEFORGE was proposed as
an extensible platform enabling the adoption of model
management tools as SaaS (software as a service). By resembling
facilities of desktop IDEs, like Eclipse, MDEFORGE users
have the possibility to create modeling artifacts and organize
them in projects that are, in turn, contained in workspaces.
      </p>
      <p>The consistency recovery mechanism presented in the
previous section has been integrated in MDEFORGE by
essentially extending the existing project management facilities. In
particular, the Java packages ProjectMonitoring and
ConsistencyManagement shown in Fig. 2 contain the new classes
and interfaces that have been added in the MDEFORGE
implementation. The existing package CoreService has been
extended to work with such new packages.</p>
      <p>The ProjectMonitoring package implements listeners that
execute the consistency recovery manager when artifacts or
projects are changed. In such cases, ApplicationEvents are
created as shown in the listing below and used by
ArtifactChangedListener and ProjectChangedListener to interact
with the ConsistencyRecoveryManager.
public void update(T artifact) f
...
eventPublisher.publishEvent(new ArtifactChangedEvent(artifact, ”</p>
      <p>UPDATE”));
artifactRepository.save(artifact);</p>
      <p>The ConsistencyManagement package implements the
presented consistency recovery concepts. For each symbolic
function or relation name a corresponding IOperationApplier
implementation is available. For instance, the functions
compare and patch discussed in Sec. II-B have the
corresponding implementation consisting of the ComparisonApplier and
PatchApplier classes, respectively. Such classes implement
the method apply that executes the real behaviour of the
corresponding function. For instance, the execution of the
apply method of the class ComparisonApplier executes the
comparison mechanism already available in MDEFORGE (that
in turn is based on EMFCompare1) as shown in the following
listing showing a fragment of the apply method of the class</p>
      <sec id="sec-4-1">
        <title>ComparisonApplier:</title>
        <p>public Object apply(Object[] inputs)
f
if (inputs.length != 2)</p>
        <p>
          throw new Exception();
Artifact left = inputs[0];
Artifact right = inputs[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ];
ModelsServiceImpl modelService=new ModelService();
return modelService.compare(left, right);
g
g
        </p>
        <p>The links between symbolic operation names and the
corresponding appliers are specified in the
operationMapper HashMap of the ConsistencyRecoveryManager class. The
consistency check between a project and the corresponding</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>1https://www.eclipse.org/emf/compare/</title>
      <p>megamodel is performed by the method checkConsistency
shown below:
public boolean checkConsistency(Project project, Megamodel megamodel) f
for (Artifact relatesTo : m.models) f</p>
      <p>List &lt;ArtifactChangedEvent&gt; changes= checkChanges(project);
if (changes.size()==0) return true;
g
for (RelatesTo relatesTo : m.relatesTos) f</p>
      <p>IOperationApplier opApplier = operationMapper.get(relatesTo.</p>
      <p>getType());
boolean result = (boolean) opApplier.apply(relatesTo.arguments);
if (!result) return false;
g
return true;
g
g
g</p>
      <p>The method consistencyRecovery implements the recovery
mechanism by exploiting the
getFunctionsToRecoverConsistency method shown in the listing below. It is responsible of
identifying the functions to be applied and their execution
order for recovering the consistency between the changed
project and the corresponding megamodel.
public List&lt;MapsTo&gt; getFunctionsToRecoverConsistency(Project project,</p>
      <sec id="sec-5-1">
        <title>Megamodel megamodel)f</title>
        <p>List&lt;MapsTo&gt; result = new ArrayList&lt;MapsTo&gt;();
List &lt;ArtifactChangedEvent&gt; changes=checkChanges(project);
for (MapsTo function : m.functions) f</p>
        <p>if (function.inputs.contains(changes)) result.add(function);
g
return result;
A fragment of the consistencyRecovery method is as follows:
public void consistencyRecovery(Project project, Megamodel megamodel) f
checkConsistency(project, megamodel);
List&lt;MapsTo&gt; toApply = getFunctionsToRecoverConsistency(project,
megamodel);
for (MapsTo function : toApply) f</p>
        <p>IOperationApplier opApplier = operationMapper.get(function.</p>
        <p>getType());
opApplier.apply(m.inputs);</p>
        <p>Consistency recovery can generate new artifacts that might
overwrite existing ones. In such cases, the user will be notified
and will be asked for confirmation, as illustrated with the
popup in Fig. 3. The user will also be notified when consistency
recovery fails. We are also working on presenting options to
the user.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>VI. RELATED WORK</title>
      <p>
        In general, a few model management platforms exist, such
as MMINT [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and Mondo [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] that try to support any
kind of operation needed in model driven engineering with a
focus on models. The problem of well-formed metamodelling
is directly addressed by the model management platform
‘Modelverse’ [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. It is a platform emphasizing a consistently
specified form of metamodelling based on the work by Ku¨ hne
et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Tools may not properly check conformance to
metamodels as the static semantics is left unattended [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
SERGe generates all possible metamodel consistency
preserving transformations to be reused by other tools.
      </p>
      <p>
        In requirements engineering, the consistency between
requirement artifacts needs to be maintained. In [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] authors
propose to use the Snapmind Framework and a UML-based
specification environment for user stories and domain
models. The relation between elements in a mind map-based
user story and domain models are checked. In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] authors
explicitly define correspondence relationships in architecture
descriptions for all kinds of digital artifacts. Kowal et al. [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]
explicitly aim at delta-aware consistency checking for models
that are part of difference perspectives by using rules that
describe a consistent UML-based architecture description. In
[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] a systematic literature review is presented on consistency
checking of business process models that pose further related
approaches in the domain.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] authors approach consistency checking for evolving
models and consistency recovery using state space exploration
based on postulates defining consistent states. Sunye [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]
addresses collaborative modelling processes, where multiple
editors write on the same model. An addressed challenge
lies in reproducing the same order of operations for every
accessing node. In [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] authors describe a system using SAT
solvers to propagate all possible changes for source models
such that the transformation to view models remains traceable.
      </p>
      <p>
        Bidirectional transformations pose a need for consistency
checking and change propagation. Demuth et al. [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] discuss
failure detecting for co-evolving metamodels and domain
models. When a consistency check fails, repair measure
suggestions are automatically generated. Kusel et al. [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]
explicitly state the properties that need to be verified after
a coupled model transformation. Diskin et al. [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] classify the
various kinds of model synchronizations that may have to be
considered. Other kinds of bidirectional transformations and
their specific needs are discussed in [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
      <p>VII. CONCLUDING REMARKS</p>
      <p>
        In this paper, we have described an approach towards
consistency recovery in MDE projects such that megamodels are
facilitated for expressing consistency and providing guidance
for recovery thereof in an interactive setup. We are working on
the following improvements. Firstly, we look at more complex
scenarios with richer dependencies between the involved
artifacts so that the issue of nondeterminism (Sec. IV-B) is (needs
to be) properly addressed. For instance, we study examples of
co-evolution [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. Secondly, we look at making megamodels
and the underlying MDE projects explicitly version-aware so
that consistency recovery can be modeled atop versioning.
Thirdly, we look at techniques for automatically creating (at
least initial fragments of) megamodels out of existing MDE
projects. Finally, we look at the incorporation of ‘algebraic
reasoning’, possibly also subject to capturing more domain
knowledge in the megamodel, for the benefit of omitting
unnecessary recovery steps (e.g., patch after commit in the
running example) or addressing nondeterminism.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Barbero</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          , and J. Be´zivin, “
          <article-title>Model Driven Management of Complex Systems: Implementing the Macroscope's Vision,”</article-title>
          <source>in Proc. ECBS</source>
          <year>2008</year>
          . IEEE,
          <year>2008</year>
          , pp.
          <fpage>277</fpage>
          -
          <lpage>286</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>W.</given-names>
            <surname>Kling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Wagelaar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brambilla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “
          <article-title>MoScript: A DSL for Querying and Manipulating Model Repositories,”</article-title>
          <source>in Proc. SLE</source>
          <year>2011</year>
          ,
          <article-title>ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>6940</volume>
          . Springer,
          <year>2012</year>
          , pp.
          <fpage>180</fpage>
          -
          <lpage>200</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Basciani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Rocco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Iovino</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , “Model Repositories: Will They Become Reality?”
          <source>in Proc. CloudMDE@MoDELS</source>
          <year>2015</year>
          ,
          <article-title>ser</article-title>
          .
          <source>CEUR Workshop Procs</source>
          , vol.
          <volume>1563</volume>
          ,
          <year>2016</year>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>42</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Rocco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Iovino</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , “Collaborative Repositories in Model-Driven Engineering,” IEEE Software, vol.
          <volume>32</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>28</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Basciani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Rocco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Salle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Iovino</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , “
          <article-title>MDEForge: an Extensible Web-Based Modeling Platform,”</article-title>
          <source>in Proc. CloudMDE@MoDELS</source>
          <year>2014</year>
          , vol.
          <volume>1242</volume>
          ,
          <year>2014</year>
          , pp.
          <fpage>66</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Sandro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Salay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Famelis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kokaly</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Chechik</surname>
          </string-name>
          , “
          <article-title>MMINT: A Graphical Tool for Interactive Model Management,” in Proc. MoDELS 2015 Demo and Poster Session, ser</article-title>
          .
          <source>CEUR Workshop Procs</source>
          , vol.
          <volume>1554</volume>
          ,
          <year>2016</year>
          , pp.
          <fpage>16</fpage>
          -
          <lpage>19</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Favre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Varanovich</surname>
          </string-name>
          , “
          <article-title>Modeling the Linguistic Architecture of Software Products,”</article-title>
          <source>in Proc. MODELS</source>
          <year>2012</year>
          ,
          <article-title>ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7590</volume>
          . Springer,
          <year>2012</year>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>167</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Varanovich</surname>
          </string-name>
          , “
          <article-title>Interpretation of Linguistic Architecture,”</article-title>
          <source>in Proc. ECMFA</source>
          <year>2014</year>
          ,
          <article-title>ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>8569</volume>
          . Springer,
          <year>2014</year>
          , pp.
          <fpage>67</fpage>
          -
          <lpage>82</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ha</surname>
          </string-name>
          ¨rtel, L. Ha¨rtel, M. Heinz,
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Varanovich</surname>
          </string-name>
          , “Interconnected Linguistic Architecture,” The Art, Science, and
          <article-title>Engineering of Programming Journal</article-title>
          , vol.
          <volume>1</volume>
          ,
          <year>2017</year>
          ,
          <volume>27</volume>
          pages.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Heinz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Varanovich</surname>
          </string-name>
          , “
          <article-title>Axioms of linguistic architecture,”</article-title>
          <source>in Proc. MODELSWARD</source>
          <year>2017</year>
          . SCITEPRESS,
          <year>2017</year>
          , pp.
          <fpage>478</fpage>
          -
          <lpage>486</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel, “Relationship maintenance in software language repositories,” The Art, Science, and Engineering of Programming Journal</article-title>
          , vol.
          <volume>1</volume>
          ,
          <year>2017</year>
          ,
          <volume>27</volume>
          pages.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          , “
          <article-title>Evolving models in modeldriven engineering: State-of-the-art and future challenges</article-title>
          ,
          <source>” Journal of Systems and Software</source>
          , vol.
          <volume>111</volume>
          , pp.
          <fpage>272</fpage>
          -
          <lpage>280</lpage>
          ,
          <year>2016</year>
          . [Online]. Available: http://www.sciencedirect.com/science/article/pii/S0164121215001909
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P.</given-names>
            <surname>Stevens</surname>
          </string-name>
          , “
          <article-title>Bidirectional Transformations in the Large,” in MoDELS</article-title>
          . ACM,
          <year>2017</year>
          , to appear.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Garc´ıa-Dom´ınguez</article-title>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          , J. de Lara, I. Ra´th, D. Varro´, G. Sunye´, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          , “
          <article-title>MONDO: scalable modelling and model management on the cloud</article-title>
          ,” in STAF,
          <year>2016</year>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>64</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S. V.</given-names>
            <surname>Mierlo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Barroca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          , E. Syriani, and
          <string-name>
            <given-names>T.</given-names>
            <surname>Ku</surname>
          </string-name>
          <article-title>¨hne, “Multi-level modelling in the modelverse</article-title>
          ,” in MoDELS,
          <year>2014</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>T.</given-names>
            <surname>Ku</surname>
          </string-name>
          <article-title>¨hne, “Matters of (meta-)modeling,” Software and System Modeling</article-title>
          , vol.
          <volume>5</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>369</fpage>
          -
          <lpage>385</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>M.</given-names>
            <surname>Rindt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kehrer</surname>
          </string-name>
          , and U. Kelter, “
          <article-title>Automatic generation of consistency-preserving edit operations for MDE tools</article-title>
          ,” in MoDELS,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F.</given-names>
            <surname>Wanderley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Silva</surname>
          </string-name>
          , J. Arau´jo, and D. S. da Silveira, “
          <article-title>Snapmind: A framework to support consistency and validation of model-based requirements in agile development</article-title>
          ,” in MoDRE,
          <year>2014</year>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>56</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>A.</given-names>
            <surname>Chichignoud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Noyrit</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Maillet-Contoz</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Terrier</surname>
          </string-name>
          , “
          <article-title>Use of architecture description to maintain consistency in agile processes</article-title>
          ,” in MODELSWARD,
          <year>2017</year>
          , pp.
          <fpage>459</fpage>
          -
          <lpage>466</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kowal</surname>
          </string-name>
          and
          <string-name>
            <surname>I. Schaefer</surname>
          </string-name>
          , “
          <article-title>Incremental consistency checking in deltaoriented uml-models for automation systems</article-title>
          ,” in Procs.
          <source>7th Intl. FMSPLE@ETAPS Workshop</source>
          <year>2016</year>
          ,
          <year>2016</year>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>45</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Awadid</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Nurcan</surname>
          </string-name>
          , “
          <article-title>A systematic literature review of consistency among business process models</article-title>
          ,” in CAiSE,
          <year>2016</year>
          , pp.
          <fpage>175</fpage>
          -
          <lpage>195</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>H. K.</given-names>
            <surname>Dam</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Ghose</surname>
          </string-name>
          , “
          <article-title>Towards rational and minimal change propagation in model evolution,” CoRR</article-title>
          , vol.
          <source>abs/1402.6046</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sunye</surname>
          </string-name>
          <string-name>
            <surname>´</surname>
          </string-name>
          , “
          <article-title>Model consistency for distributed collaborative modeling,”</article-title>
          <source>in Proc. of ECMFA</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>197</fpage>
          -
          <lpage>212</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>O.</given-names>
            <surname>Semera</surname>
          </string-name>
          ´th,
          <string-name>
            <given-names>C.</given-names>
            <surname>Debreceni</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          ´. Horva´th, and D. Varro´, “
          <article-title>Incremental backward change propagation of view models by logic solvers</article-title>
          ,” in MoDELS,
          <year>2016</year>
          , pp.
          <fpage>306</fpage>
          -
          <lpage>316</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>A.</given-names>
            <surname>Demuth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Riedl-Ehrenleitner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Lopez-Herrejon</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Egyed</surname>
          </string-name>
          , “
          <article-title>Co-evolution of metamodels and models through consistent change propagation,”</article-title>
          <source>JSS Journal</source>
          , vol.
          <volume>111</volume>
          , pp.
          <fpage>281</fpage>
          -
          <lpage>297</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kusel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Etzlstorfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kapsammer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Retschitzegger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Schwinger</surname>
          </string-name>
          , and J. Scho¨nbo¨ck, “
          <article-title>Consistent co-evolution of models and transformations</article-title>
          ,” in MoDELS,
          <year>2015</year>
          , pp.
          <fpage>116</fpage>
          -
          <lpage>125</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Diskin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Gholizadeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wider</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          , “
          <article-title>A threedimensional taxonomy for bidirectional model synchronization,”</article-title>
          <source>JSS Journal</source>
          , vol.
          <volume>111</volume>
          , pp.
          <fpage>298</fpage>
          -
          <lpage>322</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. N.</given-names>
            <surname>Foster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel, A. Schu¨rr, and</article-title>
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Terwilliger</surname>
          </string-name>
          , “
          <article-title>Bidirectional transformations: A cross-discipline perspective,”</article-title>
          <source>in Proc. of ICMT</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>260</fpage>
          -
          <lpage>283</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>D. D. Ruscio</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Iovino</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , “
          <article-title>Coupled evolution in model-driven engineering</article-title>
          ,” IEEE Software, vol.
          <volume>29</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>78</fpage>
          -
          <lpage>84</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>