<!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>GECO: Generator-Composition for Aspect-oriented DSLs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Reiner Jung</string-name>
          <email>reiner.jung@email.uni-kiel.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Kiel University</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Increasing size and complexity of software projects have triggered the use of domain-speci c languages (DSL). Multiple DSLs, some with cross-cutting concerns, are used to describe software systems. In context of long-living software systems, requirements change over time causing an evolution of domains and subsequently the corresponding DSLs. Transformations are used to generate models and code from these DSLs combining information from di erent cross-cutting concerns. Due to the changes, the development and evolution of these generators become cumbersome and error-prone. The proposed GECO approach addresses this issue by introducing guidelines and tooling to ease generator composition and evolution. Furthermore, it allows parts of code generators to be developed and evolved separately reducing the overall complexity of code generation. In addition GECO fosters the reuse of DSLs and their generators in di erent projects.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Model-driven engineering (MDE) addresses the complexity of software systems
with a higher level of abstraction realized through models [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. To compose
models, domain speci c languages (DSL) can be used, providing a concrete notation
to abstract meta-models. Software systems comprise multiple concerns and views
which are addressed by multi-view-modeling approaches [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and aspect-oriented
modeling (AOM) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] with separate aspect and base models. Aspect and base
models use the same meta-model (cf. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]) or separate aspect and base
metamodels with speci c abstract syntaxes and semantics [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ].
      </p>
      <p>
        These source models of a software system are then transformed into
target models or program code and supportive artifacts [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] by generators.
Therefore, generators play a central role in MDE [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. In an AOM context, generators
may process multiple source models, representing di erent aspects, and
integrate their information into target models (cf. [
        <xref ref-type="bibr" rid="ref8 ref9">8,9</xref>
        ]), making generators
considerably complex artifacts, particularly because a generator may depend on multiple
meta-models. Furthermore, depending on multiple meta-models, a
transformation must be modi ed every time one of the meta-models is modi ed. Long-living
software systems face changes due to alteration of requirements, technology and
environment during their lifetime. Requirement changes may cause alterations in
the domain of a speci c DSL and require alterations to its syntax and semantic,
subsequently causing changes to the transformation. Technology and
environment changes, induced by, e.g., service-oriented and cloud technologies [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], can
a ect how the semantic of the DSL is realized with the underlying technologies.
      </p>
      <p>Frequent changes to complex transformations are cumbersome and can cause
code and architecture degradation. Furthermore, DSLs can be altered quickly
in comparison with transformations, and be reused in other software projects.
However, such transformation, dependent on multiple source meta-models are
harder to modify and reuse, as they process model elements from di erent
metamodels in the same rule or operation. Therefore, separating transformation code
for one speci c meta-model and DSL is at least complicated or even unfeasible.
This hinders software evolution and the reuse of tooling.</p>
      <p>The goal of this research project is to provide an technology independent
approach which supports the construction, evolution and reuse of complex
generators, by dividing them into smaller and simpler fragments, targeting only one
aspect or concern, and subsequently compose complete generators out of these
fragments. Hence, the approach is named GECO for generator composition.</p>
      <p>The remaining paper follows the proposed structure. Section 2 discusses the
related work. Section 3 introduces the approach, and Section 4 the preliminary
work to motivate, realize and evaluate the approach. The expected contributions
are described in Section 5 and the evaluation in Section 6. The current status is
summarized in Section 7 along with the timeline for the project.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        Only a few code generation approaches covering AOM have been published [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
Most prominent are an FDAF [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] based approach [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], Theme/UML [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] based
generator [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], and reusable aspect models (RAM) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] which utilizes the generic
composition with Kermeta weaver [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] for model weaving.
      </p>
      <p>These approaches focus on UML and the generation of Java and AspectJ.
They promise reusability of aspect models and code generators in di erent
projects. While some approaches utilize stereotypes or pro les to describe
aspects, they neither support UML pro les for their base and aspect models, nor
do they address domain-speci c languages. In these approaches, aspects are
modeled with UML subsets. The weaving of aspects is controlled by direct references
or model-subgraphs formulating pointcuts. However, these approaches do not
address the construction of generators, as they see them as stable elements.</p>
      <p>
        To the best of our knowledge, literature indicates that construction, evolution
and reuse of generators have not had much attention in the modeling community
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. While this is di erent in the compiler community, they do not address the
speci c nature of evolution and reuse, as the evolution steps of programming
languages and their compilers happen in years not weeks. However, two modeling
approaches address the construction and reuse of generators. The rst approach
focuses on product lines, where highly adaptable generators are required to
support, e.g., di erent functionalities of the target domain [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. It utilizes higher
order transformations [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] to combine domain-speci c transformation templates
for speci c products. The second approach, Genesys [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], focuses on correctness
of code generators which is ensured by composing generators from correct
fragments, providing features, like loops or allocation. Both approaches allow the
construction of single generators out of smaller fragments and can be used to
construct fragments for GECO. However, they do not support AOM and are not
prepared to support model traceability, which is necessary to resolve join points.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>The GECO Approach</title>
      <p>The general aim of GECO is to provide an approach and methods to construct
code generators and support their evolution and reuse. The key challenges for
this research project are the notation of pointcuts in DSLs, their resolvement
to target model join points, and the decomposition of generators along concerns
re ected in meta-models and facets of meta-models, like typing and expressions.
3.1</p>
      <sec id="sec-3-1">
        <title>Basic Generator Scenarios</title>
        <p>
          Code generation for software systems utilizing AOM involves di erent base and
aspect models which are transformed into target models. In projects with
multiple DSLs, like MENGES [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], the generation involves multiple generators
processing and combining information from di erent models. However, based on the
AOM paradigm, models play the role of an aspect or base model resulting in
aspect to base model relationships [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>
          On that basis, the complex relationship graph of meta-models and generators
can be split into four di erent mega-model [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] pattern (see Fig. 1). S1 is a
simple transformation with one source and one target model. S2 describes that
source model references are mapped to target model references, resembling the
aforementioned Java/AspectJ generator approaches in Section 2. S3 re ects the
situation, where the direction of the references is inverted from source to target
models. This may happen to express function calls to an aspect model. Finally, S4
represents model or code weaving where a compatible aspect model is integrated
into the base model. GECO utilizes di erent weavers, like GeKo [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] for models
and AspectJ1 for Java code.
        </p>
        <sec id="sec-3-1-1">
          <title>1 https://www.eclipse.org/aspectj/</title>
          <p>3.2</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>Generator Composition</title>
        <p>
          Depending on the described generator mega-model pattern, di erent information
must be exchanged between generator fragments. In Fig. 2, the combination
of fragments is illustrated along the two central pattern. In S2, the generator
fragment TFBM produces as main output a model conforming to TBM. Similarly,
TFAM produces an output conforming to TAM. To do so, TFAM must resolve the
reference destinations in TBM based on the references expressed in SAM. This
task requires trace information for the generated model nodes which are stored
in a trace model conforming to a TRM. A trace model can be generated by
TFBM or can be computed by a separate transformation TRBM. Depending on
the transformation language, the generation of the trace model must be explicitly
speci ed or automatically added to a generator (see [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]).
        </p>
        <p>S2</p>
        <p>GBM
SBM</p>
        <p>TBM</p>
        <p>SBM</p>
        <p>TRBM TRM
SAM</p>
        <p>GAM</p>
        <p>TAM</p>
        <p>TRAM
SAM</p>
        <p>S3</p>
        <p>GBM
TRM, JPM</p>
        <p>TBM
TAM</p>
        <p>G Generator
TR Trace Reconstruction Generator
SBM Source Base Meta-Model
SAM Source Aspect Meta-Model
TBM Target Base
TAM Target Aspect Meta-Model
TRM Trace Meta-Model</p>
        <p>JPM Join Point Meta-Model</p>
        <p>GAM</p>
        <p>Fig. 2. Illustration of generator fragment compositions</p>
        <p>S3 requires a di erent approach to ful ll its two tasks. First, it has to invert
the direction of the references. And second, the references must be mapped from
source to target level. Therefore, TFAM or a supplement TRAM produces a trace
model for the aspect, and additionally relationships for source model join points
stored in a join point model. The latter is required to infer the inverse references,
to be placed in the target base model. And the trace model is used to determine
target aspect model nodes corresponding to their source aspect model nodes.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Computing Target Model Join Points</title>
        <p>
          In aspect-oriented DSLs and their meta-models, join points can be expressed as
direct references pointing from an aspect model node to a base model node [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] or
they can be determined with pointcuts speci ed as subgraph patterns [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and
model queries [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. These join points refer to source base model nodes. However,
to retain the join points on the target model level, they must be translated
accordingly. Based on the trace model, all source model nodes in the join point
collection are replaced by their respective target model nodes. As a generator
might create multiple target model nodes for one source model node, the
resulting target join point model might be signi cantly larger than the source join
point model. For example, a source model node describing a lter is represented
on the target model level by multiple public operations.
        </p>
        <p>
          Based on current approaches to determine and represent traces [
          <xref ref-type="bibr" rid="ref22 ref23">22,23</xref>
          ], trace
models also contain traces to nodes which are semantically not suited for weaving
behavior or structure. This is especially true when trace construction is
automatically introduced to transformations [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. For example, a join point representing
an injection of a monitoring probe should reference an operation and not the
parameter or return type of the operation. Therefore, only suitable nodes in the
target model must be selected. In GECO this is realized by a subgraph pattern
match. Based on this selection a set of remaining join points can be determined.
3.4
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>Obtaining Model Traces</title>
        <p>
          In current research, di erent methods and approaches have been described to
obtain and store model traces [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. They can be categorized as constructive and
recovery approaches. The latter use either deterministic algorithms or heuristics
[
          <xref ref-type="bibr" rid="ref25">25</xref>
          ] to nd matches. Heuristic approaches produce non-predictable results which
is not su cient for generators. Deterministic based recovery strategies require
attributes which are considered identical in source and target models. However,
this assumption cannot be guaranteed for all transformations, resulting in
incomplete join point models. Therefore, only constructive approaches can determine
suitable trace models, where either traces are generated by the fragment itself
or by a supplement trace model generator. The rst approach leads to more
complex generators from a developer's perspective if the code must be added by
hand. However, for some transformation languages, this feature can be added
automatically [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. The second approach circumvents this complexity issue by
de ning a separate generator, which also allows to integrate legacy generators
were code alterations are not possible.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Preliminary Work</title>
      <p>
        MENGES [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] aimed to develop a DSL for railway control centers, which resulted
in eight di erent DSLs describing communication, logic, deployment, con
guration and monitoring. The DSLs were developed in an agile setting where all
features and changes have been recorded and documented. Thus, it is a good
basis for a comparative evaluation for generator construction and evolution.
      </p>
      <p>
        Based on experience in application monitoring, we developed an
instrumentation aspect language [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] with a query based pointcut model capable of being
used with any EMF meta-model. The tooling provides already a generator for
AspectJ con guration les and partial code generation for instrumentation code.
      </p>
      <p>
        A key problem of meta-models is the understanding of the syntactical and
semantical aspects of their di erent features which must be established prior
to writing code generators. We rst addressed structural properties of DSLs in
form of type-systems and instances of types [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. Particularly important is the
mapping of the source to the target type-system, which may involve special
runtime code to support source level type concepts on the target level. Further, we
explored the semantic properties of meta-models and typical features of speci c
meta-models types [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] induced by their AOM role and application context, like
meta-model pattern for pointcuts, typing, expressions, data, state, and traces.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Expected Contributions</title>
      <p>
        The main goal of GECO is to provide both: a method and a process to guide
DSL and generator development, based on the above described approach. This
includes meta-model patterns induced by the domain the meta-model is used for,
application context, and role in AOM, as well as, the partitioning of generators
along these patterns [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The EMF based tooling will support the composition of
generators accompanied by a framework for DSL development supporting
typesystem integration. Furthermore, a reusable aspect DSLs for monitoring and
application measuring will be created in cooperation with the Kieker project2.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Evaluation Scenarios</title>
      <p>
        The evaluation is built on two generator construction scenarios based on the
Common Component Modeling Example (CoCoME) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] and the aforementioned
DSLs for railway control centers (RCC). The CoCoME scenario resembles a
Javabased enterprise software system, while RCC project targets embedded systems.
In both scenarios, DSL users will be involved to steer DSL feature changes by
contributing feature requests.
      </p>
      <p>
        The evaluation process is divided into three phases, where each one has its
speci c objectives. Phase one: Two existing code generators for the application
(partial CoCoME) and a monitoring aspect [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] are integrated to evaluate the
feasibility of all techniques, notations, and methods. The resulting generator and
pointcut notations are thought to be used by other researchers of the priority
program3 in their case studies. The success of the rst phase will be determined
by its ability to deliver a working generator and the user feedback, based on
interviews, regarding practicability of the di erent pointcut notations.
      </p>
      <p>Phase two: Existing and newly constructed DSLs supplement the initial
CoCoME models in order to specify all aspects of the CoCoME application. For
these DSLs, generator fragments are developed by me and other researchers who
utilize CoCoME in their software evolution scenarios. Based on the researchers
scenarios, modi cations to the DSLs and generators are performed simulating
evolution. GECO will successfully complete this phase if it is able to provide
stable generators, and the development time does not increase with every change.
Furthermore, user feedback will determine the applicability of GECO.</p>
      <p>The nal phase will utilize the RCC DSLs in a setting performed together
with an industry partner. Success will be determined similarly to phase two.
However, in this scenario results from a previous generator development project
for the same DSL will be used to evaluate an eventual cost bene t of GECO.
Furthermore, the results and the approach will be reviewed by means of
expert interviews of industry partners to evaluate its applicability in their speci c
domains and software development processes.</p>
      <sec id="sec-6-1">
        <title>2 http://www.kieker-monitoring.net 3 http://www.dfg-spp1593.de</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Current Status</title>
      <p>
        Currently, the evaluation scenarios and partners have been selected. Still,
details have to be discussed with industry partners. The monitoring DSLs [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] are
implemented including the tooling. However, the generators for the
instrumentation probes are only partial realized. Further, di erent weavers are currently
investigated and the rst evaluation phase setup is being prepared.
      </p>
      <p>The nal milestone for my doctorate is mid 2015. The next step is to nal
the setup for the rst evaluation scenario which requires all technical parts of the
approach in a working order. This includes the necessary generator fragments
for the instrumentation probes. The weaving will be realized with AspectJ. The
results for this rst phase should be available in September 2014. Subsequently,
the additional DSLs for the CoCoME scenario will be nalized and the generator
fragments shall be available in December, providing the basis for the second
phase of the evaluation. From January to April 2015, the third phase based on
the RCC scenario will be conducted. The remaining time is reserved to nalize
the thesis, tooling and documentation.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Stahl</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , Volter, M.:
          <string-name>
            <surname>Model-Driven Software</surname>
          </string-name>
          Development { Technology, Engineering, Management. Wiley &amp; Sons (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Kienzle</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Abed</surname>
            ,
            <given-names>W.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klein</surname>
          </string-name>
          , J.:
          <article-title>Aspect-oriented multi-view modeling</article-title>
          . In Sullivan, K.J.,
          <string-name>
            <surname>Moreira</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schwanninger</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
          </string-name>
          , J., eds.: AOSD,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2009</year>
          )
          <volume>87</volume>
          {
          <fpage>98</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Kramer</surname>
            ,
            <given-names>M.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kienzle</surname>
          </string-name>
          , J.:
          <article-title>Mapping aspect-oriented models to aspect-oriented code</article-title>
          .
          <source>In: Proceedings of the 2010 international conference on Models in software engineering. MODELS'10</source>
          , Berlin, Heidelberg, Springer-Verlag (
          <year>2011</year>
          )
          <volume>125</volume>
          {
          <fpage>139</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bennett</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cooper</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dai</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Aspect-oriented model-driven skeleton code generation: A graph-based transformation approach</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>75</volume>
          (
          <issue>8</issue>
          ) (
          <year>2010</year>
          )
          <volume>689</volume>
          {
          <article-title>725 Designing high quality system/software architectures</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Jung</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heinrich</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmieders</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Strittmatter</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>A method for aspect-oriented meta-model evolution</article-title>
          .
          <source>In: Proceedings of the 2Nd Workshop on View-Based, Aspect-Oriented and Orthographic Software Modelling. VAO '14</source>
          , New York, NY, USA, ACM (
          <year>2014</year>
          )
          <volume>19</volume>
          :
          <fpage>19</fpage>
          {
          <fpage>19</fpage>
          :
          <fpage>22</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Biehl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Literature Study on Model Transformations</article-title>
          .
          <source>Technical Report</source>
          ISRN/KTH/MMK/R-10/
          <fpage>07</fpage>
          -SE, Royal Institute of Technology (
          <year>July 2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Mehmood</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jawawi</surname>
            ,
            <given-names>D.N.</given-names>
          </string-name>
          :
          <article-title>Aspect-oriented model-driven code generation: A systematic mapping study</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>55</volume>
          (
          <issue>2</issue>
          ) (
          <year>2013</year>
          )
          <volume>395</volume>
          { 411 Special Section:
          <article-title>Component-Based Software Engineering</article-title>
          (CBSE),
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Goerigk</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hennings</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jung</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schultz</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stahl</surname>
          </string-name>
          , T.,
          <string-name>
            <surname>von</surname>
            <given-names>Hanxleden</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Weik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Zeug</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          :
          <article-title>Entwurf einer domanenspezi schen sprache fur elektronische stellwerke</article-title>
          . In Jahnichen,
          <string-name>
            <surname>S.</surname>
          </string-name>
          , Kupper,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Albayrak</surname>
          </string-name>
          , S., eds.: Software Engineering. Volume
          <volume>198</volume>
          of LNI.,
          <source>GI</source>
          (
          <year>2012</year>
          )
          <volume>119</volume>
          {
          <fpage>130</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Giacinto</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lehrig</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Towards integrating java ee into protocom</article-title>
          .
          <source>In: KPDAYS</source>
          . (
          <year>2013</year>
          )
          <volume>69</volume>
          {
          <fpage>78</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heinrich</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jung</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Metzger</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pohl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmieders</surname>
          </string-name>
          , E.:
          <article-title>iobserve: Integrated observation and modeling techniques to support adaptation and evolution of software systems</article-title>
          .
          <source>Research report</source>
          , Kiel University, Kiel, Germany (
          <year>October 2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Dai</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Formal Design Analysis Framework: An Aspect-oriented Architectural Framework</article-title>
          .
          <source>PhD thesis</source>
          , The University of Texas at Dallas (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baniassad</surname>
          </string-name>
          , E.:
          <string-name>
            <surname>Aspect-Oriented Analysis</surname>
          </string-name>
          and
          <string-name>
            <surname>Design.</surname>
          </string-name>
          Addison-Wesley
          <string-name>
            <surname>Professional</surname>
          </string-name>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Hecht</surname>
            ,
            <given-names>M.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piveta</surname>
            ,
            <given-names>E.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pimenta</surname>
            ,
            <given-names>M.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Price</surname>
          </string-name>
          , R.T.:
          <article-title>Aspect-oriented code generation</article-title>
          . In: Simpsio Brasileiro de Engenharia de Software.
          <article-title>(</article-title>
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Klein</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kienzle</surname>
          </string-name>
          , J.:
          <article-title>Reusable aspect models</article-title>
          .
          <source>In: 11th Workshop on AspectOriented Modeling</source>
          , AOM at Models'
          <volume>07</volume>
          ,. (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Morin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klein</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barais</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jezequel</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>A generic weaver for supporting product lines</article-title>
          .
          <source>In: Proceedings of the 13th International Workshop on Early Aspects. EA '08</source>
          , New York, NY, USA, ACM (
          <year>2008</year>
          )
          <volume>11</volume>
          {
          <fpage>18</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Kapova</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goldschmidt</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Happe</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
            ,
            <given-names>R.H.</given-names>
          </string-name>
          :
          <article-title>Domain-speci c templates for re nement transformations</article-title>
          . In: MDI '10: First International Workshop on Model-Drive
          <string-name>
            <surname>Interoperability</surname>
          </string-name>
          , New York, NY, USA, ACM (
          <year>2010</year>
          )
          <volume>69</volume>
          {
          <fpage>78</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Tisi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fraternali</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ceri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bzivin</surname>
          </string-name>
          , J.:
          <article-title>On the use of higherorder model transformations</article-title>
          . In Paige, R.,
          <string-name>
            <surname>Hartman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rensink</surname>
          </string-name>
          , A., eds.:
          <source>Model Driven Architecture - Foundations and Applications</source>
          . Volume
          <volume>5562</volume>
          of Lecture Notes in Computer Science. Springer Berlin Heidelberg (
          <year>2009</year>
          )
          <volume>18</volume>
          {
          <fpage>33</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. Jorges, S.:
          <article-title>Construction and Evolution of Code Generators - A Model-Driven and Service-Oriented Approach</article-title>
          . Volume
          <volume>7747</volume>
          <source>of LNCS</source>
          . Springer (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Favre</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>Foundations of model (driven) (reverse) engineering { episode i: Story of the dus papyrus and the solarus</article-title>
          .
          <source>In: Post-Proceedings of Dagstuhl seminar on model driven reverse engineering</source>
          . (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Loosely coupled traceability for atl</article-title>
          .
          <source>In: In Proceedings of the European Conference on Model Driven Architecture workshop on traceability.</source>
          (
          <year>2005</year>
          )
          <volume>29</volume>
          {
          <fpage>37</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Jung</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heinrich</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmieders</surname>
          </string-name>
          , E.:
          <article-title>Model-driven instrumentation with kieker and palladio to forecast dynamic applications</article-title>
          . In Becker, S.,
          <string-name>
            <surname>Hasselbring</surname>
          </string-name>
          , W., van
          <string-name>
            <surname>Hoorn</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
          </string-name>
          , R., eds.
          <source>: KPDAYS</source>
          . Volume
          <volume>1083</volume>
          of CEUR Workshop Proceedings., CEUR-WS.org (
          <year>2013</year>
          )
          <volume>99</volume>
          {
          <fpage>108</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Galvao</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goknil</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Survey of traceability approaches in model-driven engineering</article-title>
          .
          <source>In: Enterprise Distributed Object Computing Conference</source>
          ,
          <year>2007</year>
          .
          <source>EDOC</source>
          <year>2007</year>
          . 11th IEEE International.
          <article-title>(</article-title>
          <year>2007</year>
          )
          <volume>313</volume>
          {
          <fpage>313</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Grammel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kastenholz</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A generic traceability framework for facet-based traceability data extraction in model-driven software development</article-title>
          .
          <source>In: Proceedings of the 6th ECMFA Traceability Workshop</source>
          , New York, NY, USA, ACM (
          <year>2010</year>
          )
          <volume>7</volume>
          {
          <fpage>14</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Vanhoo</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van Baelen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Joosen</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Berbers</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Traceability as input for model transformations</article-title>
          . In Oldevik, J.,
          <string-name>
            <surname>Olsen</surname>
            ,
            <given-names>G.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neple</surname>
          </string-name>
          , T., eds.: Third ECMDA Traceability Workshop 2007 Proceedings,,
          <string-name>
            <surname>SINTEF</surname>
          </string-name>
          (
          <year>June 2007</year>
          )
          <volume>37</volume>
          {
          <fpage>46</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Saada</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
          </string-name>
          , H.:
          <article-title>Recovering model transformation traces using multi-objective optimization</article-title>
          .
          <source>In: Automated Software Engineering (ASE)</source>
          ,
          <source>2013 IEEE/ACM 28th International Conference on. (Nov</source>
          <year>2013</year>
          )
          <volume>688</volume>
          {
          <fpage>693</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Jung</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Type systems for domain-speci c languages</article-title>
          . In Wagner, S.,
          <string-name>
            <surname>Lichter</surname>
          </string-name>
          , H., eds.:
          <source>Software Engineering (Workshops)</source>
          . Volume 215 of LNI.,
          <source>GI</source>
          (
          <year>2013</year>
          )
          <volume>139</volume>
          {
          <fpage>154</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Rausch</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reussner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mirandola</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plasil</surname>
          </string-name>
          , F., eds.:
          <article-title>The Common Component Modelling Example (CoCoME)</article-title>
          .
          <source>Volume 5153 of Lecture Notes in Computer Science</source>
          . Springer Verlag Berlin Heidelberg (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>