<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A Scenario-based MDE Process for Developing Reactive Systems: A Cleaning Robot Example</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Joel</forename><surname>Greenyer</surname></persName>
							<email>greenyer@inf.uni-hannover.de</email>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering Group</orgName>
								<orgName type="institution">Leibniz Universität Hannover</orgName>
								<address>
									<settlement>Hannover</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Daniel</forename><surname>Gritzner</surname></persName>
							<email>daniel.gritzner@inf.uni-hannover.de</email>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering Group</orgName>
								<orgName type="institution">Leibniz Universität Hannover</orgName>
								<address>
									<settlement>Hannover</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Jianwei</forename><surname>Shi</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering Group</orgName>
								<orgName type="institution">Leibniz Universität Hannover</orgName>
								<address>
									<settlement>Hannover</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Eric</forename><surname>Wete</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Software Engineering Group</orgName>
								<orgName type="institution">Leibniz Universität Hannover</orgName>
								<address>
									<settlement>Hannover</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Scenario-based MDE Process for Developing Reactive Systems: A Cleaning Robot Example</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">4B27954C96C8C8D5F9B6ED89E15EE8BC</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T01:15+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>This paper presents the SCENARIOTOOLS solution for developing a cleaning robot system, an instance of the rover problem of the MDE Tools Challenge 2017. We present an MDE process that consists of (1) the modeling of the system behavior as a scenario-based assume-guarantee specification with SML (Scenario Modeling Language), ( <ref type="formula">2</ref>) the formal realizabilitychecking and verification of the specification, (3) the generation of SBP (Scenario-Based Programming) Java code from the SML specification, and, finally, (4) adding platform-specific code to connect specification-level events with platform-level sensorand actuator-events. The resulting code can be executed on a RaspberryPi-based robot. The approach is suited for developing reactive systems with multiple cooperating components. Its strength is that the scenario-based modeling corresponds closely to how humans conceive and communicate behavioral requirements. SML in particular supports the modeling of environment assumptions and dynamic component structures. The formal checks ensure that the system satisfies its specification.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>Software-intensive systems often consist of multiple cooperating reactive components. This is also the case for the challenge problems of the MDE Tools Challenge 2017: the 'Rover' and the 'Intelligent House'. Such systems provide increasingly rich functionality in order to meet growing customer needs. Therefore, developing correct software for these systems is a difficult challenge, especially due to the distributed and concurrent nature of the systems' software.</p><p>Model-Driven Engineering tools support engineers by offering problem-specific and platform-independent modeling languages, along with a systematic and automated process of deriving platform-specific, executable code. If the modeling languages have a precise semantics, formal analysis can help analyze the system design and identify problems early and on a problem-specific level.</p><p>SCENARIOTOOLS offers such an MDE approach for the development of distributed reactive systems. It supports the scenario-based modeling via the Scenario Modeling Language (SML), a textual variant of Live Sequence Charts (LSCs) <ref type="bibr" target="#b0">[1]</ref>, <ref type="bibr" target="#b1">[2]</ref>. SML and LSCs model the behavior of a system as a set of separate scenarios that each describe how the system components may, must, or must not react to external events. The resulting specifications are executable via the play-out algorithm <ref type="bibr" target="#b1">[2]</ref>, which enables early validation by simulation, and even executing the scenarios as the actual implementation of the system. SML in particular supports the modeling of environment assumptions in the form of assumption scenarios. They describe what will or will not happen in the environment or how the environment, in turn, will react to system actions. Modeling such assumptions is essential for systems that control processes in the physical world, such as robot control software. Also, SML supports the modeling of systems with dynamic topologies, which are systems where the component properties and relationships change at runtime and influence on how the components interact. SML supports dynamic role bindings and intergration with graph transformations for this purpose <ref type="bibr" target="#b2">[3]</ref> (the latter will not be the focus here).</p><p>SCENARIOTOOLS supports an MDE process called SBDP (Scenario-Based Development Process). It consists of the following steps, also see Fig. <ref type="figure">1:</ref> 1) Modeling the system structure and behavior: The structure, i.e., the systen and environment components, their properties and relationships, is modeled using a class diagram; the behavior is specified by an SML assume/guarantee specification that refers to that system structure model. 2) Realizability-checking and verifying the specification: SCENARIOTOOLS implements a formal synthesis algorithm that checks whether a strategy exists for the system to react to any sequence of environment events in such a way that the specification will be satisfied. If this is not the case, the specification is unrealizable and the algorithm produces a counter-strategy (similar to a counter-example in model checking) that helps the engineer understand the specification flaw. The algorithm can also verify whether implementation code, as created in the next step, will satisfy the specification. sumptions (run-time assumption validation). 4) Extension with platform-specific code: Code is added to bridge problem-specific events in the specification to platform-specific sensor and actuator events. Example: In the specification it may be natural to describe an event robot enters room. On the platform, this involves inferring information from multiple sensors. Such a logic may itself be a complex reactive subsystem; then it can also be implemented in SBP or by applying the process here. In this paper, we describe SBDP by the example of a cleaning robot system (our variant of the Rover challenge problem) (Sect. III). We show parts of the SML specification, give a brief explanation of play-out and the formal checks (Sect. IV), and explain the generated SBP code (Sect. V). We also describe some platform-specific functions required to execute on a RaspberryPi-based robot (Pi2Go) (Sect. VI). Last, we overview related work (Sect. VII) and conclude (Sect. VIII).</p><p>The SBDP approach appears also in <ref type="bibr" target="#b3">[4]</ref>, but with a different example. The contribution of this paper is demonstrating SBDP for the development of mobile robot system for comparison in the MDE Tools Challenge 2017 workshop.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. CHALLENGE PROBLEM: A VACUUM CLEANER ROBOT SYSTEM</head><p>As an example, we consider a vacuum cleaning robot system where robots move between rooms in a given layout. Figure <ref type="figure" target="#fig_0">2</ref> shows a simple layout with three rooms and one robot. Some rooms are equipped with dirt sensors that notify a central robot manager when a room gets dirty. The robot manager then orders a robot to start moving and cleaning. When moving, the robot's battery discharges and it has to recharge at a charging station before it runs out of charge. III. SCENARIO-BASED SPECIFICATION An SML specification defines how objects in an object model must interact by sending messages. We consider synchronous communication where the sending and receiving of a message is a single message event. A message has one sending and one receiving object and it refers to an operation or property defined for the receiving object. When referring to a property, a message event has a side-effect on that property value for the receiving object, such as adding/removing elements from a list (e.g. rManager→rManager.dirtyRooms.add(dirtyableRoom)) or setting a property value (robotCtrl→robotCtrl.setMoving(true)). A run of a system is an infinite sequence of message events and object model configurations that evolve from an initial object model due to message events side-effects.</p><p>The object model is partitioned into controllable (system) objects and uncontrollable (environment) objects. A message event is a (controllable) system event if sent by a system object and an (uncontrollable) environment event otherwise.</p><p>An SML specification defines the valid runs of a system by a set of assumptionand guarantee scenarios. Guarantee scenarios describe how system objects may, must, or must not react to environment events; assumption scenarios describe what may, will, or will not happen in the environment, or how the environment may, will, or will not react to system events. A run satisfies an SML specification if it satisfies all guarantee scenarios or violates at least one assumption scenario.</p><p>Listing 1 shows parts of the SML specification of the cleaning robot system. An SML specification refers to a domain class model (line 5) that describes a set of possible object models for which the specification models the behavior. In this example, the class model defines rooms, robots, their software controller, and the robot manager. For execution and analysis, an initial object model, for example one as shown in Fig. <ref type="figure" target="#fig_0">2</ref>, must be provided in an external configuration.</p><p>In line 7, the specification defines controllable objects by listing their classes in a corresponding section. All other objects are environment objects.</p><p>The non-spontaneous events section (line 9) lists events that we assume cannot happen spontaneously, but only when an assumption scenario specifies that they can happen. In this example, rooms can become dirty spontaneously, but a robot's room only changes when the robot was ordered to move.</p><p>The remaining specification consists of scenarios that can be organized in collaborations. A collaboration defines roles, which represent interacting objects. In this case, all scenarios are grouped in one collaboration.</p><p>A scenario specifies what are valid sequences of message events and object model conditions. Message events are modeled as scenario messages. A scenario message refers to a sending and a receiving role, an operation or property defined by the receiving role's class, and possibly message parameter expressions.</p><p>When a message event occurs in the system that matches the first message in a scenario, an active copy of the scenario is created and the sending and receiving roles are bound to the sending and receiving objects of the message event. Further roles appearing in the scenario must be bound based on binding expressions (e.g. line 36) or they are bound to objects referenced as parameters by the message event (e.g. line 26). The active copy of the scenario progresses as further message events occur that match the subsequent messages in the context of the previously determined role bindings.</p><p>The messages can have different modalities such as strict, urgent, or eventually. When the scenario progresses to these messages-we say that they become enabled-the modalities influence what may, must, and must not happen next. When a scenario proceeds to a strict message, it means that no message event must occur that corresponds to a message in the same scenario that is not currently enabled. When an urgent system message is enabled, it means that a corresponding message event must occur before the next environment event occurs. When an eventually message is enabled, a corresponding message event must occur eventually. Violations of the eventually modality are called liveness violations, violations of the strict and urgent modalities are safety violations.</p><p>A scenario can also specify wait, interrupt, and violation conditions. When an active scenario progresses to an interrupt condition that evaluates to true, the active scenario terminates; otherwise it progresses immediately. When the active scenario reaches a wait condition that evaluates to false, the active scenario does not progress until the condition renders true; when it evaluates to true, it immediately progresses beyond it. Wait conditions can have the eventually modality, meaning that the condition must become true eventually (otherwise, this is again a liveness violation). If an active scenario progresses to a violation condition that evaluates to true, this is a safety violation.</p><p>Example scenarios explained: The RobotManagerAdds-DirtyRoomToListAndSelectsRobot scenario specifies that when a room is reported as being dirty, the robot manager must add the room to a list of dirty rooms and select any of its associated robots, resp. their controllers, for cleaning it. The scenario RobotManagerOrdersRobotToCleanRoom specifies that after selecting a robot controller, the robot manager must signal that robot controller to start moving the robot. The EventuallyCleanDirtyRoom scenario specifies that once a robot manager registers a room in a list of dirty rooms, this room must eventually be removed from that list. The scenario MoveRobotWhenOrderedTo specifies that after a robot is ordered to move, the robot must move to any of the adjacent rooms. The any in the parameter expression means that one of the adjacent rooms of the robot's current room can be selected non-deterministically. How the robot should select a route to the next dirty room is not specified in this scenario-it is often desirable during the early design to under-specify in such a way, when a concrete solution has not yet been decided upon. The behavior can be refined by adding further scenarios that, for example, select a next rooms from a list of rooms that was computed as the shortest path to a dirty room. (Details are omitted for brevity.) The assumption scenario RobotArrivesInRoom specifies that when a robot is ordered to move to an adjacent room, and only if the room is really adjacent to its current room, it will eventually arrive in that room. The scenario Robot-DischargesOrRecharges specifies the assumption that the robot's battery will discharge when moving to a next room, and it will be recharged if it moves to a room with a charging station.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. PLAY-OUT, REALIZABILITY CHECKING, VERIFICATION</head><p>The play-out algorithm defines an execution semantics for SML specifications. In brief, it works as follows: Initially, the system waits for environment events to occur. When an environment event occurs that activates or progresses guarantee scenarios such a way that urgent or eventually system messages are enabled, the system non-deterministically chooses a corresponding system message for execution, as long as it is not blocked by another active guarantee scenario, i.e., would lead to a safety-violation. The system can send further messages until there are no more enabled system messages marked as urgent or eventually. Then the system waits for the next environment event and the process is repeated. We assume that the system is fast enough to execute any finite number of message events before the next environment event occurs. SCENARIOTOOLS supports an interactive play-out of the SML specification, which can be used for validation.</p><p>Moreover, SCENARIOTOOLS is capable of building a graph of all possible play-out executions. In that graph, edges are labeled with environment and system message events; the structure can be viewed as an infinite two-player game, played by the system against the environment. The system wins the game if, no matter what environment events the environment chooses, the system can chose system events in such a way that the resulting path corresponds to a run that satisfies the specification. If this is not the case, the specification is unrealizable and must be fixed. The game is a GR(1) game that SCENARIOTOOLS solves by an implementation of the GR(1) game algorithm by Chatterjee et al. <ref type="bibr" target="#b4">[5]</ref>. If the specification is realizable, the algorithm produces a strategy of how the system can satisfy the specification; if the specification is unrealizable, the algorithm produces a counter-strategy of how the environment can always force a violation. The counterstrategy helps understand the specification flaw.</p><p>If the specification is realizable, but the strategy identifies that not all system moves in the play-out graph are winning, it means that during play-out, the system may make choices that do not lead to a valid run. For example, when the cleaning robot is in room 01, and room 02 gets dirty, but the robot only moves between room 01 and room 03, the dirty room may never be cleaned. In such a case, the specification can be refined, for example as explained before, in order to constrain the system choices, so that each play-out choice is winning.</p><p>When this property is satisfied, we can generate SBP code from the SML specification, which will then perform a playout of the specification that is guaranteed to satisfy the specification. SCENARIOTOOLS provides the SBP framework in which scenarios specifications can be programmed in a way that is very similar to SML. SBP builds on the Behavioral Programming for Java framework, BPJ <ref type="bibr" target="#b5">[6]</ref>. A BPJ program consists of a collection of collaborating BThreads. Scenarios can be programmed in SBP by extending a special scenario BThread class, and SBP adds certain BThreads so that the scenario BThreads are executed according to the play-out algorithm.</p><p>SBP is suitable for programming scenarios manually, but it is also a convenient target for code generation from SML. Listing 2 shows the SBP scenario generated from the Robot-ManagerOrdersRobotToCleanRoom scenario. The class overrides different methods from a scenario superclass: the registerAlphabet method registers all messages appearing in the scenario. The initialisation method registers the messages upon which an instance of the scenario BThread will be started. The body method implements the scenario behavior after the occurrence of the first message. Here, a role binding must be performed based on a parameter that was carried by the initializing message event. A call of the request method makes the BThread yield and hand over different message events to the play-out event selection mechanism. For more details, see <ref type="bibr" target="#b3">[4]</ref>, <ref type="bibr" target="#b6">[7]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. PLATFORM-SPECIFIC EXTENSION</head><p>The SBP code from the example can be executed in a distributed setting, where the robot controller runs on a RaspberryPi-based robot (Pi2Go) that mimics a cleaning robot, and the robot manager runs on a different computer, both communicating via MQTT. The Pi2Go moves on a grid that represents the room layou, see Fig. <ref type="figure" target="#fig_1">3</ref>. The dirtDetected events can be injected via a GUI. moveToAdjacentRoom events are translated into commands that make the robot turn and follow a line to the next 'room'. When the robot arrives at the next 'room', another platform-specific component translates the sensor inputs into arrivedInRoom and setCharge events.</p><p>See the demo video here: https://youtu.be/VsSbueeIVYk. Other MDE tools for designing reactive systems exist, but most use component-and state-based models, such as MechatronicUML <ref type="bibr" target="#b8">[9]</ref>, UML-RT resp. Papyrus-RT <ref type="bibr" target="#b9">[10]</ref>, Matlab Simulink Stateflow, or the P language <ref type="bibr" target="#b10">[11]</ref>.</p><p>VIII. CONCLUSION a) Strengths:: The main strength of the approach is the requirements-aligned nature of the modeling: engineers can formally model the behavior similar to use case scenarios. Scenarios can be added to add behavior as well as restrict previous behavior. Moreover, the scenarios specify the interaction of components rather than describing the behavior of each of the components. Further strengths are:</p><p>• The formal realizability checking and verification that it supports. • The assumption validation at run-time (assumption scenario monitoring). • The distributed execution capabilities.</p><p>• Support for systems with dynamic topology b) Weaknesses:: The flexible modeling with overlapping behavior aspects spread across many scenarios has the problem that detecting and understanding specification flaws can be difficult. However, the same problem arises also when using informal use-cases and scenarios-then the problem is only worse, because no automated checks can help find them early. Further weaknesses are:</p><p>• Currently, only the generation of SBP Java code is supported. The concepts, however, can also be mapped to C++ code. • The SBP code relies on the play-out algorithm where active scenarios are run as separate threads that coordinate for event-selection. This creates memory and time overhead, which may be critical for applications where hardware resources are sparse. We propose alternative approaches in this case <ref type="bibr" target="#b11">[12]</ref>, <ref type="bibr" target="#b12">[13]</ref>. • Currently, SCENARIOTOOLS supports no real-time constraint in SML, but a previous tool version shows how real-time constraints can be integrated <ref type="bibr" target="#b11">[12]</ref>.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 2 .</head><label>2</label><figDesc>Fig. 2. Vacuum cleaner robot system sketch, simple 3-room topology</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 3 .</head><label>3</label><figDesc>Fig. 3. The RaspberryPi robot in action</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>monitoring execution SML-to-SBP Platform- specific functions Platform- specific functions Platform Sensors/Actuators/UI 1 3 4 2</head><label></label><figDesc></figDesc><table><row><cell cols="2">SML Specification</cell><cell></cell><cell>specification analysis:</cell></row><row><cell>Assumption Scenario Assumption Assumption Scenario Scenario</cell><cell>⇒</cell><cell>Guarantee Scenario Guarantee Scenario Guarantee Scenario</cell><cell>(a) Check realizability executability (b) Verify play-out</cell></row><row><cell>SBP Program</cell><cell></cell><cell></cell><cell></cell></row><row><cell>Assumption Scenario Assumption Assumption Scenario Scenario</cell><cell></cell><cell>Guarantee Scenario Guarantee Scenario Guarantee Scenario</cell><cell></cell></row><row><cell cols="4">Fig. 1. Scenario-based Design Process (SBDP) illustration</cell></row><row><cell></cell><cell></cell><cell></cell><cell>3) Code generation: SCENARIOTOOLS provides a Scenario-</cell></row><row><cell></cell><cell></cell><cell></cell><cell>Based Programming (SBP) framework that reflects the</cell></row><row><cell></cell><cell></cell><cell></cell><cell>SML concepts in Java; for example. scenarios are pro-</cell></row><row><cell></cell><cell></cell><cell></cell><cell>grammed by extending special scenario classes. Their</cell></row><row><cell></cell><cell></cell><cell></cell><cell>execution results in a play-out of the scenarios. This</cell></row></table><note>also works in a distributed setting, where components communicate over a network. SCENARIOTOOLS can automatically translate SML into SBP code. Notably, also assumption scenarios are translated into SBP scenarios; they monitor whether the environment satisfies the as-</note></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgments:: This work is funded by the German Israeli Foundation for Scientific Research and Development (GIF), grant No. 1258.</p></div>
			</div>

			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>APPENDIX</head><p>See a demo video here: https://youtu.be/VsSbueeIVYk. SCENARIOTOOLS can be installed following the setup instructions: http://scenariotools.org/downloads/download/.</p><p>The example project is located in https://bitbucket.org/ jgreenyer/scenariotools-sml-examples/src//org.scenariotools. examples.sbp.vacuumrobotv2/?at=master (Import to Eclipse runtime workspace mentioned in the above setup instructions.)</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">LSCs: Breathing life into message sequence charts</title>
		<author>
			<persName><forename type="first">W</forename><surname>Damm</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Formal Methods in System Design</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="page" from="45" to="80" />
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Marelly</surname></persName>
		</author>
		<title level="m">Come, Let&apos;s Play: Scenario-Based Programming Using LSCs and the Play-Engine</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Scenario-based modeling and synthesis for reactive systems with dynamic system structure in ScenarioTools</title>
		<author>
			<persName><forename type="first">J</forename><surname>Greenyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Gritzner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Katz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Marron</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the MoDELS 2016 Demo and Poster Sessions, co-located with ACM/IEEE 19th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2016</title>
				<editor>
			<persName><forename type="first">J</forename><surname>Lara</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><forename type="middle">J</forename><surname>Clarke</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Sabetzadeh</surname></persName>
		</editor>
		<meeting>the MoDELS 2016 Demo and Poster Sessions, co-located with ACM/IEEE 19th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2016</meeting>
		<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="volume">1725</biblScope>
			<biblScope unit="page" from="16" to="32" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">From scenario modeling to scenario programming for reactive systems with dynamic topology</title>
		<author>
			<persName><forename type="first">J</forename><surname>Greenyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Gritzner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>König</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Dahlke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Shi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Wete</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of ESEC/FSE&apos;17</title>
				<meeting>ESEC/FSE&apos;17<address><addrLine>Paderborn, Germany</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2017">September 4-8, 2017. 2017</date>
		</imprint>
	</monogr>
	<note>to appear</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Conditionally Optimal Algorithms for Generalized Büchi Games</title>
		<author>
			<persName><forename type="first">K</forename><surname>Chatterjee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Dvorák</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Henzinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Loitzenbauer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Symposium on Mathematical Foundations of Computer Science (MFCS 2016), ser. Leibniz International Proceedings in Informatics (LIPIcs)</title>
				<editor>
			<persName><forename type="first">P</forename><surname>Faliszewski</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Muscholl</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Niedermeier</surname></persName>
		</editor>
		<meeting><address><addrLine>Germany</addrLine></address></meeting>
		<imprint>
			<publisher>Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="volume">58</biblScope>
			<biblScope unit="page">15</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Behavioral programming</title>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Marron</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Weiss</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Comm. ACM</title>
		<imprint>
			<biblScope unit="volume">55</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="90" to="100" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Szenariobasierte Programmierung und verteilte Ausführung in Java</title>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">W H</forename><surname>König</surname></persName>
		</author>
		<ptr target="http://jgreen.de/wp-content/documents/msc-theses/2017/Koenig2017.pdf" />
		<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
		<respStmt>
			<orgName>Leibniz Universität Hannover, Software Engineering Group</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Master&apos;s Thesis</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">A compiler for multimodal scenarios: Transforming lscs into aspectj</title>
		<author>
			<persName><forename type="first">S</forename><surname>Maoz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kleinbort</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Softw. Eng. Methodol</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page">41</biblScope>
			<date type="published" when="2011-09">Sep. 2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Towards safe execution of reconfigurations in cyber-physical systems</title>
		<author>
			<persName><forename type="first">D</forename><surname>Schubert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Heinzemann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Gerking</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">19th International ACM SIGSOFT Symposium on Component-Based Software Engineering (CBSE)</title>
				<imprint>
			<date type="published" when="2016-04">2016. April 2016</date>
			<biblScope unit="page" from="33" to="38" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Evaluation of uml-rt and papyrus-rt for modelling self-adaptive systems</title>
		<author>
			<persName><forename type="first">N</forename><surname>Kahani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Hili</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">R</forename><surname>Cordy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Dingel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 9th International Workshop on Modelling in Software Engineering, ser. MISE &apos;17</title>
				<meeting>the 9th International Workshop on Modelling in Software Engineering, ser. MISE &apos;17<address><addrLine>Piscataway, NJ, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="12" to="18" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Drona: A framework for safe distributed mobile robotics</title>
		<author>
			<persName><forename type="first">A</forename><surname>Desai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Saha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Yang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Qadeer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Seshia</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 8th International Conference on Cyber-Physical Systems, ser. ICCPS &apos;17</title>
				<meeting>the 8th International Conference on Cyber-Physical Systems, ser. ICCPS &apos;17<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="239" to="248" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">On-the-fly synthesis of scarcely synchronizing distributed controllers from scenario-based specifications</title>
		<author>
			<persName><forename type="first">C</forename><surname>Brenner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Greenyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Schäfer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Fundamental Approaches to Software Engineering (FASE</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">A</forename><surname>Egyed</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">I</forename><surname>Schaefer</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">2015. 2015</date>
			<biblScope unit="volume">9033</biblScope>
			<biblScope unit="page" from="51" to="65" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Controller synthesis and PCL code generation from scenario-based GR(1) robot specifications</title>
		<author>
			<persName><forename type="first">D</forename><surname>Gritzner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Greenyer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the The 4th International Workshop on Model-driven Robot Software Engineering, STAF 2017</title>
				<meeting>the The 4th International Workshop on Model-driven Robot Software Engineering, STAF 2017<address><addrLine>Marburg, Germany</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
	<note>to appear</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
