<!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>Extendable Toolchain for Automatic Compatibility Checks</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vincent Bertram</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Roth</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Rumpe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael von Wenckstern</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Fraunhofer FIT</institution>
          ,
          <addr-line>Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Software Engineering, RWTH Aachen University</institution>
          ,
          <addr-line>Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>49</fpage>
      <lpage>56</lpage>
      <abstract>
        <p>Embedded software systems are highly configurable and consist of many software components in different variants and versions. However, component updates or upgrades often result in unpredictable incompatibilities with its environment. Existing research addresses this challenge by employing formal methods with a fixed set of encoded static compatibility checks, making it nearly impossible for engineers to add new or modify existing ones. This paper presents a highly adaptable infrastructure to define constraints for compatibility checks. The underlying approach transforms software components into instances of a C&amp;C meta-model, enriched with OCL compatibility constraints at runtime, then evaluated by a solver. The result is transformed back into a C&amp;C model showing compatibility or incompatibility. The easy to integrate infrastructure is based on industrial requirements and allows to add, modify or delete constraints without restarting the tool infrastructure.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Software systems for embedded devices are highly configurable consisting of a
variety of components in different variants and versions [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Because these
components are tightly integrated into their environment, which consists of multiple
other software components, updates/upgrades often result in unpredictable
incompatibilities between its interacting components. In many cases
updates/upgrades are possible by adapting the component. However, to determine
compatibility, as defined in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], static compatibility checks with a fixed set of constraints
are proposed [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], which hampers adding new or modifying existing constraints.
This paper presents an adaptable infrastructure based on industrial requirements
to define and adapt compatibility constraints for checks between components
using OCL at runtime. It is based on the meta-model as proposed in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], which
allows, in contrast to other verification frameworks [
        <xref ref-type="bibr" rid="ref16 ref19 ref8">8,16,19</xref>
        ], besides intra- also
inter-model verification of constraints between Component &amp; Connector (C&amp;C)
models of even different modeling languages such as Simulink [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] or
Modelica [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The underlying approach transforms models of software components to
instances of the C&amp;C meta-model, which is enriched with OCL compatibility
constraints. The instances and constraints are then evaluated by a solver and
transformed into a user friendly C&amp;C model showing (in)compatibility based
pressure
sensor value
speed sensor
value ([0…250])
oxygen
sensor value
      </p>
      <p>ECU_V1
«turn off urea amount
if speed sensor &gt; 135»
urea amount
changed
constraint</p>
      <p>
        ECU_V2
«turn off urea amount
if speed sensor &gt; 125»
on a counter-example [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Our infrastructure allows to modify, delete, and add
constraints and supports the addition of new transformations to check arbitrary
(heterogeneous) C&amp;C architectures without changing the infrastructure itself.
      </p>
      <p>Next is an example in Sec. 2 which is followed by a set of industrial
requirements in Sec. 3. Sec. 4 introduces the tools and languages used by the
infrastructure proposed in Sec. 5. Sec. 6 describes the technical realization. Finally, Sec. 7
and Sec. 8 compare our approach to existing work and conclude this paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivating Example</title>
      <p>As a motivating example, we use a simplified emission control system as used in
automotive industry. The Electronic Control Unit (ECU) has an input for the
pressure value of the exhaust system, a speed sensor for the current velocity,
and an oxygen sensor. Using these values, the urea amount is triggered to clean
emissions. Now a team of developers is responsible to develop a new version of the
controller to maximize gas mileage. In this context, ECU V2 has been developed.
It has the same ranges for all input ports but the constraint when to turn off
the emission control has been changed from 135 km/h to 125 km/h (see Fig. 1).</p>
      <p>Due to varying regulations in different countries (in Germany the emission
control can be turned off if the speed is greater 120 km/h, whereas in the US
it can be turned off if speed is greater 128 km/h), a developer team member is
unsure if the new version can be used in the US and in Germany. Her doubts
are justified: on the component’s type level the different versions seem to be
compatible. However, due to the additional constraint they are not. In particular,
for the German market, the newer version is compatible (requires a turn off if
speed &gt; 120 km/h), whereas in the US the new version is not compatible because
the emission control is turned off too early. Our proposed solution does not only
allow to check such compatibilities between different component versions, but
it also allows to dynamically en-/disable OCL constraints, e.g. local market
regulations such as emission control, during tool runtime.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Industrial Requirements</title>
      <p>The proposed approach is developed with respect to a set of requirements, which
are derived from the SPES XT project1. They indicate that a differentiation
be1 http://spes2020.informatik.tu-muenchen.de/spes_xt-home.html
tween engineers (who are using the toolchain) and developers (who are extending
the toolchain), is required. Subsequently, a set of the main requirements is
introduced:</p>
      <p>(R1) Compatibility constraints have to be defined in comprehensive and
concise notation: Most engineers are only familiar with Java- or C-like syntax.
Therefore, specifying constraints must hide all model-checking aspects.</p>
      <p>(R2) The tool should support heterogeneous C&amp;C architecture models: Since
in industry various C&amp;C architectures including third party plugins or in-house
developments are used, the tool should be easily extendable.</p>
      <p>(R3) Developers should be able to modify structural compatibility constraints:
Compatibility rules must be adaptable instead of hardwire them to support
different local markets and to be flexible for changing laws.</p>
      <p>(R4) Meaningful and model related error messages: Reported violations
must be easy to comprehend for engineers, having no deep knowledge of
formal methods. Therefore, expressive descriptions relating to source C&amp;C models
should point to components being affected with incompatibility.</p>
      <p>(R5) C&amp;C model files should not be modified: The tool should also derive
compatibility statements (probably weaker ones, because of missing information)
between older (without touching them) and newer Simulink models.</p>
      <p>(R6) Compatibility checking should be easy for engineers: A seamless
integration into existing C&amp;C modeling tools such as Simulink should be supported.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Modeling C&amp;C Architectures and Constraints</title>
      <p>
        The realization of the proposed approach is based on the MontiCore (MC)
framework [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], which is a light-weight and highly customizable language workbench
supporting language development and facilitates all elements of language
definition, language processing, and code generation.
      </p>
      <p>
        A language family, realized with the MC framework, is the UML/P language
family [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], which is rooted on the Unified Modeling Language (UML) family.
It provides a set of modeling languages, supporting reduced modeling language
concepts with clear semantics, addressing different aspects of software
development. For example, the UML/P Class Diagram (CD) modeling language can be
used to model structural aspects. Instances, of this structure can be described
using the UML/P Object Diagram (OD) language, and constraints for the
structural model can be defined by the UML/P object constraint modeling language
(OCL/P). To model C&amp;C architectures, Simulink, an industrial modeling tool
is used. The MC framework has been extended to process Simulink models and
to generate queries for the Microsoft Z3 Satisfiability Modulo Theories (SMT)
solver [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], which finds solutions for first-order decisions problems.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Extendable Infrastructure for OCL Evaluation</title>
      <p>An approach has been developed to check for structural compatibility of two
components, which satisfies the requirements described in Sec. 3 and is based</p>
      <sec id="sec-5-1">
        <title>MontiCore Framework</title>
        <p>➁
metamodel.cd
«consistent»
«instantiation» compatibility.ocl
«uses»
V1.od
V2.od
➈
ccoouunnteterErExxaammppl eleN1..oodd
➇
eerrrororMrMeessssaaggeeN1..ttxxtt
plug-in points
④
④
➂
➂
eerrrroorrCClalassssN1..ooccll
eerrrororCrCl alassssN1..ssmmtt22
q
u
e
.r
y
s
m
t
2
metamodel.smt2
compatibility.smt2</p>
      </sec>
      <sec id="sec-5-2">
        <title>SMT Solver</title>
        <p>➄
➆</p>
        <p>V1.smt2
V2.smt2
➄
➄
➄
➄</p>
      </sec>
      <sec id="sec-5-3">
        <title>Role: Engineer</title>
        <p>➅
answer.smt2</p>
      </sec>
      <sec id="sec-5-4">
        <title>Developer</title>
      </sec>
      <sec id="sec-5-5">
        <title>C&amp;C Model</title>
        <p>V1.slx
V2.slx
➀
➀
ccoouunnteterErExxaammppl eleN1..mm</p>
        <p>
          ➉
counterExample.slx
on C&amp;C architectures and user-friendly (R1) constraint modeling language. The
proposed approach, shown in Fig. 2, is composed of five plug-in points, which
enable dynamic support for different modeling languages such as Simulink ,
TargetLink and Modelica and solvers such as Alloy [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], Yices [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], and Z3 [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] (R2).
Since all transformations are dynamically executed during the checking process,
redefinitions and extensions of compatibility definitions and compatibility
variations (e.g. for local markets) are supported (R3).
        </p>
        <p>
          The numbers (1) to (10) in Fig. 2 represent the processing steps: (1)
transforms C&amp;C input models to ODs, which are an instantiation of the meta-model
for all well-established and commonly used C&amp;C modeling languages. More
information about this meta-model can be found in one of our previous work [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
(2), (3) and (4) generate for all UML/P language family artifacts (CDs, OCL
constraints, and ODs) solver specific ones. The parts are merged to one query
document in (5), and evaluated by the solver in (6), which produces an artifact
containing - in case of incompatibility - instantiations of error classes. Each error
class is transferred back to one or several counterexample ODs in (7). These error
class ODs are used to generate user-friendly text messages in (8) and to produce
in (9) Matlab code generating visual counterexamples with minimal witnesses
when executed in (10). Underspecification, which may occur in transformation
steps (3) and (4), when checking compatibility constraints between older (not
enriched model with less information) and newer (more information) C&amp;C
components (R5), is handled by dynamically not executing particular constraints.
        </p>
        <p>
          The toolchain is divided into a C&amp;C Engineer Frontend, a MC Developer
Frontend, and a Solver Backend, each of which addressed by either an
automotive engineer modeling Advanced Driver Assisted System (ADAS) functionality
(gray-slashed artifacts) or a quality control/assurance (QA/QC) developer
specifying compatibility constraints and different error classes (gray-lined artifacts).
Engineer View The automotive engineer initiates the compatibility check in
Simulink (R6), therefore the engineer must not learn a new tool. The result
annotated with error descriptions is presented as a Simulink model (R4), since
the engineer already knows Simulink with its syntax and semantics, thus, he
is able to understand the error messages. The witness generation algorithm is
based on previous work done by Ringert [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and is showing the constraint
violating part of the model (see Fig. 3). The example points directly to the
violated constraint US::EmissionControl when checking backwards
compatibility of ECU V2 to ECU V1. As the algorithm does not find a witness violating
EU::EmissionControl, backwards compatibility is still given for the German
market.
        </p>
        <p>
          Developer View The developer defines compatibility constraints and
counterexamples as well as additional regional constraints as presented in Sec. 2 in
OCL/P using the MC developer frontend. These counterexample specifications
are used to generate useful feedback for automotive engineers in case of
component incompatibility as shown in Fig. 3. Fig. 4 illustrates how MC transforms
OCL/P code to SMT code for use with the Z3 solver. A more detailed textual
description of the code and how a counterexample in OCL/P looks like can be
found in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Our student survey found out that OCL/P code is easier to learn
than SMT code, because the syntax is Java like, especially with the infix
operator notation, whereas most students are not very familiar with SMT’s prefix
notation making it more difficult to match what arguments belongs to what
prefix-operator. A more complex example, comparing two ADAS, and showing
how unoptimized generated SMT code actually looks like is available at:
http://rise4fun.com/Z3/2AsLg
        </p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Performance Considerations</title>
      <p>The overall performance of this approach mainly depends on the generator. In
particular, how it generates solver-specific code from the UML/P language family
artifacts. Since our motivating example is too small, a bigger model comparing
interface compatibility of two ADAS is taken from the SPES XT project. Tab. 12
shows the impact of the generator where model A is compatible to model B, and
model A has 126 components as well as model B has 97 components. Note that
all artifacts are translated into SMT code using different generator strategies,
and then evaluated by Microsoft’s Z3 solver.</p>
      <p>This table underlines that the verification execution time mainly depends
on the optimizations implemented by the generator. The difference between the
2nd and 3rd column is that in the 2nd one no simplify constraints had been
generated and the 3rd one added the simplify solve-eqs smt command to the
generated SMT code. Due to the highly customizable toolchain infrastructure
providing several plug-in points, it is possible to integrate different optimization
steps. Tab. 1 also shows that it was a good idea to introduce CDs and OCL
constraints as intermediate layer, because this layer is independent of all solver
specific optimizations; translating Simulink models directly to SMT code and
formulating the compatibility constraints directly in Z3 code would probably
result in changing them all the time and polluting the model with solver strategy
annotations just for performance reasons - which would make them very hard to
read and nearly impossible to reuse at the end.
model time [s] time* [s] change in generated Z3 code
m1 timeout 10.08
m2 126.68 10.44 remove custom datatypes
m3 93.55 12.86 change encoding of meta-model
m4 138.38 10.47 use ite (if-then-else) instead of implies after quantifier
m5 70.74 8.34 replace enumeration datatypes by integers
m6 19.05 4.33 replace id hash with an unique id starting at zero
m7 15.17 4.23 remove unnecessary ites when translating OCL to Z3</p>
      <p>In the first version (m1) the meta-model, the ODs and the OCL constraints
were nearly one by one translated to SMT code. The result was quite readable
SMT code, as this code shows for the Connector element, which connects a
source port, (List Name) represents its full qualified name, with a target port
(see Fig. 5). Note that accessing some parts of a C&amp;C model element could also
be done very intuitively, e.g. (source con) where con is a Connector variable.</p>
      <p>In the last generated model version (m7) all meta-model element structures
were flattened to integers. This means there is no such Connector element in
Z3 code; instead of every element is represented by an unique id and accessing
a C&amp;C element part is now done by accessing a function (see Fig. 5).
Additionally, all names, e.g. port names, have been replaced by an unique integer.
2 measured by Nicolai Strodthoff in his bachelor thesis
1; meta-model definition
2(declare-datatypes () ((Connector (mk-connector (source (List Name))
3 (target (List Name)) (id ID))))) (code is an excerpt)
4; instance creation
5(mk-connector (insert n_switch1 (insert n_out1 nil))
6 (insert n_mul (insert n_in2 nil)) id_1593458942)
1(define-fun getConnectorSourceFromId ((id Int)) (List Int)
2(declare-datatypes () ((Connector (mk-connector (source (List Name))
3 (ite (= id 2) (insert 2 (insert 56 nil))
4 (ite (= id 14) (insert 0 (insert 56 nil))
The entire post-processing step such as flattening data structures and replacing
names by integer number is done by using the plug-in point (5) in Fig. 2 after
all documents have been merged to one query document. The last optimization
from m6 to m7 used the plug-in point (6) by removing ites in Boolean OCL
constraints. The code (ite cond1 true (ite cond2 false (ite cond3 true
...)) true) will be replaced by (or cond1 cond3 ...).</p>
      <p>This study shows that the modular and extendable architecture supports
flexibility, i.e., replace the Z3 solver with another one like Alloy, and adaptations
of generator algorithms to optimize performance.
7</p>
    </sec>
    <sec id="sec-7">
      <title>Related Work</title>
      <p>
        Besides our toolchain, there exist several frameworks for compatibility
analysis. We want to mention here six representatives: (1) Dajsuren’s architectural
framework [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], which checks consistencies between multiple software views by
lifting their detailed information up to more abstract functional views. (2)
ActiveTreaty [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] validates component compatibility (interface as well as behavioral
one) using contracts which can be described in Java or OCL using the Dresden
OCL [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] Eclipse plugin. (3) USE [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] allows to specify and check OCL constraints
on UML models. (4) MATE [
        <xref ref-type="bibr" rid="ref1 ref19">19,1</xref>
        ] defines constraints directly in Simulink ; this
results in modifying all existing Simulink models when adding new constraints
(violating (R5)). (5) Massif [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] on the other hand, provides a specific MATLAB
Ecore meta-model and a tool instantiating these meta-models (satisfying (R5));
but the Simulink specific meta-model hampers support for heterogeneous
models (see (R2)). (6) SimCheck [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] can check (only) intra-model compatibilities
and can generate counterexamples by annotating Simulink models; however,
SimCheck hard-wires their data type, unit and dimension checks directly into
Simulink models by annotating them with 7-tuple structures basing directly on
their solver language; which makes it very hard to maintain these constraints for
developers (see (R3)).
8
      </p>
    </sec>
    <sec id="sec-8">
      <title>Conclusion</title>
      <p>Update of software components are very unpredictable due to different versions,
variants, and configuration options. Based on a set of industrial requirements and
on running example, a highly adaptable infrastructure to check compatibility
constraints is presented. It is based on a generic meta-model and employs OCL
at runtime, which allows high customizability and heterogeneous support for
C&amp;C architectures. The underlying approach supports different requirements of
engineers and QA/QC developers to satisfy future infrastructure extensions and
provide a user friendly witness-based error interface.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Amelunxen</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , Ko¨nigs,
          <string-name>
            <surname>A.</surname>
          </string-name>
          , Ro¨tschke, T., Schu¨rr, A.:
          <article-title>Moflon:a standard-compliant metamodeling framework with graph transformations</article-title>
          .
          <source>In: ECMDA-FA</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Anastasakis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bordbar</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Georg</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ray</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>On challenges of model transformation from UML to Alloy</article-title>
          . Software &amp; Systems
          <string-name>
            <surname>Modeling</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bertram</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Manhart</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plotnikov</surname>
            ,
            <given-names>D.</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>von Wenckstern</surname>
          </string-name>
          , M.:
          <article-title>Infrastructure to Use OCL for Runtime Structural Compatibility Checks of Simulink Models</article-title>
          . In: Modellierung (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bertram</surname>
            ,
            <given-names>V.</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>von Wenckstern</surname>
          </string-name>
          , M.:
          <string-name>
            <surname>Encapsulation</surname>
            ,
            <given-names>Operator</given-names>
          </string-name>
          <string-name>
            <surname>Overloading</surname>
          </string-name>
          , and
          <article-title>Error Class Mechanisms in OCL</article-title>
          . In: OCL16 (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. Bru¨ning, J.,
          <string-name>
            <surname>Gogolla</surname>
          </string-name>
          , M., Hamann, L.,
          <string-name>
            <surname>Kuhlmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Evaluating and Debugging OCL Expressions in UML Models</article-title>
          . In: TAP (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Cok</surname>
            ,
            <given-names>D.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stump</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weber</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>The 2013 Evaluation of SMT-COMP and SMTLIB</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Dajsuren</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerpheide</surname>
            ,
            <given-names>C.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Serebrenik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wijs</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vasilescu</surname>
          </string-name>
          , B., van den Brand, M.G.:
          <article-title>Formalizing correspondence rules for automotive architecture views</article-title>
          . In: QoSA (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. Hegedu¨s,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Starr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.R.</given-names>
            , Bu´r, M.,
            <surname>Nascimento</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            , Do´czi, R.,
            <surname>Mirachi</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ,
          <article-title>Ra´th, Istva´n und Horva´th, A.: Massif: Matlab simulink integration framework for eclipse (</article-title>
          <year>2015</year>
          ), http://github.com/FTSRG/massif
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Hussmann</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Demuth</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Finger</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Modular architecture for a toolset supporting OCL</article-title>
          .
          <source>Science of Computer Programming</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kasoju</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petersen</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , Ma¨ntyla¨, M.V.:
          <article-title>Analyzing an automotive testing process with evidence-based software engineering</article-title>
          .
          <source>IST</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Krahn</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , Vo¨lkel, S.:
          <article-title>MontiCore: a Framework for Compositional Development of Domain Specific Languages</article-title>
          .
          <source>STTT</source>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Mathworks</surname>
          </string-name>
          <article-title>: Simulink User's Guide</article-title>
          .
          <source>Tech. rep. (</source>
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Modelica Association: Modelica - A Unified</surname>
          </string-name>
          Object
          <article-title>-Oriented Language for Systems Modeling</article-title>
          .
          <source>Tech. rep. (</source>
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Moura</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bjørner</surname>
          </string-name>
          , N.:
          <article-title>Z3: An Efficient SMT Solver</article-title>
          . In: TACAS (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          :
          <article-title>Analysis and Synthesis of Interactive Component and Connector Systems</article-title>
          . Shaker Verlag (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Roy</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shankar</surname>
          </string-name>
          , N.:
          <article-title>Simcheck: A contract type system for simulink</article-title>
          .
          <source>Innov. Syst. Softw. Eng</source>
          . (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Modeling with UML: Language, Concepts</article-title>
          ,
          <source>Methods</source>
          . Springer (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <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>von Wenckstern</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ringert</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Manhart</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Behavioral Compatibility of Simulink Models for Product Line Maintenance and Evolution</article-title>
          . In: SPLC (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. Stu¨rmer, I.,
          <string-name>
            <surname>Kreuz</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , Scha¨fer, W., Schu¨rr, A.:
          <article-title>The mate approach: Enhanced simulink and stateflow model transformation</article-title>
          . In: MathWorks Automotive Conference (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Wilke</surname>
            ,
            <given-names>B.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dietrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Demuth</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Event-Driven Verification in Dynamic Component Models</article-title>
          . In: WCOP (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>