<!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>
      <journal-title-group>
        <journal-title>AvioSE</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Model-Based Engineering for Avionics: Will Specification and Formal Verification e.g. Based on Broy's Streams Become Feasible?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Stefan Kriebel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Deni Raco</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="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sebastian St u¨ber</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>BMW Group</institution>
          ,
          <addr-line>Munich</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Chair of Software Engineering, RWTH Aachen University</institution>
          ,
          <addr-line>Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <volume>1</volume>
      <fpage>87</fpage>
      <lpage>94</lpage>
      <abstract>
        <p>-Avionics is definitely a safety-critical application domain. Software complexity is ever increasing together with more autonomy as well as increased real-time based interaction between airplanes, drones and potentially future air taxis. This again raises the question, whether developing software the same way as we did the last 30 years is still appropriate, or in the times of much better formal methods and cheap and powerful computational capabilities, it would be feasible to use clear and model-based specification techniques for an integrated systems engineering approach and formally verify any physical and logical implementation of functionality, including the software against that specification. This could be another important step towards quicker development of highly safetycritical systems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        In this paper, we demonstrate early results on a small part
of this systems engineering approach, namely using a
userfriendly architecture description language [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and proving
safety-critical properties in the theorem prover Isabelle [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
Because the theory and its underlying methodological concepts
are too much to be explained in this short paper, we highlight
a small example only, focusing on the demonstration of the
feasibility of formal verification of complex software.
      </p>
      <p>
        Therefore, the paper demonstrates the use of the
FOCUS framework [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]–[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] for specifying distributed interactive
systems and verifying safety-critical properties of real-time
critical software such as common in avionics systems. The
methodology is modular with respect to composition. A
userfriendly architecture description language (ADL) like
MontiArc [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] serves as a developer frontend, allowing a state-based
specification of components [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and enables the definition
of the desired safety-critical properties. An appropriate tool
maps the ADL model and its behavior specifications into
specifications and theorems in the theorem prover Isabelle
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. There, general composition operators exist that compose
specifications of the components into a specification of the
overall system. Properties can be specified on a global scale
and decomposed as well and proven on atomic components.
Composition of properties leads to globally correct software.
Furthermore, refinement of a component in a decomposed
structure automatically leads to refinement of the composition,
which allows to individually develop each component, but also
to replace variants of implementations along the life cycle of a
system. High-automation of the proofs, as well as the handling
of feedback loops, unbounded non-determinism, time-sensitive
specifications, safety and liveness properties, and refinement
checking are key for an efficient development process.
      </p>
      <p>The rest of this paper is structured as follows: First, a
motivation for the methodology is given. Then, the underlying
theory is presented. Next, the tool chain consisting of the
frontend DSL, the mathematical backend, and the generator is
illustrated. Finally, the verification of a property of the running
example is demonstrated.</p>
    </sec>
    <sec id="sec-2">
      <title>II. BACKGROUND</title>
      <p>
        Designing distributed systems [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] which react in
realtime, are dependable and fulfill safety and liveness
requirements, is a challenging problem [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Formulating
requirements only in natural language is still common in the
embedded industry and the challenging part is to early detect
and avoid ambiguity [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and inconsistencies [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In
safetycritical systems errors might lead to injury or high costs
as consequences [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. For this reason, formal methods, like
CSP [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], FOCUS [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], CCS [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], Petri Nets [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], or
the -calculus [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] are used to detect potential sources of
errors earlier [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. However, an important property which
makes the methodology of this paper stand out among the
competitors above is that refinement of a component in a
decomposed structure automatically leads to refinement of the
composition [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] (thus refinement is fully compositional).
      </p>
      <p>
        Avionics have long life cycles and a lot of maintenance
is needed [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Further growth in flying vehicles, passenger
numbers and cargo is expected. Since the spatial expansion
possibilities of the system infrastructure are limited, the use
of correct software systems becomes vital [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. It is thus not
without reason that the list of considerations for the production
of software for airborne systems named ED-12C/DO-178C has
as its motto: ”the greater the software development rigor, the
fewer errors occur in software design” [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
      </p>
      <p>
        Safety-critical functionalities in avionics are usually treated
by a complex system management, which deals with fault
detection and redundancy management [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. The increasing
complexity in avionics is heavily due to [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]:
the increasing number of features,
the internal complexity of each feature,
interaction among features,
better scientific instruments,
processing large amount of data in real time,
thousands of sensors and measurement devices,
redundant components, ready to automatically configure
themselves in case of failures.
      </p>
      <p>
        For a stepwise correct design of avionics systems, a
modelbased methodology [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] would be beneficial. A modeling
ADL offers the architect a way to express the knowledge about
a process, and the created models can be translated into other
models or executable code [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Most importantly, the models
of the software can be tested or verified, independent of the
hardware. By having testing or verification being performed
parallel to the software model design, before committing to
hardware, the likelihood that design errors are recognized late
and potentially bring high costs is reduced.
      </p>
      <p>
        Some further reasons for the usefulness of testing or
verifying the software models are [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]:
by verifying early in the life cycle before hardware is
available, one reduces the number of needed tests on the
physical system,
software models can enable one to have access to
submodules and test those separately, whereas in hardware
this might be in some cases physically not possible,
even if sometimes accessing hardware sub-modules might
be possible, it might mean causing damage to it,
testing fault protection behaviors might be highly costly
and damaging.
      </p>
      <p>
        Testing components, however, on all combinations of inputs
and states (represented by the variable values at a certain point
in time) might be not feasible. In addition, when comparing
testing strategies from the literature, it is usually hard to show
that one testing strategy would always detect more faults than
another one [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
      <p>In this paper a methodology for specifying and verifying
distributed interactive systems is demonstrated and applied on
an example.</p>
    </sec>
    <sec id="sec-3">
      <title>III. UNDERLYING THEORY</title>
      <p>
        The methodology presented in this paper builds on the
mathematical underpinning FOCUS [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and is implemented
as a tool chain depicted in Fig. 1, being particularly suited for
usage in safety-critical systems such as avionics. The frontend
of the tool chain MontiArc [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] (created with MontiCore [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ],
[
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]) is a developer-friendly domain-specific language for the
specification of component interfaces, their behavior and their
composition. A MontiArc model is transformed by a code
generator into an Isabelle automaton specification, and then
this (potentially non-deterministic) automaton is mapped to
its semantics, namely a (set of) stream processing functions.
      </p>
      <p>
        Components communicate through sending and receiving
messages through directed channels. A stream (a potentially
infinite sequence of messages from an alphabet) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] represents
the communication history of a channel. The semantics [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ]
of a (potentially non-deterministic) component is a (set of)
stream processing functions [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        Since streams model history, not all functions over streams
model real-life interactions. Only a subset of these
functions fulfilling certain properties are suited to model
reallife components. A component cannot take an already emitted
message back. This means that an extension of the input can
only lead to an extension of an output. This is known as
monotonicity [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Second, to define liveness properties, one
needs infinite streams to describe full histories. It is however
not implementable to look at the complete (infinite) input
stream to emit an output message (which of course occurs
after a finite time). Enforcing this means restricting the set of
functions to the so-called continuous ones [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In addition to
restraining from reacting to infinity, continuous functions also
guarantee the existence and the inductive computation of least
fixed points, which is necessary to give meaning to feedback
loops [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ].
      </p>
      <p>
        All above mentioned domain-theoretical concepts has been
formalized in the theorem prover Isabelle/HOLCF (HOL
stands for higher-order logic, CF stands for computable
functions) in [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ], [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ] and [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ] independently formalized parts
of FOCUS in Isabelle/HOL (without domain-theory). [
        <xref ref-type="bibr" rid="ref36">36</xref>
        ]–
[
        <xref ref-type="bibr" rid="ref41">41</xref>
        ] were some first results in formalizing streams in the
theorem prover Isabelle with domain-theoretical concepts, and
constitute the foundation of this paper. On the other hand,
the tool-chain named AutoFOCUS [
        <xref ref-type="bibr" rid="ref42">42</xref>
        ] has had early results
in using the HOL-formalization of FOCUS. A further related
work to formalize model component networks is the Ptolemy
Project [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref43">43</xref>
        ] where the authors create a framework for
actor-oriented design. Also, an approach to verify
AADLmodels is presented in [
        <xref ref-type="bibr" rid="ref44">44</xref>
        ].
      </p>
      <p>
        For simple event-based communication, an untimed stream
approach is sufficiently expressive to model an interactive
system. In real-time systems, however, a timed model is
much more appropriate. This allows software to react on
absence of messages and signals. A formal specification of
such a software component therefore does not only incorporate
reactive behavior, but also timing specification on both sides:
along with a component’s reaction, it is also considered how
long the neighbor systems, sensors etc. have time to respond.
One mathematically simple and powerful way to model time is
to extend the set of sent messages with a virtual element called
tick and enforce infinitely many ticks in each infinite behavior
observation. Two consecutive ticks describe an equidistant
time interval with only finitely many occurring messages. In
certain circumstances this observation may be reduced to at
most one or even exactly one message per time interval. Focus
is capable of handling all these variants even in combination.
Focus can also look at different time scales [
        <xref ref-type="bibr" rid="ref45">45</xref>
        ], [
        <xref ref-type="bibr" rid="ref46">46</xref>
        ] allowing
the developer to select the right time abstraction for each
component.
      </p>
      <p>
        As said, specifications of component behavior are
mathematically formalized as a set of functions mapping timed
input streams to timed output streams. To model correct
behavior (i.e. not looking in to the future), some restrictions,
such as weak-causality or even embodying some delay in
form of strong-causality e.g. to avoid the Brock-Ackermann
anomaly [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref47">47</xref>
        ] in feedback compositions. The concept
of monotonicity, continuity and causality are often generally
referred to as realizability or interactive computability [
        <xref ref-type="bibr" rid="ref48">48</xref>
        ],
the equivalent concept to computability of partial functions
carried over to interactive systems.
      </p>
      <p>
        To support system decomposition, operators for sequential,
parallel and feedback composition are encoded in Isabelle, as
well as a general composition operator [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref49">49</xref>
        ]. A high-level
API is provided in this work to hide fixed-point theory from
the user.
      </p>
      <p>
        One of the strengths of the methodology of this work is that
by using a variant of non-deterministic and thus underspecified
state machines with input/output [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] to define the components
behavior, the system is by construction realizable [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref50">50</xref>
        ].
Those state machines receive their semantics as sets of stream
processing functions [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and are thus fully integrated into the
refinement and composition framework that FOCUS provides
within Isabelle. These realizable stream processing functions
are an abstraction to the automata with input/output from [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ],
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] in the same way that partial functions are an abstraction
to the Turing machines.
      </p>
      <p>
        One important particularity of this methodology is that the
composition of realizable functions is realizable as well [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ],
[
        <xref ref-type="bibr" rid="ref49">49</xref>
        ]. So a realizable composed system can be hierarchically
decomposed into a collection of realizable components, each
represented by a (set of) stream processing functions. This way
a complex architecture can be built in a fully compositional
way.
      </p>
      <p>As already mentioned, sets of functions are used to give
specifications a meaning allowing multiple behaviors, either
due to potential non-determinism of the components, or due
to insufficient information during development.</p>
      <p>
        Refinement is used to make underspecified components
specifications more precise along the development process.
Underspecified behavior can be refined towards an
implementation. Refinement of non-deterministic automata is
semantically represented by set inclusion of sets of stream processing
functions [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. A number of important refinement
techniques, such as transition refinement and state decomposition
are formalized in order to automate the checking of refinement
correctness. Transition refinement means that by removing one
of a set of alternative transitions, the set of behaviors becomes
more precise. State refinement allows e.g. splitting states by
inserting substates.
      </p>
      <p>
        The most important property which makes this methodology
stand out among competitors (like CSP [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], CCS [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ],
Petri Nets [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], or the -calculus [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]) is that refinement of
component specifications is semantically reflected by the
concept of set inclusion between function sets and that refinement
of a component in a decomposed structure automatically leads
to refinement of the composition [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. That means, refinement
is fully compositional. This property is a major reason why
this proposed methodology is well-suited to specify larger
and complex distributed systems, because it allows to scale
a specification from atomic components to large systems,
such as airplanes. One can specify a system, decompose the
specification, refine the individual sub-systems until an
implementation is reached, and then have the guarantee that the
composition of the implementations is correct by construction.
      </p>
      <p>
        Furthermore, a component library with popular components
(NOT, AND, OR, NOR, XOR, ADD, Delay, variants of
a transport medium, counters, timers, etc.) was created to
support specifications. For example the transport
mediumcomponents have an abstract non-deterministic specification
(the set of implementations describing their possible behaviors
is even uncountable) and also a number of refined behaviors,
resembling special characteristics such as liveness properties.
In essence, without going deeper in details in this short
paper, the formalization of refinement checking of (potentially
unbounded) non-deterministic specifications consisted in the
encoding in Isabelle of the corresponding refinement calculus
from [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The correctness of the refinement steps is also
used to show that the system doesn’t gain new, potentially
undesired, behaviors and the properties of the initial system
are automatically derived for the refined system as well (the
user is thus relieved from the necessity to prove these again for
the new system). Along with the specification, a set of useful
theorems and their proofs are generated for each component,
which increases the automation of the proof of the desired
system property.
      </p>
      <p>Finally, abstract theorems are provided to enable an
automatic checking of safety and liveness properties. We
understand informally by
safety: properties that can be falsified by finite streams.
liveness: properties that can be falsified only by infinite
streams.</p>
      <p>The methodology is demonstrated in this paper on a feature
interaction scenario of a light control, which is actually
taken from the automotive domain, but we expect that the
avionics domain could be very similar. The (small part of the)
system and a desired property are defined through an explicit
specification and the desired safety-critical property is proven
at the push of a button. The full-automation is the result of:
the encoding of thousands of general, case study
independent theorems for interactive components and their
composition in Isabelle,
a library of common generic reusable components
together with proven properties over these,
the development of the corresponding code generator for
all mathematical structures introduced above.</p>
      <p>This case study demonstrates the correct encoding and
usage of a general composition operator, dealing in particular
successfully with feedback cycles by generating appropriately
a delay, as well as handling time-sensitive specifications.</p>
    </sec>
    <sec id="sec-4">
      <title>IV. THE DEVELOPER-FRIENDLY ADL MONTIARC</title>
      <p>
        A user friendly domain specific ADL is presented, to
enforce the specification of realizable-per-construction
components [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. It enables the high-level specification of composed
systems, as in Fig. 2. A running example dealing with
communicating controllers in vehicles is used to ilustrate this.
      </p>
      <p>In a black box view a component is defined by its input
and output channels. Each channel is identified by a name and
the data type of the messages allowed to flow in it. Generic
data types are supported in order to facilitate reuse. Composed
systems are defined by importing the subcomponents and
connecting the channels. Output channels of a component can
be connected to input channels of the same or of other
components. It is allowed to use the same subcomponents multiple
times. Generic data types can be instantiated multiple times.
Additional information can also be added to the model. For
example invariants of components, or whether the component
is deterministic or not.</p>
      <p>The depicted controller InteriorLightArbiter controls the
interior light of a car. The description of the formal specification
of interfaces, behavior and composition will be introduced
later. As can be seen, this system produces its output based
on the light switch, the car’s doors and the alarm system.
Depending on these inputs, it emits a command to turn the
interior light on or off. For example it evaluates the light
switch status by simply forwarding its status. The interior light
is also switched on if the door is opened, and goes out a
short while after the door has been closed again. A closed
door only changes the light status if the door is closed since 5
seconds. If the alarm system is active, the interior light blinks.
As long as its incoming signal value is on, the Flasher outputs
alternatingly on and off values.</p>
      <p>Chosen safety-critical property informally: The alarm
system always has highest priority. So if the alarm is activated,
the interior light will turn on, no matter how both the door
status and the light switch behave.</p>
    </sec>
    <sec id="sec-5">
      <title>V. MONTIARC IN ISABELLE</title>
      <p>
        An untimed stream is a (potentially infinite) sequence of
messages over a carrier alphabet M. M ! denotes all streams
and is the union of M the finite ones and M 1 the infinite
ones. To construct streams, the constructor " : " with signature
M ) M ! ) M ! is defined. The operator _ denotes the
concatenation of two streams [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Based on the construction
operator on streams, we can define an ordering v on the set
of streams. The prefix ordering [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] on streams v is defined
such that the following holds:
      </p>
      <p>8x; y 2 M !: x v y , 9s 2 M !: x _ s = y</p>
      <p>
        Please note that the prefix order defines a partial order on
streams [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and that M ! completes M to a complete partial
order [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ] with respect to prefixing.
      </p>
      <p>To specify time-sensitive behavior, timed streams are used
(in our case study the so-called time-synchronous streams
variant). For this, the message alphabet is extended by a
dummy element (read eps). In this interpretation we assume
a discrete global clock and each element of the stream is either
a message arriving during each (equidistant) time frame, or an
(interpreted here as ”no message has arrived”, having also
the length of one time frame).</p>
      <p>
        Streams have been encoded in the interactive proof assistant
Isabelle [
        <xref ref-type="bibr" rid="ref51">51</xref>
        ]. The proofs, data structures as well as functions
are there formalized in so-called theory files, which have the
following structure:
t h e o r y E x a m p l e T h e o r y
i m p o r t s Main
b e g i n
( * d e f i n i t i o n s a n d lemmas * )
e n d
      </p>
      <p>
        The implementation in the theorem prover Isabelle of the
data type stream is, apart from some technical
domaintheoretical details [
        <xref ref-type="bibr" rid="ref37">37</xref>
        ], similar to lazy lists of (say) Haskell.
d om a i n ’ a s t r e a m =
l s c o n c ” ’ a ” ( l a z y ” ’ a s t r e a m ” )
      </p>
      <p>
        The keyword domain [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ] generates the prefix ordering
and a bottom element (the empty stream). The constructor
lsconc appends an element to the rest of the stream.
      </p>
      <p>Fig. 3 gives an overview of our theories, such as Stream
Bundles (SB), stream processing functions (SPF), and sets of
functions denoted as stream processing specifications (SPS).
Foundamental theories such as LNat (lazy natural numbers,
where the set of naturals is extended with an element denoting
infinity), or SetPcpo (sets are enhanced with a subset-order)
are needed as well. Theory imports are represented as arrows
in the Figure. These mathematical structures will be briefly
described later.</p>
      <p>The extension to time-synchronous streams is also done
similarly as one would extend a data type in Haskell: given
the type stream over a parametric type-variable 0a, and a
constructor for messages M sg, one can then define:
datatype 0a tsyn = Msg 0a j</p>
      <p>An instance of a stream of natural numbers over tsyn would
then be e.g: Msg 1, , Msg 2, , ,.... This is read as: the first
time slot sees the message 1 arriving; in the second time slot
no message arrives; in the third one the message 2 arrives,
and after that no more messages arrive. The granularity of
each time interval can be set depending on the case study
(say ”minutes”, if we are modeling bus arrival times, or say
”milliseconds”, if we are modeling communication inside a
computer processor.)</p>
      <p>In our light controller the elements of the streams flowing
in the channels are from the carrier set B [ f g.</p>
    </sec>
    <sec id="sec-6">
      <title>VI. STREAM BUNDLES AND STREAM PROCESSING</title>
      <p>FUNCTIONS</p>
      <p>
        To facilitate composition, we enhance our modeling of
component networks by naming channels and defining composition
operators which connect channels of the same name and type.
The user can then define the type of a channel via a function
which for each channel returns a set of allowed messages,
i.e., the domain of the channel type. To model the input (or
output) streams of a component, we work with an isomorphic
transformation of the tuples of streams (instead of just working
on tuples): namely with mappings from channel names to
streams. Such a mapping is then called Stream Bundle [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
if the messages of the streams mapped to the channels are
allowed to flow on it. Thus, we can compose components and
define generalized composition operators [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] connecting
samenamed/same-typed channels without worrying about setting
preconditions for the interface compatibility. In the case of
(say) an addition component, the encoding in Isabelle of the
interface of the input would be the structure of the form
[channel1 7! stream1; channel2 7! stream2] (instead of
the intuitive tuple (stream1; stream2), which does not offer
the flexibility in defining general composition over arbitrary
number of channels).
      </p>
      <p>A deterministic component is modeled by a stream(bundle)
processing function (the type denoted as SPF), which is then
a continuous function mapping stream bundles to stream
bundles. The semantics of a non-deterministic automaton is a
set of stream processing functions (the type denoted as SPS).</p>
    </sec>
    <sec id="sec-7">
      <title>VII. STATE-BASED MODELING</title>
      <p>As mentioned, state-based modeling is used to enforce the
specification of realizable-per-construction components. We
demonstrate an example by specifying the behavior of the
DoorDelay component in Fig. 4:</p>
      <p>This figure is a graphical representation of the behavior
represented by the following MontiArc textual description.
The time model in the textual description is set to
timesynchronous (sync). Then the interface of the component
(ports and input/output channels) is defined. A variable delay
is used to represent the states. Finally the behavior description
is given by listing the transitions. Transitions are enhanced by
input/output.
c o m p o n e n t D o o r D e l a y f
t i m i n g s y n c ;
p o r t
i n b o o l e a n i ,
o u t b o o l e a n o ;
i n t d e l a y ;
a u t o m a t o n D o o r D e l a y f
s t a t e S ;
i n i t i a l S / f d e l a y = 0 g ;
g
g</p>
      <p>S [ ! i &amp;&amp; d e l a y &gt;0] /</p>
      <p>f d e l a y = d e l a y 1 , o= t r u e g ;
S [ ! i &amp;&amp; d e l a y = = 0 ] / f o= f a l s e g ;
S [ i == n u l l &amp;&amp; d e l a y &gt;0] /</p>
      <p>f d e l a y = d e l a y 1 , o= t r u e g ;
S [ i == n u l l &amp;&amp; d e l a y = = 0 ] / f o= f a l s e g ;
S [ i ] / f d e l a y = 5 , o= t r u e g ;</p>
      <p>As a contrast to state-based specifications, a specification
such as DoorDelay[a : b : c : d : e : xs] = f (a; b; c; d; e; xs)
for some function f , messages a; b; c; d; e, and sequence of
messages xs might lead to non-realizable behavior, since one
can make use of (say) b in the first output time slot before it
has arrived as input.</p>
      <p>The behavior of the AND, OR, and NOT components is a
straightforward lifting from booleans to streams of booleans
and the boolean values have priority over .</p>
      <p>
        The behavior of a MontiArc component is specified as
automata with input/output [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Automata with input/output
consist of states and transitions. The states of the automaton
are used to save information about the current state of the
computation. In addition to states java-variables can be used
in MontiArc.
      </p>
      <p>Transitions help define the behavior of a component. A
transition describes the output and new state of a component.
Non-determinism can be modeled by multiple transitions or
by a single transition with a set as result.</p>
      <p>
        Each automata is translated in a final step into (sets of)
stream processing functions, which constitute their semantics
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The Isabelle theory of stream processing functions is rich
with theorems, which increase the automation of the proofs.
      </p>
    </sec>
    <sec id="sec-8">
      <title>VIII. COMPOSITION AND FEEDBACK LOOPS To decompose and then re-compose components in a development life cycle, special composition operators of Fig. 5 were encoded using the notations as described in [7]</title>
      <p>Serial composition in a) is quite straightforwardly overtaken
from function composition in mathematics, and parallel
composition in b) creates a new component with an extended
interface.</p>
      <p>The -operator for feedback in c), such as the one occurring
in the Flasher-Component, is defined as follows: for streams
x; y; z we have (z; y) = ( f ):x, if (z; y) is the least fixed
point of the equation (z; y) = f (x; y).</p>
      <p>
        Streams flowing on feedback loops are defined as least fixed
points of the corresponding equations [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Monotonicity is
neccesary for least fixed points to be unique.
      </p>
      <p>
        A general composition operator f g was encoded [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ] as well, covering all possible combinations of the
above mentioned special operators as shown in Fig. 6, where
c1...c8 denote here the channel names.The general operator is
equally powerfull to the combination of all special operators.
The generated stream processing functions are automatically
connected by this operator. The proof of commutativity and
associativity [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] of this operator is also encoded in Isabelle.
This means that the order of composition of a list of
components does not matter.
      </p>
    </sec>
    <sec id="sec-9">
      <title>IX. NON-DETERMINISTIC SPECIFICATIONS</title>
      <p>
        Our mathematical model is expressive enough to model
interesting aspects of software development such as
underspecification and refinement as well. From a user’s point of view, it
is not distinguishable, whether a system is underspecified
(further refinement steps during the development process can make
specifications more precise), or it makes non-deterministic
decisions on runtime. In the introduction of this paper, we
already mentioned that components may be under-specified
or non-deterministic. Thus, a single deterministic SPF is not
sufficient to describe all possible component behaviors, and
instead a set of stream processing function must be used to
model the component behavior properly [
        <xref ref-type="bibr" rid="ref49">49</xref>
        ]. Nevertheless,
the input and output channels of components are fixed, thus
all stream processing functions in such a set must have the
same input and output channels.
X. CODE GENERATOR FROM MONTIARC TO ISABELLE
To verify the properties of user-defined component systems,
they are automatically transformed to specifications and
theorems in Isabelle.
      </p>
      <p>The equivalence of the user-specification and the generated
Isabelle-specification is imperative for any logical reasoning. A
complex generation process could lead to different semantics.
To reduce complexity of the transformation, MontiArc-ADL
and Isabelle-Specification are using similar concepts.</p>
      <p>
        An automata [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] is first transformed from the MontiArc
model to an automata in Isabelle. The abstract syntax of
automata is encoded in Isabelle as well. In a second step the
automata is mapped to its semantics, a set of stream-processing
functions [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The second step is entirely within Isabelle and
its correctness is proven.
      </p>
      <p>
        A composed specification is realized through the general
composition operator [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ]. Since the general composition
operator can only connect channels with the same name,
internal channels are used. These internal channels are not
visible in the public interface of the component.
      </p>
    </sec>
    <sec id="sec-10">
      <title>XI. VERIFICATION OF PROPERTIES</title>
      <p>MontiArc invariants are mapped to Isabelle lemmata.
Simple properties can be proven automatically, whereas more
complex properties might require user interaction. To simplify
any manual proof, additional lemmata are generated. One
can specify his desired (potentially safety-critical) property
in MontiArc. The framework is extended sufficiently with
abstract theorems, such that most simple properties will be
checked on the push of the button. This is also the case for
the chosen property of this work, thus showing promising
results about the feasibility of the approach. It is shown that
the alarm status has priority over other inputs and it guarantees
the turning on of the light, no matter how both the door status
and the light switch behave.</p>
      <p>Let snth n denote the time slot of a message in a stream
for some natural n, AlarmStatus the input stream of
the light controller, and OnOf f Cmd the output stream of
the light controller. The theorem is then formulated as follows:
theorem: 8 n 2 N : snth n AlarmStatus = True )
((snth n OnOffCmd = True) _ (snth (n 1) OnOffCmd =
True))</p>
      <p>&lt; proof &gt;</p>
    </sec>
    <sec id="sec-11">
      <title>The proof is automatically generated.</title>
      <p>Here is a proof sketch. First one checks the correctness
of the single components. The Flasher is trickier, since it
contains a feedback loop. It was first shown, that the output
stream of the Flasher corresponds to the certain desired least
fixed point. The proof of correctness for components with
feedback loops and for those with a state(such as DoorDelay)
takes usually the majority of effort to automatize. The correct
behavior of the OR-component is also proven. The relation
between the AND-Component and the Flasher is mapped to a
general composition AND Flasher. Then this composition
is proven to be reducible to a parallel composition between
these. As a next step, the composition Flasher OR is shown
to be reducible to a serial composition. These reductions are
recognized automatically by investigating the shared channels
between components. The large amount of encoded theorems
about the special operators, as well as the extension of the
code generator with common component-specific properties,
take care of the rest, making this property proven at the push
of a button.</p>
    </sec>
    <sec id="sec-12">
      <title>XII. CONCLUSION</title>
      <p>
        In this paper, we have seen that there is an appropriate
theory, namely Broy’s streams [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], which is able to describe
behavior of real-time capable distributed and complex software
in a hierarchically decomposable form. Furthermore, along the
development process refinement of underspecified component
behavior is possible and is fully compatible with the
composition operators. That means decomposed subcomponents can
be individually implemented and desired properties proven on
local components thus that the overall composed system is
then correct by construction.
      </p>
      <p>Correct by construction means that there is no complicated
integration phase with lots of errors only identified late in
the development process. Instead a rather agile development
process could become possible: It has an always integrated
composed system with individual subsystems hierarchically
decomposed and individually refined along the development.</p>
      <p>The encoding of Broy’s Stream Theory in Isabelle and the
available comfortable modeling techniques, such as an ADL as
well as state machines are an important step towards a rigorous
development process based on model-based specifications and
formal verification.</p>
      <p>
        However, there are still a lot of steps to do. (1) The
integration of modeling techniques as developers frontend
needs to be tighter and potentially also handle other forms
of modern specification languages. (2) The library of
available predefined components and their specifications must be
intensively extended. (3) The proof assistant system needs to
be robust and as automatic as possible in any kind of potential
situations. Ideally the proof assistant is so highly automated,
that ordinary software developers do not explicitly have to
cope with proving activities at all, but can concentrate on
specifying behaviors on different levels of abstraction, while the
underlying proof assistant tells the developers automatically,
whether their development steps have been correct. This would
lead to a continuous verification system quite like the currently
already existing continuous integration environments [
        <xref ref-type="bibr" rid="ref52">52</xref>
        ] for
compilation, generation and testing.
      </p>
      <p>Of course, in practice a combination of all these techniques
is desired. Based on our experiences, we believe that formal
verification should actually be a strong tool in the toolbox of
a mature Software Engineering discipline. However, Software
Engineering is still not mature and only future research and
industrial applications can show whether and how formal
verification tools will be part of our future toolbox.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Arne</given-names>
            <surname>Haber</surname>
          </string-name>
          , Jan Oliver Ringert, and Bernhard Rumpe.
          <article-title>MontiArc - Architectural modeling of interactive distributed and cyber-physical systems</article-title>
          , volume
          <year>2012</year>
          ,
          <article-title>3 of Technical report</article-title>
          / Department of Computer Science, RWTH Aachen.
          <article-title>RWTH and Technische Informationsbibliothek u. Universita¨tsbibliothek and Niedersa¨chische Staats- und Universita¨tsbibliothek, Aachen and Hannover and</article-title>
          G o¨ttingen,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Aerospace</given-names>
            <surname>SAE</surname>
          </string-name>
          .
          <article-title>Architecture analysis and design language</article-title>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Tobias</given-names>
            <surname>Nipkow Lawrence C Paulson</surname>
          </string-name>
          and Markus Wenzel.
          <article-title>A proof assistant for higher-order logic</article-title>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          , Frank Dederichs, Claus Dendorfer, Max Fuchs,
          <string-name>
            <given-names>Thomas F.</given-names>
            <surname>Gritzner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Rainer</given-names>
            <surname>Weber</surname>
          </string-name>
          .
          <article-title>The design of distributed systems: An Introduction to FOCUS</article-title>
          . Citeseer,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          .
          <article-title>Functional specification of time-sensitive communicating systems</article-title>
          .
          <source>ACM Transactions on Software Engineering and Methodology</source>
          ,
          <volume>2</volume>
          (
          <issue>1</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>46</lpage>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ketil</given-names>
            <surname>Stølen</surname>
          </string-name>
          .
          <article-title>Specification and development of interactive systems: Focus on streams, interfaces</article-title>
          ,
          <source>and Refinement</source>
          . Springer, New York,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Modulare hierarchische Modellierung als Grundlage der Software-</article-title>
          und
          <string-name>
            <surname>Systementwicklung</surname>
          </string-name>
          .
          <source>Informatik-Spektrum</source>
          ,
          <volume>30</volume>
          (
          <issue>1</issue>
          ):
          <fpage>3</fpage>
          -
          <lpage>18</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Formale Methodik des Entwurfs verteilter objektorientierter Systeme</article-title>
          . Doktorarbeit, Technische Universita¨t Mu¨ nchen,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Edward</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Lee</surname>
          </string-name>
          .
          <article-title>Fundamental limits of cyber-physical systems modeling</article-title>
          .
          <source>ACM Transactions on Cyber-Physical Systems</source>
          ,
          <volume>1</volume>
          (
          <issue>1</issue>
          ),
          <year>11 2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Chih-Hong</surname>
            <given-names>Cheng</given-names>
          </string-name>
          , Michael Geisinger, Harald Ruess,
          <string-name>
            <given-names>Christian</given-names>
            <surname>Buckl</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Alois</given-names>
            <surname>Knoll</surname>
          </string-name>
          . Mgsyn:
          <article-title>Automatic synthesis for industrial automation</article-title>
          . volume
          <volume>7358</volume>
          , pages
          <fpage>658</fpage>
          -
          <lpage>664</lpage>
          ,
          <year>07 2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Grischa</surname>
            <given-names>Liebel</given-names>
          </string-name>
          , Anthony Anjorin, Eric Knauss, Florian Lorber, and
          <string-name>
            <given-names>Matthias</given-names>
            <surname>Tichy</surname>
          </string-name>
          .
          <article-title>Modelling behavioural requirements and alignment with verification in the embedded industry</article-title>
          . pages
          <fpage>427</fpage>
          -
          <lpage>434</lpage>
          ,
          <year>01 2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Rashidah</surname>
            <given-names>Kasauli</given-names>
          </string-name>
          , Eric Knauss, Benjamin Kanagwa, Agneta Nilsson, and
          <string-name>
            <given-names>Gul</given-names>
            <surname>Calikli</surname>
          </string-name>
          .
          <article-title>Safety-critical systems and agile development: A mapping study</article-title>
          . pages
          <fpage>470</fpage>
          -
          <lpage>477</lpage>
          ,
          <year>08 2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>C.A.R</given-names>
            <surname>Hoare</surname>
          </string-name>
          .
          <source>Communicating sequential processes.</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Robert</surname>
            <given-names>Heim</given-names>
          </string-name>
          , Pedram Mir Seyed Nazari, Jan Oliver Ringert, Bernhard Rumpe, and
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Wortmann</surname>
          </string-name>
          .
          <article-title>Modeling robot and world interfaces for reusable tasks</article-title>
          .
          <source>In Intelligent Robots and Systems (IROS)</source>
          ,
          <year>2015</year>
          IEEE/RSJ International Conference on, pages
          <fpage>1793</fpage>
          -
          <lpage>1798</lpage>
          . IEEE,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Robin</given-names>
            <surname>Milner</surname>
          </string-name>
          .
          <article-title>Communication and concurrency</article-title>
          , volume
          <volume>84</volume>
          . Prentice hall New York etc.,
          <year>1989</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Wolfgang</given-names>
            <surname>Reisig</surname>
          </string-name>
          .
          <article-title>Petri nets: an introduction</article-title>
          , volume
          <volume>4</volume>
          . Springer Science &amp; Business
          <string-name>
            <surname>Media</surname>
          </string-name>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Robin</given-names>
            <surname>Milner</surname>
          </string-name>
          .
          <article-title>Communicating and mobile systems: the pi calculus</article-title>
          . Cambridge university press,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Anthony</given-names>
            <surname>Hall</surname>
          </string-name>
          .
          <source>Seven myths of formal methods</source>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Shahar</surname>
            <given-names>Maoz</given-names>
          </string-name>
          , Nitzan Pomerantz, Jan Oliver Ringert, and
          <string-name>
            <given-names>Rafi</given-names>
            <surname>Shalom</surname>
          </string-name>
          .
          <article-title>Why is my component and connector views specification unsatisfiable?</article-title>
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Andreas</surname>
            <given-names>H</given-names>
          </string-name>
          <string-name>
            <surname>Schweiger</surname>
          </string-name>
          .
          <article-title>Applying software patterns to requirements engineering for avionics systems</article-title>
          .
          <source>2013 IEEE International Systems Conference (SysCon)</source>
          , pages
          <fpage>25</fpage>
          -
          <lpage>30</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>Ralf</given-names>
            <surname>God</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ulrike</given-names>
            <surname>Wittke</surname>
          </string-name>
          .
          <article-title>Cyber-physical aviation</article-title>
          . pages
          <fpage>4</fpage>
          -
          <lpage>6</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Grischa</surname>
            <given-names>Liebel</given-names>
          </string-name>
          , Anthony Anjorin, Eric Knauss, Florian Lorber, and
          <string-name>
            <given-names>Matthias</given-names>
            <surname>Tichy</surname>
          </string-name>
          .
          <article-title>Modelling behavioural requirements and alignment with verification in the embedded industry</article-title>
          .
          <source>01</source>
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Darbaz</surname>
            <given-names>Darwesh</given-names>
          </string-name>
          , Bjoern Annighoefer, and
          <string-name>
            <given-names>Reinhard</given-names>
            <surname>Reichel</surname>
          </string-name>
          .
          <article-title>A demonstrator for the verification of the selective integration of the flexible platform approach into integrated modular avionics</article-title>
          .
          <source>09</source>
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Mohammed</surname>
            <given-names>Khan</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Sievers</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Shaun</given-names>
            <surname>Standley</surname>
          </string-name>
          .
          <article-title>Model-based verification and validation of spacecraft avionics</article-title>
          .
          <source>06</source>
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          . Modellierung mit UML. 01
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Agile Modellierung mit UML: Codegenerierung, Testf a¨lle,</article-title>
          <string-name>
            <surname>Refactoring. 01</surname>
          </string-name>
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>Stephan</given-names>
            <surname>Rudolph</surname>
          </string-name>
          .
          <article-title>Know-How Reuse in the Conceptual Design Phase of Complex Engineering Products</article-title>
          , pages
          <fpage>23</fpage>
          -
          <lpage>39</lpage>
          . 01
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Ilinca</surname>
            <given-names>Ciupa</given-names>
          </string-name>
          , Alexander Pretschner, Manuel Oriol, Andreas Leitner, and Bertrand Meyer.
          <article-title>On the number and nature of faults found by random testing</article-title>
          .
          <source>Softw</source>
          . Test.,
          <string-name>
            <surname>Verif</surname>
          </string-name>
          . Reliab.,
          <volume>21</volume>
          :
          <fpage>3</fpage>
          -
          <lpage>28</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Holger</surname>
            <given-names>Krahn</given-names>
          </string-name>
          , Bernhard Rumpe, and
          <article-title>Steven Vo¨ lkel. Monticore: a framework for compositional development of domain specific languages</article-title>
          .
          <source>CoRR, abs/1409.2367</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Katrin</surname>
            <given-names>H</given-names>
          </string-name>
          <source>o¨lldobler and Bernhard Rumpe. MontiCore 5 Language Workbench Edition</source>
          <year>2017</year>
          . Aachener Informatik-Berichte, Software Engineering, Band 32. Shaker Verlag,
          <year>December 2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>David</given-names>
            <surname>Harel</surname>
          </string-name>
          and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Meaningful modeling: what's the semantics of” semantics”</article-title>
          ? Computer,
          <volume>37</volume>
          (
          <issue>10</issue>
          ):
          <fpage>64</fpage>
          -
          <lpage>72</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Stephen</surname>
            <given-names>Cole</given-names>
          </string-name>
          <string-name>
            <surname>Kleene</surname>
          </string-name>
          . Introduction to metamathematics, volume v.
          <article-title>1 of Bibliotheca mathematica</article-title>
          .
          <source>A series of monographs on pure and applied mathematics. Wolters-Noordhoff Pub, Groningen</source>
          ,
          <year>1952</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>Franz</given-names>
            <surname>Regensburger</surname>
          </string-name>
          . HOLCF:
          <article-title>Eine konservative Erweiterung von HOL um LCF</article-title>
          . na,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>Brian</given-names>
            <surname>Charles</surname>
          </string-name>
          <article-title>Huffman</article-title>
          . HOLCF '11:
          <article-title>A definitional domain theory for verifying functional programs</article-title>
          . Portland State University, [Portland, Or.],
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>Maria</given-names>
            <surname>Spichkova</surname>
          </string-name>
          .
          <source>Specification and Seamless Verification of Embedded Real-Time Systems: FOCUS on Isabelle. VDM Verlag Dr. Mu¨ ller Aktiengesellschaft &amp; Co. KG</source>
          , Saarbru¨ cken,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>Borislav</given-names>
            <surname>Gajanovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Isabelle/hol-umsetzung strombasierter definitionen zur verifikation von verteilten, asynchron kommunizierenden systemen</article-title>
          .
          <source>Technical report, Technical Report InformatikBericht</source>
          <year>2006</year>
          -
          <volume>03</volume>
          , Braunschweig University of Technology,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>Borislav</given-names>
            <surname>Gajanovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Alice: An advanced logic for interactive component engineering</article-title>
          . CoRR, abs/1410.4381,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>Sebastian</given-names>
            <surname>Stu</surname>
          </string-name>
          <article-title>¨ ber. Eine domain-theoretische Formalisierung von stromb u¨ndel-verarbeitenden Funktionen in Isabelle</article-title>
          . Bachelorarbeit, RWTH Aachen,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <article-title>Jens Christoph B u¨rger. Modular Hierarchical Modelling and Verification of Systems using General Composition Operators</article-title>
          . Bachelorarbeit, RWTH Aachen,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>Marc</given-names>
            <surname>Wiartalla</surname>
          </string-name>
          .
          <article-title>Compositional Modelling and Verification of Distributed Systems with special Composition Operators</article-title>
          .
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>Mathias</given-names>
            <surname>Pfeiffer</surname>
          </string-name>
          .
          <article-title>A Code Generator for Modeling Underspecification of State-based Network Components</article-title>
          . Masterarbeit, RWTH Aachen,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>Sebastian</given-names>
            <surname>Voss</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sergey</given-names>
            <surname>Zverlov</surname>
          </string-name>
          .
          <article-title>Design space exploration in autofocus3 - an overview</article-title>
          . In Vladim´ır Marˇ´ık, JoseL. Martinez Lastra, and Petr Skobelev, editors,
          <source>IFIP First International Workshop on Design Space Exploration of Cyber-Physical Systems</source>
          . Springer,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <surname>Edward</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Lee</surname>
          </string-name>
          .
          <article-title>Computing needs time</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>52</volume>
          (
          <issue>5</issue>
          ):
          <fpage>70</fpage>
          -
          <lpage>79</lpage>
          , May
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>Bernard</given-names>
            <surname>Berthomieu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Bodeveix</surname>
          </string-name>
          , Silvano Dal Zilio, Pierre Dissaux, Mamoun Filali, Pierre Gaufillet, Steve Heim, and Franc¸ois Vernadat.
          <article-title>Formal verification of aadl models with fiacre and tina</article-title>
          .
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          .
          <article-title>(inter-)action refinement: The easy way</article-title>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          .
          <article-title>Refinement of time</article-title>
          .
          <source>In ARTS</source>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <string-name>
            <given-names>J Dean</given-names>
            <surname>Brock</surname>
          </string-name>
          and
          <string-name>
            <given-names>William B.</given-names>
            <surname>Ackerman</surname>
          </string-name>
          .
          <article-title>Scenarios: A model of nondeterminate computation</article-title>
          . pages
          <fpage>252</fpage>
          -
          <lpage>259</lpage>
          ,
          <year>01 1981</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref48">
        <mixed-citation>
          [48]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          .
          <article-title>Computability and realizability for interactive computations</article-title>
          .
          <source>Inf. Comput.</source>
          , 241(C):
          <fpage>277</fpage>
          -
          <lpage>301</lpage>
          ,
          <year>April 2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          [49]
          <string-name>
            <given-names>Jan</given-names>
            <surname>Oliver</surname>
          </string-name>
          Ringert and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <source>A Little Synopsis on Streams, Stream Processing Functions, and State-Based Stream Processing. Int. J. Software and Informatics</source>
          ,
          <volume>5</volume>
          (
          <issue>1</issue>
          -2):
          <fpage>29</fpage>
          -
          <lpage>53</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          [50]
          <string-name>
            <given-names>Manfred</given-names>
            <surname>Broy</surname>
          </string-name>
          .
          <article-title>Computability and realizability for interactive computations</article-title>
          .
          <source>Information and Computation</source>
          ,
          <volume>241</volume>
          , 01
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref51">
        <mixed-citation>
          [51]
          <string-name>
            <surname>Tobias</surname>
            <given-names>Nipkow</given-names>
          </string-name>
          , Lawrence C. Paulson, and Markus Wenzel. Isabelle/HOL:
          <article-title>A proof assistant for Higher-Order Logic</article-title>
          , volume
          <volume>2283</volume>
          <source>of Lecture notes in artificial intelligence</source>
          . Springer, Berlin [etc.],
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref52">
        <mixed-citation>
          [52]
          <string-name>
            <given-names>John</given-names>
            <surname>Ferguson Smart. Jenkins: The Definitive Guide. O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>