<!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>Embedding Component Behavior DSLs into the MontiArcAutomaton ADL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Arvid Butting</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Rumpe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Wortmann</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Software Engineering RWTH Aachen University</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Component &amp; connector architecture description languages often need to capture application-speci c or company-speci c requirements. Therefore, it is a crucial prerequisite for their successful application to adapt the ADLs by customizing the languages themselves. Pervasive modeling with tailored ADLs can bene t from integration of DSLs to model-speci c forms of component behavior. This requires expertise of the underlying language integration mechanisms. Current research in integrating heterogeneous component behavior DSLs into an ADL focuses on integration of speci c kinds of DSLs or is restricted to syntactic integration. However, language integrators can be liberated from requiring in-depth language integration expertise using appropriate abstractions. To this e ect, we present a compact DSL for the integration of behavior DSLs into a component &amp; connector ADL that guides and facilitates this form of language integration. Modeling the embedding of behavior DSLs into ADLs facilitates their composition and ultimately the pervasive modeling of complex architectures.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        For a good acceptance of component &amp; connector (C&amp;C) architecture
description languages (ADLs) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], adapting to application-speci c or company-speci c
requirements is a crucial prerequisite [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Where domain experts contribute
component behavior, adaptation might include integrating appropriate
component behavior DSLs into the ADL of choice [
        <xref ref-type="bibr" rid="ref18 ref8">8,18</xref>
        ]. Model-driven development
and meta modeling can support such adaptation [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], but require expertise of
the underlying language workbenches [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], particularly their de nition and
integration mechanisms [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Language workbenches usually provide means to de ne a subset of abstract
syntax, concrete syntax, static semantics, and dynamic semantics for DSLs as
well as generic integration mechanisms, such as importing, inheritance, or
embedding, on top of these de nitions (such as Eco [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Kermeta [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], or Spoofax [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]).
While providing powerful means to compose new DSLs from existing ones, these
integration mechanisms are usually unaware of their operation context and hence
impose that language customization requires extensive language workbench
implementation knowledge. However, where the context of DSL integration is
restricted, such as inheritance from a xed parent DSL or embedding a DSL into
a well-de ned extension point of an ADL, the degrees of integration freedom can
be greatly reduced to facilitate language integration.
      </p>
      <p>
        We present a DSL for the adaptation of C&amp;C ADLs in terms of embedding
application-speci c component behavior DSLs. This DSL enables language
integrators to easily embed DSLs as required by contributing domain experts. To
this e ect it exploits features of the architecture modeling infrastructure
MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] and its underlying language workbench MontiCore [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] to
alleviate reuse of the embedded DSL's syntax and semantics. This ultimately
facilitates architecture modeling with domain experts.
      </p>
      <p>In the following, Sect. 2 motivates the bene ts of easy, post-hoc DSL
embedding before Sect. 3 highlights MontiCore and MontiArcAutomaton. Sect. 4
presents the embedding DSL and Sect. 5 highlights observations. Afterwards,
Sect. 6 discusses related work and Sect. 7 concludes.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Example</title>
      <p>
        Consider the development of an assembly line robot that sorts parts according
to their quality. The robot features a camera to detect parts and means to
determine their quality based on various inputs. According to their quality, the parts
are sorted in di erent bins. The architecture of the system is as depicted in Fig. 1:
it consists of a composed component PartSorter that yields subcomponents
for sensors (Camera and QualityChecker), control, and manipulation.
Components exchange messages via connectors between their typed, directed ports
only and are either composed or atomic, i.e., yield a behavior speci cation in
form of a DSL model or general programming language (GPL) artifact. The
behavior of components Controller and Arm is provided by two respective
domain experts: one being a professional in part quality and sorting that prefers
to use Statecharts. The other is an expert in robot arm movement (including
trajectory planning and grasping) and prefers to use the LightRocks [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] DSL
for robotic manipulation. Hence, each domain expert should be enabled to use
the most appropriate DSL as depicted without requiring the system integrator
to become a language engineering expert.
composed
component
type
outgoing port i of coinmsptaonnceentoftyapteomwiicth
data type Image embedded statechart model
incoming port s of
data type Skill
instance of atomic
component type with
embedded LightRocks model
      </p>
      <p>MAA
PartSorter
Camera
Quality
Checker
i Image i
q</p>
      <p>Quality
q</p>
      <p>ActionController
s
d</p>
      <p>Skill</p>
      <p>Arm
s
d</p>
      <p>Fig. 1. Architecture of a robot that sorts parts using two embedded DSLs.</p>
      <p>As the e ect of behavior DSL embedding is restricted to ADL concepts
`visible' in atomic components, the system integrator can leverage model-driven
development to describe integration of the component behavior DSLs using
a speci c integration DSL. The compact models of this DSL require minimal
knowledge of the underlying language engineering principles and their
representations in language workbenches. The DSL is tailored to component behavior
DSL embedding into the speci c ADL and exploits this to reduce the freedom
(and complexity) of arbitrary DSL composition. In this restricted context, the
integrator can thus easily embed new component behavior DSLs by adding small
con guration models per DSL to be embedded. The next sections present this.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Preliminaries</title>
      <p>
        MontiCore [
        <xref ref-type="bibr" rid="ref11 ref14">14,11</xref>
        ] is a language workbench for the engineering of compositional
DSLs. It generates DSL processing infrastructure from context-free grammars
(CFGs), which de ne abstract syntax and concrete syntax of a DSL in an
integrated fashion. MontiCore DSLs yield Java-based well-formedness rules, called
context conditions, for ensured static semantics, and code generators to realize
the dynamic semantics of a DSL. The generated DSL processing infrastructure
comprises abstract syntax tree (AST) classes, modular parsers for each
production of the CFG, a symbol table acting as language interface, and context
condition infrastructure. MontiCore supports three kinds of DSL composition:
embedding, inheritance, and aggregation. Embedding is purely syntactic and
combines the CFGs of participating DSLs, such that their instances can be
processed as integrated models. This, for instance, is useful, for embedding SQL
into Java or similar. Inheritance enables one DSL to extend or re ne another via
inheriting or overriding the parent CFG's productions. A typical use case is the
introduction of new constructs to an existing DSL, such as the ADL ArchJava [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ],
which extends Java with C&amp;C modeling elements. Aggregation enables the joint
processing of models of independent DSLs, such as class diagrams describing the
data types of a C&amp;C ADL's ports.
      </p>
      <p>For embedding, MontiCore supports extension points in form of external
productions in the host DSL's CFG. The productions of embedded DSLs are
conditionally mapped to these extension points and MontiCore combines the parsers
for the corresponding productions accordingly (i.e., whenever an instance of the
external production should be parsed, the corresponding embedded production
is parsed instead). For aggregation, the meta models of the participating DSLs
are related (for instance, to check that two ports with data types de ned in
class diagrams can be connected). Instead of coupling the participating DSLs'
ASTs, their symbol tables are related. Symbol tables represent DSL interfaces
for speci c integration purposes and, as such, may abstract from the technical
necessities of the AST classes. With aggregation, models of the participating
DSL may remain in separate artifacts. For embedding with joint interpretation
we apply aggregation although the models reside in integrated artifacts, hence in
the following, embedding also includes joint interpretation. Instances of
MontiCore's DSLTool class combine the generated parsers with context conditions and
names of these methods are
the keywords of BCL models
incomplete</p>
      <p>class</p>
      <p>BCLBuilder
+ BCLBuilder name(String name)
+ BCLBuilder behavior(String behavior)
+ BCLBuilder tool(DSLTool tool)
+ BCLBuilder language(ModellingLanguage)
+ BCLBuilder error(ContextCondition coco)
+ BCLBuilder errors(ContextCondition coco)
+ BCLBuilder generator(MCGenerator gen)
+ EmbeddedDSL build()
property data types are the
core MontiCore classes</p>
      <p>EmbeddedDSL
- String name
- MCParser parser
- DSLTool tool
- ModellingLanguage dsl
- Map&lt;Severity, ContextCondition&gt; cocos
- MCGenerator generator
- Map&lt;String, MCParser&gt; embeddedDSLs
symbol table infrastructure to ease programmatic model processing. DSLTool
instances further can be extended with work ows that add additional model
processing capabilities (such as pre-processing model-to-model transformation
or automated extraction of documentation).</p>
      <p>
        MontiArcAutomaton [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] is an infrastructure for model-driven development
of C&amp;C architectures that is built with MontiCore. At its core is the
MontiArcAutomaton ADL [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] that enables to model architectures as hierarchies of
connected components. Components are black boxes with interfaces of directed,
typed ports for communication. Port types are modeled as class diagrams.
Component models in MontiArcAutomaton are either composed, if their behavior
is de ned by a subcomponent con guration, or atomic. The behavior of atomic
components is de ned via GPL artifacts or embedded DSL models. To this e ect,
MontiArcAutomaton comprises an extensible ADL that supports integration of
DSLs to describe component behavior. To this extent, its CFG yields an external
production used by the production for components. It also supports
compositional code generation enabling transformation of such integrated models into
GPL artifacts. This relies on the identi cation of three code generator kinds with
speci c interfaces describing the provided and required information for
composition. For the speci c context of behavior DSL embedding, these three kinds
su ce to enable black-box code generator composition.
4
      </p>
      <p>A DSL for Behavior Language Embedding
The Behavior Con guration Language (BCL), which is responsible for con
guring the embedding of component behavior DSLs into the MontiArcAutomaton
ADL, is realized for usage with the language workbench MontiCore and as an
internal DSL implemented in Groovy. The former entails that it uses concrete
syntax referencing important concepts and artifacts of MontiCore DSLs. As
MontiCore is implemented in Java and Groovy is compatible with Java, it also follows
that models of the integration DSL can directly interface MontiCore artifacts.</p>
      <p>
        The BCL is realized as a uent interface [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] using the builder pattern [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
to enable DSL-like usage, while actually being a Groovy GPL API. Basically,
methods of the builder class become keywords of BCL models and ultimately the
builder produces an instance of an embedding con guration that is used by the
[single
language tool]
[multiple
languages tool]
[has
ModelingLanguage]
      </p>
      <p>Add
language
[without]
[no custom
symbol table]
[with custom
symbol table]</p>
      <p>Add
symbol table
Add context
conditions
act Configure Embedding</p>
      <p>Add name
and behavior</p>
      <p>[without
DSLTool]</p>
      <p>[with</p>
      <p>DSLTool]
[with
adapters]</p>
      <p>Add
tool</p>
      <p>
        Add
generator
MontiArcAutomaton infrastructure. To this e ect, it uses the MontiCore classes
ContextCondition, ModelingLanguage, MCGenerator, and MCParser.
The class diagram depicted in Fig. 2 illustrates this. The methods of class
BCLBuilder contribute the concrete syntax and abstract syntax to describe
BCL models and successively create and ll an instance of EmbeddedDSL. The
BCL well-formedness rules are encoded in the build() method of BCLBuilder
and, for instance, ensure that referenced grammar productions exist and
minimal con guration is available. With Groovy, much of the notational noise [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]
of a GPL can be omitted, hence, BCL models actually are chained calls of
BCLBuilder methods with brackets and dots omitted. Omitting relations to
BCLBuilder is possible as Groovy enables to process scripts in the context of
so-called base classes. The Groovy parser is con gured for BCLBuilder as base
class and interprets method calls in its context.
      </p>
      <p>
        BCL models vary in complexity, which depends on the behavior DSL's
`completeness' and the possibilities to derive DSL infrastructure elements from others.
The activity diagram depicted in Fig. 3 describes the con guration exibility of
the BCL: providing name, behavior, and generator are the only
mandatory properties of each BCL model. The name speci es which production of the
behavior DSLs grammar is mapped to the unique extension point in
MontiArcAutomaton's grammar (cf. Sect. 3), hence each model must at least identify
the grammar production (behavior) to be embedded. With MontiCore de
ning concrete syntax and abstract syntax in integrated grammars, this speci
cation covers embedding of both. Also, supporting usage of arbitrary productions
of the behavior DSLs enables reusing required DSL parts only. As a tool in
MontiCore may process multiple DSLs, it may comprise symbol table
infrastructure, work ows, and context conditions for all processable DSLs. If not all
DSLs of a DSLTool are to be reused, the required constituents can be speci ed
individually in terms of their respective MontiCore ModelingLanguage
instance [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. If it only processes a single DSL, this DSL, together with its symbol
table, work ows, and context conditions is derived from the DSLTool. Where no
Application
      </p>
      <p>BCL integration
models</p>
      <p>parametrizes MontiCore and
generator composition with BCL instances</p>
      <sec id="sec-3-1">
        <title>BCLBuilder uses</title>
        <p>Infrastructure
MAA
DSLTool
MAA
ADL
uses
Generator
Composition
instantiates
SC2Java
LR2Java</p>
      </sec>
      <sec id="sec-3-2">
        <title>SSCC GGBBCC</title>
        <p>GPL Artifacts
contain grammar, workflows,
context conditions, and symbol
tables
references
processes
SC
BCL</p>
        <p>LR</p>
        <p>BCL
references
SC DSL</p>
        <p>LR DSL</p>
        <p>
          ModelingLanguage is available, their constituents must be provided
individually. A BCL model also may add new workflows and a code generator
compatible to the behavior DSL and the code generator of the MontiArcAutomaton
ADL. Where additional information is necessary (such as inter-language
wellformedness rules [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]), additional modeling elements support their speci cation.
        </p>
        <p>Interpretation of Groovy scripts does not require generating any
infrastructure artifacts speci c to the language combination (such as combined parsers
of symbol table classes), saving the expense of a generation process for each
application-speci c language combination. We thus extended the infrastructure
of MontiArcAutomaton (i.e., its DSLTool subclass) to initially parse all Groovy
les in a MontiArcAutomaton project in the context of the BCLBuilder base
class and store the EmbeddedDSL instances before processing architecture
models with embedded behavior models. Overall, the MontiArcAutomaton DSLTool
processes architecture models and BCL models as depicted in Fig. 4 using the
BCLBuilder infrastructure. From the models, it combines the parsers generated
by MontiCore for the referenced behavior DSL grammars with the
MontiArcAutomaton parser and aggregates context conditions, symbol table
infrastructures, and work ows. It then parses the architecture with integrated behavior
models, creates symbol table instances, and applies the aggregated context
conditions and work ows. Afterwards, it loads the referenced code generators and
composes their execution to produce corresponding GPL artifacts.</p>
        <p>
          The most compact case of DSL integration is illustrated in Lst. 1, where
UML/P Statecharts [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] are integrated into the MontiArcAutomaton ADL. The
integration infrastructure addresses properties of this embedding with the name
\statechart" (keyword name, l. 1). It embeds the production SCBody of the
Statechart DSL (keyword behavior, l. 2) and extracts context conditions, symbol
table, and work ows from the DSL's SCTool (keyword tool, l. 3). Furthermore,
it will use the SC2Java code generator (keyword generator, l. 4) to produce
combined artifacts. The latter is a reference to a generator description artifact of
BCL
1 name "statechart"
2 behavior "umlp.sc.SC.SCBody"
3 tool new umlp.sc.SCTool()
4 generator new SC2Java()
1 // abstract + concrete syntax
2 name "lightrocks"
3 behavior "lr.LightRocks.SkillDefinition"
4 tool new LightRocksTool()
5 language new SkillLanguage()
6 // inter-language well-formedness rules
7 error new ValidMotorRotation()
8 error new RespectPortDirection()
9 warning new TooManyActions()
10 // dynamic semantics
11 generator new Skill2Java()
Lst. 1. BCL model that con gures the integration of the Statechart DSL into
MontiArcAutomaton
Lst. 2. BCL model that con gures the integration of the LightRocks Skill DSL into
MontiArcAutomaton
MontiArcAutomaton that describes provided and required information for code
generator composition (cf. [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]).
        </p>
        <p>The BCL model for the integration of the LightRocks DSL is depicted in
Lst. 2. The listing begins with name, behavior, and tool (ll. 1-3). The
LightRocks DSLTool supports processing of multiple DSLs for the speci
cation of robotic manipulation processes, tasks, skills, and actions. As only skills
are being reused within MontiArcAutomaton, the corresponding MontiCore
infrastructure must be selected manually. Hence, here the DSLTool contributes
work ows only, and the SkillLanguage (l. 5) contributes context conditions
and symbol table infrastructure related to robotic manipulation skills.
Afterwards, the model adds three inter-language context conditions (ll. 7-9) that
are speci c to the integration of skills into MontiArcAutomaton components
and either raise errors or warnings. Ultimately, it also adds a code generator
(l. 11). Following this approach enables to process architecture models with
embedded behavior models as depicted in Lst. 3, which shows the component
ActionController of Fig. 1. After importing the ImageProcessor data
type, it de nes the ActionController component type (ll. 3-15), which
comprises an interface of three ports (ll. 4-7) and a body using an embedded
Statechart model (ll. 9-14). The keyword behavior (l. 9) indicates that an embedded
behavior model follows. The subsequent concrete syntax is part of the Statechart
language and the tool chain con gured with the BCL model illustrated in Lst. 1
will select the SCBody parser generated by MontiCore to process it.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Related Work</title>
      <p>
        Integrating component behavior DSLs is supported by AADL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and xADL [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
as well: AADL supports integration of state-based DSLs via its behavior
annex [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], but does not consider integration of static semantics or dynamic
semantics. The same holds for xADL, where embedding of a component behavior
Lst. 3. MontiArcAutomaton component model using an embedded Statechart model
to describe its behavior.
      </p>
      <p>
        DSLs also enforces to introduce a new corresponding component type [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
Neither supports language integration in a specialized, compact DSL.
      </p>
      <p>
        The byADL infrastructure [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] resembles a workbench for ADLs. It supports
various language integration operations that enable great exibility. However,
they are generic to a broad class of application scenarios and lack the structured
guidance of integration DSLs for speci c purposes.
      </p>
      <p>
        The -ADL [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] enables to describe structure and behavior of a software
architecture based on the -calculus. In this, it generally supports to add
arbitrary behavior modeling capabilities on layers on top of its ADL. This, however,
ultimately yields a monolithic language aggregate where the individual
components can be hardly exchanged. Furthermore, it does not support black-box
composition of code generators for the individual behavior DSLs.
      </p>
      <p>
        The Kermeta language workbench enables to mashup [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] meta-languages,
static semantics, and dynamic semantics to compose DSLs. This is a more general
form of composition and yields the same challenges than other general
composition mechanisms in other language workbenches.
6
      </p>
    </sec>
    <sec id="sec-5">
      <title>Discussion</title>
      <p>
        On the one hand, the presented BCL is speci c to its implementation with
MontiArcAutomaton and MontiCore, which is re ected in its concrete syntax. On the
other hand, where the integration context is su ciently elaborated, applying
integration DSLs translates to other language workbenches as well. A bene t
of combining MontiCore with an internal integration DSL is in its agility: AST
classes and parsers generated for ADL and behavior DSLs can be reused without
requiring intermediate code generation to produce integrated AST classes and
parsers (cf. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]). Also, no artifacts are produced from the integration model,
which is validated in the context of related MontiCore artifacts at design time.
Our notion of DSL embedding di ers from the self-extension identi ed in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and
discussed in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Where we advocate embedding of independent, external DSLs,
self-extension usually refers to internal DSLs that can easily extend their
concrete syntax with new APIs. However, with the embedding of su cient complex
DSLs (such as the Java DSL presented in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]), self-extension can be realized
with embedding. The BCL relieves language engineers from detailed knowledge
about the MontiCore language composition mechanisms. The embedding of a
new behavior DSL takes place in a single BCL model, instead of registering DSL
infrastructure across scattered artifacts. Embedding is decoupled from the DSLs,
enabling to reuse behavior DSLs in di erent contexts.
      </p>
    </sec>
    <sec id="sec-6">
      <title>7 Conclusion</title>
      <p>We have presented a small DSL for the agile adaptation of C&amp;C ADLs via
embedding of component behavior DSLs. It supports ADL developers in tting
their ADL to the participating domain experts' DSL requirements and supports
agile, post-hoc customization exploiting properties of the underlying MontiCore
language workbench as well as its internal DSL nature. In the future, similarly
elaborated language integration purposes might produce further speci c
integration DSLs (for instance, to easily integrate and exchange the data type
description language an ADL operates on) for di erent purposes and on top of di erent
language workbenches. We believe that such specialized integration operations
can advance the application of model-driven development, where adaptation of
existing DSLs is crucial.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Aldrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chambers</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Notkin</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>ArchJava: Connecting Software Architecture to Implementation</article-title>
          . In: International Conference on Software Engineering (ICSE)
          <year>2002</year>
          (
          <year>2002</year>
          )
          <fpage>3</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bedin</surname>
            <given-names>Franca</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Bodeveix</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.P.</given-names>
            ,
            <surname>Filali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Rolland</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.F.</surname>
          </string-name>
          :
          <article-title>The AADL Behavior Annex-Experiments and Roadmap</article-title>
          .
          <source>In: Proceedings of the 12th IEEE International Conference on Engineering Complex Computer Systems</source>
          (
          <year>2007</year>
          )
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Clark</surname>
          </string-name>
          , T., den Brand, M.,
          <string-name>
            <surname>Combemale</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Conceptual Model of the Globalization for Domain-Speci c Languages</article-title>
          .
          <source>In: Globalizing Domain-Speci c Languages</source>
          . Springer (
          <year>2015</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Malavolta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            ,
            <surname>Muccini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Pelliccione</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Developing Next Generation ADLs Through MDE Techniques</article-title>
          .
          <source>In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering</source>
          (
          <year>2010</year>
          )
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Diekmann</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tratt</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Eco: A Language Composition Editor</article-title>
          .
          <source>In: International Conference on Software Language Engineering</source>
          (
          <year>2014</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Erdweg</surname>
            , S., van der Storm, T., Volter,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boersma</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bosman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cook</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerritsen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hulshout</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Loh</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Konat</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Molina</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palatnik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pohjonen</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schindler</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schindler</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Solmi</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vergu</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
            , E., van der Vlist,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wachsmuth</surname>
          </string-name>
          , G., van der Woning, J.:
          <article-title>The State of the Art in Language Workbenches</article-title>
          .
          <source>In: Software Language Engineering</source>
          . Springer International Publishing (
          <year>2013</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Erdweg</surname>
            , S., van der Storm, T., Volter,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tratt</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bosman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cook</surname>
            ,
            <given-names>W.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerritsen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hulshout</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Loh</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Konat</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Molina</surname>
            ,
            <given-names>P.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palatnik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pohjonen</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schindler</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schindler</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Solmi</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vergu</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
            , E., van der Vlist,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wachsmuth</surname>
          </string-name>
          , G., van der Woning, J.:
          <article-title>Evaluating and Comparing Language Workbenches: Existing Results and Benchmarks for the Future</article-title>
          .
          <source>Computer Languages, Systems &amp; Structures</source>
          (
          <year>2015</year>
          )
          <fpage>6</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <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</article-title>
          &amp;
          <string-name>
            <given-names>Design</given-names>
            <surname>Language. Addison-Wesley</surname>
          </string-name>
          (
          <year>2012</year>
          )
          <volume>1</volume>
          ,
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Domain-Speci c Languages</surname>
          </string-name>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          (
          <year>2010</year>
          )
          <fpage>4</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <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>
          )
          <fpage>4</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Haber</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Look</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Mir Seyed Nazari,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Navarro</surname>
          </string-name>
          <string-name>
            <surname>Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Voelkel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Wortmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Integration of Heterogeneous Modeling Languages via Extensible and Composable Language Components</article-title>
          .
          <source>In: Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development</source>
          (
          <year>2015</year>
          )
          <volume>1</volume>
          ,
          <issue>3</issue>
          ,
          <issue>4</issue>
          ,
          <fpage>6</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Jezequel</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Combemale</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barais</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Monperrus</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fouquet</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Mashup of Meta-Languages and its Implementation in the Kermeta Language Workbench</article-title>
          .
          <source>Software and Systems Modeling</source>
          (
          <year>2013</year>
          )
          <volume>1</volume>
          ,
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Khare</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guntersdorfer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Oreizy</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.N.:
          <article-title>xADL: Enabling Architecture-Centric Tool Integration with XML</article-title>
          .
          <source>In: System Sciences</source>
          ,
          <year>2001</year>
          .
          <source>Proceedings of the 34th Annual Hawaii International Conference</source>
          (
          <year>2001</year>
          )
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <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: Modular Development of Textual Domain Speci c Languages</article-title>
          .
          <source>In: Proceedings of Tools Europe</source>
          (
          <year>2008</year>
          )
          <fpage>3</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Lago</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malavolta</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muccini</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pelliccione</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tang</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>The Road Ahead for Architectural Languages</article-title>
          . Software, IEEE (
          <year>2015</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Malavolta</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lago</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muccini</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pelliccione</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tang</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>What Industry Needs from Architectural Languages: A Survey</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          (
          <year>2013</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.:
          <article-title>A Classi cation and Comparison Framework for Software Architecture Description Languages</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          (
          <year>2000</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Naslavsky</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dias</surname>
            ,
            <given-names>H.Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ziv</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Richardson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Extending xADL with Statechart Behavioral Speci cation</article-title>
          .
          <source>In: Third Workshop on Architecting Dependable Systems (WADS)</source>
          , Edinburgh, Scotland (
          <year>2004</year>
          )
          <volume>1</volume>
          ,
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Oquendo</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Pi-ADL: an Architecture Description Language based on the Higherorder Typed pi-calculus for Specifying Dynamic and Mobile Software Architectures</article-title>
          .
          <source>SIGSOFT Software Engineering Notes</source>
          (
          <year>2004</year>
          )
          <fpage>5</fpage>
        </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>Roth</surname>
            ,
            <given-names>A.</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>Language and Code Generator Composition for Model-Driven Engineering of Robotics Component &amp; Connector Systems</article-title>
          .
          <source>Journal of Software Engineering for Robotics (JOSER)</source>
          (
          <year>2015</year>
          )
          <volume>1</volume>
          ,
          <issue>3</issue>
          ,
          <fpage>4</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <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>Architecture and Behavior Modeling of Cyber-Physical Systems with MontiArcAutomaton</article-title>
          . Aachener
          <string-name>
            <surname>Informatik-Berichte</surname>
          </string-name>
          , Software Engineering, Shaker Verlag (
          <year>2014</year>
          )
          <fpage>3</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Modeling with UML</article-title>
          .
          <source>Language, Concepts</source>
          ,
          <source>Methods</source>
          . Springer International (
          <year>2016</year>
          )
          <fpage>4</fpage>
        </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>
          )
          <volume>4</volume>
          ,
          <fpage>6</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Thomas</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hirzinger</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schulze</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wortmann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A New Skill Based Robot Programming Language Using UML/P Statecharts</article-title>
          . In: 2013
          <source>ICRA IEEE International Conference on Robotics and Automation (ICRA)</source>
          . Karlsruhe,
          <string-name>
            <surname>Germany</surname>
          </string-name>
          (
          <year>2013</year>
          )
          <fpage>2</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Wachsmuth</surname>
            ,
            <given-names>G.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Konat</surname>
            ,
            <given-names>G.D.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>Language Design with the Spoofax Language Workbench</article-title>
          . IEEE Software (
          <year>2014</year>
          )
          <fpage>1</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Wile</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          :
          <source>Supporting the DSL Spectrum. Computing and Information Technology</source>
          <volume>4</volume>
          (
          <year>2001</year>
          )
          <fpage>4</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>