<!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>Code Generator Composition for Model-Driven Engineering of Robotics Component &amp; Connector Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jan Oliver Ringert</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Roth</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Rumpe</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Wortmann</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Computer Science Tel Aviv University</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Software Engineering RWTH Aachen University</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Engineering software for robotics applications requires multidomain and application-speci c solutions. Model-driven engineering and modeling language integration provide means for developing specialized, yet reusable models of robotics software architectures. Code generators transform these platform independent models into executable code speci c to robotic platforms. Generative software engineering for multidomain applications requires not only the integration of modeling languages but also the integration of validation mechanisms and code generators. In this paper we sketch a conceptual model for code generator composition and show an instantiation of this model in the MontiArcAutomaton framework. MontiArcAutomaton allows modeling software architectures as component and connector models with di erent component behavior modeling languages. E ective means for code generator integration are a necessity for the post hoc integration of applicationspeci c languages in model-based robotics software engineering.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Software engineering for robotic systems is inherently complex due to the
heterogeneity of the systems and their challenges from various domains (e.g.,
navigation, sensor fusion, manipulation). Thus, robotics software is usually
developed by teams of domain experts with di erent views and understanding of
the systems functionality. This leads to hardly reusable software limited to
speci c platforms [
        <xref ref-type="bibr" rid="ref17 ref8">8, 17</xref>
        ]. To enable the reuse of functionality and subsystems, the
structuring and composition mechanisms of component-based software
engineering have been applied to robotics software [
        <xref ref-type="bibr" rid="ref12 ref4">4, 12</xref>
        ]. These approaches are mainly
based on the exchange of source code components and thus tied to speci c
platforms and general-purpose programming languages (GPL). The application of
GPLs often does not re ect the problems from heterogeneous domains faced in
the development of robotics systems.
      </p>
      <p>
        Model-driven engineering (MDE) is an approach to reduce the conceptual
gap [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] between problem domains and software engineering. Models allow
domainspeci c software descriptions re ecting the heterogeneity of the developed
system and its concerns. In combination with powerful code generators models may
serve as primary development artifacts which increases the software's
comprehensibility and reuse on di erent platforms.
      </p>
      <p>
        We have combined MDE and software language engineering based approaches
with concepts from generative software development in a versatile framework for
robotics applications development. MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ] is an extensible
framework that allows to model robotics applications as hierarchically
composable components with well-de ned interfaces that embed problem speci c
modeling languages for component behavior. MontiArcAutomaton comprises powerful
code generation facilities for the transformation of models into executable code
for various robotics target platforms.
      </p>
      <p>
        Language integration in MontiArcAutomaton is enabled by the MontiCore
domain-speci c language workbench [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. MontiCore provides comprehensive
language composition mechanisms supported by its symbol table and code
generation frameworks [
        <xref ref-type="bibr" rid="ref16 ref21">16, 21</xref>
        ]. We have presented the language composition
mechanisms used by MontiArcAutomaton in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>The easy integration of modeling languages demands for integration
mechanisms of corresponding code generators. Challenges are the coordination of
multiple code generators each responsible for speci c models or parts of models. This
includes the selection of code generators supporting a common target platform,
to handle language restrictions a code generator might impose, and to propagate
necessary generation context information between generators. Integrating code
generators should require no modi cation of the participating generators.</p>
      <p>In this paper we sketch a conceptual model for code generator composition
and show its instantiation in the MontiArcAutomaton framework. We introduce
MontiArcAutomaton in Sect. 2 and state and illustrate the problem of code
generator composition in Sect. 3. Section 4 describes our solution and Sect. 5
describes an implementation in MontiArcAutomaton. We discuss related work
in Sect. 6 and future work in Sect. 7. Section 8 concludes this contribution.
2</p>
    </sec>
    <sec id="sec-2">
      <title>MontiArcAutomaton</title>
      <p>
        MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ] is an extensible modeling language and framework
for the generative model-driven engineering of robotics applications. The
modeling language MontiArcAutomaton is a component and connector (C&amp;C)
architecture description language (ADL) [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] which extends the ADL MontiArc [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
with component behavior modeling. The logical architecture of robotics
applications is described as the hierarchical composition of components that encapsulate
the system's functionality. Components are either atomic or composed: atomic
components de ne behavior via an embedded behavior modeling language or
a component implementation in a general-purpose programming language. The
behavior of composed components emerges from the subcomponents and their
interaction. Components interact by sending messages via directed connectors
that connect typed input and output ports of components. Types of ports are
either de ned via class diagrams or Java classes. Communication in
MontiArcAutomaton is based on the Focus [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] framework for interactive distributed
systems and supports di erent timing paradigms.
      </p>
      <p>The concept of encapsulation from C&amp;C ADLs allows not only a logically
distributed development and a physically distributed computation model but
also the composition of component behaviors independent of their behavior
description. MontiArcAutomaton exploits the C&amp;C encapsulation mechanism and
allows the embedding of arbitrary modeling languages into components for
providing the most suitable behavior description language per component.</p>
      <p>
        We have developed MontiArcAutomaton using the domain-speci c language
workbench MontiCore [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and its language integration mechanisms. The
concrete and abstract syntax of a textual MontiCore modeling language is de ned
in an extended context free grammar format. From these grammars, MontiCore
generates infrastructure to parse models of this language into their abstract
syntax trees (ASTs). Checks of the well-formedness of models of a language, called
context conditions, are implemented in Java [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. MontiCore languages are
textual modeling languages. An integration with the Eclipse Modeling Framework
allows also the development of graphical editors for editing MontiArcAutomaton
models.3
      </p>
      <p>
        MontiCore supports language embedding, language extension, and language
aggregation [
        <xref ref-type="bibr" rid="ref11 ref21">11,21</xref>
        ] to compose new languages from existing ones. These modular
language composition mechanisms are supported by a sophisticated symbol table
framework that enables the de nition and adaptation of language symbols for
integrating information and checking context conditions rules across embedded
and imported models. MontiCore allows the easy development of code generators
using the FreeMarker4 template engine to process abstract syntax trees and code
templates written in a target language [
        <xref ref-type="bibr" rid="ref13 ref16">13, 16</xref>
        ].
      </p>
      <p>
        In previous works we have developed the MontiArcAutomaton modeling
language with embedded I/O! automata and I/O tables [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Various code
generators allow the deployment of MontiArcAutomaton models to di erent robotics
platforms [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ]. With the integration of additional languages to model
component behavior the post hoc composition of code generators has become a
prevalent challenge.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Problem Statement and Example</title>
      <p>MontiArcAutomaton allows to embed application-speci c behavior modeling
languages into components to facilitate the development of exible, reusable, yet
3 Video of an editor for synchronous graphical and textual editing of
MontiArc</p>
      <p>Automaton models: http://www.monticore.de/robotics/
4 Website of the FreeMarker Java template engine: http://freemarker.org/
speci c robotics applications. While the ability to use speci c behavior modeling
languages allows to develop speci c applications, the encapsulation of models in
components with well-de ned and stable interfaces allows to modify component
internals easily, e.g., to replace the speci c behavior modeling language, while
retaining a stable architecture.</p>
      <p>Engineering C&amp;C applications with the exibility of arbitrary embedded
behavior modeling languages demands for approaches to generate code from
heterogeneous models. As languages and code generators can be integrated into
MontiArcAutomaton post hoc, code generators have to be composable to allow
black-box integration. Each composable code generator produces only parts of
the overall generated software system. A framework to support code generator
composition has to provide a mechanism to con gure C&amp;C applications with
different code generators. Realizing composition of code generators requires support
for code generator reuse, the ability to handle code generators that are agnostic
of any component structure speci cs (e.g., how port or connectors work), and
dependency management between di erent code generators.
3.1</p>
      <sec id="sec-3-1">
        <title>Example</title>
        <p>A software engineer is responsible for the development of a controller for a robotic
arm. The robot assists a physically disabled person in a kitchen environment to
operate a toaster. The robot is supposed to place bread in a toaster, operate the
toaster, and deliver the toast to a nearby plate. The software engineer models
the architecture and controller behavior platform independently using
MontiArcAutomaton with embedded I/O! automata and RobotArm (RA) programs.
The latter describe motion of the arm in terms of de ned locations and gripper
commands.5 The engineer embeds the existing language RA into the
MontiArcAutomaton framework using the language integration mechanisms of MontiCore.
The software architecture of the robot is depicted in Fig. 1. The component
Controller receives distances and toast color from attached sensors. The I/O!
automaton modeling the behavior of Controller translates these inputs into
commands for the ToasterController, which starts and stops the actual
toaster, and the component ArmController, which actuates the robotic arm
to pick up and deliver toast. The behavior of component ArmController is
modeled as a set of RA programs.</p>
        <p>To generate executable code from the architecture, the software engineer has
to provide a code generator for the embedded RA language which translates
RA commands into code for the target platform. This code generator can be
selected from a library of existing code generators or newly developed. Finally,
the generator has to be integrated into the framework, such that it is executed
whenever a component with RA programs is processed.
5 A video of the robotic arm: http://www.monticore.de/robotics
event</p>
        <p>Toaster
Controller</p>
        <p>command
Controller
program }
...</p>
        <p>Arm
define home 0deg down;
define toaster 120deg 20cm;
program PickupFromToaster {
move up;
open;
move toaster;
close;
move up;
ToastServiceRobot
Color
Sensor
UltraSonic
Sensor
color
distance</p>
        <p>ack
In this section we propose an approach to code generator composition on a
conceptual level. First, we describe code generator interfaces that support generator
composition as motivated in Sect. 3. Second, we sketch the process of code
generator composition and execution of the composed generators using information
from code generator interfaces.</p>
        <p>To achieve generator composition, each code generator explicates all
information necessary within an interface. This interface is used during code generator
orchestration to con gure and execute the code generator. De nition 1 lists the
elements of a code generator interface.</p>
        <p>De nition 1 (Code Generator Interface). A code generator interface
contains the following elements:
1. Input language: The language or language fragments the generator processes.
2. Input language constraints: A generator may restrict the processable models
via generator-speci c context conditions.
3. Output representation: The output representation states the language and
format of the output.
4. Execution information: De nes how a generator is executed.
5. Artifact dependencies: A generator may produce code that depends on
external libraries, runtimes, or code produced by another code generator. Such
artifact dependencies have to be explicitly stated in order to satisfy
dependencies of generated artifacts.
6. Generation context information: Additional information provided or required
at generation time.</p>
        <p>Multiple generators are composed to generate code for models of the
software of a robotic system. The composition of code generators is described in an
application con guration model which contains a selection of all code generators
involved. It may also contain a con guration of generation context information</p>
        <p>uses
configures</p>
        <p>Generator Orchestrator
calls
*</p>
        <p>Generator Interface</p>
        <p>Code Generator
*
requires
produces</p>
        <p>requires
Generated</p>
        <p>Output
*</p>
        <p>Artifacts
for code generators. Composing generators according to a con guration model
requires the orchestration of all selected code generators. Such an orchestration
requires (a) to check that all required information is provided and (b) to compute
an execution order of the code generators.</p>
        <p>If for each code generator all required generation context information is
provided by the selected code generators and an execution order can be computed,
then the code generator composition can be performed. However, the execution
order of the code generators is in uenced by the dependencies described by the
generation context information. There are two types of dependencies. First, a
code generator may require generation context information from another code
generator. Second, a code generator may use the output of another code
generator. Both types of dependencies imply that the code generator providing required
information or output is executed rst. However, in some cases it is possible that
an execution order cannot be computed. In this case the code generators cannot
be composed.</p>
        <p>Our concept of code generator composition is presented in Fig. 2. An
application model con gures a generator orchestrator. The generator orchestrator
uses the generator interface of each code generator to check for dependencies
and computes an execution order. Finally, the generator orchestrator calls each
code generator according to the computed execution order.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Realization in MontiArcAutomaton</title>
      <p>The MontiArcAutomaton implementation of the conceptual model presented
above comprises an implementation of generator interfaces, which is facilitated
by a con guration language that generates interface implementations, an
application con guration to declare compositions of code generators, and an
orchestrator performing the composition.
5.1</p>
      <sec id="sec-4-1">
        <title>Generator Interfaces in MontiArcAutomaton</title>
        <p>Based on the concrete requirements for code generators in MontiArcAutomaton
we re ne the code generator interfaces de ned in Def. 1. The C&amp;C nature of
MontiArcAutomaton, suggests separate interfaces for component generators and
component behavior generators. As MontiArcAutomaton relies on factories for
«interface»</p>
        <p>IBehaviorGenerator
String getRuntime()
Class getResponsibleAST ()
void configure(String packageName,</p>
        <p>String filename,
IFactoryGenerator f,
Set&lt;String&gt; imports);
*
«interface»</p>
        <p>IGenerator
String getMainTemplate()
Set&lt;ContextCondition&gt; getContextConditions()
void setAST(ASTNode ast)</p>
        <p>«interface»</p>
        <p>IComponentGenerator
String getRuntime()
Class getResponsibleAST ()
void configure(List&lt;IBehaviorGenerator&gt; b,</p>
        <p>IFactoryGenerator f)
CD
1</p>
        <p>«interface»</p>
        <p>IFactoryGenerator
void configure(String package,</p>
        <p>String filename,
String product,
String realProduct,
Set&lt;String&gt; generics
Set&lt;String&gt; imports);
component and component behavior instantiation, factory generators are
modeled as well. Component generators process the MontiArcAutomaton language
and behavior generators process the respective embedded behavior modeling
language (Def. 1, Item 1) possibly restricted by additional context conditions
(Def. 1, Item 2). The classi cation in three generator kinds determines the
output format of the generators (Def. 1, Item 3).</p>
        <p>
          Generator execution information is provided by the generators in terms of
the main template which the MontiCore code generation framework processes
(Def. 1, Item 4). This template may call other templates and call Java code for
complex calculations. All generators generate code conforming to a runtime
environment they depend on (Def. 1, Item 5). The runtime environment determines,
e.g., the scheduling of components. Generators in MontiArcAutomaton do not
explicate further artifact dependencies as MontiArcAutomaton utilizes the
delegator pattern [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] to integrate accordingly generated behavior implementations.
Generation context information (Def. 1, Item 6) is provided to the generators at
runtime and contains e.g., the AST of the processed model.
        </p>
        <p>An overview of the concrete generator interfaces implemented for
MontiArcAutomaton is displayed in Fig. 3. Every generator usable with
MontiArcAutomaton implements an interface extending IGenerator. Thus, each
generator can be parametrized with an AST node and provides at least its main
template and its context conditions to the infrastructure. Generators for
components and component behavior implement the interfaces
IComponentGenerator and IBehaviorGenerator respectively. These interfaces explicate which
AST types they can process.</p>
        <p>Additionally, all generator interfaces de ne a method to configure() which
is interface speci c and de nes the generation context information required.
Generators for component behavior, e.g., expect to receive the package name of the
containing component, the name of the artifact to be created, a factory
generator, and the imported compilation units. The latter is required as embedding
behavior into components produces integrated artifacts without distinction
between the imports of the component and the imports of the behavior.
GeneratorConfiguration</p>
        <sec id="sec-4-1-1">
          <title>1 generator RobotArmPython {</title>
          <p>2 interface generators.IBehaviorGenerator;
3 template robotarm.Main;
4 ast robotarm.ASTRobotArmProgram;
5 runtime runtimes.pythontimesync;
6 }
Listing 1: The generator con guration for the RobotArm generator describes
that it implements the interface IBehaviorGenerator and provides static
information.
5.2</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>Modeling Generator Interfaces</title>
        <p>To facilitate the creation of code generator interfaces we have developed a
modeling language for generator interfaces. Each code generator used with
MontiArcAutomaton models how it is executed, which AST it processes, and which
interface it implements in a single generator con guration model per generator.
Listing 1 shows the model of the RA generator from the example in Sect. 3.1.
This model describes that the generator implements the interface
IBehaviorGenerator and provides information accessable via this interface. The
MontiArcAutomaton toolchain transforms these models into actual implementations
implementing the interfaces.</p>
        <p>The concrete implementation of the interface IBehaviorGenerator for
the RobotArm generator from the example given in Lst. 1 provides
implementations for all methods of IGenerator and IBehaviorGenerator and returns
the static generator information from the model where applicable (e.g.,
getResponsibleAST() returns an instance of the type speci ed behind ast in l. 4
of Lst. 1). The MontiArcAutomaton orchestrator can refer to these
implementations via the implemented interfaces and compose generators as necessary.
5.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>Application Con guration and Generator Execution</title>
        <p>Given a set of generators for component structure, behavior, and factories, an
application has to specify which of these are to be used. This is modeled as the
application con guration model. Listing 2 shows the application con guration for
the toaster robot application. The model references a single component generator
(l. 2), a single factory generator (l. 3), and two behavior generators - one for
RA programs and one for I/O! automata (l. 4). An application con guration
references at least a component structure generator and may reference additional
behavior and factory generators.</p>
        <p>Code generation in MontiArcAutomaton starts with the orchestrator
processing the application con guration and loading the con guration of the referenced
generators. As the order of generator execution is implicitly given by the C&amp;C
nature of MontiArcAutomaton, rst the referenced behavior generators and the
ApplicationConfiguration</p>
        <sec id="sec-4-3-1">
          <title>1 application ToasterRobotApplication {</title>
          <p>2 componentgenerator ComponentsPython;
3 factorygenerator FactoryPython;
4 behaviorgenerators RobotArmPython, IOAutomatonPython;
5 }
Listing 2: Application con guration model for the toaster robot application
using the RA generator for component behavior.
referenced factory generator are instantiated. Parametrized with these, the
referenced component generator is instantiated. Afterwards, the orchestrator calls
the main template of the component generator. The component generator
traverses the AST of the architecture and thus also visits component behavior AST
nodes. For each behavior AST node the responsible generator is con gured with
current AST generation context information and its main template is called with
the AST node of the embedded behavior language.</p>
          <p>Figure 4 shows the resulting relations: Applications consist of a software
architecture, and an application con guration model. The application con
guration model references the component, behavior, and factory generators required
to build the software architecture of the project. To be processable by the
orchestrator, referenced generators implement the appropriate generator interfaces.
6</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>The presented approach for code generator composition is based on explicit
generator interfaces, code generator orchestration, and application con guration.
This approach is a rst step towards a comprehensive approach for code
generator composition and is closely related to modular code generator design.</p>
      <p>
        The GenVoca model is an approach to build software systems generators
based on composing object-oriented layers [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ]. Di erent layers can use control
blocks to exchange information. In contrast to this approach, we do not focus
on a layered architecture of a code generator but an infrastructure for code
generators composition.
      </p>
      <p>
        The application building center is a multi-purpose modular framework for
modeling software systems [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Genesys is an extension that allows to develop
service-oriented code generators [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Each code generator represents a service
that can be composed with other services. Information exchange is managed by
using shared memory communication. Our presented approach is similar if we
consider code generators to be services with interfaces. However, our approach
introduces a broader generator interface to regard input language, output
representation, input language constraints, execution information, artifact
dependencies, and generation context information. This information is used to manage
the execution and composition of the code generators.
      </p>
      <p>
        Code generator composition using aspect-orientation at the artifact level has
been described in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. The authors assume that a code generator produces
operationally complete code fragments that are merged by a code fragment weaver.
Additionally, in feature-oriented model-driven development (FO-MDD), multiple
code generators are used to produce a software product line [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Composition of
code is achieved after code generation by manually writing glue code. In contrast,
we do not consider manual artifact composition but focus on an infrastructure
to compose code generators. We nevertheless consider composing generated
artifacts relevant for reusing code generators and will address this topic in future
work.
7
      </p>
    </sec>
    <sec id="sec-6">
      <title>Discussion and Future Work</title>
      <p>We have presented a conceptual approach for composition of code generators
based on the notion of generator interfaces. The ideas are implemented within
the MontiArcAutomaton toolchain to enable post hoc embedding and use of
new component behavior modeling languages. To broaden its applicability this
approach requires future work on syntax, methods, and technical solutions.</p>
      <p>Composition of arbitrary code generators without assumptions on their
actual integration is harder to realize than for C&amp;C ADLs. In general, generator
composition demands a more expressive composition con guration than the
application con guration presented above. For instance, the orchestration of the
code generation process may require a code generator to be executed multiple
times for every input model or to ll extension points provided by another
generator under certain conditions. Moreover, execution of a code generator may not
be triggered by a model type but by selecting a code generator for a particular
set of input models. A generic model to con gure an application has to express
such process information and constraints. Thus, future research will look into
modeling these aspects.</p>
      <p>
        The generator composition illustrated above assumes that the orchestration
of generators re ects the language embedding for component behavior. Other
language integration mechanisms, such as language aggregation or language
inheritance [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] will require a more complex orchestration. The generator for an
inheriting language might, for example, require the generator for the inherited
language to be executed rst, such that the latter only generates additional
artifacts for the model elements introduced by the inheriting language. Future work
will therefore examine the notion of generator extension points as well.
      </p>
      <p>Finally, modeling language composition mechanisms have lead to language
reuse and language libraries. We hope to gain similar libraries and advantages
from facilitating code generator composition.
8</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>We have motivated the need for generator composition in robotics and sketched
a concept for code generator composition. This concept is based on explicit
code generator interfaces and con guration models. The interfaces enable code
generators to de ne information required for composition. A code generator
orchestrator composes and executes the code generators. We have illustrated our
implementation for the C&amp;C modeling language family MontiArcAutomaton.
Although the implementation relies on various assumptions implied by the
language workbench MontiCore and the C&amp;C nature of MontiArcAutomaton, we
belief that these translate well into other contexts. There are however open issues
in arbitrary generator composition and we have identi ed possible extensions of
generator interfaces and generator orchestrators to be applied in more complex
scenarios.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Batory</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>O</given-names>
            <surname>'Malley</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.:</surname>
          </string-name>
          <article-title>The design and implementation of hierarchical software systems with reusable components</article-title>
          .
          <source>ACM Trans. Softw. Eng. Methodol</source>
          .
          <volume>1</volume>
          (
          <issue>4</issue>
          ),
          <volume>355</volume>
          { 398 (Oct
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Batory</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Singhal</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thomas</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dasari</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Geraci</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sirkin</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>The genvoca model of software-system generators</article-title>
          .
          <source>IEEE Softw</source>
          .
          <volume>11</volume>
          (
          <issue>5</issue>
          ),
          <volume>89</volume>
          {94 (Sep
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Broy</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>St len</surname>
          </string-name>
          , K.:
          <article-title>Speci cation and Development of Interactive Systems</article-title>
          . Focus on Streams,
          <source>Interfaces and Re nement</source>
          . Springer Verlag Heidelberg (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Brugali</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brooks</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cowley</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Co^te,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Dom</surname>
          </string-name>
          nguez-Brito,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Letourneau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Michaud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Schlegel</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Trends in Component-Based Robotics</article-title>
          . In: Brugali,
          <string-name>
            <surname>D</surname>
          </string-name>
          . (ed.)
          <source>Software Engineering for Experimental Robotics</source>
          , Springer Tracts in Advanced Robotics, vol.
          <volume>30</volume>
          ,
          <issue>chap</issue>
          . 8, pp.
          <volume>135</volume>
          {
          <fpage>142</fpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. France, R.,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Model-driven Development of Complex Software: A Research Roadmap</article-title>
          .
          <source>Future of Software Engineering (FOSE '07) (2)</source>
          ,
          <volume>37</volume>
          {54 (May
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gamma</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helm</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Johnson, R.,
          <string-name>
            <surname>Vlissides</surname>
          </string-name>
          , J.:
          <article-title>Design patterns: elements of reusable object-oriented software</article-title>
          . Addison-Wesley
          <string-name>
            <surname>Professional</surname>
          </string-name>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Haber</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>MontiArc - Architectural Modeling of Interactive Distributed and Cyber-Physical Systems</article-title>
          .
          <source>Tech. Rep. AIB-2012-03</source>
          , RWTH Aachen (february
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. Hagele,
          <string-name>
            <given-names>M.</given-names>
            , Blumlein, N.,
            <surname>Kleine</surname>
          </string-name>
          ,
          <string-name>
            <surname>O.</surname>
          </string-name>
          :
          <article-title>Wirtschaftlichkeitsanalysen neuartiger Servicerobotik- Anwendungen und ihre Bedeutung fur die Robotik-Entwicklung</article-title>
          .
          <source>Tech. rep.</source>
          ,
          <source>BMBF</source>
          (
          <year>2011</year>
          ), http://www.ipa.fraunhofer.de/
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Jorges, S.:
          <article-title>Construction and Evolution of Code Generators: A Model-Driven and Service-Oriented Approach</article-title>
          .
          <source>LNCS sublibrary: Programming and software engineering</source>
          , Springer Berlin Heidelberg (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Krahn</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , Volkel, S.:
          <article-title>MontiCore: a framework for compositional development of domain speci c languages</article-title>
          .
          <source>STTT</source>
          <volume>12</volume>
          (
          <issue>5</issue>
          ),
          <volume>353</volume>
          {
          <fpage>372</fpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Look</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perez</surname>
            ,
            <given-names>A.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wortmann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Black-box Integration of Heterogeneous Modeling Languages for Cyber-Physical Systems</article-title>
          .
          <source>In: Proceedings of the 1st Workshop on the Globalization of Modeling Languages (GEMOC)</source>
          . Miami, Florida, USA (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Niemueller</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferrein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beck</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lakemeyer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Design Principles of the Component-</article-title>
          <source>Based Robot Software Framework Fawkes, Lecture Notes in Computer Science</source>
          , vol.
          <volume>6472</volume>
          , chap.
          <source>NFB+10</source>
          , pp.
          <volume>300</volume>
          {
          <fpage>311</fpage>
          . Springer, Darmstadt, Germany (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wortmann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A Case Study on Model-Based Development of Robotic Systems using MontiArc with Embedded Automata</article-title>
          . In: Giese,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Huhn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Philipps</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            , Schatz, B. (eds.)
            <surname>Dagstuhl-Workshop</surname>
          </string-name>
          <string-name>
            <surname>MBEES</surname>
          </string-name>
          : Modellbasierte Entwicklung eingebetteter Systeme. pp.
          <volume>30</volume>
          {
          <issue>43</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wortmann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>From Software Architecture Structure and Behavior Modeling to Implementations of Cyber-Physical Systems</article-title>
          .
          <source>In: Software Engineering 2013 Workshop Proceedings</source>
          . p. to appear (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wortmann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>MontiArcAutomaton : Modeling Architecture and Behavior of Robotic Systems</article-title>
          .
          <source>In: Workshops and Tutorials Proceedings of the International Conference on Robotics and Automation (ICRA)</source>
          . Karlsruhe,
          <string-name>
            <surname>Germany</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Schindler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Eine Werkzeuginfrastruktur zur agilen Entwicklung mit</article-title>
          der UML/P. Aachener
          <string-name>
            <surname>Informatik-Berichte</surname>
          </string-name>
          ,
          <source>Software Engineering, Band</source>
          <volume>11</volume>
          , Shaker Verlag (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Schlegel</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Steck</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lotz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Model-Driven Software Development in Robotics : Communication Patterns as Key for a Robotics Component Model</article-title>
          . In: Chugo,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Yokota</surname>
          </string-name>
          , S. (eds.) Introduction to Modern Robotics. iConcept Press (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. Ste en,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Margaria</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Nagel</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.</surname>
          </string-name>
          , Jorges,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Kubczak</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Model-driven development with the jabc</article-title>
          . In: Bin,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Ziv</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Ur</surname>
          </string-name>
          , S. (eds.) Hardware and Software,
          <source>Veri cation and Testing, Lecture Notes in Computer Science</source>
          , vol.
          <volume>4383</volume>
          , pp.
          <volume>92</volume>
          {
          <fpage>108</fpage>
          . Springer Berlin Heidelberg (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.N.,
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dashofy</surname>
            ,
            <given-names>E.M.</given-names>
          </string-name>
          : Software Architecture: Foundations, Theory, and Practice. Wiley, 1st edn. (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Trujillo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Batory</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Diaz</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Feature oriented model driven development: A case study for portlets</article-title>
          .
          <source>In: Proceedings of the 29th International Conference on Software Engineering</source>
          . pp.
          <volume>44</volume>
          {
          <fpage>53</fpage>
          . ICSE '07, IEEE Computer Society, Washington, DC, USA (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21. Volkel, S.:
          <article-title>Kompositionale Entwicklung domanenspezi scher Sprachen</article-title>
          . Aachener
          <string-name>
            <surname>Informatik-Berichte</surname>
          </string-name>
          ,
          <source>Software Engineering Band 9</source>
          .
          <year>2011</year>
          , Shaker Verlag (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Zschaler</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rashid</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Towards modular code generators using symmetric language-aware aspects</article-title>
          .
          <source>In: Proceedings of the 1st International Workshop on Free Composition</source>
          . pp.
          <volume>6</volume>
          :
          <issue>1</issue>
          {
          <issue>6</issue>
          :
          <fpage>5</fpage>
          . FREECO '11,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>