<!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>Multi-Platform Generative Development of Component &amp; Connector Systems using Model and Code Libraries</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>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>Component-based software engineering aims to reduce software development effort by reusing established components as building blocks of complex systems. Defining components in general-purpose programming languages restricts their reuse to platforms supporting these languages and complicates component composition with implementation details. The vision of model-driven engineering is to reduce the gap between developer intention and implementation details by lifting abstract models to primary development artifacts and systematically transforming these into executable systems. For sufficiently complex systems the transformation from abstract models to platform-specific implementations requires augmentation with platform-specific components. We propose a model-driven mechanism to transform platform-independent logical component &amp; connector architectures into platform-specific implementations combining model and code libraries. This mechanism allows to postpone commitment to a specific platform and thus increases reuse of software architectures and components.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Component-based software engineering (CBSE) [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] ultimately aims to
compose complex systems from off-the-shelf components. Usually, components are
provided as general-purpose programming language (GPL) source code. This
restricts reuse to certain platforms and requires domain experts to become
programming experts. Model-driven engineering (MDE) pursues to reduce the
conceptual gap [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] between domain and implementation concepts by describing
software systems as abstract models. These models can be systematically
transformed into implementations for potentially multiple target platforms.
Component &amp; connector (C&amp;C) architecture description languages (ADLs) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] are
modeling languages with high potential to combine the benefits of MDE and
CBSE. Software architectures can be modeled platform-independently, enriched
with platform-specific information, and transformed into an implementation.
      </p>
      <p>
        We have developed the C&amp;C ADL and framework MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref19 ref20">19,20</xref>
        ]
to facilitate MDE in robotics. MontiArcAutomaton supports the integration of
the most suitable modeling languages and the composition and orchestration of
independently developed code generators. Modeling software components and
their behavior reduces the need for GPL components and liberates developers
from implementation details. However, some components still require manual
implementations or the integration of legacy code. As components models are tied
to implementations by MontiArcAutomaton convention, architectures
containing components with platform-specific implementations (PSIs) are tied to specific
platforms as well. This poses challenges when generating PSIs from models.
      </p>
      <p>We present a mechanism implemented in MontiArcAutomaton to enable
modeling of logical, platform-independent C&amp;C architectures and their
transformation into PSIs for different platforms. This mechanism relies on a combination
of model and code libraries as well as an application specific configuration that
regulates the transition from models to PSIs. To illustrate the toolchain and
its benefits, the next section introduces the MontiArcAutomaton modeling
language and framework (Sect. 2). Afterwards, Sect. 3 explains the transformation
toolchain itself and illustrates its application. Section 4 discusses related work
and Sect. 5 concludes this contribution with an outlook on future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>MontiArcAutomaton</title>
      <p>
        MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref19 ref20">19,20</xref>
        ] is a modeling language family and framework for
generative MDE of robotics applications. Logical architectures are modeled as
the hierarchical composition of components that provide the system’s
functionality. Components posses a stable interface comprising their type, configuration
parameters, generic type parameters, and sets of typed input ports and output
ports. A component is either atomic or composed. Atomic components specify
behavior directly. The behavior of a composed component emerges from the
interaction of its subcomponents. Components interact by sending and receiving
messages over directed connectors between their ports. The types of ports are
defined via class diagrams (CDs) or a GPL. Encapsulation of components with
stable interfaces facilitates logically distributed development and physically
distributed computation models. It enables component composition independent
of their behavior description. MontiArcAutomaton exploits this encapsulation
mechanism to allow the embedding of behavior modeling languages into atomic
components [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Component developers may use the most suitable behavior
description languages instead of GPLs.
      </p>
      <p>
        MontiArcAutomaton is developed with the domain-specific language
workbench MontiCore [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] which provides frameworks for language integration [
        <xref ref-type="bibr" rid="ref14 ref26">14,26</xref>
        ]
and code generator development [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. MontiCore languages are textual and
defined by context free grammars with additional well-formedness rules. From these
composed
component
BumperBot
cmd
      </p>
      <sec id="sec-2-1">
        <title>DistSensor sensor</title>
      </sec>
      <sec id="sec-2-2">
        <title>Timer clock</title>
        <sec id="sec-2-2-1">
          <title>TimerCmd</title>
          <p>embedded
I/Oω automaton</p>
          <p>UML/P OCL
transition guard
UML/P CD
port type</p>
          <p>Integer cBounmtrpoClleorntrol
data distance / right = STOP, idle
left = STOP</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>Boolean</title>
          <p>signal signal</p>
          <p>
            ALERT / left: FWD
driving
[distance &lt; 5]
/ right = BWD
left = BWD
timer = START cmd
right
left
grammars, MontiCore generates infrastructure to parse complying models into
their corresponding abstract syntax tree (AST). MontiCore supports language
inheritance, language embedding, and language aggregation (referencing and
using models from other languages) [
            <xref ref-type="bibr" rid="ref14 ref26">14,26</xref>
            ] to compose new languages from existing
ones and MontiArcAutomaton uses all three mechanisms: it extends the
MontiArc [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] ADL, component behavior languages are embedded into the base ADL,
and port types may use UML/P [
            <xref ref-type="bibr" rid="ref22">22</xref>
            ] CD models. The MontiCore code
generation framework facilitates development of code generators using the FreeMarker3
template engine to generate code from ASTs and code templates written in a
target language [
            <xref ref-type="bibr" rid="ref18 ref23">18,23</xref>
            ]. MontiArcAutomaton comprises modeling languages, code
generators, generator composition mechanisms, model-transformations, language
integration support, and libraries.
          </p>
          <p>
            Consider a robot that comprises a distance sensor to measure the distance
to the closest obstacle ahead and motors to control its left and right wheel. The
robot drives forward until it approaches an obstacle, then backs up, rotates, and
continues to drive forward. Figure 1 depicts the logical software architecture
of this robot which consists of the composed component BumperBot with five
subcomponent instances: sensor of type DistSensor, clock of type Timer,
controller of type BumpControl, and two instances leftMotor and rightMotor of
type Motor. The subcomponent sensor has the single outgoing port data of type
Integer, which is connected to the incoming port distance of controller. Based
on the inputs received, the controller sends messages of type MotorCmd to the
motors. This type is defined in a CD. The behavior of controller is modeled as
an automaton following the I/O! automaton paradigm [
            <xref ref-type="bibr" rid="ref17 ref21">17,21</xref>
            ].
          </p>
          <p>Executable code for the C&amp;C architecture of the system requires some
platform dependent component implementations. To execute the system on a Lego
3 Website of the FreeMarker Java template engine: http://freemarker.org/.
NXT robot using the Lego Java Operating System (leJOS)4 the component
instances leftMotor and rightMotor require Java wrappers for the leJOS API.
Executing the same system on a NXT robot using the Robot Operating
System (ROS)5 requires a Python implementation controlling ROS nodes. These
platform specific components cannot easily be modeled and are among existing
legacy components examples for the need of integrating GPL code in MDE.
3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Platform-Independent Model and Multi-Platform Code</title>
      <p>To facilitate reuse of the same logical architecture model with different
platforms, it is favorable to postpone commitment to a specific platform as long
as possible. With MontiArcAutomaton this commitment is expressed as
binding component instances to PSIs. We distinguish two kinds of components: fully
modeled components are composed components or atomic components with an
embedded behavior model. Abstract components are atomic components without
a behavior model. The interfaces of abstract component types may refer only
to types provided by the MontiArc type system and types defined in CDs. The
port types depicted in Fig. 1 are such types. Fully modeled components require
no binding as their implementation is generated by the combination of code
generators for component structure and behavior.</p>
      <p>
        Integrating existing code: Abstract components require GPL
behavior implementations compatible with the generated code of the surrounding
architecture. Integration of generated code with manual implementations can
follow different patterns (e.g., generation gap [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] or delegation [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]).
MontiArcAutomaton does not prescribe a pattern. Instead, MontiArcAutomaton code
generators specify which runtime environment (RTE) they are compatible with.
Such a RTE may employ appropriate patterns to integrate generated and
manually implemented code, define how communication between components and
scheduling are realized, and contain common domain functionality [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
Technical details and requirements for the integrated code are RTE specific. Our RTE
for Java component implementations defines an abstract class Component and
factories [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] which enable utilization of the generation gap pattern. The code
generator transforms component models into subclasses of Component, which
realize the component behavior. For abstract components, the generator only
creates the according factory and expects the component developer to provide
an according component implementation in the RTE’s GPL Java, i.e., to bind
the component model to a PSI. A manual binding is error-prone and requires
knowledge of implementation details of the generated code. Modeling the binding
reduces these “accidental complexities” [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>Model and code libraries: Enabling component developers to efficiently
develop software architectures with abstract components requires to enable
component and component implementation reuse. MontiArcAutomaton therefore
4 Website of the Lego Java Operating System (leJOS): http://www.lejos.org/.
5 Website of the Robot Operating System (ROS): http://www.ros.org/.
Library</p>
      <p>Model
model of
library properties
DistSensor</p>
      <p>MotorCmd</p>
      <p>Motor
Integer</p>
      <p>NXTJava
UltraSonicSensor</p>
      <p>RegulatedMotor
component
model
class diagram describing the
data type MotorCmd</p>
      <p>platform-specific
component implementations
distinguishes platform-independent model libraries and platform-specific code
libraries. Model libraries contain fully modeled components, abstract components,
and CDs. Code libraries contain component behavior implementations and port
types formulated in a GPL. Furthermore, each code library contains a library
properties model, describing the RTE of the contained implementations and
component types each implementation conforms to. This is necessary to ensure
compatibility of the generated and provided implementations for different RTEs.</p>
      <p>The left part of Fig. 2 shows the model library SenseActModels used by
the platform-independent BumperBot architecture depicted in Fig. 1. The right
part shows a corresponding code library. The model library contains the abstract
component models DistSensor, Motor and a CD modeling the data type
MotorCmd used by component Motor. The NXTJava code library contains PSIs
and a library properties model which describes the RTE UltraSonicSensor and
RegulatedMotor are compatible with.</p>
      <p>Binding PSIs: Retaining platform-independent architectures prohibits to
model component binding in the logical architecture itself. Instead,
MontiArcAutomaton applications may provide application configuration models. These
describe the selected code generators and binding information. A binding
describes a mapping of component instances of the architecture model to
implementations. The mapping augments the architecture’s AST before any code is
generated and thus can be reused with arbitrary generator combinations.</p>
      <p>The MontiArcAutomaton generator toolchain parses the application
configuration and passes the binding information to a transformation which adds
information about component implementations to the architecture. The generation
framework considers this information and, e.g., generates factories instantiating
the bound implementations accordingly.</p>
      <p>Listing 1 shows the application configuration used to bind component
instances sensor, leftMotor, rightMotor, and clock. First, the required
implementation library is imported (ll. 1). Model libraries are imported by the architecture
and made available to the application configuration. Afterwards (l. 4) code
generators are selected. The generators declare which runtime environments they are
compatible with and thus restrict which implementations can be bound. Finally,
ll. 5-9 describe the actual bindings of the application. Here, component instances,
identified by the name between map and to, are mapped to imported
implementations, identified by the name after to. Please note that the two instances of the
component motor are mapped to the same implementations RegulatedMotor.
ApplicationConfiguration
1 i m p o r t NXTJava . * ;
2
3 a p p l i c a t i o n NXTJavaBumperBot {
4 g e n e r a t o r s ComponentJava , AutomatonJava , CDJava ;
5 b i n d i n g s
6 map BumperBot . s e n s o r t o U l t r a S o n i c S e n s o r ,
7 map BumperBot . l e f t M o t o r t o RegulatedMotor ,
8 map BumperBot . r i g h t M o t o r t o RegulatedMotor ,
9 map BumperBot . c l o c k t o JavaTimer ;
10 }
Listing 1. Application configuration model for the BumperBot selecting code
generators and binding component instances sensor, leftMotor, rightMotor, and clock.
Application configuration models are checked at design time whether all
components are bound and whether the binding is compatible by reading the libraries’
property models, which map the contained implementations to component types.</p>
      <p>Implementation in MontiArcAutomaton: Figure 3 illustrates how the
MontiArcAutomaton code generation framework integrates applications, code
generators, libraries, and transformations of platform-independent architecture
models into PSIs. The GenerationTool parses architecture and application
models, which reference model libraries and code libraries, respectively. The result is
passed to the BindingTransformation which augments the architecture before
code generation. Architecture AST, binding, and imported libraries are passed
to the BindingTransformation which transforms the AST accordingly. With the
transformed AST, the GenerationTool starts the GeneratorOrchestration
process which instantiates and executes the selected code generators as selected.
Both, code library and code generators have to comply to the same runtime
environment (RTE) to ensure an executable implementation of the architecture.
The RTE provides interfaces manually implemented and generated components
have to implement to ensure compatibility. Data types are translated into PSIs
using the selected CD generator, which maps the basic types of the MontiArc
type system onto platform-specific representations.</p>
      <p>With help of the MontiArcAutomaton transformation toolchain, application
configuration, and libraries the logical BumperBot architecture (Fig. 1) can be
transformed into an intermediate platform-specific architecture where the
subcomponents sensor, leftMotor, rightMotor, and clock are bound to PSIs. This
resulting software architecture is passed to the code generation framework and
ultimately transformed into implementations executable on robotic platforms.</p>
      <p>An excerpt of the resulting implementations for two different platforms is
shown in Fig. 4. The left panel shows the project structure of the BumperBot
application containing two application configuration models. The first maps
sensor, leftMotor, rightMotor and clock to Java implementations based on leJOS,
the second maps them to Python implementations based on ROS. The bottom
Generation</p>
      <p>Tool
MontiArcAutomaton
applies
starts</p>
      <p>Binding</p>
      <p>Transformation
Application</p>
      <p>Runtime
describes
Architecture</p>
      <p>Model</p>
      <p>Application
Configuration
complies</p>
      <p>Generator
Orchestration
calls *
Generator
Generator</p>
      <p>Model
orchestrates
generator
composition
references * references</p>
      <p>ModelLibrary
complies
* ImplementationLibrary
Component</p>
      <p>Models</p>
      <p>Types</p>
      <p>Types
imports Implementations
*</p>
      <p>Types
contains platform-specific component implementations and data types
defines how generated and
manual implementations interact
describes which
components the</p>
      <p>contained
Library implementations
Model conform to
invoked by
generation
framework</p>
      <p>reads
contains abstract
component models
and port type class</p>
      <p>diagrams
panels show part of the generated implementations for component BumperBot
where subcomponents are instantiated. The leJOS Java implementation uses the
implementations UltraSonicSensor and RegulatedMotor and the ROS python
implementation uses RangeSensor and JointMotor as defined in the respective
application configuration models (depicted in the top panels).
4</p>
    </sec>
    <sec id="sec-4">
      <title>Related Work</title>
      <p>
        Related approaches are toolchains enabling platform-independent modeling and
automated creation of source code implementations — especially ADL
frameworks with code creation capabilities, e.g., the Architecture Analysis &amp; Design
Language [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] (AADL), AutoFocus [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], Simulink [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], and SysML [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
      <p>
        AADL is modeling language for systems consisting of software components
and hardware components. While AADL models could be subjected to late
binding as well, AADL architectures models component implementations explicitly –
thus hampering reuse. We are not aware of an integrated binding modeling
language and framework for AADL. AutoFocus is a C&amp;C ADL and modeling tool
for the development of distributed systems based on the semantics of Focus [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
Behavior is modeled as state transition diagrams similar to I/O! automata. In
contrast to MontiArcAutomaton, AutoFocus lacks a distinction between
component types and instances. This prohibits component reuse by instantiation and
bindings as introduced above. MathWorks Simulink features a block diagram
language to describe of components and connectors. Stateflow6 extends blocks
with state transition diagrams. Simulink relies on M2T code generation without
6 Website of Stateflow: http://www.mathworks.de/products/stateflow/.
import NXTJava.*
import JavaCommons.*
application NXTJavaBumperBot {
generators ComponentsJava, AutomatonJava, CDJava;
bindings
map robot.BumperBot.sensor to UltraSonicSensor,
map robot.BumperBot.leftMotor to RegulatedMotor,
map robot.BumperBot.rightMotor to RegulatedMotor,
public BumperBot() {}
public NXTJava.UltraSonicSensor sensor;
public NXTJava.RegulatedMotor.leftMotor;
public NXTJava.RegulatedMotor.RightMotor;
public robot.BumpControl controller;
public JavaCommons.JavaTimer clock;
@Override
public void setUp() {
sensor = NXTJava.UltraSonicSensorFactory.create();
leftMotor = NXTJava.RegulatedMotorFactory.create();
rightMotor = NXTJava.RegulatedMotorFactory.create();
controller = robot.BumperBotFactory.create();
import ROSPython.*
import PythonCommons.*
application ROSPythonBumperBot {
generators ComponentsPython, AutomatonPython, CDPyth
bindings
map robot.BumperBot.sensor to RangeSensor,
map robot.BumperBot.leftMotor to JointMotor,
map robot.BumperBot.rightMotor to JointMotor,
class BumperBot(Component):
def setUp(self):
self._sensor = RangeSensorFactory.create()
self._leftMotor = JointMotorFactory.create()
self._rightMotor = JointMotorFactory.create()
self._controller = BumpControlFactory.create()
self._clock = PythonTimerFactory.create()
self._sensor.setUp()
self._leftMotor.setUp()
self._rightMotor.setUp()
self._controller.setUp()
self._clock.setUp()
intermediate model transformations. SysML is a set of modeling languages based
on a subset of extended UML [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The SysML language for internal block
diagrams resembles MontiArcAutomaton and component behavior can be modeled
with state machine diagrams, thus SysML enables to express architectures
similar to MontiArcAutomaton. Modeling with SysML focuses on the requirements
phase and thus provides “only models on the PIM level” [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. In most approaches
manually written code (if required) is typically integrated after code generation.
      </p>
      <p>
        While we propose a binary notion of platform-independence compared to a
continuous notion where “abstract platforms” [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] may add and refine
platformproperties, e.g., an abstract-platform for the BumperBot could describe that it
requires two motors. It is an interesting future work to evaluate these differences.
      </p>
      <p>
        Other approaches to transform PIMs into PSIs focus different issues: the
authors of [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], for example, transform platform-independent statecharts with
real-time properties into PSMs via complex model analysis. Such languages and
transformations are beyond the scope of this contribution.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Discussion and Conclusion</title>
      <p>We presented a model-driven integrated, automated transformation toolchain,
modeling languages, and library concepts for the transformation of
platformindependent C&amp;C software architectures into PSIs for multiple platforms. This
transformation is defined as the binding of subcomponents to platform-specific
component implementations. Abstract components are provided in model
libraries while their implementations are provided in platform specific code
libraries. To separate binding information for the architecture, we extended
MontiArcAutomaton’s application configuration modeling language to contain
bindings. This separation enables reuse of logical architecture models with different
source code implementations without modifications to the software architecture</p>
      <p>
        Currently, bindings specify unconditional mappings. Different distribution
scenarios might require to bind components under certain conditions (e.g.,
target platform properties). An extension of the application configuration language
with conditions is easily possible due to MontiCore’s language integration
mechanisms. We currently explore different notions of interface compatibility as it
might be feasible to bind components where a port’s type might be a subtype of
the abstract component’s respective port. Another notion of interface
compatibility is, that the replacing component extends the component of the replaced
component instance in the sense of component inheritance [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. While interface
compatibility ensures syntactic well-formedness, it does not ensure that bound
component implementations behave similarly. Securing this could be achieved by
employing component behavior contracts. We are working on such mechanisms
based on assumptions and guarantees [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>Overall the MontiArcAutomaton toolchain integrates transformations and
code generation seamlessly and enables easy reuse of the same software
architecture on different platforms. In the future we plan to work on the issues mentioned
above and evaluation of the toolchain.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Almeida</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dijkman</surname>
            , R., Van Sinderen,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pires</surname>
            ,
            <given-names>L.F.</given-names>
          </string-name>
          :
          <article-title>Platform-independent modelling in mda: supporting abstract platforms</article-title>
          .
          <source>In: Model Driven Architecture</source>
          , pp.
          <fpage>174</fpage>
          -
          <lpage>188</lpage>
          . Springer (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Broy</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Towards a theory of architectural contracts:-schemes and patterns of assumption/promise based system specification</article-title>
          . In: Broy,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Leuxner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Hoare</surname>
          </string-name>
          , T. (eds.)
          <source>Software and Systems Safety-Specification and Verification. NATO Science for Peace and Security Series-D: Information and Communication Security</source>
          , vol.
          <volume>30</volume>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>87</lpage>
          . IOS Press (
          <year>2011</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>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Specification and Development of Interactive Systems</article-title>
          . Focus on Streams,
          <source>Interfaces and Refinement</source>
          . Springer Verlag Heidelberg (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Burmester</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schäfer</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Model-driven architecture for hard real-time systems: From platform independent models to code</article-title>
          . In: Hartman,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Kreische</surname>
          </string-name>
          ,
          <string-name>
            <surname>D</surname>
          </string-name>
          . (eds.)
          <source>Model Driven Architecture - Foundations and Applications, Lecture Notes in Computer Science</source>
          , vol.
          <volume>3748</volume>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>40</lpage>
          . Springer Berlin Heidelberg (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Feiler</surname>
            ,
            <given-names>P.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gluch</surname>
            ,
            <given-names>D.P.</given-names>
          </string-name>
          :
          <article-title>Model-Based Engineering with AADL - An Introduction to the SAE Architecture Analysis and Design Language</article-title>
          . SEI series in software engineering, Addison-Wesley (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Domain-Specific Languages (Addison-Wesley Signature Series (Fowler)). Addison-Wesley Professional</surname>
          </string-name>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. 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>In: Future of Software Engineering 2007 at ICSE</source>
          . pp.
          <fpage>37</fpage>
          -
          <lpage>54</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <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.: Design Patterns:
          <article-title>Elements of Reusable Object-Oriented Software</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Henkler</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A survey of approaches for the visual model-driven development of next generation software-intensive systems</article-title>
          .
          <source>Journal of Visual Languages &amp; Computing</source>
          <volume>17</volume>
          (
          <issue>6</issue>
          ),
          <fpage>528</fpage>
          -
          <lpage>550</lpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Object Management Group:
          <article-title>OMG Unified Modeling Language (OMG UML)</article-title>
          ,
          <source>Superstructure Version 2</source>
          <volume>.3</volume>
          (
          <issue>10</issue>
          -05-05) (May
          <year>2010</year>
          ), http://www.omg.org/spec/UML/2.3/Superstructure/PDF/
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <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>
          ,
          <string-name>
            <given-names>RWTH</given-names>
            <surname>Aachen</surname>
          </string-name>
          (
          <year>February 2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Hölzl</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feilkas</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>AutoFocus 3-A Scientific Tool Prototype for Model-Based Development of Component-Based, Reactive, Distributed Systems</article-title>
          . In:
          <article-title>ModelBased Engineering of Embedded Real-Time Systems</article-title>
          , pp.
          <fpage>317</fpage>
          -
          <lpage>322</lpage>
          . Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Krahn</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Völkel</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>MontiCore: a framework for compositional development of domain specific languages</article-title>
          .
          <source>STTT</source>
          <volume>12</volume>
          (
          <issue>5</issue>
          ),
          <fpage>353</fpage>
          -
          <lpage>372</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <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="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.:
          <article-title>A Classification and Comparison Framework for Software Architecture Description Languages</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Naur</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Randell</surname>
            ,
            <given-names>B</given-names>
          </string-name>
          . (eds.):
          <article-title>Software Engineering: Report of a conference sponsored by the NATO Science Committee</article-title>
          , Garmisch, Germany,
          <fpage>7</fpage>
          -
          <lpage>11</lpage>
          Oct.
          <year>1968</year>
          , Brussels, Scientific Affairs Division,
          <string-name>
            <surname>NATO</surname>
          </string-name>
          (
          <year>1969</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.: A Little</given-names>
          </string-name>
          <string-name>
            <surname>Synopsis on Streams</surname>
          </string-name>
          ,
          <source>Stream Processing Functions, and State-Based Stream Processing</source>
          .
          <source>International Journal of Software and Informatics</source>
          <volume>5</volume>
          (
          <issue>1-2</issue>
          ),
          <fpage>29</fpage>
          -
          <lpage>53</lpage>
          (
          <year>July 2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <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>
            ,
            <surname>Schätz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B</given-names>
            . (eds.)
            <surname>Dagstuhl-Workshop</surname>
          </string-name>
          <string-name>
            <surname>MBEES</surname>
          </string-name>
          : Modellbasierte Entwicklung eingebetteter Systeme. pp.
          <fpage>30</fpage>
          -
          <lpage>43</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <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>
          . pp.
          <fpage>155</fpage>
          -
          <lpage>170</lpage>
          . LNI (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <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="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Formale Methodik des Entwurfs verteilter objektorientierter Systeme</article-title>
          . Doktorarbeit, Technische Universität München (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Modellierung mit UML</article-title>
          . Xpert.press, Springer Berlin, 2nd edn. (
          <year>September 2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <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="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bulheller</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>von Baillou</surname>
          </string-name>
          , N.:
          <article-title>A model-driven approach to support engineering changes in industrial robotics software</article-title>
          . In: France,
          <string-name>
            <given-names>R.B.</given-names>
            ,
            <surname>Kazmeier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Breu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Atkinson</surname>
          </string-name>
          , C. (eds.)
          <source>Model Driven Engineering Languages and Systems, Lecture Notes in Computer Science</source>
          , vol.
          <volume>7590</volume>
          , pp.
          <fpage>368</fpage>
          -
          <lpage>382</lpage>
          . Springer Berlin Heidelberg (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Tyagi</surname>
            ,
            <given-names>A.K.</given-names>
          </string-name>
          :
          <article-title>MATLAB and SIMULINK for Engineers</article-title>
          . Oxford University Press (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Völkel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Kompositionale Entwicklung domänenspezifischer Sprachen. 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="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Weilkiens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          : Systems Engineering mit SysML/UML. Dpunkt.Verlag GmbH (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>