<!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>Taming Multi-Paradigm Integration in a Software Architecture Description Language</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Daniel Balasubramanian</string-name>
          <email>daniel@isis.vanderbilt.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tihamer Levendovszky</string-name>
          <email>tihamer@isis.vanderbilt.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Abhishek Dubey</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gábor Karsai</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute for Software Integrated Systems Department of Electrical Engineering and Computer Science Vanderbilt University</institution>
          ,
          <addr-line>Nashville, TN 37235</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <fpage>67</fpage>
      <lpage>76</lpage>
      <abstract>
        <p>Software architecture description languages offer a convenient way of describing the high-level structure of a software system. Such descriptions facilitate rapid prototyping, code generation and automated analysis. One of the big challenges facing the software community is the design of architecture description languages that are general enough to describe a wide-range of systems, yet detailed enough to capture domain-specific properties and provide a high level of tool automation. This paper presents the multi-paradigm challenges we faced and solutions we built when creating a domain-specific modeling language for software architectures of distributed real-time systems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Software architecture description languages offer a convenient way of
describing the high-level structure of a software system. An architecture combines the
individual pieces of a system, such as software components and communication
networks, into an integrated view. Combining what are normally considered
“separate” pieces of the system into such an integrated view allows the relationships
between the different elements to be explicitly represented.</p>
      <p>Software architecture descriptions serve several purposes. Apart from
providing documentation and a high-level view of a software system’s design, they
can serve as the basis for automated code generation. Automated tools can
generate skeleton code for the software components based on their interfaces and
communication links to other components. This ability to translate a high-level
description into lower-level implementation artifacts makes architecture
description languages ideal for rapidly prototyping applications. Automated analysis
can use an architecture description at design-time to answer questions related
to security, schedulability and resource utilization.</p>
      <p>
        One of the big challenges facing the software community is the design of an
architecture description language that is both general enough to apply to a wide
range of systems, but at the same time expressive enough to describe problems
specific to individual systems and provide a high amount of automated tool
support. For instance, AUTOSAR [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], a standard for defining software architectures
in the automotive domain, is heavily tailored to concepts and standards found
in the vehicle design domain. On the other hand, languages like AADL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] can
be too general to model software systems that contain concepts outside of its
specification, such as custom security concepts.
      </p>
      <p>One alternative to using standardized architecture languages is to create a
custom language. This approach can work especially well when implemented
with domain-specific modeling languages (DSMLs), which provide an intuitive
syntax and ensure that only the relevant architectural concepts are captured.
Metamodeling environments also facilitate rapid language development
iterations. However, there are several multi-paradigm modeling challenges involved
with this approach: architectures contain elements at different levels of
abstraction, multiple formalisms and cross-cutting concerns such as security. A viable
architecture description language must provide solutions to these challenges.</p>
      <p>This paper presents our solutions to a series of multi-paradigm challenges
we faced while building a domain-specific language for describing the software
architecture of distributed embedded systems. The first challenge is combining
multiple formalisms (textual code and block diagrams) to describe component
interfaces. The second challenge is to transform high-level scheduling properties
of individual elements into a combined temporal schedule. The third challenge is
integrating different types of analyses into the modeling language. Even though
our approach is tailored to our architecture language, the solutions are applicable
across other architecture languages which face similar challenges on a similar
level of abstraction, and thus want to provide a similar level of tool automation.</p>
      <p>The rest of this paper is organized as follows. Section 2 provides an overview
of the modeling language. Section 3 describes how we integrated a textual code
formalism with graphical block diagrams. Section 4 describes how we transform
high-level scheduling properties of individual elements into a low-level temporal
schedule. Section 5 briefly illustrates the opportunities for design-time analysis.
Section 6 presents related work, and we conclude in Section 7.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Overview</title>
      <p>
        DREMS, Distributed Real-time Embedded Managed Systems [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], is a software
infrastructure for designing, implementing, configuring, deploying and managing
distributed real-time embedded systems. It consists of two major subsystems:
(1) a design-time toolsuite for modeling, analysis, synthesis, implementation,
debugging, testing and maintenance of application software built from reusable
components, and (2) a run-time software platform for deploying, managing and
operating application software on a network of computing nodes. DREMS is
intended for platforms that provide a managed network of computers running
distributed applications; in other words, a cluster of networked nodes.
      </p>
      <p>
        The design-time toolsuite is underpinned by a DSML (an overview is
presented in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]) with tools and generators to automate the tedious parts of software
development and provide an analysis framework. The run-time software platform
reduces the complexity and increases the reliability of software applications by
providing reusable technological building blocks in the form of an operating
system, middleware and application management services.
      </p>
      <p>Generated
DREMS
model
Domain-specific
model</p>
      <p>Input</p>
      <p>Compilable
code (C++,</p>
      <p>IDL)
Partition
schedules</p>
      <p>Build
system files
Deployment
data (XML)</p>
      <sec id="sec-2-1">
        <title>Generated from model</title>
        <p>-Schedulability analysis with CPN
-Network bandwidth analysis
with Network Calculus
-MLS security analysis</p>
      </sec>
      <sec id="sec-2-2">
        <title>Automated analyses</title>
      </sec>
      <sec id="sec-2-3">
        <title>Design-time toolsuite</title>
        <p>Deploys on</p>
        <p>Networked
hardware nodes
Comp1</p>
        <p>Comp1
Process 1</p>
        <p>Comp3
Process 2
MW/Glue code
MW/Glue code
DREMS OS</p>
      </sec>
      <sec id="sec-2-4">
        <title>Runtime platform</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Integrating textual code with graphical block diagrams</title>
      <p>
        The first integration challenge we describe is integrating textual code inside the
graphical modeling language. The use of a textual language was motivated by
the fact that the underlying platform uses a component-based software
engineering (CBSE) methodology [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. In CBSE, applications are built from reusable,
communicating software components. For our underlying platform, these
components are specified using a language called the Interface Definition Language
(IDL), an OMG standardized language to describe component interfaces. From
an IDL specification of a component, code generators produce code stubs that are
combined with user-written business logic and compiled to produce the actual
component.
      </p>
      <p>Thus, inside our DSML, we need abstractions for describing components,
which include a suitable representation for IDL. The two main requirements for
using IDL inside models were (1) other modeling elements should be able to
refer to its properties and attributes, and (2) IDL developed independently from
the model should be straightforward to use inside the model. Figure 2 shows the
desired workflow.</p>
      <sec id="sec-3-1">
        <title>1. Existing IDL can be automatically imported into the model.</title>
        <sec id="sec-3-1-1">
          <title>Model</title>
          <p>IDL inside
model</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>2. IDL inside the model is referenced elsewhere in the model.</title>
        <p>IDL
generator</p>
      </sec>
      <sec id="sec-3-3">
        <title>3. IDL defined inside the model is generated.</title>
        <p>IDL</p>
        <sec id="sec-3-3-1">
          <title>Code</title>
          <p>stubs</p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>4. Code generators turn the IDL into code stubs and skeletons.</title>
        <p>We had two main choices for how to represent IDL inside our models: a
graphical representation or a textual representation. The drawback of using a
graphical notation to represent IDL is that it is cumbersome for the user.
Essentially, the user builds a graphical representation of the abstract syntax tree
(AST) of their IDL. This is especially tedious for designers who already have
some familiarity with IDL. The advantage of this approach is that it allows other
modeling elements to easily refer to attributes and properties of the IDL.</p>
        <p>On the other hand, the advantage of a textual notation is that it is compact,
which makes it simple for users to write. It is also easy to import from existing
IDL definitions. The drawback of a textual notation is that other elements in the
modeling language cannot easily refer to its content. Also, the modeling language
itself cannot be used to enforce that syntactically correct IDL is written by the
user.</p>
        <p>Ultimately, we decided on a combination of a graphical and textual
representation. Figure 3 shows the portion of the metamodel (as a UML class diagram)
defining the six types of IDL elements represented graphically inside the model;
note that they are all subclasses of the abstract class DataType and inherit the
Definition attribute. These are the graphical elements that appear in the
modeling language.</p>
        <p>
          The integration of the textual IDL language was accomplished by (1)
generating an IDL parser using the ANTLR parser generator [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and (2) creating an
add-on to the modeling language using our modeling environment’s extension
API that uses the generated parser. The overall process is shown in Figure 5.
The Definition attribute of each graphical IDL element contains its IDL code
and is edited using a special code editing window that is provided by the add-on
(see Figure 4). The code editor invokes the IDL parser and reports any syntax
errors to the user, as shown in Figure 4.
        </p>
        <p>If the IDL code is syntactically correct, then the integrated parser
automatically sets attributes of the corresponding graphical IDL element in the model.
The key to the approach is the add-on that is able to (1) parse the textual
language, and (2) based on the results of the parser, set multiple attributes on
the graphical modeling elements. This is important because it enables attributes
defined in the textual language to be integrated into the modeling language.
1. The add-on is invoked from inside the
modeling language by clicking the arrow on the
lower right-hand side of the element.</p>
        <p>IsWellFormed = false
Definition = “”</p>
        <p>HasKeys = false
4. If the IDL was syntactically
incorrect, the IsWellFormed attribute
of the element would be
automatically set to false.</p>
        <p>IDL parser
3. The IDL parser checks the IDL
for syntactic correctness.
};
2. User types the IDL code for the
element inside the integrated editor.</p>
        <p>IsWellFormed = true
Definition = “struct Position { …}”</p>
        <p>
          HasKeys = true
5. Because this example’s IDL is syntactically
correct, the following actions automatically
happen:
-The IsWellFormed attribute of the
element is set to true
-The Definition attribute is set to the value
of the IDL.
-The HasKeys attribute is set to true
because the IDL definition specifies a key
using the “//@key” comment.
The next challenge we describe deals with transforming high-level scheduling
properties of individual elements into a combined, low-level schedule for the
target platform. The motivation for this is that the target DREMS platform uses its
own scheduler, namely, a temporal partition scheduler [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] to schedule processes.
A partition is a logical group of executing processes in which all processes in
the same partition are periodically given exclusive access to the CPU. Exclusive
access means that no process from another partition is given access to the CPU
during this time. Each partition can contain any number of processes and is
defined by two attributes: a duration and a period. For instance, a partition with
a duration of 4ms and a period of 10ms will run for 4ms every 10ms, and during
these 4ms the processes it contains will have exclusive access to the CPU.
        </p>
        <p>In order for the target platform to schedule the temporal partitions at runtime
so that the period and duration constraints of each are satisfied, it must be given
a valid partition schedule. This partition schedule is a periodically repeating
set of time slices called hyperperiods. The partition schedule specifies when to
start each partition relative to the start of the hyperperiod. At the end of the
hyperperiod, the same schedule is repeated again.</p>
        <p>The multi-paradigm challenge with this is how to transform the
processpartition assignment graph as well as the high-level scheduling attributes (a
period and duration) of individual temporal partitions into a low-level partition
schedule that can be used at runtime by the operating system. This schedule
should be a part of the architecture description language because users must
know at design-time whether a satisfying partition schedule exists and if so, what
that schedule is. However, even for seemingly simple combinations of individual
partitions, calculating a schedule by hand can be a non-trivial task. Thus the
modeling language needs to hold enough information as well as provide a facility
to calculate this schedule automatically and present it to users.</p>
        <p>Figure 6 shows our solution using a small example. On the left side of Figure 6
are two processes (P1 and P2 ), defined inside the software part of the modeling
language. These two processes are assigned to two different partitions (P1 is
assigned to T1 and P2 is assigned to T2 ) in the software deployment portion
of the language. The schedule calculator is the solution that provides a bridge
between the individual temporal partitions and an integrated partition schedule.
It is implemented as an add-on to the modeling language using our modeling
environment’s extension API and provides a bi-directional interface both to and
from the modeling language.</p>
        <p>
          When the schedule calculator is invoked, it queries the model and collects
the individual temporal partitions. Next, it formulates the scheduling problem
as a constraint satisfaction problem [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. The constraint satisfaction problem is
then given to an off-the-shelf solver (the Z3 SMT solver [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]). If the solver cannot
find a solution, then it indicates a conflict with the temporal partitions and the
schedule calculator then informs the user so that the temporal partitions can be
modified.
        </p>
        <p>If a solution to the constraint satisfaction problem is found, then the
scheduling calculator must translate this solution into a partition schedule and insert
it into the model. Creating the partition schedule from the scheduling
calculator is done using the modeling environment’s API which provides programmatic
access for setting attributes.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Design-time analysis</title>
      <p>This section describes three automated analyses that we built for the modeling
language: security of communications, software component schedulability
analysis and network quality of service (QoS) analysis. Due to space constraints, we
only briefly describe each.</p>
      <p>The operating system provides security to applications through spatial
isolation (processes run in separate address spaces) and temporal isolation (temporal
partitions guarantee that processes get a guaranteed portion of processor time).
However, these two mechanisms alone cannot guarantee information flow
iso</p>
      <sec id="sec-4-1">
        <title>Partition schedule (generated)</title>
        <sec id="sec-4-1-1">
          <title>T1 Period: 20ms</title>
          <p>Duration: 5ms</p>
        </sec>
        <sec id="sec-4-1-2">
          <title>T2 Period: 10ms</title>
          <p>Duration: 4ms</p>
        </sec>
        <sec id="sec-4-1-3">
          <title>Software Deployment with partition schedule</title>
          <p>P1</p>
          <p>P2</p>
          <p>Process Library
(Software Language)</p>
        </sec>
        <sec id="sec-4-1-4">
          <title>T1 Period: 20ms</title>
          <p>Duration: 5ms</p>
        </sec>
        <sec id="sec-4-1-5">
          <title>T2 Period: 10ms</title>
          <p>Duration: 4ms</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>Temporal partitions</title>
        <p>Model
translated
into
constraints</p>
      </sec>
      <sec id="sec-4-3">
        <title>Model interface</title>
        <p>Solution
translated
into model</p>
      </sec>
      <sec id="sec-4-4">
        <title>Constraint solver</title>
        <sec id="sec-4-4-1">
          <title>Software Deployment</title>
        </sec>
        <sec id="sec-4-4-2">
          <title>Schedule Calculator</title>
          <p>
            lation between applications. This is important because the runtime system is
expected to host both trusted and untrusted (i.e., 3rd party) applications.
Preventing covert channel communication between applications is also important.
Our solution to this problem is a multilevel security (MLS) policy [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ] that uses
multi-domain labels. The modeling language supports the MLS policy with label
elements that are attached to the communication endpoints and processes; an
automated tool was built to check the compatibility of security labels between
communicating processes at design time.
          </p>
          <p>
            DREMS supports systems whose network quality and connectivity may vary
over time. To analyze whether the QoS requirements of processes can be
satisfied with time-varying networks, the modeling language supports QoS profiles
describing the expected network parameters (e.g, bandwidth, latency) over time
and QoS requirements that specify the network requirements of processes. An
automated tool based on the network calculus [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ] then analyzes whether the
QoS requirements of all processes can be satisfied.
          </p>
          <p>
            The third analysis relates to the verification of system properties, such as
deadline violations by software components. This approach is based on modeling
the abstract control flow and timing properties for component operations and
then combining them with a formalized model of hierarchical schedulers in the
system (the operating system scheduler and the component operation scheduler)
to generate an integrated Colored Petri Net (CPN) [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] model. This model can
be used to ensure that as long as the assumptions made about the system hold,
the behavior of the system lies within the safe regions of operation. For example,
the tool can verify that component operations will not cause deadline violations.
          </p>
          <p>Overall, these design time tools provide analyses to both application
developers and system integrators to ensure that the system meets the expected
requirements and is robust to the runtime constraints imposed by the environment
and the infrastructure.
6</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related work</title>
      <p>
        There are several architectural description languages and standards that have
similarities to ours, such as AADL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], OMG’s SysML [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], and AUTOSAR [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Both AADL and SysML are general-purpose architecture description languages
that support abstractions such as software components, hardware and system
integration. Our main reason for developing a custom architecture language was
the need fo a language closely coupled to the semantics of our target platform to
provide a sufficient level of tool automation. This required specific syntax and
semantics for modeling language elements like scheduling, component interactions
and security; using an AADL annex would have been too complex.
      </p>
      <p>
        AUTOSAR [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is a comprehensive standard for vehicle architectures that
has a component model similar to ours. The drawback is that the AUTOSAR
standard contains very little guidance on design-time analysis and tool support,
both of which are crucial for architecture design languages.
      </p>
      <p>
        There exist various approaches for integrating textual artifacts within
graphical modeling languages. XText [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is a framework integrated into the Eclipse
Modeling Framework (EMF) for developing domain-specific languages. From a
grammar in the XText grammar format, XText generates a parser that allows a
graphical editor and text editor to be simultaneously used to edit a file, with the
changes from each reflected in the other. The main difference to our approach is
that our add-on sets multiple attributes based on the contents of the text. XText
does offer an extension API that could be used to implement similar behavior.
      </p>
      <p>
        The work in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] considers the problem of using both textual and graphical
notations to modify models of the same language. This is different from our
work, which integrates textual code in one formalism with graphical models in
another formalism. Language workbenches [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] also offer language composition
features that can be used to combine textual and graphical languages for different
formalisms.
      </p>
      <p>
        Our temporal partition scheduler is based on the temporal partitioning method
described in the ARINC-653 avionics standard [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. ARINC-653 systems have
been modeled using AADL in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Unlike the ARINC-653 standard, which does
not require address separation between processes of the same partition, DREMS
allows system integrators to separate components into separate address spaces
(called actors) within the same partition. The main advantage of our approach
is that we can handle faults within related components (within the scope of
an actor) with guaranteed isolation. This is not possible with the ARINC-653
standard.
7
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions</title>
      <p>This paper presented the multi-paradigm challenges we faced when building an
architecture description language for distributed, real-time systems. The first
challenge was integrating two different formalisms: textual code and graphical
block diagrams. The second was computing a low-level runtime schedule from
individual, high-level temporal partitions. The third challenge was integrating
design-time analysis.</p>
      <p>In cases such as ours, where a significant level of tool automation is required,
we believe that a custom architecture language tailored to the semantics of the
runtime platform provides a big advantage. The alternative, using a standard
architecture language, can require adapations to code generators and automated
analysis tools to account for semantic differences between the language and the
runtime platform, such as scheduling or security.</p>
      <p>Acknowledgments: This work was supported by the DARPA System F6
Program under contract NNA11AC08C and USAF/AFRL under Cooperative
Agreement FA8750-13-2-0050. Any opinions, findings, and conclusions or
recommendations expressed in this material are those of the author(s) and do not
necessarily reflect the views of DARPA or USAF/AFRL.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>ARINC</given-names>
            <surname>Incorporated</surname>
          </string-name>
          , Annapolis, Maryland, USA.
          <source>Document No. 653: Avionics Application Software Standard Inteface (Draft</source>
          <volume>15</volume>
          ),
          <year>January 1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Autosar</given-names>
            <surname>GbR. AUTomotive Open System</surname>
          </string-name>
          <article-title>ARchitecture</article-title>
          . http://www.autosar. org/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Leonardo Mendonça de Moura and Nikolaj Bjørner.
          <article-title>Z3: An efficient smt solver</article-title>
          .
          <source>In TACAS</source>
          , pages
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Julien</given-names>
            <surname>Delange</surname>
          </string-name>
          , Laurent Pautet, Alain Plantec, Mickael Kerboeuf, Frank Singhoff, and
          <string-name>
            <given-names>Fabrice</given-names>
            <surname>Kordon</surname>
          </string-name>
          .
          <article-title>Validate, simulate, and implement ARINC 653 systems using the AADL</article-title>
          . In SIGAda, SIGAda '
          <volume>09</volume>
          , pages
          <fpage>31</fpage>
          -
          <lpage>44</lpage>
          , New York, NY, USA,
          <year>2009</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Luc</given-names>
            <surname>Engelen</surname>
          </string-name>
          and Mark van den Brand.
          <article-title>Integrating textual and graphical modelling languages</article-title>
          .
          <source>Electron. Notes Theor. Comput. Sci.</source>
          ,
          <volume>253</volume>
          (
          <issue>7</issue>
          ):
          <fpage>105</fpage>
          -
          <lpage>120</lpage>
          ,
          <year>September 2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Tihamer</given-names>
            <surname>Levendovszky</surname>
          </string-name>
          et al.
          <article-title>Distributed real-time managed systems: A modeldriven distributed secure information architecture platform for managed embedded systems</article-title>
          .
          <source>IEEE Software</source>
          ,
          <volume>31</volume>
          (
          <issue>2</issue>
          ):
          <fpage>62</fpage>
          -
          <lpage>69</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Moritz</given-names>
            <surname>Eysholdt</surname>
          </string-name>
          and
          <string-name>
            <given-names>Heiko</given-names>
            <surname>Behrens</surname>
          </string-name>
          . Xtext:
          <article-title>Implement your language faster than the quick and dirty way</article-title>
          .
          <source>In SPLASH, SPLASH '10</source>
          , pages
          <fpage>307</fpage>
          -
          <lpage>309</lpage>
          , New York, NY, USA,
          <year>2010</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>P.H.</given-names>
            <surname>Feiler</surname>
          </string-name>
          , Bruce A.
          <string-name>
            <surname>Lewis</surname>
            , and
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Vestal</surname>
          </string-name>
          .
          <article-title>The SAE Architecture Analysis &amp; Design Language (AADL) A Standard for Engineering Performance Critical Systems</article-title>
          .
          <source>In Computer Aided Control System Design</source>
          , pages
          <fpage>1206</fpage>
          -
          <lpage>1211</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Matthew</given-names>
            <surname>Hause</surname>
          </string-name>
          et al.
          <article-title>The SysML Modelling Language</article-title>
          .
          <source>In Fifteenth European Systems Engineering Conference</source>
          , volume
          <volume>9</volume>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>George</surname>
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Heineman</surname>
          </string-name>
          and Bill T. Councill.
          <article-title>Component-Based Software Engineering: Putting the Pieces Together</article-title>
          . Addison-Wesley, Reading, Massachusetts,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <article-title>Kurt Jensen and Lars Michael Kristensen</article-title>
          .
          <source>Coloured Petri Nets - Modelling and Validation of Concurrent Systems</source>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Terence</given-names>
            <surname>Parr</surname>
          </string-name>
          .
          <source>The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>Klaus</given-names>
            <surname>Schild</surname>
          </string-name>
          and
          <string-name>
            <given-names>Jörg</given-names>
            <surname>Würtz</surname>
          </string-name>
          .
          <article-title>Scheduling of time-triggered real-time systems</article-title>
          .
          <source>Constraints</source>
          ,
          <volume>5</volume>
          (
          <issue>4</issue>
          ):
          <fpage>335</fpage>
          -
          <lpage>357</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Lothar</surname>
            <given-names>Thiele</given-names>
          </string-name>
          , Samarjit Chakraborty, and
          <string-name>
            <given-names>Martin</given-names>
            <surname>Naedele</surname>
          </string-name>
          .
          <article-title>Real-time calculus for scheduling hard real-time systems</article-title>
          . In in ISCAS, pages
          <fpage>101</fpage>
          -
          <lpage>104</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>Markus</given-names>
            <surname>Völter</surname>
          </string-name>
          and
          <string-name>
            <given-names>Eelco</given-names>
            <surname>Visser</surname>
          </string-name>
          .
          <article-title>Language extension and composition with language workbenches</article-title>
          .
          <source>In SPLASH, SPLASH '10</source>
          , pages
          <fpage>301</fpage>
          -
          <lpage>304</lpage>
          , New York, NY, USA,
          <year>2010</year>
          . ACM.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>