<!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>Generating Domain-Specific Transformation Languages for Component &amp; Connector Architecture Descriptions</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lars Hermerschmidt</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Katrin Hölldobler</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-based software engineering (CBSE) decomposes complex systems into reusable components. Model-driven engineering (MDE) aims to abstract from complexities by lifting abstract models to primary development artifacts. Component and connector architecture description languages (ADLs) combine CBSE and MDE to describe software systems as hierarchies of component models. Using models as development artifacts is accompanied with the need to evolve, maintain and refactor those models, which can be achieved by model transformations. Domain-specific transformation languages (DSTLs) are tailored to a specific modeling language as the modeling language's concrete syntax is used to describe transformations. To automate the development of DSTLs for ADLs, we present a framework to systematically derive such languages from domain-specific C&amp;C language grammars. These DSTLs enable to describe such model transformations concisely in vocabulary of the underlying ADL. These domain-specific transformations are better comprehensible to ADL experts than generic transformations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. MOTIVATION AND PROBLEM STATEMENT</title>
      <p>
        Engineering non-trivial software systems demands
techniques to reduce development effort. Component-based
software engineering (CBSE) aims to reduce complexity
by composing systems from reusable components. Ideally,
these components can be developed independently by domain
experts and reused off-the-shelf - increasing component
maturity along the way. Components of CBSE usually
are source code artifacts, which gives rise to “accidental
complexities” [1] (dealing with programming instead of
domain issues). Model-driven engineering (MDE) aims to
abstract from these by lifting abstract models to primary
development artifacts. Such models are typically formulated
in terms of a domain-specific language (DSL) that reduces
noise and trades expressiveness for comprehensibility. In
addition, such models can be better reusable, analyzable,
and automatically transformable into executable systems.
Component and connector (C&amp;C) architecture description
languages (ADLs) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] combine CBSE and MDE to model
systems as hierarchies of components.
      </p>
      <p>Using ADLs in MDE gives rise to needs for multiple
types of model transformations, such as: i) preprocessing:
translate ADL keywords into equivalent component structures
or flatten the component hierarchy prior to code generation,
rearrange the subcomponent hierarchy for deployment.
ii) refactoring: find architectural anti patterns and replace
these with established solutions. iii) refinement: replace
platform-independent with platform-specific components.</p>
      <p>
        Describing transformations either requires handcrafting
code to transform a model based on its representation,
such as an abstract syntax tree (AST), in a general
purpose programming language or modeling with a generic
transformation language such as ATL [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The former is
tedious and error prone. The latter requires learning a new
language, which might provide adequate transformation
descriptions, but cannot rely on the original DSL’s notations.
      </p>
      <p>
        Domain-specific transformation languages (DSTLs) also
called “transformations in concrete syntax” [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]–[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] reduce
the effort of learning a transformation language as they
employ the familiar DSL’s syntax. In addition they allow
a more concise definition of transformations as the AST
is not involved. Producing such DSTLs however requires
the same effort as developing a DSL. To approach this,
we have developed a framework to generate DSTLs from
DSLs while retaining their vocabulary. With this framework,
developers can efficiently describe model transformations in
well-known form and the overhead of learning additional
modeling elements is minimized.
      </p>
      <p>In the following, Sect. II presents the language workbench
MontiCore on which our framework, and the ADLs we
generate DSTLs for, build. Afterwards, Sect. III describes
the framework before Sect. IV illustrates the resulting DSTLs
and their application. Sect. V presents related work. Finally,
Sect. VI discusses the approach and Sect. VII concludes.</p>
    </sec>
    <sec id="sec-2">
      <title>II. PRELIMINARIES</title>
      <p>
        The DSTL generation framework relies on the language
development and integration mechanisms of the language
workbench MontiCore [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. With this, it parses the
grammars of MontiCore DSLs and generates domain-specific
transformation languages. MontiCore provides a language to
describe the integrated concrete and abstract syntax of DSLs
in terms of context-free grammars and means to generate
model processing infrastructure, such as tools to parse textual
models into an abstract syntax tree (AST), frameworks for
language integration and well-formedness checking [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], as
well as code generation [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Language integration enables
aggregation, inheritance, and embedding between DSLs. For
the latter, the host DSL provides extension points filled by
modeling elements of the embedded DSL.
      </p>
      <p>
        We apply our approach to MontiArc [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], a C&amp;C
ADL build with MonitCore and its extension MontiSecArc.
Both describe logically distributed software architectures
as hierarchies of connected components. Components are
black-boxes with interfaces of typed, directed ports. The
behavior of atomic components is defined by source code
artifacts and the behavior of composed components emerges
from their subcomponents. MontiSecArc introduces the trust
level to distinguish components that might be influenced by
an adversary from those which are not that easy to reach.
qAs modeling something unknown like an adversary is hard,
the trust level describes (physical) protection measures which
hinder an adversary to compromise a component. The trust
level abstracts from individual measures like locked doors,
fences, and video surveillance to focus the model on IT
security. A subcomponent’s trust level is denoted relative to
its containing component and the surrounding of a system is
assumed as insecure and hence has the trust level 1.
      </p>
      <p>
        A classical measure to hinder adversaries to access a
resource is access control, such as role based access control,
or access control lists (ACLs) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which is noted by the
keyword access in MontiSecArc. Access is limited to certain
policies, such as roles or ACLs, for specific incoming ports or
complete components, where the later is equivalent to access
control for all incoming ports of the component. Assigning
users to roles or ACLs is left to run-time, such that new users’
access rights are defined by the access policy.
      </p>
      <p>To avoid naming problems with policies when composing
components, policies of different components are independent,
even if they have the same name. When interconnecting
components, e.g., client and server as depicted in Fig. 4, where
one role has access to different components an identity link
connects these components. When interconnecting identities,
the process of authentication, where a user from a proving
component claims to have a role at the verifying component,
ensures that only users, which possess this role are able to
claim it. In Fig. 4 Client’ is the proving component and
Server’ the verifying one. To specify proving and verifying
component, the identity link is directed from the former to
the latter.</p>
    </sec>
    <sec id="sec-3">
      <title>III. DSTL GENERATION FRAMEWORK</title>
      <p>
        The DSTL generation framework is able to create DSTLs
that, in conjunction with additional generated and provided
parts of the framework, realizes a graph transformation
approach. In such approaches, complex transformations are
composed of small transformation rules where transformation
rules usually are described by a left-hand side (LHS) - the
model part before applying the rule - and a right-hand side
(RHS) - the same model part after being transformed [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
The following sections explain the framework to automatically
derive DSTLs from the grammar of a modeling language
as well as the resulting DSTL and the application of
domain-specific transformations.
      </p>
      <p>DSL
Grammar
parses
«provided»</p>
      <sec id="sec-3-1">
        <title>DSTL</title>
        <p>Gen
creates
«gen»</p>
      </sec>
      <sec id="sec-3-2">
        <title>DSTL Grammar creates «gen»</title>
        <p>TM2J-Gen
«gen»
«provided»
OD-Gen
OD2J-Gen
«provided»
CF2J-Gen</p>
        <sec id="sec-3-2-1">
          <title>A. From DSL to DSTL</title>
          <p>
            The automatic derivation of DSTL is solely based on
the grammar of the DSL. Thus, by taking the modeling
language’s grammar as input the DSTL generator produces
the grammar for describing transformation rules following the
derivation rules described in [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ] and a generator (OD-Gen,
Fig. 1) to translate those transformation rules to a LHS and
a RHS of a transformation in form of object diagrams (OD
notation). Furthermore, the framework provides a generator to
translate this OD notation to Java (OD2J-Gen), a control flow
language to control the application of transformation rules and
a generator (CF2J-Gen) to translate the control flow to Java.
          </p>
          <p>
            As complex transformations usually are decomposed
to transformation rules combined by some kind of
application strategy ([
            <xref ref-type="bibr" rid="ref15">15</xref>
            ]), the control flow language uses the
transformation rule language via language embedding to allow
the description of complex transformations in form of so called
transformation modules (Sect. III-B4). Finally, to ease the use
of the generators (OD-, CF2J-, and OD2J-Gen) the DSTL
generator creates glue code that combines those generators to a
single generator (TM2J-Gen) able to translate transformation
modules to executable Java transformations.
          </p>
        </sec>
        <sec id="sec-3-2-2">
          <title>B. Generated DSTLs</title>
          <p>
            A DSTL created by the generator described above reuses the
concrete syntax of the DSL to describe patterns. In addition,
the DSTL provides a replacement operator for modifications,
allows to bind elements to variables, and to specify negative
elements and application constraints. With this, the DSTL is
able to describe endogenous in-place transformations [
            <xref ref-type="bibr" rid="ref15">15</xref>
            ],
[
            <xref ref-type="bibr" rid="ref16">16</xref>
            ]. In contrast to the typical transformation form consisting
of LHS and RHS, we use an integrated notation of LHS and
RHS. Combining these in a single model avoids repeating
unchanged model parts on the RHS. The transformation
operators, such as the replacement operator or negative
elements, are provided for every model element defined by
a nonterminal such as components and ports. The following
explains those operators.
          </p>
        </sec>
        <sec id="sec-3-2-3">
          <title>1) Pattern and Schema Variables: The DSTL uses concrete</title>
          <p>DSL syntax to describe patterns, thus, a pattern resembles the
model part it describes and omits parts that do not constrain
the pattern. For example, the model in Lst. 1 could also serve
as a pattern. However, every component that has the depicted
structure and arbitrary additional structures, such as additional well as any static Java method. Listing 2 shows a negative
ports or subcomponents, would be a suitable match for this element (l. 9) and a where-block (l. 11). An example of
pattern. There also is no need to start a pattern at the top-level an application constraint is shown in line 14 of Lst. 3. A
element of a model. Instead, all elements can be top-level transformation will only be applied if all positive elements
elements in a pattern. For instance, if a transformation is are found, no match for the negative elements is possible and
defined for a port and the containing component is irrelevant, the application constraint holds.
the pattern may only define the port and its modification. 4) Transformation Modules: To control and combine the</p>
          <p>In many cases transformations need to be more general, transformation rules to transformation modules, the generated
thus, for abstraction purposes as well as binding model DSTL is combined with a generic control flow language via
elements to variables (for instance to move them), the language embedding.
generated DSTL provides a concept called schema variables. A transformation module, as shown in Lst. 2, consists of
Those variables consist of a type, i.e., the name of the instructions and transformation methods (introduced by the
nonterminal that defines the model element and a name keyword transformation) where the body of a transformation
starting with a $-sign. There are black box and a white box method is a transformation rule. The instruction methods
schema variables: Black box variables end with a semicolon define the application order of transformation methods.
(“ElementT ype SchemaV ar ;”), while white box variables The instruction method main() is the starting point of
allow to define the element’s structure within double square a transformation module. Within instructions, Java syntax
brackets (“ElementT ype SchemaV ar [[ Element ]]”). An extended by a special loop statement can be used to specify
example black box variable is depicted in line 6 of Lst. 3 for the control flow in an imperative manner. The loop statement
an access definition. Line 9-12 of Lst. 3 show a white box applies the following transformation rule until no further
variable for a component. match for the pattern can be found.</p>
          <p>To ease the use of variables for names the type Name can
be omitted. A schema variable for a name is displayed in C. Translation and Application of a Transformation
Lst. 2 ($name in l. 7, $sp in l. 8). If a schema variable is A transformation module is defined using the control flow
used for a model element the corresponding element is bound language and its embedded transformation rule language (
to this variable during pattern matching. Thus, using the same Fig. 2), which have to be translated to Java code for execution.
variable twice refers to the same model element in both cases. This translation is performed by the composed and generated
However, for names we relaxed this such that two occurrences generator TM2J-Gen (Fig. 1 and Fig. 2). TM2J-Gen takes
of a schema variable for a name require equality instead of a transformation module as input and internally uses its
identity. When using variables for abstraction, without the need three subgenerators to translate it to an executable Java
for referencing them later, the anonymous $_ variable may be transformation. The latter reads a model and applies the
employed. It does not bind the model element and, hence, two transformation described by the transformation module.
occurrences neither require identity nor equality (Lst. 2, l. 9).</p>
          <p>2) Modifications: The generated DSTL uses an integrated «provided» «gen»
notation of the LHS and RHS of a transformation rule. To Transformation conforms Control Flow embeds DSTL
achieve this the DSTL provides the replacement operator :- Module Language Grammar
that acts on element level (“[[ Element? :- Element? ]]”). parses «gen»
The element left of :- is replaced by the one right of it. If the DSL
LHS is left blank an element is created and added. Leaving the Grammar TM2J-Gen
RHS blank deletes an element. A modification is illustrated in conforms creates
line 6 of Lst. 2.</p>
          <p>Ass3i)gnNmeegnattsiv:e NEegleamtivenets,appAlipcpaltiicoantioncondCitoinosntsrain[1ts7] aanrde Model parses TransJfaovrma ation creates TraMnsofodremled
provided in form of negative elements with the following
syntax: not [[ Element ]]. A negative element is an Fig. 2. Overview of the translation and application of a transformation.
element that must not occur in the model. Furthermore, IV. APPLYING THE TRANSFORMATION LANGUAGE
a where-block is provided that allows formulating With the DSTL derived from the DSL’s grammar, the
application constraints and assignments of schema description of model transformations is greatly facilitated as
variables. The where-block is structured as follows: the transformation developers are familiar with the DSLTs
where { Assignment BooleanExpression? } vocabulary. The following sections illustrate application of
It starts with the assignment of schema variables that are model transformations to MontiArc and MontiSecArc with the
not assigned during pattern matching (i.e., parts of the RHS DSTLs generated for each.
of a transformation). Within the BooleanExpression the
elements of the transformation bound to schema variables can A. Preprocessing: Adding Structural C&amp;C Elements
be used to formulate the constraint. Thereby, the signature A common challenge for the development of distributed
of the abstract syntax of the model elements can be used as systems is dealing with the unforeseeable run-time issues.
new state
ports
t r a n s f o r m a t i o n connect ( ) {
component $_ {
component $type $name ;
[ [ : - connect $name . s t a t e - &gt; monitor . $sp ; ] ] ;
not [ [ connect $name . s t a t e - &gt; monitor . $_ ; ] ]
}
where { $sp = $name . concat ( " S t a t e " ) ; }
t r a n s f o r m a t i o n addPorts ( ) {
component $name {
port [ [ : - out $sp s t a t e ] ] ;
not [ [ out $_ s t a t e ] ]
}
where { $sp = $name . concat ( " S t a t e " ) ; }
t r a n s f o r m a t i o n addMonitor ( ) {
component $name {
[ [ : - component $type monitor ; ] ]
not [ [ component $_ monitor ; ] ]
[ [ : - connect monitor . s t a t e - &gt; s t a t e ; ] ] ;
component $_ {}
}
where { $type = $name . concat ( " Monitor " ) }
subcomponent MA 1 module AddMonitoring {
2 main ( ) { loop addPorts ( ) ;
3 loop addMonitor ( ) ;
4 loop connect ( ) ; }
5
el RMmeoomnniiottooterrNode RNSetomadtoeete 189760</p>
          <p>11
int Actuator 12 }
er effort right er 1143
incoming port effort new sub- new 15
of type int component connectors 16
17
FRiegm.3o.teNAoppdleyiwngiththae sminognleitosruibncgomtrapnosnfeonrmt. ation to a composed component 112890
123456 }co mcccpoooopmnnrotnnnpeeeoinccnntttenReitenrletmA--co&gt;&gt;ettleuNr,laeiotgofdinhtret. {i.leneefftfftof ore,trr tr;; i;g h t ; MA 22222222134567 }
sLuisbtcionmgp1o.neTnetxtAuacltusyantotarx. of composed component RemoteNode with 322098
31 }
To this effect, MontiArc introduces component monitoring. 32 }
Every component of the architecture is monitored by a specific
monitor per composed component. Instead of handcrafting
the monitoring infrastructure for each component, it is
conveniently integrated via model transformations. These
transformations introduce new subcomponents, ports, and
connectors, such that all composed components and their direct
subcomponents are observed by a new subcomponent. That
subcomponent receives status messages from its neighboring
subcomponents, calculates an overall component status,
and emits this via a new outgoing port. Applying this
transformation to a composed component RemoteNode
(Fig. 3) requires that (a) RemoteNode and all its
subcomponents receive a new port to emit status messages,
(b) RemoteNode receives a new subcomponent of type
RemoteNodeMonitor that provides appropriate input ports
for all new state ports and emits messages on the
overall state of RemoteNode, and (c) the state ports
of the subcomponents of RemoteNode are connected to
RemoteNodeMonitor, which itself is connected to the new
state port of RemoteNode.</p>
          <p>As the DSTL’s syntax is derived from the DSL, Lst. 1
describes the textual syntax of the untransformed MontiArc
component RemoteNode for comprehension. The keyword
component (l. 1), followed by a name and curly brackets
declares a component definition (ll. 1-6). The components
interface is defined by the keyword port and a list of directed,
typed ports (l. 2). Furthermore, a composed component
contains a set of subcomponents (l. 3), each starting with
the keyword component, followed by its type and name.</p>
          <p>The ports of subcomponents are connected via unidirectional
connectors (ll. 4-5).</p>
          <p>Handcrafting these transformations in terms of AST
API calls requires considerable effort. Instead, the
three transformation rules given in Lst. 2 describe this
Listing 2. The transformations required to add a monitor, related ports,
and connectors to a software architecture.
transformation. The main block (ll. 2-4) invokes the three
transformations addPorts(), addMonitor(), and connect(),
where addPorts() (ll. 6-12) adds state ports to all components
of the software architecture. To this effect, it iterates over
all components (denoted by concrete MontiArc syntax
component followed by a name $name) and adds a new
outgoing port state to each of the component’s ports rule
(l. 8), where no such port already exists (l. 9). The port’s
type is defined by $sp as calculated by the where-block
(l. 11). The transformation addMonitor() (ll. 14-22) adds
a new subcomponent monitor (l. 16) to each composed
component - enforced by requiring that the component
contains a subcomponent (l. 19) - that does not already
contain a monitor (l. 17). The type of monitor is calculated
via $type (l. 21). Finally, the transformation connect()
(ll. 24-31) adds new connectors to each composed component
to connect its subcomponents to its new monitor. This is
better comprehensible than a lengthy program exploiting
the AST API and less susceptible to errors arising from
accidental complexities of AST programming.</p>
        </sec>
        <sec id="sec-3-2-4">
          <title>B. Refactoring: Resolving Anti-Patterns</title>
          <p>
            Architects need to consider security as one out of many
nonfunctional requirements. There are numerous commonly
known anti-patterns and design flaws [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ]. We consider the
anti-pattern of client-side authentication [19, p. 687], which
is depicted in Fig. 4 using the MontiSecArc language. In this
case a client with low trust level enforces access control and
a server which has a higher trust level relies on that client.
Hence, an attacker able to impersonate the client can bypass
access control and compromise the server, as it relies on the
client.
trust
level
identity
link
          </p>
          <p>We use the transformation depicted in Lst. 3 to identify
client components which have this anti-pattern (ll. 5-7) and
add access control to the server (ll. 9-12). Client components
within this anti-pattern have one of the statement starting with
access, so we use a black box schema variable $A for the
common super type Access to match both (l. 6). Furthermore,
there is a connection (l. 8) to a more trustworthy server
(l. 9-12). We use the white box variant of schema variables
for the client ($C in l. 5) and the server ($S in l. 9). In
the where-block we first retrieve the access policy from the
client by utilizing the method getPolicy() from $A and assign
it to the $policy variable (l. 13). Finally, to ensure that the
client has a lower trust level then the server, we use another
method getTrustlevel() accessible via the variables $C and
$S (l. 14). Using a combination of keywords and abstract
syntax of MontiSecArc in the DSTL makes the patterns precise
and comprehensible to domain experts.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>V. RELATED WORK</title>
      <p>
        Similar to PROGRES [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], Fujaba [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], eMoflon [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ],
and Henshin [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], the transformations of our approach are
endogenous, and in-place [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. However, these approaches
do not employ the concrete syntax of the underlying DSL.
There are approaches for transforming software architectures
[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]–[
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], however, they either introduce their own notation,
operate on the abstract syntax or provides less functionality
e.g. do not allows to remove elements [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. Existing
approaches to derive DSTLs from DSLs focus graphical
languages [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] and do not provide the concrete syntax of
the transformation language. Another approach to circumvent
generic transformation languages is to infer LHS and RHS of
model transformations from examples [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. To generalize
these examples, developers have to use abstract syntax. Term
rewriting [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] works on concrete syntax as well by applying
rewriting rules to manipulate rather small connected model
parts as compared to graph transformations. T-Core [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]
and others [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] introduce transformation primitives which,
similar to term rewriting, do not automate the process of
deriving an DSTL but are combined and configured to create
it. Thus, they do not propose a systematic and automated
way of deriving a DSTL, but provide building blocks to
create them. Our previous work on delta languages, which
describes small changes for models in concrete syntax of the
modeling language, shares the underlying generative approach
of deriving those languages we use here and we first applied
those deltas to architectural models [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>VI. DISCUSSION</title>
      <p>A generated DSTL relies on the concrete syntax of its base
DSL. However, for typing schema variables the nonterminal
names of the modeling language are used and, thus, this
abstract syntax information become part of the concrete syntax
of the DSTL. This cannot be avoided completely as for the
black box variant of schema variables the type cannot be
inferred whenever there is an alternative of nonterminals in
the base DSL. Furthermore, keywords such as not or where
and delimiters might conflict with the DSL’s concrete syntax.
However, these problems can be solved by using MontiCore’s
language inheritance to redefine the concrete syntax of the
DSTL. Allowing every model element of the base DSL as a
top level element in transformation rules leads to problems
if the model element does not have any mandatory concrete
syntax. Restructuring the DSL will solve this issue.</p>
    </sec>
    <sec id="sec-6">
      <title>VII. SUMMARY</title>
      <p>We presented a framework to generate DSTLs from the
grammars of DSLs. The resulting DSTLs consist of declarative
transformation rules that employ patterns based on the DSL’s
concrete syntax to describe both what is to be replaced and
how it is to be replaced. These transformation rules are
embedded into a control flow language to describe complex,
imperative transformation modules. As such DSTLs reuse
the well-know vocabulary of the underlying DSL, modeling
individual transformations require less effort from domain
experts. The control flow language is very compact and
learning their combination is less complex than learning a
general transformation language. The framework has been
applied to the C&amp;C ADLs MontiArc and its descendant
MontiSecArc. We currently examine the application of the
DSTL generation framework to other ADLs in ongoing case
studies.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>R.</given-names>
            <surname>France</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , “
          <article-title>Model-Driven Development of Complex Software: A Research Roadmap,” in Future of Software Engineering 2007 at ICSE</article-title>
          .,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>N.</given-names>
            <surname>Medvidovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>R. N.</given-names>
            <surname>Taylor</surname>
          </string-name>
          , “
          <article-title>A Classification and Comparison Framework for Software Architecture Description Languages,”</article-title>
          <source>IEEE Trans. Software Eng.</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Allilaire</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bézivin</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Kurtev</surname>
          </string-name>
          , “ATL:
          <article-title>A model transformation tool</article-title>
          ,”
          <source>Science of Computer Programming</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E.</given-names>
            <surname>Visser</surname>
          </string-name>
          , “
          <article-title>Meta-programming with Concrete Object Syntax,” in Generative Programming</article-title>
          and
          <string-name>
            <given-names>Component</given-names>
            <surname>Engineering</surname>
          </string-name>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Baar</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          , “
          <article-title>On the Usage of Concrete Syntax in Model Transformation Rules</article-title>
          ,” in
          <source>International Andrei Ershov memorial conference on Perspectives of systems informatics (PSI)</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Grønmo</surname>
          </string-name>
          , “
          <article-title>Using Concrete Syntax in Graph-based Model Transformations</article-title>
          ,”
          <source>PhD thesis</source>
          , University of Oslo,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E.</given-names>
            <surname>Syriani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Mannadiar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Hansen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. V.</given-names>
            <surname>Mierlo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Ergin</surname>
          </string-name>
          , “
          <article-title>AToMPM: A Web-based Modeling Environment</article-title>
          ,” in MODELS'
          <volume>13</volume>
          :
          <string-name>
            <surname>Invited</surname>
            <given-names>Talks</given-names>
          </string-name>
          , Demos, Posters, and ACM SRC.,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>H.</given-names>
            <surname>Krahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Völkel</surname>
          </string-name>
          , “
          <article-title>MontiCore: a framework for compositional development of domain specific languages</article-title>
          ,”
          <source>International Journal on Software Tools for Technology Transfer (STTT)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Haber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Look</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Mir Seyed Nazari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Navarro</given-names>
            <surname>Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Voelkel</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Wortmann</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>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Schindler</surname>
          </string-name>
          , Eine Werkzeuginfrastruktur zur agilen Entwicklung mit der UML/P. Shaker Verlag,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Haber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , “MontiArc - Architectural Modeling of Interactive Distributed and
          <string-name>
            <surname>Cyber-Physical</surname>
            <given-names>Systems</given-names>
          </string-name>
          ,” RWTH Aachen,
          <source>Tech. Rep.</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sandhu</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Samarati</surname>
          </string-name>
          , “
          <article-title>Access control: principle and practice,” Communications Magazine</article-title>
          , IEEE,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Nagl</surname>
          </string-name>
          , Graph-Grammatiken: Theorie, Anwendungen, Implementierung. Vieweg,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>K.</given-names>
            <surname>Hölldobler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I. Weisemöller</given-names>
            , “Systematically Deriving
            <surname>Domain-Specific Transformation</surname>
          </string-name>
          <string-name>
            <surname>Languages</surname>
          </string-name>
          ,” in
          <source>International conference on Model Driven Engineering Languages and Systems (MoDELS)</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          and
          <string-name>
            <given-names>P. V.</given-names>
            <surname>Gorp</surname>
          </string-name>
          , “A Taxonomy of Model Transformation,” Electronic Notes in Theoretical Computer Science,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          , “
          <article-title>Feature-based Survey of Model Transformation Approaches,”</article-title>
          <source>IBM Systems Journal</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A.</given-names>
            <surname>Habel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Heckel</surname>
          </string-name>
          , and G. Taentzer, “
          <article-title>Graph grammars with negative application conditions</article-title>
          ,” Fundamenta Informaticae,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>IEEE</given-names>
            <surname>Computer</surname>
          </string-name>
          <article-title>Society Center for Secure Design, “Avoiding the top 10 software security design flaws</article-title>
          ,”
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Howard</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. E.</given-names>
            <surname>Leblanc</surname>
          </string-name>
          , Writing Secure Code,
          <year>2nd</year>
          . Microsoft Press,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Schürr</surname>
          </string-name>
          , Operationales Spezifizieren mit Programmierten Graphersetzungssystemen:
          <article-title>Formale Definitionen Anwendungsbeispiele and Werkzeugunterstützung</article-title>
          . Wiesbaden: Deutscher Universitäts-Verlag,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>T.</given-names>
            <surname>Fischer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Niere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Torunski</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Zündorf</surname>
          </string-name>
          , “
          <article-title>Story Diagrams: A New Graph Rewrite Language Based on the Unified Modeling Language</article-title>
          and Java,”
          <source>in Theory and Application of Graph Transformations</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>E.</given-names>
            <surname>Leblebici</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Anjorin</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Schürr</surname>
          </string-name>
          , “
          <article-title>Developing eMoflon with eMoflon,”</article-title>
          <source>in Theory and Practice of Model Transformations</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>T.</given-names>
            <surname>Arendt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Biermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jurack</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Krause</surname>
          </string-name>
          , and G. Taentzer, “Henshin:
          <article-title>Advanced Concepts and Tools for In-Place EMF Model Transformations</article-title>
          ,” in
          <source>Model Driven Engineering Languages and Systems</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>J. M. Barnes</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Garlan</surname>
            , and
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Schmerl</surname>
          </string-name>
          , “
          <article-title>Evolution styles: foundations and models for software architecture evolution</article-title>
          ,”
          <source>Software &amp; Systems Modeling</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>O.</given-names>
            <surname>Barais</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. F.</given-names>
            <surname>Le Meur</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Duchien</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Lawall</surname>
          </string-name>
          , “Software Architecture Evolution,” in Software Evolution,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>L.</given-names>
            <surname>Grunske</surname>
          </string-name>
          , “
          <article-title>Formalizing Architectural Refactorings as Graph Transformation Systems</article-title>
          ,” SNPD/SAWN '05,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>T.</given-names>
            <surname>Kühne</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mezei</surname>
          </string-name>
          , E. Syriani,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , “Explicit Transformation Modeling,” in Models in Software Engineering,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>E.</given-names>
            <surname>Kindler</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wagner</surname>
          </string-name>
          , “
          <source>Triple Graph Grammars: Concepts</source>
          , Extensions, Implementations, and Application Scenarios,” Software Engineering Group, Department of Computer Science, University of Paderborn, Tech. Rep.,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>P.</given-names>
            <surname>Brosch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Langer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Seidl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wieland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , G. Kappel,
          <string-name>
            <given-names>W.</given-names>
            <surname>Retschitzegger</surname>
          </string-name>
          , and W. Schwinger, “
          <article-title>An Example Is Worth a Thousand Words: Composite Operation Modeling By-Example,”</article-title>
          <source>in Model Driven Engineering Languages and Systems</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>E.</given-names>
            <surname>Syriani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          , and
          <string-name>
            <surname>B. LaShomb</surname>
          </string-name>
          , “
          <article-title>T-Core: a framework for custom-built model transformation engines</article-title>
          ,
          <source>” Software &amp; Systems Modeling</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>J. Sánchez</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          , and J. de Lara, “
          <article-title>Towards the Systematic Construction of Domain-Specific Transformation Languages,” in Modelling Foundations</article-title>
          and Applications,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>A.</given-names>
            <surname>Haber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Hölldobler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kolassa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Look</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Müller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Schaefer</surname>
          </string-name>
          , “Engineering Delta Modeling Languages,”
          <source>in Proceedings of the 17th International Software Product Line Conference (SPLC'13)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>