<!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>Scenarios@run.time - Distributed Execution of Specifications on IoT-Connected Robots?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Joel Greenyer</string-name>
          <email>greenyer@inf.uni-hannover.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel Gritzner</string-name>
          <email>daniel.gritzner@inf.uni-hannover.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Timo Gutjahr</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tim Duente</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefan Dulle</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Falk-David Deppe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nils Glade</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marius Hilbich</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Florian Koenig</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jannis Luennemann</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nils Prenner</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kevin Raetz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Thilo Schnelle</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Singer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nicolas Tempelmeier</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Raphael Voges</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Leibniz Universität Hannover, Fachgebiet Software Engineering</institution>
          ,
          <addr-line>Welfengarten 1, D-30167 Hannover</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In many areas we find cyber-physical systems consisting of multiple software-controlled components that communicate to control complex physical processes. As customers demand increasingly rich functionality, the component interactions become more and more complex. We are developing a formal scenario-based method for specifying the inter-component behavior that extends the concepts of Live Sequence Charts. This method is intuitive, yet precise, and automated analysis capabilities help engineers deal with the aforementioned complexity. In particular, the execution via the play-out algorithm supports a simulation of the behavior emerging from the interplay of the scenarios. Deriving a distributed implementation from an inter-component specification, however, is a challenging task. An alternative is the play-out of the specification by the distributed system. In this paper, we present a distributed play-out approach where the components coordinate via MQTT, a protocol used in IoT applications. We demonstrate the approach by a Car-to-X example implemented on Raspberry Pi-based robots.</p>
      </abstract>
      <kwd-group>
        <kwd>distributed system</kwd>
        <kwd>play-out</kwd>
        <kwd>scenario-based specification</kwd>
        <kwd>executing specifications</kwd>
        <kwd>Internet of Things</kwd>
        <kwd>cyber-physical systems</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In many areas, for example, transportation, industry, and healthcare, we find
systems consisting of multiple embedded components that cooperate to control
complex physical processes and to interact with users. We also call these systems
cyber-physical systems. Today, these system fulfill increasingly complex and
critical functions, which makes their development challenging. One particular source
of complexity is the distributed and concurrent nature of the software: single
functions of the system are usually realized by the cooperation of several
components, and a single component must often fulfill multiple functions at the same
time.
? This work is funded by grant no. 1258 of the German-Israeli Foundation for Scientific
Research and Development (GIF)</p>
      <p>
        In order to help engineers deal with this complexity, we are developing a
formal scenario-based method for specifying the interaction behavior of the
components on an inter-component level. This method extends the concepts of Live
Sequence Charts (LSCs) [
        <xref ref-type="bibr" rid="ref11 ref5">5,11</xref>
        ] and Modal Sequence Diagrams (MSDs) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
LSCs/MSDs are a visual formalism for specifying how a set of system components
may, must, or must not react to external events. We are introducing the Scenario
Design Language (SDL), which is a textual language based on LSCs/MSDs.
      </p>
      <p>
        In particular, on this basis, the play-out algorithm [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] allows engineers to
execute and thereby simulate a scenario-based specification. At design-time, this
algorithm helps understand the interplay of the scenarios.
      </p>
      <p>
        Eventually however, the inter-component specification must be transformed
into an intra-component implementation. Due to the reasons given above, this is a
challenging task. We are working on controller synthesis approaches for
automating this transition [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] (also others [
        <xref ref-type="bibr" rid="ref2 ref8 ref9">8,2,9</xref>
        ]), but these techniques have limitations.
Foremost, these approaches assume a specification for a static set of components.
But, for many cyber-physical systems, we must assume that they are dynamic,
i.e., there are many or even infinitely many configurations of components that
may evolve at run-time—imagine a mobile system or communicating cars.
      </p>
      <p>An alternative approach to arrive at a distributed implementation is
distributing the play-out algorithm among the components. A naive realization of
this approach is to let every component execute a play-out of the complete
system with full synchronization of all components after each event, which is of
course inefficient. Desirable would be to analyze the dependencies among the
scenarios and the components, and minimize the necessary synchronization.</p>
      <p>In a student project, we realized the naive approach as a first step towards a
more elaborate solution. We implemented a distributed play-out where all
components synchronize via the MQTT, a messaging protocol for Internet of Things
(IoT) applications. We demonstrate the approach by a Car-to-X example running
on Raspberry Pi-based robots (Fig. 1, https://youtu.be/g0hcGSYC2Wk).</p>
      <p>
        The idea of distributing play-out is not new [
        <xref ref-type="bibr" rid="ref1 ref13">1,13</xref>
        ]; the particular novel
contribution of this paper is a distributed play-out that (1) supports dynamic systems
and dynamic bindings of scenarios to components in the system, and (2) is able
to incorporate sensor/actuator events from embedded components in the system.
Furthermore (3), we introduce our language SDL and a supporting tool [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>Structure: in Sect. 2 we explain our example informally. SDL specifications
are explained in Sect 3. We present our distributed implementation of the
playout in Sect. 4. Finally, we discuss related work in Sect. 5 and conclude in Sect. 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Example</title>
      <p>As an example, we consider the specification of an advanced driver-assistance
system that relies on the communication of cars and the road infrastructure (also
more generally called Car-to-X- or Vehicle-to-X communication). Such systems
are envisioned to coordinate the traffic more safely and efficiently in the future.</p>
      <p>Approaching
obstacle on narrow
passage lane
construction
control</p>
      <p>Approaching
obstacle on
blocked lane</p>
      <p>One use case that we consider is cars driving on a two-lane street that need to
pass road works that block one lane. Fig. 1 shows an example of a simple street
system with three cars and one construction site. We conceived the specification
for this use case on the basis of descriptions of similar systems on the web1.</p>
      <p>During requirements engineering and early design, the behavior of the system
in usually conceived in the form of scenarios. In one scenario, illustrated on the
left of Fig. 2, an engineer specifies that (1) whenever a car approaches an obstacle
on the blocked lane, (2) either a STOP or GO signal must be shown to the driver
(3) before the car reaches the obstacle. In this scenario, the engineer does not
specify any condition for when STOP or GO must be shown.</p>
      <p>Scenario “Dashboard of the car approaching
on the blocked lane shows STOP or GO”</p>
      <p>Scenario “Control station checks for car approaching on
the blocked lane whether entering is al owed or not”
before
obstacle is
reached
construction control 3
by the car approaching on the blocked lane must be disallowed, and it must be
allowed otherwise. Last, (5) depending on the decision, the STOP or GO symbol
must be shown to the user. Further scenarios would be described similarly.</p>
      <p>The two scenarios above demonstrate that scenarios can overlap, i.e., they
describe different aspects of the same situation. The final system behavior is
defined by satisfying the requirements of all scenarios simultaneously.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Scenario Design Language Specification</title>
      <p>
        The Scenario Design Language (SDL) is a textual variant of LSCs [
        <xref ref-type="bibr" rid="ref11 ref5">5,11</xref>
        ] and
MSDs [
        <xref ref-type="bibr" rid="ref10 ref3">10,3</xref>
        ]. It allows us to specify, using scenarios, how a set of objects may,
must, or must not react to external events. Scenarios can be existential or
universal. Existential scenarios describe sequences of message events that must be
possible to occur; universal scenarios describe properties that must hold for all
sequences of message events. Here we focus on universal scenarios only.
      </p>
      <p>
        Based on our experience with the graphical notation and modeling tools [
        <xref ref-type="bibr" rid="ref3 ref7">3,7</xref>
        ],
we found a textual notation more user friendly and easier to extend.
3.1
      </p>
      <sec id="sec-3-1">
        <title>Object system and message events</title>
        <p>An SDL specification specifies the message-based interaction behavior of objects
in an object model. The set of objects is partitioned into controllable objects,
also called the system, and uncontrollable objects, also called the environment.</p>
        <p>The objects can interchange messages. A message has one sending and one
receiving object and refers to an operation of the receiving object’s class. A
message is a system message if it is sent by a system object and it is an
environment message otherwise. Here we consider only synchronous messages where
the sending and receiving together is a single event, also called message event.
This restriction simplifies specifications, especially considering that the passage
of time can not yet be modeled using SDL. An infinite sequence of message
events is called an execution or run.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>SDL specification, collaborations, and scenarios</title>
        <p>An example SDL specification is shown in Listing 1. An SDL specification has
a name (here “CarToX”) and refers to a domain package (line 3) that contains
a class model; the specification then specifies the behavior of instances of that
class model. In our example, the class model defines the classes Car, Lane,
Construction Control, etc.; we omit details for brevity. The specification furthermore
defines that objects of certain classes are controllable or uncontrollable (line 5-7).</p>
        <p>Next, an SDL specification defines one or multiple collaborations, which, in
the style of UML, defines collaborating elements, also called roles, and how they
collectively accomplish a desired functionality. Roles are typed by domain classes
and they represent objects in an object model that can be the sender or receiver
of messages. Roles can be dynamic or static. Dynamic roles can be bound to
different objects in the object model upon the activation of scenarios. Static
roles are bound to one object. Here we only consider dynamic roles.</p>
        <p>Each collaboration contains a set of scenarios. Each scenario refers to a set of
roles of its collaboration. A scenario essentially contains a sequence of messages,
but can also define conditions, or alternative-, parallel -, and loop fragments. A
message in a scenario has the form hsenderi-&gt;hreceiveri.hoperationi,
where hsenderi and hreceiveri are roles and hoperationi is an operation
of the receiving role’s class. A message can have different modalities : it can be
strict or non-strict and requested and non-requested.</p>
        <p>
          We explain the semantics of the scenarios, messages, and the messages
modalities by defining the following concepts: (in the lines of [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ])
        </p>
        <p>(1) event unification: A message event sent in the object model can be
unified with a scenario message if the sending and receiving object of the message
event are the objects bound to the respective roles of the scenario message.</p>
        <p>(2) scenario activation and dynamic role binding: A scenario is
activated if a message event occurs that can be unified with the first message in that
scenario. We also say that an active copy of the scenario is created. At the time
of activation, dynamic roles are unbound; in this case, a message event can be
unified with a scenario message if the classes of the sending and receiving objects
of the message event are equal to or subclasses of the classes typing the
sending and receiving roles of the scenario message. Upon activation of the scenario,
the roles of the first message are bound to the sending and receiving objects of
the activating message event. Then the remaining roles are bound according to
binding expressions (see e.g. lines 33-36). A role binding is defined for an
active scenario, i.e., there can be multiple active copies of the same scenario with
different role bindings, for example if different cars approach different obstacles.</p>
        <p>(3) progress (enabled messages): In a scenario, messages can be enabled.
After the activation of a scenario, the message following the first message is
enabled. When a message event occurs that can be unified with the enabled
message, the next message becomes enabled instead. This way, enabled messages
indicate the progress of the active scenarios. There can also be multiple enabled
messages in an active scenario if for example it contains a parallel fragment.</p>
        <p>(4) scenario termination: If the last message in an active scenario is
enabled and a message event occurs that can be unified with that last message,
then the active scenario terminates and is discarded.</p>
        <p>(5) violations: If a message event occurs that can be unified with a message
in the scenario that is currently not enabled, we call this a violation of the
scenario. If currently a strict message is enabled, this is a safety violation, which is
forbidden to occur. If only non-strict messages are enabled, this is an interrupting
violation, which is allowed, but will lead to a premature termination of the active
scenario. If a requested message is enabled forever, because never any message
event occurs that progresses or interrupts the scenario, this is a liveness violation.</p>
        <p>(6) accepting runs: A (universal) scenario accepts a run if it does not lead
to a safety violation or a liveness violation of the scenario. A specification accepts
a run if all of its scenarios accept the run.</p>
        <p>define Car as controllable
define ObstacleControl as controllable
define Environment as uncontrollable
define Driver as uncontrollable
define Construction as uncontrollable</p>
        <p>The scenarios DashboardOfCarApproachingOnBlockedLaneShowsStopOrGo
and ControlStationChecksForCarApproachingOnBlockedLaneEnteringAllowed
specify the scenarios introduced informally in Sect. 2.
specification scenario CarEntersNextLane with dynamic bindings [
bind currentLane to car.currentLane
bind nextLane to currentLane.next
] {
message env -&gt; car.roadSectionEntered()
message strict requested car -&gt; car.setCurrentLane(nextLane)
}
... // further scenarios
} // end collaboration ApproachingObstacleOnBlockedLane
... // further collaborations</p>
        <p>Listing 1. Example SDL specification
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Assumption scenarios</title>
        <p>
          We also support scenarios that allow us to specify what may, will, or will not
happen in the environment. These scenarios we call assumption scenarios [
          <xref ref-type="bibr" rid="ref3 ref6">6,3</xref>
          ] as
opposed to specification scenarios that specify requirements for the software. In our
example, we assume that there are different events that occur as a car approaches
and then reaches an obstacle, then overtakes the obstacle, and then finally leaves
the narrow passage. The assumption scenario ApproachingObstacleEventSequence
(line 48) specifies that once env -&gt; car.roadSectionEntered() occurs,
the events described in the scenario will occur exactly in that order.
3.4
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>Dynamic object model and message side-effects</title>
        <p>The objects in an object model can carry values for attributes and links to
other objects. These properties can be used to specify dynamic role
bindings or condition expressions. They can also change as a side-effect of
message events. By convention, message events that refer to operations of the form
sethPropertyi(value) set a property value of the receiving object.</p>
        <p>The scenario CarEntersNextLane in Listing 1 for example describes that, when
a car enters a road section, it must also update its pointer to the current lane.
3.5</p>
      </sec>
      <sec id="sec-3-5">
        <title>The play-out algorithm</title>
        <p>
          The play-out algorithm [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] is an executable semantics for LSC/MSD, and also
SDL specifications, which we extended to also consider assumption scenarios [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
Play-out takes as input an SDL specification and a concrete object model that
is an instance of the domain class model specified in the SDL specification. In
a nutshell it works as follows: when an environment event occurs that activates
or progresses one or multiple specification scenarios into a state where requested
system messages are enabled, then a corresponding system message event is
selected and executed, provided that it does not lead to a safety violation in
any specification scenario. If subsequently further requested system messages are
enabled in specification scenarios, repeatedly a next system message is chosen for
execution. If no requested system messages are enabled in specification scenarios,
the algorithm waits for the next environment event to occur. Then this process
is repeated.
        </p>
        <p>During the play-out of our example specification shown in Listing 1,
after an occurrence of env -&gt; car.approachingObstacle(), we arrive
in a state where the messages in lines 26+27 and 39 are enabled. car -&gt;
driver.showGo() and car -&gt; driver.showStop() are requested,
but they are currently blocked, because they would lead to a violation of
the scenario
ControlStationChecksForCarApproachingOnBlockedLaneEnteringAllowed, which requires car -&gt; obstacleControl.register() and
obstacleControl -&gt; car.driveAllowed()/obstacleControl -&gt;
car.driveForbidden() to occur before STOP or GO is shown to the user.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Distributed Execution</title>
      <p>
        We support the modeling and play-out of SDL specification within our
Eclipsebased tool suite ScenarioTools [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. As domain models, an SDL specification
can refer to ECore class models of the Eclipse Modeling Framework (EMF).
EMF allows us to create instances of that class model, for example to create an
object model of the car system shown in Fig. 1. The play-out then interprets an
SDL specification based on such an object model.
      </p>
      <p>To realize the execution on a distributed robot system, we run the play-out
engine of ScenarioTools on the robots or other components, for example the
control station. In our case, the components are controlled by Raspberry Pis,
for which the Java SE Virtual Machine exists. In our yet naive approach, each
component runs a play-out of the complete system, and all components must
synchronize, via MQTT, on each message event.</p>
      <p>The complete behavior of the robots is modeled via SDL. The only exceptions
are platform-specific mappings of sensor/actuator events, e.g., a value change of
the RGB sensor may be mapped to a message event in the SDL specification.
These mappings are implemented in Java. Our example does not consider the
dynamic creation or destruction of objects at runtime. But the structural
relationships between objects are dynamic and change during the execution.</p>
      <p>We explain how our system works step by step, see the numbers in Fig. 3.
Let us start with a robot that picks up an environment event via a sensor. In our
example, the robots are equipped with RGB sensors to detect color tapes on the
track (see photo in Fig. 1) that represent reaching certain points, e.g.
“approaching obstacle”. This event generates a message which is then published via the
local MQTT client (1+2). The MQTT broker then broadcasts this message (3)
to all clients. Upon receiving messages, each client will check if it corresponds to
one of its actuator events, which would then be executed (4). This of course
requires a platform-specific mapping of message events to sensor-/actuator events.</p>
      <p>Each message received is forwarded to the executor (5), which calls the
ScenarioTools play-out engine to execute it (6). ScenarioTools then
updates a list of enabled requested system messages (7). If this list contains events
sendable by the client, the executor selects one of them and publishes it (8).</p>
      <p>In this approach, it may happen that an executor chooses a message A which
leads to a safety violation due delays in the network communication. A message
B already chosen and sent by another executor may alter the state of the
playout such that the message A is actually blocked leading to the aforementioned
violation. This issue could be prevented by a defining a globally deterministic
strategy for choosing events, or having an engineer explicitly specify the
necessary synchronization.</p>
      <p>Strengths of this approach are that scenarios are intuitive to write and
assumption scenarios can help identify issues arising from engineers assuming that
the environment to behaves differently.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>
        There exist approaches for synthesizing distributed finite-state controllers from
LSC/MSD specifications [
        <xref ref-type="bibr" rid="ref12 ref2 ref4 ref9">12,9,2,4</xref>
        ], but they all assume a fixed and static object
model. Ideas for distributing play-out exist [
        <xref ref-type="bibr" rid="ref1 ref13">1,13</xref>
        ], but they also assume a static
object model, and the play-out is distributed for performance, rather than aiming
to fit the architecture of a distributed embedded system.
      </p>
      <p>
        Sousa et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] describe a framework for executing DSL models, but do not
address distributed execution. Sampaio et al. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] show how to control a power
micro-grid by executing an MGridML model that specifies event-condition-action
rules. Distributed components are controlled by a central controller.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>We developed a technique for the distributed play-out of SDL specifications, a
textual variant of LSCs/MSDs. The approach can be used to implement
specifications of complex systems with distributed and concurrent behavior. The
novelty is that it supports dynamic object models and dynamic role bindings.</p>
      <p>We evaluated the approach by a Car-to-X example that can be executed by
Raspberry Pi-based robots. Our naive approach has limitations in performance</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Barak</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marelly</surname>
          </string-name>
          , R.: Interplay:
          <article-title>Horizontal scale-up and transition to design in scenario-based programming</article-title>
          .
          <source>Software Engineering, IEEE Transactions on 32(7)</source>
          ,
          <fpage>467</fpage>
          -
          <lpage>485</lpage>
          (
          <year>July 2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bontemps</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heymans</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>From Live Sequence Charts to State Machines and Back: A Guided Tour</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>31</volume>
          (
          <issue>12</issue>
          ),
          <fpage>999</fpage>
          -
          <lpage>1014</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Brenner</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Greenyer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Panzica La Manna,
          <string-name>
            <surname>V.</surname>
          </string-name>
          :
          <article-title>The ScenarioTools play-out of modal sequence diagram specifications with environment assumptions</article-title>
          .
          <source>In: Proc.12th Int. Workshop on Graph Transformation</source>
          and
          <article-title>Visual Modeling Techniques (GT-VMT 2013)</article-title>
          . vol.
          <volume>58</volume>
          .
          <string-name>
            <surname>EASST</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Brenner</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Greenyer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schäfer</surname>
          </string-name>
          , W.:
          <article-title>On-the-fly synthesis of scarcely synchronizing distributed controllers from scenario-based specifications</article-title>
          . In: Egyed,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Schaefer</surname>
          </string-name>
          , I. (eds.) Fundamental Approaches to Software Engineering (FASE
          <year>2015</year>
          ),
          <source>Lecture Notes in Computer Science</source>
          , vol.
          <volume>9033</volume>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>65</lpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Damm</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>LSCs: Breathing life into message sequence charts</article-title>
          .
          <source>In: Formal Methods in System Design</source>
          . vol.
          <volume>19</volume>
          , pp.
          <fpage>45</fpage>
          -
          <lpage>80</lpage>
          . Kluwer Academic Publishers (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Greenyer</surname>
          </string-name>
          , J.:
          <source>Scenario-based Design of Mechatronic Systems. Ph.D. thesis</source>
          , University of Paderborn, Paderborn (
          <year>October 2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Greenyer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haase</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marhenke</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bellmer</surname>
          </string-name>
          , R.:
          <article-title>Evaluating a formal scenariobased method for the requirements analysis in automotive software engineering</article-title>
          .
          <source>In: Proc. 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. ESEC/FSE</source>
          <year>2013</year>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kugler</surname>
          </string-name>
          , H.:
          <article-title>Synthesizing state-based object systems from LSC specifications</article-title>
          .
          <source>Foundations of Computer Science</source>
          <volume>13</volume>
          :
          <issue>1</issue>
          ,
          <fpage>5</fpage>
          -
          <lpage>51</lpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kugler</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pnueli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Synthesis revisited: Generating statechart models from scenario-based requirements</article-title>
          .
          <source>In: Formal Methods in Software and Systems Modeling</source>
          . vol.
          <volume>3393</volume>
          , pp.
          <fpage>309</fpage>
          -
          <lpage>324</lpage>
          . Springer (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maoz</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Assert and negate revisited: Modal semantics for UML sequence diagrams</article-title>
          .
          <source>Software and Systems Modeling (SoSyM) 7</source>
          (
          <issue>2</issue>
          ),
          <fpage>237</fpage>
          -
          <lpage>252</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marelly</surname>
          </string-name>
          , R.: Come,
          <article-title>Let's Play: Scenario-Based Programming Using LSCs and the Play-Engine</article-title>
          . Springer (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Harel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kugler</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marelly</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pnueli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Smart play-out of behavioral requirements</article-title>
          .
          <source>In: Proc. 4th Int. Conf. on Formal Methods in Computer-Aided Design</source>
          . pp.
          <fpage>378</fpage>
          -
          <lpage>398</lpage>
          . FMCAD '
          <volume>02</volume>
          ,
          <string-name>
            <surname>Springer</surname>
          </string-name>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Merom</surname>
          </string-name>
          , R.:
          <article-title>Playing together: Distributed collaborative Play-Out of Live Sequence Charts</article-title>
          .
          <source>Master's thesis</source>
          , Weizmann Institute of Science, Israel (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>Sampaio</given-names>
            <surname>Jr.</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Costa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Clarke</surname>
          </string-name>
          ,
          <string-name>
            <surname>P.:</surname>
          </string-name>
          <article-title>A model-driven approach to develop and manage cyber-physical systems</article-title>
          .
          <source>In: Proc. Models@run.time</source>
          <year>2013</year>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <article-title>ScenarioTools website</article-title>
          . http://scenariotools.org
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Sousa</surname>
            ,
            <given-names>G.C.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>F.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>P.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Allen</surname>
            ,
            <given-names>A.A.</given-names>
          </string-name>
          :
          <article-title>Model-driven development of dsml execution engines</article-title>
          .
          <source>In: Proc. 7th Workshop on Models@Run.Time</source>
          . pp.
          <fpage>10</fpage>
          -
          <lpage>15</lpage>
          . MRT '12,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>