<?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">Towards one Model Interpreter for Both Design and Deployment</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Valentin</forename><surname>Besnard</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">TRAME team</orgName>
								<orgName type="institution" key="instit2">ESEO</orgName>
								<address>
									<settlement>Angers</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Matthias</forename><surname>Brun</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">TRAME team</orgName>
								<orgName type="institution" key="instit2">ESEO</orgName>
								<address>
									<settlement>Angers</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Philippe</forename><surname>Dhaussy</surname></persName>
							<affiliation key="aff1">
								<orgName type="laboratory">Lab-STICC UMR CNRS 6285</orgName>
								<orgName type="institution">ENSTA Bretagne</orgName>
								<address>
									<settlement>Brest</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Frédéric</forename><surname>Jouault</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">TRAME team</orgName>
								<orgName type="institution" key="instit2">ESEO</orgName>
								<address>
									<settlement>Angers</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><forename type="first">David</forename><surname>Olivier</surname></persName>
							<email>david.olivier@davidson.fr</email>
							<affiliation key="aff2">
								<orgName type="institution">Davidson Consulting</orgName>
								<address>
									<settlement>Rennes</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ciprian</forename><surname>Teodorov</surname></persName>
							<affiliation key="aff1">
								<orgName type="laboratory">Lab-STICC UMR CNRS 6285</orgName>
								<orgName type="institution">ENSTA Bretagne</orgName>
								<address>
									<settlement>Brest</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Towards one Model Interpreter for Both Design and Deployment</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">DE25AFDDA65EF999B3411E201A7C3B9F</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T01:16+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>
			<textClass>
				<keywords>
					<term>UML</term>
					<term>Model Interpretation</term>
					<term>Model Verification</term>
					<term>Embedded Systems</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Executable modeling of complex embedded systems is essential for bug discovery and safety validation at early design stages. A relatively large number of tools enable early design diagnosis and validation by transforming and analyzing the model into a formal setting. However, this transformation induces a semantic gap rendering diagnosis more difficult. Moreover, on the way to deployment, executable models are transformed into low level executable code. Existence of this second transformation similarly renders diagnosis of the deployed system more difficult, and also increases validation costs of the approach in the context of critical systems: a non trivial equivalence relation needs to be established between the formally analyzed model and the executable code. In this paper, we introduce a first step towards addressing these problems with a bare-metal UML interpreter, which uniquely defines the executable semantics for both design and deployment. To facilitate the diagnosis and validation process our interpreter offers a diagnosis interface through which the semantics is shared with diagnosis tools. The tools rely on this interface to interact with (observe and control) the executing model either locally on a PC during early design phases or remotely on the target embedded system after deployment. We illustrate our approach on a railway level crossing system ported to two embedded targets (at91sam7s and stm32), to which we connect a remote high-level simulator for interactive execution control and exhaustive state-space exploration.</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>The new generation of embedded systems and CPS (Cyber-Physical Systems) provides more powerful features to meet emerging needs in numerous fields (e.g., automotive, avionics, robotics, smart cities). With the development of IoT (Internet of Things), they now tend to be connected and to collaborate with other systems on networks. This increasing complexity creates more difficulties for engineers to check and ensure safety, or simply to avoid bugs. Not only are behaviors of these systems more uncertain but they are also more vulnerable to cyber attacks, due to their network connections. To prevent the introduction of bugs during development of such systems, there is a need to execute, simulate, and verify models. In the industrial world, the common approach <ref type="bibr" target="#b0">[1]</ref> consists of two transformations: one that converts the design model into various models (e.g., formal models) used by diagnosis tools during the design phase, and another one that generates deployable code from the user model.</p><p>This common approach has two main issues. On the one hand, the semantic gap created by transformations renders more complex the interpretation of diagnosis results. On the other hand, it is relatively difficult to prove the equivalence between all these models because each one is defined in terms of a different language with different semantics. In summary, we notice that the root cause of these problems is the use of multiple definitions of the language semantics defined by transformations towards different formalisms.</p><p>To solve these issues, we propose an approach based on a single semantics definition that overcomes the equivalence issue and guarantees the absence of semantic gap. Transformations that modify the semantics should be avoided to preserve the uniqueness of this definition. In fact, our solution consists of using a unified semantics for both design and deployment. This unique definition has been implemented in a bare-metal interpreter of models. To ensure executability of these models, the selected semantics should be complete and without inconsistencies. For this interpreter, we have chosen tUML <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3]</ref>, a textual notation for a subset of UML, that fits these requirements. This interpreter enables to execute software applications at a higher level of abstraction. While this approach solves semantic issues, a lack of diagnosis tools appears. To fix this problem, our idea is to share the unified semantics of the language with diagnosis tools (e.g., simulator, debugger). A generic communication interface enables the connection of these tools to the interpreter to observe and control model execution.</p><p>Experimentations performed on a railway level crossing system show that our approach is on the way towards feasibility. Our UML execution engine can be deployed on a PC (to be used during the design phase) as well as on two embedded targets: at91sam7s and stm32. To control the interpreter, a communication link has been developed to connect different diagnosis tools. For the moment, we have a simulator that enables users to observe and control the execution of the model. We illustrate this feature by computing the exhaustive state-space of the level crossing model.</p><p>The paper is organized as follows. Section II presents our approach and our main contribution: a bare-metal UML model interpreter. In Section III, we show results of our experimentations on the level crossing example. Finally, related works are discussed in Section IV and we conclude in Section V. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. DESIGN OF A BARE-METAL UML INTERPRETER A. Approach Overview</head><p>Our approach introduces an interpreter of UML models implemented in C language, which has the specificity to use a single definition of the semantics for both the design phase and the execution. To perceive the innovative aspect of this technique, it is important to understand the common approach used by engineers to develop software systems (Figure <ref type="figure">1</ref>). First of all, engineers model the system using the semantics definition of dedicated modeling languages (e.g., UML, fUML, SysML). At this stage, many diagrams are typically produced to describe the system under multiple points of view. Some of them are dedicated to system execution while others are used for alternative purposes (e.g., testing, engineers understanding of the system). Diagrams required for execution are transformed into code using manual or automatic code generation. This transformation may change the semantics definition of the model and creates a semantic gap between the design model and the code. Hence, it is more difficult to identify an element of the design model in code and conversely. In parallel of this first activity, the design model is also transformed into other formalisms to be used by diagnosis tools for different purposes (e.g., simulation, exploration, formal verification). With this second transformation, a new issue appears. It is now more difficult to prove the equivalence between these models used for diagnosis and validation, and the deployed code.</p><p>Our approach (Figure <ref type="figure">2</ref>) consists of modeling a system using the tUML language, that offers a clear and complete definition of a model without inconsistencies <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3]</ref>. With tUML, three views of the system are needed to define an executable model: class diagram, state machines, and composite structure diagram. Then, this model is serialized to C to be loaded into the interpreter. The serialization is applied only to elements needed for the execution (i.e., runtime data and runtime code) to adapt the syntax of the model without changing the semantics. This operation is a direct transliteration of each element of the model into C language as struct initializers, nothing more. Afterwards, this executable model can be executed by the model interpreter. One thing we still need to establish is the determinism of the interpreter execution (i.e., the absence of undefined behaviors <ref type="bibr" target="#b3">[4]</ref>). This could be validated with static or dynamic analysis of the interpreter code.</p><p>This interpreter solves the three main drawbacks of the common approach. Firstly, the problem of equivalence between the design model and the code has been overcome thanks to the single definition of the semantics. Secondly, the semantic gap has been removed because no transformation, which alters or changes the semantics, is used. Thirdly, this unique definition facilitates the understanding of diagnosis results in terms of design model concepts. This solution has also other advantages. It may contribute to save time during the design phase by modeling only needed points of view of the system. Like code generation, the coding step requires no effort and the risk to introduce bugs is reduced. In our approach, this goal will be addressed by simulating and deploying the model directly on the interpreter embedded on the target.</p><p>Nevertheless, the execution of a DSL like tUML, introduced in [2, 3], creates another issue. Indeed, a lack of diagnosis tools (e.g., simulator, model-checker, debugger, or profiler) can be noticed for some specific languages. Rather than implementing an ad-hoc toolbox for each DSL, a solution (Figure <ref type="figure">2</ref>) is to link the interpreter with existing tools <ref type="bibr" target="#b4">[5]</ref>. Our model interpreter has been designed to be controlled remotely through a simple and generic API. This feature enables control of model interpretation either step by step or in a back-intime way <ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref><ref type="bibr" target="#b7">[8]</ref>. This interface is exactly what is needed to connect a model-checker, like LTSmin <ref type="bibr" target="#b8">[9]</ref> or tools from ENSTA Bretagne <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b10">11]</ref>, for formal properties verification.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Interpreter Design</head><p>The model interpreter introduced in this paper has been implemented in C, a low level and general purpose language perfectly suited for embedded systems. The goal of this interpreter is to define a unique semantics definition that will be used for both design and deployment, and to execute models according to this semantics.</p><p>We will now give an overview of the interpreter architecture (Figure <ref type="figure" target="#fig_1">3</ref>) rather than a detailed description that exceeds the scope of this article. The Interpreter class is composed of a collection of ActiveObjects and of the user model conformant to the tUML semantics. tUML basically corresponds to a subset of the class, state machines, and composite structure diagrams from UML. This last diagram defines a composite class, called SUS (for System Under Study), which goal is to specify the part played by each ActiveObject as well as links between them. Every ActiveObject has a state machine that defines its behavior, the current state of its state machine, and the list of all fireable transitions from its current state. It can compute fireable transitions, and fire a transition to make its current state evolve. An ActiveObject also owns an EventPool to store occurrences of events that it receives. The EventPool is currently designed as a bits field, which offers some advantages (e.g., a bounded representation of events) and defines a particular execution semantics. This specific semantics can be modified by using other data structures (e.g., FIFO) to implement different features (e.g., storage of multiple occurrences of a given event, preservation of events reception order). The EventPool has three principal operations: one to signal an event, one to consume an event, and the last one to check if an event has occurred. An ActiveObject also has a Store where values of its attributes are stored. The Store has only two operations: one to assign a value to an attribute, and another to get the value of an attribute. To have a generic representation of attributes, we used a generic pointer, which points to the suitable value of the attribute, and an integer to store the size of its data type. Furthermore, an ActiveObject needs to evaluate guards on transitions of its state machine. The class GuardEval has been designed for this purpose. Currently this class involves Flex and Bison to parse guard expressions, but future works will improve that evaluation using offline preprocessing to reduce the memory footprint and enhance execution performances. The last class is the EffectBehavior that executes effects associated to transitions when one of them is fired. Two kinds of effects are available yet with the simplified version of the ABCD language [3] used here. It is possible to send events to another ActiveObject or to assign a value to an attribute. This interpreter has been designed to be portable on different targets. At the moment, this interpreter can be executed on a PC but is also supported on two embedded targets: at91sam7s and stm32. Other targets could be easily added because we designed the interpreter to be linked with targetspecific libraries of the chosen target at build time. This specificity helps to fit embedded systems requirements, which involve limited computation and memory resources.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Communication Interface</head><p>To solve the problem of the lack of diagnosis tools with DSLs, we take into account the possibility to connect the interpreter with existing tools (e.g., simulator, debugger, profiler, model-checker). Our idea is to provide a generic API to be able to control remotely the execution of the interpreter. This simple interface is composed of four requests. Get configuration: collects the current configuration (memory state) of the interpreter. A configuration is composed of the current state, the EventPool and values of attributes, of each ActiveObject. Set configuration: loads a configuration as the current memory state of the interpreter. Get fireable transitions: gets transitions from ActiveObject instances that have their trigger and their guard satisfied in the current state. A fireable transition is identified by its id and the ActiveObject to which it belongs. Fire a transition: fires a fireable transition of an ActiveObject. When firing, the event of the trigger is consumed, the current state is updated, and effects attached to this transition are processed.</p><p>With only four requests, this simple interface offers several possibilities. Indeed, the model interpreted can be executed step by step. A specific execution path can be chosen with the "Get fireable transitions" request. This feature enables to check a property or find a bug in a specific path. However, the most powerful functionality is the ability to make back-in-time execution <ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref><ref type="bibr" target="#b7">[8]</ref>. The "Set configuration" request can place or replace the interpreter in any configuration. This feature can be useful for debugging if we want to come back on previous configurations but also for the exploration of the state-space. This generic API gives the possibility to use several kinds of tools in an easy way. Indeed, to connect an existing tool, you just need to add a TCP client and to implement the communication interface. In our point of view, it is better to use existing tools than implementing ad-hoc tools. One reason is that existing tools have been tested, used and approved for many years. Engineers are familiar with these tools and no formation will be required to teach them how to use them.</p><p>Our interpreter can support multiple kinds of connections even if only TCP connection for PC, and RS232 connection for at91sam7s and stm32 have been developed for the moment. With a strategy pattern <ref type="bibr" target="#b11">[12]</ref>, only the code of the chosen connection is compiled and loaded in the target, which contributes to reduce memory footprint. A new kind of connection can be easily added by implementing the connection interface. The interpreter should only know how to open, read, write and close the connection. It is important for us to offer this functionality because embedded boards have sometimes few, and specific kinds of serial ports available. Furthermore, to avoid implementing a serial communication within an existing tool, we have created a little application that converts TCP data frames into serial data frames. With this converter, only a TCP client plugin needs to be implemented into a tool so that it can control the interpreter over any serial connection. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. A UML MODEL ON AN EMBEDDED TARGET</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Case Study</head><p>To illustrate our approach we use a level crossing system, presented in Figure <ref type="figure">4</ref>. A level crossing is a system built at the intersection of a railroad and a road. It is responsible for ensuring the safety of all road users during the passage of the train. In this case study, a UML model of a level crossing has been designed (Figure <ref type="figure">5</ref> and Figure <ref type="figure">6</ref>). The Controller controls the activation of the RoadSign (e.g, lights, alarm) and the closure of the Gate according to signals received from TrackCircuits. TrackCircuits are sensors able to detect the Train on the railroad. Each one sends a signal when the Train is detected and another one when the detection ends. The level crossing counts three TrackCircuits: one for the entrance, one for the approach, and one for the exit of the level crossing.</p><p>All these objects are active, so their behaviors are described by state machines. A state machine is composed of states linked together with directed transitions. Transitions can be fired to change the state of an ActiveObject. A transition is fireable if the event associated with its trigger has been received by this state machine and if its guard is satisfied. When a transition is fired, its effect is processed. The language used to parse guards defined as OpaqueExpressions and effects defined as OpaqueBehaviors is a simplified version of ABCD <ref type="bibr" target="#b2">[3]</ref>. The current version of the interpreter supports simple boolean expressions for guards as well as the sending of events and assignment of variables for effects. This is sufficient to execute a model and make ActiveObjects interact together.</p><p>We will now describe behaviors of ActiveObjects (Figure <ref type="figure">6</ref>) to better understand these interactions. The Train state machine Figure <ref type="figure">6</ref>. State machines of the level crossing example triggers sequentially the detection of the entrance TrackCircuit (tcEntrance), of the approach TrackCircuit (tcApproach) and of the exit TrackCircuit (tcExit). This linear state machine considers the passage of a single train on the level crossing. TrackCircuits state machines have only two states Detection and NoDetection that transmit signals to the controller at the beginning and at the end of train detection. State machines for tcApproach and tcExit are similar to the state machine of tcEntrance presented on Figure <ref type="figure">6</ref>. The Controller state machine has the most important role in the system. When the train is detected by tcEntrance, it is in charge of sending a signal to switch on lights of the roadSign. Then, it sends a signal to close the gate when the train begins to be detected by tcApproach. At the end of the detection, we consider that the train is passing until the detection of tcExit, which sends a signal to open the gate. Finally, a signal is send to switch off lights of the roadSign when the train quits the detection zone of tcExit, and the controller returns in its idle state. The state machine of the RoadSign can alternate between Inactive and Active states thanks to switchOn and switchOff signal events. This example model is not connected with its real environment because the link of the interpreter with inputs and outputs of the embedded board have not been implemented yet. However, the level crossing of our case study has sensors (TrackCircuits) and actuators (RoadSign and Gate) that have been integrated to the design model. This enables to simulate the level crossing example as if it was executing on the real system, which uses inputs and outputs of the board. In fact, only the controller will need to be deployed on the real system because other entities are active elements of the environment.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Deployment and Results</head><p>The level crossing case study has been deployed on our interpreter of UML models. This experimentation has been made on a PC with a Linux operating system, and on both at91sam7s and stm32 targets without operating systems (baremetal). The level crossing model has been designed using tUML before being serialized into Eclipse UML, and finally into C. It has been successfully executed on the interpreter by firing the first fireable transition on active objects in turns. Without any optimizations, the memory footprint of the binary executable file containing the model, the interpreter, and specific libraries of the board for the stm32 is only 131 ko, which is sufficiently small to be embedded.</p><p>We have also connected two diagnosis tools to control remotely the execution of the level crossing model. A simulator has been developed to explore some execution paths of this model. It can be connected to the interpreter using either a TCP connection or a serial connection. Indeed, a serial port communication using a UART peripheral of the PC was developed to communicate directly with the embedded interpreter for debug purpose but this functionality has become useless with the communication converter. The simple user interface (Figure <ref type="figure" target="#fig_3">7</ref>) provides four buttons to apply each request of the API and directly control the model execution. This gives the possibility to the user to get information on the execution and to make the model evolve by firing transitions. To observe the model execution, the simulator has also the ability to decode the configuration and to display its content in an understandable way for humans.</p><p>Another diagnosis tool has also been connected to the model interpreter for state-space exploration. For this purpose, the Figure <ref type="figure">8</ref>. Graph of the state-space exploration of the level crossing example communication unit developed in the simulator has been integrated into this state-space explorer. This tool has computed the state-space of the level crossing model using a breadth first search algorithm connected with the interpreter via the TCP diagnosis interface. This results in a state-space constituted of 1,825 different configurations linked to one another with 5,793 transitions (This state-space exploration has been performed with 3 events preloaded in the EventPool of the controller: entranceBegin, exitBegin, and exitEnd.). The associated statespace graph shown in Figure <ref type="figure">8</ref> gives an overview of the extent of this model exploration.</p><p>To sum up, these experimentations show the ability of our interpreter to be remotely controlled by diagnosis tools for simulation and exploration purposes.</p><p>IV. RELATED WORK Some generic tools are able to build an interpreter, and execute models designed with a given DSL. GEMOC studio is an Eclipse plugin that integrates a language workbench, and a modeling workbench to define a DSML as well as design models conforming to this language. This environment can be used to build a model interpreter, and other diagnosis tools (e.g., a graphical model animator, a trace manager) <ref type="bibr" target="#b12">[13]</ref>. Another example is the K framework <ref type="bibr" target="#b13">[14]</ref>, an executable semantics framework based on rewriting rules. It can be used to define programming languages or create tools. The possibility to target a large number of languages is a significant advantage of these frameworks. However, this also induces a lack of performance because the implementation is not specifically adapted to the application. Contrary to these tools, our interpreter has been designed in a classical way but with the goal to fit requirements of embedded systems. Our approach takes also into account that the interpreter has to be connected to existing diagnosis tools rather than generated new ones for each DSML. Some alternative methods (e.g., <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b14">[15]</ref><ref type="bibr" target="#b15">[16]</ref><ref type="bibr" target="#b16">[17]</ref>) focus on a semantics definition based on state machines. The transformation of these diagrams into intermediate formalisms like EHA enables the direct execution of these state machines. These tools are mainly used for simulation <ref type="bibr" target="#b17">[18]</ref>, exploration <ref type="bibr" target="#b18">[19]</ref> and model-checking <ref type="bibr" target="#b0">[1]</ref> purposes. However, they do not defined a generic interface of communication like our interpreter and it is not possible to control their execution on an embedded target. The key point of our approach is the use of a single semantics definition, which fixes the equivalence issue between design model and code. This could also be achieved using verified compilers or interpreters (e.g., the CompCert C compiler <ref type="bibr" target="#b19">[20]</ref>, and Jitk <ref type="bibr" target="#b20">[21]</ref>). The formal language Coq enables to check and certify formal properties of programming languages. Correctness of generated or interpreted code is formally proven. It ensures this way the equivalence of the design model with the code. However, this kind of tools is not widely used yet due to its complexity.</p><p>Another essential problem for the execution of models is the lack of tools after deployment. This issue has not been completely addressed yet. For UML, some simulators and interpreters begin to appear without being widely used at the moment. For other DSLs, only generic frameworks or the use of a design pattern dedicated for monitoring <ref type="bibr" target="#b4">[5]</ref> are able to generate this kind of tools. We differentiate our interpreter by the use of a generic interface to connect it with existing tools.</p><p>Numerous related works have also been achieved on real time virtual machines (VMs) <ref type="bibr" target="#b21">[22]</ref><ref type="bibr" target="#b22">[23]</ref><ref type="bibr" target="#b23">[24]</ref><ref type="bibr" target="#b24">[25]</ref>. Several concepts used by researchers on this topic have been applied to DSL execution engines. All these VMs interpret bytecode, so one important difference is that our model interpreter provides a higher level of abstraction. Some of these VMs have been implemented using specific languages (e.g., Estérel <ref type="bibr" target="#b25">[26]</ref>). In comparison with our interpreter, UML is more adapted to model systems. Furthermore, UML is widely used during the design phase of systems in the industrial world. Using the same language for the design phase and the code is better because no semantic gap is created. Virtual machines for sensor networks (e.g., Maté <ref type="bibr" target="#b26">[27]</ref>, and Mote runner <ref type="bibr" target="#b27">[28]</ref>) have similarities with our work even if our approach is more focused on industrial applications with both sensors and actuators. Nevertheless, VMs for sensors networks face several issues especially on communication speed and execution that we will also need to solve for making our interpreter scalable.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. CONCLUSION</head><p>In this paper, we have introduced an interpreter of UML models with the specificity to use a single semantics definition for both the design phase and the deployment. This approach eliminates the problem of the equivalence between models, and the semantic gap created by model transformations. The use of tUML enables to define complete executable models that can be directly executed on the interpreter by serializing the model into C language. A first step to solve the lack of diagnosis toolboxes for DSLs has been made with the implementation of a generic communication interface that enables the use of existing tools. This enables to control remotely the execution of the interpreter step by step or in a back-in-time way. We illustrate this functionality by implementing a simple simulator that communicates with the interpreter running on an embedded board. This simulator can be used to simulate a model and to explore some execution paths. We have also confirmed that we can explore a full state-space.</p><p>Future work will focus on linking this engine with the LTSmin <ref type="bibr" target="#b8">[9]</ref> model-checker and tools from ENSTA Bretagne <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b10">11]</ref> to verify formal properties directly on models executed by the interpreter on embedded boards. We are also interested in interfacing other diagnosis tools for several purposes: monitoring, debugging, and profiling.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .Figure 2 .</head><label>12</label><figDesc>Figure 1. Diagram of the classical approach</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. Class diagram of the interpreter</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 4 .Figure 5 .</head><label>45</label><figDesc>Figure 4. Schema of the level crossing example</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 7 .</head><label>7</label><figDesc>Figure 7. User interface of the remote execution controller</figDesc><graphic coords="5,48.96,50.54,252.00,100.50" type="bitmap" /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Program Code Generation based on UML Statechart Models</title>
		<author>
			<persName><forename type="first">G</forename><surname>Pintér</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Majzik</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Periodica Polytechnica</title>
		<imprint>
			<biblScope unit="volume">47</biblScope>
			<biblScope unit="issue">3-4</biblScope>
			<biblScope unit="page" from="187" to="204" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Towards Fixing Sketchy UML Models by Leveraging Textual Notations: Application to Real-Time Embedded Systems</title>
		<author>
			<persName><forename type="first">F</forename><surname>Jouault</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Delatour</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">OCL 2014</title>
				<editor>
			<persName><forename type="first">A</forename><forename type="middle">D</forename><surname>Brucker</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Dania</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Georg</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Gogolla</surname></persName>
		</editor>
		<meeting><address><addrLine>Valencia, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2014-09">Sep. 2014</date>
			<biblScope unit="volume">1285</biblScope>
			<biblScope unit="page" from="73" to="82" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Transformation de modèles UML vers Fiacre, via les langages intermédiaires tUML et ABCD</title>
		<author>
			<persName><forename type="first">F</forename><surname>Jouault</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Teodorov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Delatour</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Le Roux</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Dhaussy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Génie logiciel</title>
		<imprint>
			<biblScope unit="volume">109</biblScope>
			<date type="published" when="2014-06">Jun. 2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">A guide to undefined behaviours in c and c++</title>
		<author>
			<persName><forename type="first">J</forename><surname>Regher</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Object-oriented design pattern for dsl program monitoring</title>
		<author>
			<persName><forename type="first">Z</forename><surname>Drey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Teodorov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of SLE 2016</title>
				<meeting>SLE 2016<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="70" to="83" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Supporting efficient and advanced omniscient debugging for xdsmls</title>
		<author>
			<persName><forename type="first">E</forename><surname>Bousse</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Corley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Gray</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Baudry</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of SLE 2015</title>
				<meeting>SLE 2015<address><addrLine>New York, USA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="137" to="148" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Efficient and scalable omniscient debugging for model transformations</title>
		<author>
			<persName><forename type="first">J</forename><surname>Corley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">P</forename><surname>Eddy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Syriani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Gray</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software Quality Journal</title>
		<imprint>
			<biblScope unit="volume">25</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="7" to="48" />
			<date type="published" when="2017-03">Mar 2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Debugging parallel devs</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">V</forename><surname>Mierlo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">V</forename><surname>Tendeloo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Mustafiz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Barroca</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Ltsmin: High-performance language-independent model checking</title>
		<author>
			<persName><forename type="first">G</forename><surname>Kant</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Laarman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Meijer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Pol</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Blom</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Dijk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 21st International Conference on Tools and Algorithms for the Construction and Analysis of Systems -Volume 9035</title>
				<meeting>the 21st International Conference on Tools and Algorithms for the Construction and Analysis of Systems -Volume 9035<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag New York, Inc</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="692" to="707" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Environment-driven reachability for timed systems</title>
		<author>
			<persName><forename type="first">C</forename><surname>Teodorov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Dhaussy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">Le</forename><surname>Roux</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal on Software Tools for Technology Transfer</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="229" to="245" />
			<date type="published" when="2017-04">Apr 2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Past-free[ze] reachability analysis: reaching further with dag-directed exhaustive statespace analysis</title>
		<author>
			<persName><forename type="first">C</forename><surname>Teodorov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Le Roux</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Drey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Dhaussy</surname></persName>
		</author>
		<idno>stvr.1611</idno>
	</analytic>
	<monogr>
		<title level="j">Software Testing, Verification and Reliability</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="516" to="542" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m" type="main">Design patterns: elements of reusable object-oriented software</title>
		<author>
			<persName><forename type="first">E</forename><surname>Gamma</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1995">1995</date>
			<publisher>Pearson Education India</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A Solution to the TTC&apos;15 Model Execution Case Using the GEMOC Studio</title>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Deantoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Barais</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Blouin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Bousse</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Brun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Degueule</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Vojtisek</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">8th Transformation Tool Contest. l&apos;Aquila</title>
				<meeting><address><addrLine>, Italy</addrLine></address></meeting>
		<imprint>
			<publisher>CEUR</publisher>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">An overview of the K semantic framework</title>
		<author>
			<persName><forename type="first">G</forename></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">F</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Logic and Algebraic Programming</title>
		<imprint>
			<biblScope unit="volume">79</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="397" to="434" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Transformation of uml state machines for direct execution</title>
		<author>
			<persName><forename type="first">T</forename><surname>Schattkowsky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Muller</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2005 IEEE Symposium on Visual Languages and Human-Centric Computing</title>
				<meeting>the 2005 IEEE Symposium on Visual Languages and Human-Centric Computing<address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="117" to="124" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Automatic Code Generation Based on Formally Analyzed UML Statechart Models</title>
		<author>
			<persName><forename type="first">G</forename><surname>Pintér</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Majzik</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the FORMS-2003</title>
				<meeting>the FORMS-2003</meeting>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Contracts for model execution verification</title>
		<author>
			<persName><forename type="first">E</forename><surname>Cariou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Ballagny</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Feugas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Barbier</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th European Conference on Modelling Foundations and Applications</title>
				<meeting>the 7th European Conference on Modelling Foundations and Applications<address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="3" to="18" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">A UML Simulator Based on a Generic Model Execution Engine</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kirshin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dotan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hartman</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>Springer</publisher>
			<biblScope unit="page" from="324" to="326" />
			<pubPlace>Berlin Heidelberg</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">The architecture of a uml virtual machine</title>
		<author>
			<persName><forename type="first">D</forename><surname>Riehle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Fraleigh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Bucka-Lassen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Omorogbe</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of OOPSLA &apos;01</title>
				<meeting>OOPSLA &apos;01<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="327" to="341" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<title level="m" type="main">The CompCert Memory Model, Version 2</title>
		<author>
			<persName><forename type="first">X</forename><surname>Leroy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">W</forename><surname>Appel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Blazy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Stewart</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012-06">7987. Jun. 2012</date>
		</imprint>
	</monogr>
	<note type="report_type">Research Report</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Jitk: A trustworthy in-kernel interpreter infrastructure</title>
		<author>
			<persName><forename type="first">X</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Lazar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Zeldovich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Chlipala</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Tatlock</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 11th USENIX Conference on Operating Systems Design and Implementation</title>
				<meeting>the 11th USENIX Conference on Operating Systems Design and Implementation<address><addrLine>Berkeley, CA, USA</addrLine></address></meeting>
		<imprint>
			<publisher>USENIX Association</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="33" to="47" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Design and implementation of a comprehensive real-time java virtual machine</title>
		<author>
			<persName><forename type="first">J</forename><surname>Auerbach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">F</forename><surname>Bacon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Blainey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Cheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Dawson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Fulton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Grove</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Hart</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Stoodley</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th ACM &amp;Amp; IEEE International Conference on Embedded Software</title>
				<meeting>the 7th ACM &amp;Amp; IEEE International Conference on Embedded Software<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="249" to="258" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">A real-time java virtual machine with applications in avionics</title>
		<author>
			<persName><forename type="first">A</forename><surname>Armbruster</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Baker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Cunei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Flack</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Holmes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Pizlo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Pla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Prochazka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Vitek</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Embed. Comput. Syst</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page">49</biblScope>
			<date type="published" when="2007-12">Dec. 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">A real-time java virtual machine for avionics -an experience report</title>
		<author>
			<persName><forename type="first">J</forename><surname>Baker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Cunei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Flack</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Pizlo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Prochazka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Vitek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Armbruster</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Pla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Holmes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 12th IEEE Real-Time and Embedded Technology and Applications Symposium</title>
				<meeting>the 12th IEEE Real-Time and Embedded Technology and Applications Symposium<address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="384" to="396" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">The squawk virtual machine: Java TM on the bare metal</title>
		<author>
			<persName><forename type="first">D</forename><surname>Simon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Cifuentes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Companion to the ACM SIGPLAN OOPSLA &apos;05</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">An esterel virtual machine for embedded systems</title>
		<author>
			<persName><forename type="first">B</forename><surname>Plummer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Khajanchi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Edwards</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings SLAP &apos;06</title>
				<meeting>SLAP &apos;06<address><addrLine>Vienna, Austria</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="volume">126</biblScope>
			<biblScope unit="page" from="912" to="917" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Maté: A tiny virtual machine for sensor networks</title>
		<author>
			<persName><forename type="first">P</forename><surname>Levis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Culler</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGPLAN Not</title>
		<imprint>
			<biblScope unit="volume">37</biblScope>
			<biblScope unit="issue">10</biblScope>
			<biblScope unit="page" from="85" to="95" />
			<date type="published" when="2002-10">Oct. 2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Mote runner: A multi-language virtual machine for small embedded devices</title>
		<author>
			<persName><forename type="first">A</forename><surname>Caracas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Kramp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Baentsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Oestreicher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Eirich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Romanov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2009 Third International Conference on Sensor Technologies and Applications</title>
				<meeting>the 2009 Third International Conference on Sensor Technologies and Applications<address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2009">2009</date>
			<biblScope unit="page" from="117" to="125" />
		</imprint>
	</monogr>
</biblStruct>

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