<!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>How Do Developers Solve Software-engineering Tasks on Model-based Code Generators? An Empirical Study Design</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Victor Guana and Eleni Stroulia Department of Computing Science University of Alberta Edmonton</institution>
          ,
          <addr-line>AB.</addr-line>
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <fpage>33</fpage>
      <lpage>38</lpage>
      <abstract>
        <p>-Model-based code-generators are complex in nature; they are built using a variety of tools such as language workbenches, and model-to-model and model-to-text transformation languages. Due to the highly heterogeneous technology ecosystem in which code generators are built, understanding and maintaining their architecture pose numerous cognitive challenges to both novice and expert developers. Most of these challenges are associated with tasks that require to trace and pinpoint generation artifacts given a life-cycle requirement. We argue that such tasks can be classified in three general categories: (a) information discovery, (b) information summarization, and (c) information filtering and isolation. Furthermore, we hypothesize that visualizations that enable the interactive exploration of model-to-model and model-to-text transformation compositions can significantly improve developers' performance when reflecting on a code-generation architecture, and its corresponding execution mechanics. In this paper we describe an empirical study conceived (a) to understand the performance of developers (in terms of time and precision) when asked to discover, filter, and summarize information about a model-based code generator, using classic integrated development environments and editors, and (b) to measure and compare the developers' effectiveness on the same tasks using state-of-the-art traceability visualizations for model-transformation compositions.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Model-based code generation refers to a
softwareengineering methodology for building systems that
systematically differ from each other [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ][
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. In effect, code
generators are frameworks for building applications from code
semantics that have been engineered for reuse. However,
code generators can be difficult to understand since they are
typically composed of numerous elements, whose complex
interdependencies pose cognitive challenges for developers
performing design, implementation, and maintenance tasks
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        Model-based code generators integrate rule-based
modelto-model transformation languages (such as ATL [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and
EGL [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]) and template-based model-to-text transformation
languages (such as Acceleo [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]) to translate high-level system
specifications into executable code and scripts [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ][
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. At
the core of a model-based code generator, model-to-model
and model-to-text transformations are composed in so-called
model-transformation chains (MTCs) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Given the complexity and heterogeneity of the technologies
involved in a code generator, developers who are trying to
inspect and understand the code-generation process have to
deal with numerous different artifacts. As a concrete example,
in a code-generator maintenance scenario, a developer might
need to find all chained model-to-model and model-to-text
transformation bindings, that originate a buggy line of code to
fix it [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. This task is error prone, if not virtually impossible,
when done manually. We believe that flexible traceability tools
are needed to collect and visualize information about the
architecture and operational mechanics of code generators, to
reduce the cognitive challenges that developers face during
their life-cycle. With the purpose of tackling this challenge,
we have developed ChainTracker [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ][
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], a tool that enables
developers to better understand how model-based code
generators are built, using interactive traceability visualizations and
code projections. ChainTracker gathers and visualizes
modelto-model, and model-to-text traceability information for ATL
and Acceleo model-transformation compositions (Figure 1).
      </p>
      <p>Whether at design or maintenance time, developers are
constantly trying to solve software-engineering tasks on
modelbased code generators. We argue that such tasks can be
classified in three categories: (a) information discovery, (b)
information summarization, and (c) information filtering and isolation.
In this paper we describe an empirical study conceived (a)
to understand the performance of developers when asked to
discover, filter, and summarize information about a
modelbased code generator, using classic integrated development
environments and editors, and (b) to measure and compare
the performance of developers executing the same set of
tasks using state-of-the-art visualizations for code-generator
traceability information.</p>
      <p>This study will enable us to analyze the performance of
developers when reflecting on a model-based code generator
to achieve various software-engineering goals. Furthermore,
it will increase our understanding of how advanced
development environments and traceability visualization tools, such
as ChainTracker, can help developers to design, study and
maintain a code generator. This study includes a comparative
analysis of developers’ performance in answering questions
with ChainTracker versus using existing code editors (i.e.
Eclipse). Furthermore, in this study developers’ performance
is understood in terms of the time taken to answer a question
and the correctness of their answers.</p>
      <p>In this paper, we first present our study research questions
and hypothesis. Second, we describe the study subject systems.
Third, we present a detailed description of the families of tasks
developers will solve in the study, including question templates
that can be reused by the community. Finally we introduce
the protocol of the study, its expected treats to validity, and
expected contributions.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RESEARCH QUESTIONS AND HYPOTHESIS</title>
      <p>
        In the life-cycle of a code generator developers ask
multiple questions to optimize and maintain its infrastructure.
Particularly, once a code-generator has been built, developers
face multiple scenarios of evolution [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. The two most
important among them are metamodel evolution, in which
changes are needed to the domain-specific language
that interfaces with the end user, or to the intermediate
metamodels that modularize the code-generation process, in
order to improve the language expressiveness, and platform
evolution, where the generated code needs to be refined with
different purposes, such as fixing a bug or optimizing the
performance of a generated codebase. In the latter scenario,
the generator’s model-to-text and, in some cases
model-tomodel transformations, need to be modified in order to reflect
such refinements in a systematic way. Indeed, evolutionary
scenarios in model-based code generators motivate questions
about their architecture and execution mechanics, such as:
      </p>
      <sec id="sec-2-1">
        <title>Where does this generated feature come from?</title>
      </sec>
      <sec id="sec-2-2">
        <title>What chained generation artifacts would be affected if a</title>
        <p>model element were removed or modified?</p>
      </sec>
      <sec id="sec-2-3">
        <title>What is the coverage of the transformation rules in each stage of my generation process?</title>
      </sec>
      <sec id="sec-2-4">
        <title>What portions of code have evolved in the generated</title>
        <p>codebases? and, assuming that code changes should
indeed be included in future genertion instances, what
elements of the underlying models and transformations
should be revised?</p>
        <p>To answer these questions, developers need to have a
thorough understating of the generation architecture. In this
study we hypothesize that the interactive exploration of
modelto-model and model-to-text transformation scripts can
significantly improve developers’ performance when reflecting on a
code-generator architecture. Furthermore, we believe that the
tasks that developers perform when reflecting on the design
and execution mechanics of a generator can be classified in
three general categories. Let us now briefly discuss each one
of them.</p>
        <p>1. Information Discovery Tasks: The developer’s intent
when performing this family of tasks is to explore the code
generator to identify its major components, and to understand
how the underlying transformation scripts are organized from
a static point of view. This type of task involves locating
individual elements of the code-generator’s architecture, i.e.,
individual metamodel elements, transformation rules, and
collections of transformation bindings, inside the generator’s
source scripts. These tasks are commonly performed when a
developer is dealing with legacy code generators that need to
be reused or optimized.</p>
        <p>
          2. Information Summarization Tasks: The purpose of these
tasks is for developers to measure generic information of the
code-generation architecture, such as to quantify the coverage
of a model transformation, or to measure the size of its
metamodels. Summarizing information about the code generator
allows developers to assess, and potentially improve, its overall
design and correctness [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
        <p>3. Information Filtering and Isolation Tasks: These tasks
are generally performed when developers are assessing the
impact of platform-evolution scenarios. They involve tracing
and isolating elements of the code-generation architecture
from a dynamic perspective, in order to find dependency
relationships between metamodel elements, metamodel attributes,
transformation bindings, and generated pieces of code.</p>
        <p>Considering the above types of tasks we believe developers
solve when answering questions about a model-based code
generator, we intent to investigate two research questions:</p>
      </sec>
      <sec id="sec-2-5">
        <title>Q1: How do developers approach the process of answering questions that involve the discovery, filtering, and summarization of artifacts that constitute a code generator?</title>
      </sec>
      <sec id="sec-2-6">
        <title>Q2: Do developers answer questions more accurately when solving tasks that involve information discovery, filtering, and summarization using the interactive traceability visualizations provided by ChainTracker?</title>
        <p>On the basis of the above questions we outlined two
corresponding null hypotheses.</p>
        <p>HQ1: Developers spend an equal amount of time when
solving tasks that involve information discovery, filtering,
and summarization of a model-based code generator
using ChainTracker as they do using Eclipse editors.
HQ2: Developers provide equally accurate answers, in
terms of task solution correctness, using ChainTracker as
they do using Eclipse editors.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. SUBJECT SYSTEMS</title>
      <p>
        The subject systems of our study are two model-based
code generators developed in our research laboratory: PhyDSL
(System Subject 1) and ScreenFlow (System Subject 2).
PhyDSL [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ][
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is a model-based code generator for
mobile physics-based 2D games (see Figure 2). It is built in
a textual domain-specific language, and a multi-branched
model-transformation composition that includes three
modelto-model transformations implemented using ATL, and three
template-based model-to-text transformations written in
Acceleo. PhyDSL is currently used to create cost-effective
and fully-featured mobile games with rehabilitation purposes.
PhyDSL is now being used in the construction of mobile
games used by the Faculty of Rehabilitation Medicine at the
University of Alberta, the Glenrose Rehabilitation Hospital
in Edmonton, Canada, and the Knowledge Media Design
Institute at the University of Toronto. ScrenFlow1 is a code
generator for Android application skeletons with
interfacenavigation logic, from graphic user interface storyboard
specifications (see Figure 3). ScreenFlow is composed by a textual
domain-specific language, and a single-branched (i.e. linear)
model-transformation composition that includes one
model-tomodel transformation, and one model-to-text transformation,
written in ATL and Acceleo respectively. ScreenFlow is used
1a complete description and demo video of ScreenFlow can be found at
http://goo.gl/IGqLTv
by novice Android application developers in rapid software
prototyping environments such as hackathons.
      </p>
      <p>ATL-M2M
Transformations</p>
      <p>MM1</p>
      <p>PhyDSL
Metamodel</p>
      <p>Acceleo-M2T</p>
      <p>Transformations
MM2
MM2
MM4
MM5</p>
      <p>Code
Code
Code</p>
      <p>Code
Intermediate
Metamodels</p>
      <p>Generated</p>
      <p>Code</p>
      <p>
        ATL model-to-model transformations and Acceleo
modelto-text transformations are two widely adopted
modeltransformation technologies in both industry and academic
environments. We believe that ATL and Acceleo exemplify
the semantic complexity of state-of-the-art transformation
languages built on top of model manipulation languages such as
OCL [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], thus generalizing the complexity behind modern
model-based code generators.
      </p>
    </sec>
    <sec id="sec-4">
      <title>IV. DEPENDENT AND INDEPENDENT VARIABLES</title>
      <p>Considering the hypotheses HQ1 and HQ2, we have two
dependent variables in our study:</p>
    </sec>
    <sec id="sec-5">
      <title>V arA: Time developers spend solving each task.</title>
      <p>V arB: Developers’ accuracy in terms of task solution
correctness.</p>
      <p>The four independent variables of the study are V arCT1,
V arEE1, V arCT2, and V arEE2 (see Table I). The first
two define the set of questions developers will solve using
PhyDSL as the subject system (a model-based code generator
with a branched transformation composition). The last two
specify the set of questions to be solved using ScreenFlow
as a subject system (a model-based code generator with a
linear transformation composition). We believe that by using
two subject systems with different levels of complexity (eight
transformations in PhyDSL vs. two of ScreenFlow) the study
will be able to investigate if the compositional architecture
of the generator affects developers when conducting
softwareengineering tasks.</p>
    </sec>
    <sec id="sec-6">
      <title>V. DETAILED HYPOTHESIS</title>
      <p>Taking into account our two high-level null hypotheses, our
two subject systems, and the variables of our study, let us
briefly discuss the set of detailed null hypotheses that this
study will try to reject. They all share the following general
form:</p>
      <p>HxV arxy : V~ arxCTy = V~ arxEEy
where x is A or B in place for hypothesis HA0 and HB0
related to V arA-time and V arB-accuracy respectively;
V~ arxCTy is the median of our study dependent
variables, where x indicates the developer’s time and
precision, when solving tasks using the interactive
visualizations provided by ChainTracker;
V~ arxEEy is the median of our study dependent
variables, where x indicates the developer’s time and
precision when solving tasks using off-the-shelf Eclipse
script editors for ATL and Acceleo;
and y (1, or 2) refers to the result of a dependent
variable obtained from developers solving tasks on the</p>
      <sec id="sec-6-1">
        <title>System Subject 1: PhyDSL, and the System Subject 2:</title>
        <p>ScreenFlow, respectively.</p>
        <p>In summary, four detailed null-hypothesis will be
investigated in this study. While HAV arA1 and HAV arA2 compare
the median time spent by developers solving tasks that
involve information discovery, filtering, and summarization on
single and multi-branched model-based code generators (i.e.
developers spend an equal amount of time solving questions
using ChainTracker as they do using Eclipse editors for single
and multi-branched code generators), hypothesis HBV arA1
and HBV arB2 compare the median accuracy (in terms of
task solution correctness) of developers conducting
softwareengineering tasks on single and multi-branched model-based
code generators, respectively (i.e. developers provide equally
accurate answers using ChainTracker as they do using Eclipse
editors for single and multi-branched code generators).</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>VI. STUDY PROTOCOL</title>
      <p>The protocol of the study will be divided in two main
stages that involve two independent working sessions with
two different sets of participants, and two exit surveys that
will assess the participants’ experience during the study (see
Figure 4).</p>
      <p>Stage 1: The first stage involves a working session with 15
developers. Each participant will be asked 30 questions about a
subject model-based code generator. In this stage, information
about the time spent by developers answering each question
will be collected using an in-house survey application. In this
first stage, developers will solve the first half of the tasks using
off-the-shelf ATL and Acceleo code editors in Eclipse, and the
second half using ChainTracker.</p>
      <p>Stage 2: The second stage consists of a second working
session with a new group of 15 developers. They will be
asked to answer the same set questions as developers in Stage
1. Developers’ performance will also be collected using our
in-house survey application. In this second stage developers
will be instructed to solve the first half of the tasks using
ChainTracker, and the second half using code editors in
Eclipse.</p>
      <p>At the end of each working session, developers will be asked
to complete a survey on the usability of ChainTracker and
their general experience during the session. Let us now briefly
discuss how the working sessions will be structured.</p>
      <sec id="sec-7-1">
        <title>A. Working Sessions</title>
        <p>During Stages 1 and 2, each developer will be assigned an
individual working station consisting of a desktop computer
in which Eclipse and ChainTracker will be installed and
deployed. This computer will also have an in-house system
capable of monitoring the participant’s activity such as mouse
clicks and keystrokes events. Indeed, the difference between
the working sessions of Stage 1 and 2 is the order of the tools
that developers will use to solve the given tasks. Both stages
will be divided in four parts.</p>
        <p>Part 1. The participants will receive a 20 minute high-level
presentation of Eclipse, ChainTracker, and the purpose of the
study. A demonstration of Eclipse’s features and user
interface will be given through a typical scenario of information
discovery, filtering, and summarization on both of the subject
systems. A similar demonstration will be conducted using
ChainTracker’s interactive visualizations, and code-projection
features. Finally, participants will be asked to sign the
informed consent form of the study.</p>
        <p>Part 2. Participants will be pointed to our in-house survey
application where they will answer questions about their
experience with modeling tools, and their overall
softwaredevelopment expertise. More specifically, the questionnaire
will cover i) the developers’ number of years of
softwaredevelopment experience; ii) their experience using integrated
development environments; iii) their experience using
modeling tools to document software system implementations;
and iv) whether they been exposed to model-transformation
technologies before. A predefined list of options
including popular development environments, modeling tools, and
model-transformation technologies will be presented to the
participants along with open fields that will receive alternative
answers.</p>
        <p>Part 3. Participants will have a five-minute break.
Stage 1
Stage 2
Working Session 1
15-20 Developers
1h. 30min (max)</p>
        <p>Exit Survey
Session 1</p>
        <p>Working Session 2
15-20 Developers
1h. 30min (max)</p>
        <p>Exit Survey
Session 2</p>
        <p>Data Analysis</p>
        <p>Part 4. Participants will be pointed to the second part of
the survey that will ask them to solve tasks with Eclipse and
ChainTracker. The mechanics of this part are as follows:
1) Each participant will be presented with a question about
a subject system (see Section VI-B).
2) The participant will use ChainTracker or Eclipse to find
information relevant to the question, and answer the
question.
3) The participant will submit her/his answer.
4) The participant will be directed to the next question. A
total of 30 questions will be asked to every participant
covering each one of our proposed families of tasks; 15
questions will be related to the Subject System 1, and
15 to the Subject System 2.</p>
      </sec>
      <sec id="sec-7-2">
        <title>B. Question Templates</title>
        <p>An appendix containing a collection of template questions
that involve information discovery, filtering, and
summarization tasks on model-based code generators can be found
at: http://goo.gl/BDXpUO. Some examples of our template
questions are shown below.</p>
        <p>Find a template’s upstream model-to-model
transformation dependencies: What transformation rules are
upstream related to the template line of code [line-id] in
the [template-script-name] script?
Identify the transformation rule that contains a given
metamodel binding: What transformation rule contains
the [metamodel-binding] binding in
[model-to-modeltransformation-name]?
Evaluate how well a metamodel is used in a
transformation composition: What percentage of the
[metamodelname] metamodel is been covered by the transformation
composition?</p>
      </sec>
      <sec id="sec-7-3">
        <title>C. Data Analysis</title>
        <p>Due to the nature of the variables and the limited number of
data points we will apply a Mann-Whitney “U” non-parametric
statistical test to study the hypothesis propositions. We will
adopt an alpha level with a p-value lower than 5%, thus we
will consider an acceptable probability of 0.05 for Type-I error,
i.e. rejecting the null hypothesis when it is true.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>VII. PARTICIPANTS</title>
      <p>The study solicits participants of any age and gender with at
least three years of programming experience. The experience
requirement is tightly related to the technical tasks that
developers will perform during the duration of the study. Due to the
limited experience of potential participants with model-driven
engineering technologies, the study will not enforce
modeldriven engineering experience as a fundamental requirement,
however candidates with experience on model-transformation
technologies will be preferred. We believe that graduate and
undergraduate students are potentially interested in acquiring
different skills through the use of experimental tools that
enhance their software-development abilities. Therefore the
study solicits participants enrolled in advanced software
engineering courses in academic institutions. This study will be
also advertised in venues such as the International Conference
on Model Driven Engineering Languages and Systems
(MODELS) and the International Conference on Model
Transformation (ICMT) to potentially conduct additional virtual working
sessions with highly skilled professionals on model-driven
engineering technologies.</p>
    </sec>
    <sec id="sec-9">
      <title>VIII. POTENTIAL THREATS TO VALIDITY</title>
      <p>Construct validity (Do we measure what is intended?) In
this study we will measure the performance of developers
answering questions about a model-based code-generating
system. We understand developers’ performance in terms of
the time they take answering each question and their
correctness. We have developed an in-house survey application
that presents participants with the questions and measures the
time from when the question is showed to the participant
to the moment when the participant has submitted an
answer. Furthermore, we have carefully instantiated our question
templates on our subject systems, and the correctness of
each expected answer has been validated by three
modeltransformation experts. We do not foresee any significant
threats to the construct validity of study.</p>
      <p>Internal validity (Are there unknown factors which might
affect the outcome of the experiments?) We have identified
two main threats to the internal validity of this study. First,
the limited number of participants and their heterogeneous
expertise on model-driven development technologies may limit
the validity of the study. This study, however, is planned to
be conducted with a minimum of 30 developers with at least
three years of software-development experience. Considering
that model-driven engineering technologies (such as
modeltransformation languages and modeling tools) are still in their
infancy, and are yet to be adopted by the software engineering
community at large, our pool of participants are representative
of a community in which the majority of developers
designing and maintaining code generators are novice, or at least
not highly experienced, on model-driven engineering tools.
Furthermore, this study hopes to capture the interest of the
model-driven engineering community and conduct additional
virtual working sessions with highly-skilled model-driven
professionals around the world. Indeed, having a diverse pool of
participants will be highly valuable to the generalizability and
statistical soundness of the study. Second, we are aware of
the learning curve of ChainTracker and how its accessibility
might affect developers when trying to answer questions on
the subject systems. In order to minimize the impact of this
threat to validity, we have included an introductory tutorial
at the beginning of our working sessions’ protocol (Section
VI-A). The tutorial will showcase different question-solving
scenarios using ChainTracker and Eclipse. Furthermore,
during the last year we have iterated over ChainTracker’s graphic
user interface, running informal focus groups in order to make
its features accessible and intuitive for developers.</p>
      <sec id="sec-9-1">
        <title>External validity (To what extend is it possible to gen</title>
        <p>
          eralize the findings?) The subject systems of our study are
two model-based code generators implemented using ATL,
a rule-based model-to-model transformation language, and
Acceleo, a template-based model-to-text transformation
technology. Therefore any conclusions drawn from this study
can not be fully generalized to the performance of
developers solving software engineering tasks on model-based code
generators built using other model-transformation
technologies. However, both Acceleo and ATL are widely used in
academia and industry, and more importantly, both languages
are aligned to the Query/View/Transformation (QVT) standard
for model-to-model transformations [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], and the Model to
        </p>
      </sec>
      <sec id="sec-9-2">
        <title>Text Transformation Language (MOF) standard for model-to</title>
        <p>
          text transformations [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] proposed by the Object Management
Group (OMG), respectively. Therefore the observations of this
study can potentially be generalized to developers performing
the same set of tasks in generators, with similar size and
architecture, built using languages that comply with the same
set of standards.
        </p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>IX. EXPECTED CONTRIBUTIONS</title>
      <p>The contributions of this study are twofold. First our study
will be the first of its kind to investigate how developers
approach the process of answering questions that reflect on
the design and execution mechanics of model-based code
generators. It is our strong belief that by gaining insight on
the human aspects of model-driven software development,
the community will be able to propose tools that make
the construction of code generators less error prone and
less cognitively challenging, thus potentially increasing the
adoption of model-driven engineering techniques as a whole.
Second, our study will increase the understanding on how
developers can solve software-engineering tasks on
modelbased code generators, more accurately and efficiently, using
interactive traceability collection and visualization tools such
as ChainTracker. This study will gather information necessary
to enhance the current features of ChainTracker, and to create
new ones that further support developers in their daily tasks.
Furthermore, we believe this study is a novel contribution to
the community and plays an important role in the collective
endeavour to improve and boost the adoption of
modeldriven engineering among software engineering researchers
and practitioners.</p>
    </sec>
    <sec id="sec-11">
      <title>ACKNOWLEDGEMENTS This work was supported by The Killam Trust, NSERC (the Discovery and the IRC program), the GRAND NCE and IBM Canada.</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>U.</given-names>
            <surname>Aßmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Knoop</surname>
          </string-name>
          , and W. Zimmermann, “
          <article-title>Model-based codegenerators and compilers-track introduction,” in Leveraging Applications of Formal Methods, Verification and Validation</article-title>
          .
          <source>Technologies for Mastering Change</source>
          . Springer,
          <year>2014</year>
          , pp.
          <fpage>386</fpage>
          -
          <lpage>390</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          , “
          <article-title>Generative programming: Methods, techniques, and applications tutorial abstract</article-title>
          ,
          <source>” Software Reuse: Methods, Techniques, and Tools</source>
          , pp.
          <fpage>477</fpage>
          -
          <lpage>503</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R.</given-names>
            <surname>France</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , “
          <article-title>Model-driven development of complex software: A research roadmap,” in 2007 Future of Software Engineering</article-title>
          . IEEE Computer Society,
          <year>2007</year>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>54</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hutchinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rouncefield</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Kristoffersen</surname>
          </string-name>
          , “
          <article-title>Empirical assessment of mde in industry</article-title>
          ,”
          <source>in Proceedings of the 33rd International Conference on Software Engineering. ACM</source>
          ,
          <year>2011</year>
          , pp.
          <fpage>471</fpage>
          -
          <lpage>480</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          and
          <string-name>
            <surname>I. Kurtev</surname>
          </string-name>
          , “
          <article-title>Transforming models with atl,” in Satellite Events at the MoDELS 2005 Conference</article-title>
          . Springer,
          <year>2006</year>
          , pp.
          <fpage>128</fpage>
          -
          <lpage>138</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Paige</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Polack</surname>
          </string-name>
          , “
          <article-title>The epsilon transformation language</article-title>
          ,
          <source>” Theory and Practice of Model Transformations</source>
          , pp.
          <fpage>46</fpage>
          -
          <lpage>60</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Musset</surname>
          </string-name>
          , É. Juliot,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lacrampe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Piers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Brun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Goubet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lussaud</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Allilaire</surname>
          </string-name>
          , “
          <article-title>Acceleo user guide</article-title>
          ,”
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Bragança</surname>
          </string-name>
          and
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Machado</surname>
          </string-name>
          , “
          <article-title>Transformation patterns for multistaged model driven software development</article-title>
          ,
          <source>” in Software Product Line Conference</source>
          ,
          <year>2008</year>
          . SPLC'
          <volume>08</volume>
          . 12th International. IEEE,
          <year>2008</year>
          , pp.
          <fpage>329</fpage>
          -
          <lpage>338</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          , “
          <article-title>Classification of model transformation approaches</article-title>
          ,”
          <source>in Proceedings of the 2nd OOPSLA Workshop on Generative Techniques in the Context of the Model Driven Architecture</source>
          , vol.
          <volume>45</volume>
          , no.
          <issue>3</issue>
          .
          <string-name>
            <surname>Citeseer</surname>
          </string-name>
          ,
          <year>2003</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>17</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kleppe</surname>
          </string-name>
          , “First european workshop on composition of model transformations - cmt
          <year>2006</year>
          ,
          <source>” Technical Report TR-CTIT-06-34</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>V.</given-names>
            <surname>Guana</surname>
          </string-name>
          and E. Stroulia, “
          <article-title>Backward propagation of code refinements on transformational code generation environments,” in Traceability in Emerging Forms of Software Engineering (TEFSE</article-title>
          ), 2013 International Workshop on,
          <year>2013</year>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>60</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>V.</given-names>
            <surname>Guana</surname>
          </string-name>
          and E. Stroulia, “
          <article-title>Chaintracker, a model-transformation trace analysis tool for code-generation environments,”</article-title>
          <source>in Theory and Practice of Model Transformations</source>
          . Springer,
          <year>2014</year>
          , pp.
          <fpage>146</fpage>
          -
          <lpage>153</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>V.</given-names>
            <surname>Guana</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Gaboriau</surname>
          </string-name>
          , and E. Stroulia, “Chaintracker:
          <article-title>Towards a comprehensive tool for building code-generation environments</article-title>
          ,”
          <source>in Proceedings of the 2014 International Conference on Software Maintenance and Evolution (ICSME)</source>
          . IEEE Press,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>A. Van Deursen</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Visser</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Warmer</surname>
          </string-name>
          , “
          <article-title>Model-driven software evolution: A research agenda</article-title>
          ,”
          <source>in Proceedings 1st International Workshop on Model-Driven Software Evolution</source>
          ,
          <year>2007</year>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>49</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>J.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.-K.</given-names>
            <surname>Kim</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Carrington</surname>
          </string-name>
          , “
          <article-title>Verifying metamodel coverage of model transformations</article-title>
          ,” in Software Engineering Conference,
          <year>2006</year>
          . Australian. IEEE,
          <year>2006</year>
          , pp.
          <fpage>10</fpage>
          -pp.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>V.</given-names>
            <surname>Guana</surname>
          </string-name>
          and E. Stroulia, “
          <article-title>Phydsl: A code-generation environment for 2d physics-based games</article-title>
          ,” in
          <source>2014 IEEE Games, Entertainment, and Media Conference (IEEE GEM)</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>V.</given-names>
            <surname>Guana</surname>
          </string-name>
          , E. Stroulia, and
          <string-name>
            <given-names>V.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          , “
          <article-title>Building a game engine: A tale of modern model-driven engineering</article-title>
          .”
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J.</given-names>
            <surname>Warmer</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Kleppe</surname>
          </string-name>
          ,
          <article-title>The object constraint language: getting your models ready for MDA</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19] OMG, “
          <article-title>Mof model to text transformation language (mofm2t), 1</article-title>
          .0,”
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20] OMG., “
          <article-title>Meta object facility (mof) 2.0 query/view/transformation (qvt</article-title>
          ),”
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>