<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Denver, CO, USA, October</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Prototyping of Distributed Embedded Systems ⋆ Using AADL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mohamed Yassin Chkouri</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marius Bozga</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yassin.Chkouri</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marius.Bozga}@imag.fr</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Verimag, Centre Equation - 2</institution>
          ,
          <addr-line>avenue de Vignate 38610 GIERES</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <volume>6</volume>
      <issue>2009</issue>
      <fpage>65</fpage>
      <lpage>79</lpage>
      <abstract>
        <p>Prototyping distributed applications can be extremely useful in evaluating a design, and also in understanding the effect of different parameters on the performance of an application. Architecture Analysis and Design Language provide adequate syntax and semantics to express and support distributed embedded systems. This paper studies a general methodology and an associated tool for building and translating AADL systems into a distributed application using network communication protocol. This allows runtime analysis to fully asses system viability, to refine and to correct the behavior of the system using BIP. Using our prototype we analyse the case study MPC in a native platform (PC).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>⋆ This work is partially supported by ITEA/Spices and OpenEMBeDD projects
model. The AADL standard defines a textual as well as graphical form of the
language.</p>
      <p>AADL has been designed to build distributed real-time and embedded
systems. AADL can be seen as a collection of many requirements covering many
domains. System designers and developers need to describe both functional and
non-functional requirements. These requirements must then be sorted and
enforced at the deployment level. We will presents the set of requirements that
must be respected to build distributed systems.</p>
      <p>
        We have shown in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], how AADL systems can be automatically translated
into BIP [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] (Behavior Interaction Priority), and analyzed using the BIP toolset.
BIP is a language for the description and composition of components as well as
associated tools for analyzing models and generating code on a dedicated
middleware. The language provides a powerful mechanism for structuring interactions
involving rendezvous and broadcast.
      </p>
      <p>In this paper, we present an extension of our translation to prototype
distributed applications using BIP and network communication protocol. We begin
with a model built by the application designer, who maps its application entities
onto a hardware architecture. Then, we use AADL into BIP tool to generate
BIP model conforming to AADL semantics. Finally, we use a code generator to
generate an executable model for each systems with communication protocol.
This translation allows simulation of distributed systems specified in AADL in
addition to the application of formal verification techniques developed for BIP,
e.g. deadlock detection, verification of properties, etc.</p>
      <p>
        The translation from distributed AADL systems into BIP is illustrated on
a case study: the Multi-Platform Cooperation (MPC) example provided by J.
Hugues [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Using our tool, we were able to run the case study in a native
platform (PC). In order, to debug and evaluate the case study before deploying
it on a distributed embedded platform.
      </p>
      <p>
        Distributed embedded application code generation from models is not
limited to AADL. In fact, distributed and high-integrity systems are probably the
domain which has the most maturity. OCARINA [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] allows model
manipulation, generation of formal models to perform scheduling analysis and generate
distributed applications. OCARINA allows code generation from AADL
descriptions to Ada. PolyORB [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] is a middleware toolset that provides distribution
services through standard programming interfaces and communication
protocols. However, the generated code from AADL does not take into account the
annex behavior specifications [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>This paper is organized as follows. Section 2 gives definition and comparaison
between existing ADLs. Section 3 gives an overview of AADL. In section 4,
we explain how to translate AADL systems into distributed application using
network communication protocol. In section 5, we present a MPC case study
and it deploylment into a distributed application. Conclusions close the article
in Section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Architecture Description Languages</title>
      <p>Architecture Description Languages (ADLs) have been proposed as modeling
notations to support architecture-based development. An ADL is a language
that provides features for modeling a software system’s conceptual architecture,
distinguished from the system’s implementation. ADLs provide both a concrete
syntax and a conceptual framework for characterizing architectures.</p>
      <p>The building blocks of an architectural description are (1) components, (2)
connectors, and (3) architectural configurations. Here we give a short description
of these blocks:
– A component in an architecture is a unit of computation or a data store.
– Connectors are architectural links used to model interactions among
components and rules that govern those interactions.
– Architectural configurations, or topologies, are connected graphs of
components and connectors that describe architectural structure. This information
is needed to determine whether appropriate components are connected, their
interfaces match, connectors enable proper communication, and their
combined semantics result in desired behavior.</p>
      <p>
        A number of ADLs have been proposed for modeling architectures both within
a particular domain and as general-purpose architecture modeling languages.
We specifically consider those languages most commonly referred to as ADLs:
C2 [
        <xref ref-type="bibr" rid="ref20 ref21">21, 20</xref>
        ], Rapide [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], Darwin [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], UniCon [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], SADL [
        <xref ref-type="bibr" rid="ref22 ref26">22, 26</xref>
        ], AADL [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Several researchers have attempted to shed light on these issues, either by
surveying what they consider existing ADLs [
        <xref ref-type="bibr" rid="ref14 ref28">28, 14</xref>
        ] or by classifing and
comparing several existing ADLs in some specific areas [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
      </p>
      <p>Comparisons between the languages (Figures 1, and 2) are given with respect
to: components, connections, priorities between components, behavior
description and support for distributed embedded system.</p>
      <p>All the above languages make distinction between a component interface
and an instance of a component that exhibits that interface. All the languages
provide syntax and semantics for component interface specification. All the
languages view a component interface specification as defining a component type,
where there can be multiple instances of components that exhibit that same
interface. All languages allow a hierarchical composition that allows
architectures to describe software systems at different levels, by using a collection of
subcomponents and connections between those subcomponents.</p>
      <p>C2, Darwin, SADL, and UniCon share much of their vocabulary and refer
to them simply as components; in Rapide they are interfaces; and in AADL
component categories.</p>
      <p>In this paper, we are interested by ADL which support distributed embedded
systems, priority for schedulability analysis, behavior using state machine, and
functional and non-functional properties. AADL was first introduced to model
the hardware and software architectures in the avionics and automotives domain,
and it is backed by several industries.</p>
      <p>Interface
C2 exported through top and
buttom ports; provided</p>
      <p>and required
SADL input and output ports</p>
      <p>(iports and oports)
Rapide provides, requires,</p>
      <p>action and service
Darwin services (provided and</p>
      <p>required)
Unicon players
AADL inputs and outputs ports
(event and/or data);
provide and require;
in and out parameters</p>
      <p>Component
Implementation Non-functional properties</p>
      <p>component none
implementation</p>
      <p>component
implementation</p>
      <p>interface;
implementation</p>
      <p>component
implementation</p>
      <p>component
implementation</p>
      <p>component
implementation
requires component
modification
none
none
attributes for
schedulability analysis
time constraints
schedulability
properties
safety level</p>
      <p>Noticeable about the AADL is its strong syntactic and semantic support for
architectures consisting of components of a limited number of functional
categories. Along with this it allows to add non-functional properties to architectural
components, such as timing, memory consumption and safety properties. In this
way, the model of a system architecture allows specific tools to predict
nonfunctional properties of the system in early design phases, which makes AADL a
particularly interesting notation for distributed embedded software development.</p>
      <p>Compared to other modeling languages, AADL defines low-level abstractions
including hardware descriptions. These abstractions are more likely to help
design a detailed model close to the final product.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Architecture Analysis &amp; Design Language</title>
      <p>
        The SAE Architecture Analysis &amp; Design Language (AADL) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] is a textual
and graphical language used to design and analyze the software and hardware
architecture of performance-critical real-time systems. It plays a central role in
several projects such as Topcased [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], OSATE [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], ASSERT [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], SPICES [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        A system modelled in AADL v.1 consists of application software mapped to
an execution platform. Data, subprograms, threads, and processes collectively
represent application software. They are called software components. Processor,
memory, bus, and device collectively represent the execution platform. They are
called execution platform components. Execution platform components support
the execution of threads, the storage of data and code, and the communication
between threads. Systems are called compositional components. They permit
software and execution platform components to be organized into hierarchical
structures with well-defined interfaces. Operating systems may be represented
either as properties of the execution platform or can be modelled as software
components. Behavior specifications [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] can be attached to AADL model elements
      </p>
      <p>Connectors
C2 interface with each</p>
      <p>component via a
separate port; interface
elementare provided</p>
      <p>and required
SADL specifies the supported</p>
      <p>data types
Rapide
Darwin
Unicon
AADL
connection; in-line
binding; in-line; no
explicit modeling of
component interactions</p>
      <p>connector
connector (ports,
parameters, data access)</p>
      <p>Priorities
low and high</p>
      <p>priority
scheduling of the
process using a static</p>
      <p>priority
priority information
for schedulability</p>
      <p>analysis
priority information
for schedulability</p>
      <p>analysis
priority information
for schedulability</p>
      <p>analysis
security level</p>
      <p>Behavior
consists of an invariant
and a set of operations.</p>
      <p>The invariant is used to
specify properties that must
be true of all component states
mathematical
calculation
consists of set of
transitions rule
using CORBA
attributes for
schedulability analysis
using subprograms; C/C++;</p>
      <p>ADA; state machine</p>
      <p>Distributed
yes
none
yes
yes
yes
yes
using an annex. The behavioral annex describes a transition system attached to
subprograms and threads.
Software Components AADL has the following categories of software
components: subprogram, data, thread and process.</p>
      <p>A subprogram component represents an execution entry-point in the source
text. Subprograms can be called from threads and from other subprograms.
These calls are handled sequentially by the threads. The data component type
represents a data type in the source text that defines a representation and
interpretation for instances of data. A thread represents a sequential flow of control
that executes instructions within a binary image produced from source text. A
thread always executes within a process. A scheduler manages the execution of
a thread. A process represents a virtual address space. Process components are
an abstraction of software responsible for executing threads.</p>
      <p>Hardware Components Execution platform components represent hardware
and software that is capable of scheduling threads, interfacing with an external
environment, and performing communication for application system connections.</p>
      <p>AADL processor components are an abstraction of hardware and software
that is responsible for scheduling and executing threads. In other words, a
processor may include functionality provided by operating systems. A device
component represents an execution platform component that interfaces with the
external environment. A device can interact with application software
components through their ports. A bus components are used to describe all kinds of
networks, buses, etc. A Memory components are used to represent any storage
device: RAM, hard disk, etc.
Systems A system is the top-level component of the AADL hierarchy of
components. A system component represents a composite component as an assembly
of software and execution platform components. All subcomponents of a system
are considered to be contained in that system.
3.2</p>
      <p>Connections
A connection is a linkage that represents communication of data and control
between components. This can be the transmission of control and data between
ports of different threads or between threads and processor or device components.
4</p>
    </sec>
    <sec id="sec-4">
      <title>From AADL to Distributed Implementation Using BIP</title>
      <sec id="sec-4-1">
        <title>4.1 The BIP Component Framework</title>
        <p>
          BIP (Behavior Interaction Priority) is a framework for modeling heterogeneous
real-time components [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. The BIP framework consists of a language and a toolset
including a frontend for editing and parsing BIP programs and a dedicated
platform for model validation. The platform consists of an Engine and software
infrastructure for executing models. It allows state space exploration and
provides access to model-checking tools of the IF toolset [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] such as Aldebaran [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ],
as well as the D-Finder tool [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. This permits to validate BIP models and
ensure that they meet properties such as deadlock-freedom, state invariants and
schedulability. The BIP language allows hierarchical construction [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] of
composite components from atomic ones by using connectors and priorities. Several
case studies were carried out such as an MPEG4 encoder [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], TinyOS [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], and
DALA [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2 Transformation from AADL to BIP</title>
        <p>
          The AADL models are transformed into BIP automatically by using our AADL
to BIP translation tool described in [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. The supported development process is
shown in the Figure 3.
        </p>
        <p>The model construction methodology applied to AADL models, opens the
way for enhanced analysis and early error detection by using BIP verifications
techniques. Once the model has been generated, three model checking techniques
for verification can be applied:
D-Finder: is an interactive tool for checking deadlock-freedom for
componentbased systems by using a static analysis method. It takes as input BIP programs
and applies proof strategies to eliminate potential deadlocks by computing
increasingly stronger deadlocks.</p>
        <p>
          Model checking by Aldebaran: The second technique of verification is
modelchecking by using the tool Aldebaran [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Exhaustive exploration by the BIP
exploration engine generates a Labeled Transition System (LTS) which can be
analyzed by model checking. e.g, Aldebaran takes as input the LTS generated
from BIP and checks for deadlock-freedom and other temporal properties.
Model checking with observers: The third technique of verification is by using
BIP observers to express and check requirements. Observers allow us to express
in a much simple manner most safety requirements. We apply this technique
to verify some properties as verification of communication, and verification of
thread deadline.
        </p>
        <p>Simulation &amp; Debugging: In addition to the verifications, we can simulate or
tests prototype implementations by creating an executable system. We can use
an interactive simulation and debugger to verify each interaction step by step
and to know which state or port is activated. These analysis allow to fully asses
system viability, to refine and to correct the behavior of system.
Code generator: The code generator takes as input a model, generated by the
parser, and transforms it to a C++ application code. The application is an
executable model of the original BIP program. Code is generated for each atomic
component, connectors and priorities, i.e., the code is modular and preserves the
structure of the initial model.
4.3</p>
        <p>Prototyping Distributed Implementation
Building distributed systems is a very tedious task since the application has to
be verifiable and statically analyzable. The AADL fits these two requirements
and allows the designer to describe different aspects of his distributed application
(number of processors, number of threads in each processors, connection between
threads...).</p>
        <p>Requirement: Requirements for prototyping distributed embedded system can
be seen as a collection of many requirements covering many domains. System
designers and developers need to describe both functional and non-functional
requirements. AADL support the different steps of system construction.
Supported entities and extensible property sets allow one to build full models and
adapt them to the application context. Furthermore, analysis tools can process
the models to assess its viability.</p>
        <p>Therefore, we list the following requirements for a prototyping process:
1. Data types and related functions to operate on them
2. Supporting runtime entities (threads) and interactions between them (through
ports and connections)
3. Association of subprograms to threads
4. Mapping of threads onto processes and binding processes to hardware entities
to form the deployed system.
5. Binding connections to buses to form the deployed system.</p>
        <p>AADL allows us to refine the description of each entity to detail more
precisely its behavior or some non-functional attributes. This allows us to have a
library of reusable components and helps in prototyping by refining and
extending them.</p>
        <p>Deployement: The deployement we describe here supports all of the
requirements discussed above. We begin with a model built by the application designer,
who maps its application entities onto a hardware architecture. Then, we use
AADL into BIP tool to generate BIP model conforming to AADL semantics.
Finally, this architecture is tested for soundness, any mismatch in the application
is reported by the analysis BIP tool chain.</p>
        <p>AADL is expressive enough to detail the deployment view of the application:
threads, processors, buses, threads on each process; properties refine the type
of tasks (periodicity, priority), and their associated implementation. We defined
our distribution model as a set of sender/receiver. It is supported by an AADL
architectural model that defines the location of each system and the payload of
the message exchanged as a thread-port name plus possible additional data.</p>
        <p>Figure 4 shows the steps for generating from a distributed AADL system’s
description an executable distributed application as follow:
1. Identify each system and a connector’s mapped to the bus.
2. Generate for each AADL system its corresponding description in BIP, and
for each connector’s mapped to the bus a communication protocol.
3. Compile BIP system’s and generate an executable for each system with
communication protocol.
4. Run and debug the distributed application.</p>
        <p>Our protocol supports communication between two or more computers. It
provide a full-duplex communication channel between processes that do not
necessarily run on the same computer. We consider channels for data exchange
among multiple threads in one or more processes are managed by the BIP Engine,
if processes are running on one computer. Otherwise, if processes are running
on different computers connected by a network, we use a network
communication protocol. Before sending data through network to a server, we initially
converted into encoded version before being transported (suitable for network
transfer). After receiving data (Sever side), it can be converted back.</p>
        <p>Most network communication protocols use the client server model. These
terms refer to the two machines which will be communicating with each other.</p>
        <p>One of the two machines, the client, connects to the other machine, the server,
typically to make a request for information. Notice that the client needs to know
of the existence of and the address of the server, but the server does not need
to know the address of the client prior to the connection being established.</p>
        <p>Our protocol use sockets. Sockets are associated with the concept of network
communication in the form of client-server programming; a pair of processes of
which one will be a client and one a server. The client process will send requests
to the server. Of course, when creating a socket, we have to specify the type
of communication that will be needed, since different modes of communication
requires different protocols.</p>
        <p>The steps involved in establishing a communication protocol on the client
side are as follows: (1) Create a communication protocol; (2) Connect the
communication to the address of the server; (3) Send and receive data.</p>
        <p>The steps involved in establishing a communication protocol on the server
side are as follows: (1) Create a communication protocol; (2) Bind the
communication to an address. For a server, an address consists of a port number on
the host machine; (3) Listen for connections; (4) Accept a connection. This call
typically blocks until a client connects with the server; (5) Send and receive data.</p>
        <p>The generated BIP code provides a framework that will directly call user
code when necessary. This allows a rapid and flexible design of the distributed
system and does not restrict the user implementations.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Case study: MPC (Multi-Platform Cooperation)</title>
      <p>
        This case study has been inspired J. Hugues [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Figure 5 shows the software
view of our case study. This model holds three system (Partitions); each is a
spacecraft with different roles:
– Spacecraft 1 is a leader spacecraft that contains a periodic thread, which
sends its position to Spacecraft 2 and Spacecraft 3.
– Spacecraft 2 and Spacecraft 3 are follower spacecraft. They receive the
position sent by Spacecraft 1 with a sporadic thread (Receiver thread),
update their own position and sends the position to the Reader thread. A
Reader thread in these two spacecraft reads periodically the position value
from the Receiver thread and store it in a protected object. A third thread
“watches and reports” all elements at that position (e.g., earth observation).
      </p>
      <p>This model gathers typical elements from distributed systems, with a set of
periodic tasks devoted to the processing of incoming orders (Watcher thread),
Reader thread to store these orders (Protected Object), and sporadic threads
to exchange data (Receiver thread). These entities work at different rates and
should all respect their deadlines so that the Watcher thread can process all
observation orders in due time.</p>
      <p>The software view only represents how the processing is distributed onto
different entities (threads) and gathered as AADL processes to form partitions. The
next step is to map this view onto a physical hardware view, so that Processor
resources can be associated to each Partition.</p>
      <p>Figure 6 is a graphical representation of the deployment view of the system.
It only shows the global architecture of the application (number of partition
and their mapping to hardware components). It indicates that each partition is
bound to a specific Processor and how the communication between partitions
occurs, using different buses.</p>
      <p>These two views are expressed using the same modeling notation. They can
be merged to form the complete system: interacting entities in the software
view represent the processing logic of the system, whereas the hardware view
completes the system deployment information by allocating resources.
5.1</p>
      <p>AADL Models
MPC case study is built by creating software component and mapping entities
onto a hardware architecture. The flexibility of AADL allows us to partially
define components and use them in other components. This is very useful during
the first steps of prototyping where every detail of the system is not yet clear.
Details can be added to these components either by means of AADL properties
or by component extension, without having to redefine all other components.
Data Types AADL data components model the messages that are exchanged
among the Partitions of a distributed application or inside one of these
Partitions. To express the kind of a data type, we use AADL data component as
shown in the listing 1.1.</p>
      <p>Subprograms Subprograms encapsulate the behavioral aspects of a distributed
application. They are modeled using the subprogram AADL component. The
implementation of a subprogram may be written entirely by the user by
indicating the source file or the pre-built libraries that contain the implementation.
Listing 1.2 shows the subprogram called Update.
data Record Type
end Record Type ;
data implementation Record Type . Impl
subcomponents</p>
      <p>XYZ ::: dddaaatttaaa bbbeeehhhaaavvviiiooorrr ::: ::: iii nnn ttt eee ggg eee rrr ;;;
end Record Type . Impl ;</p>
      <p>Listing 1.1. MPC data type
subprogram Update
feaDtautraeSsink : in parameter Record Type ;</p>
      <p>Protected : out parameter Record Type ;
end Update ;
subprogram implementation Update . impl
properties</p>
      <p>SSSooouuurrrccceee NLTaaemnxgetu==a&gt;&gt;ge ””=mU&gt;ppcdC.ac;tpep” ”; ;
end Update . impl ;</p>
      <sec id="sec-5-1">
        <title>Listing 1.2. MPC subprogram</title>
        <p>AADL subprograms can be modeled in several other ways. AADL2BIP allows
three type of subprograms implementation by adding an external source file
(C/C++), or by adding annex behavior specification, or by using subprogram
calls sequence. All this gives the programmer more flexibility when prototyping
his system.</p>
        <p>Threads Threads are active parts of a distributed application. A Partition must
contain at least one thread. The thread’s interface consists of ports. In this case
study we use two type of threads:
– Periodic threads, i.e., triggered by a time event (Period). Listing 1.3 shows
the AADL model of the periodic thread Sender thread that is located in
the Partition1. This thread sends a data of type Record Type. The dispatch
protocol of the thread and its period are specified using standard AADL
properties. In the thread implementation, we describe the behavior of the
thread by giving the subprogram that models its activity.</p>
        <p>thread Sender Thread
feaDDtaauttraaesSaocut irvcea t e: o:uitn eevveenntt ddaattaa ppoorrtt RReeccoorrdd TTyyppee ;;
properties</p>
        <p>Di s pat ch Pr ot oc ol =&gt; P e r i o di c ;
endPeSrieondder Thread ; =&gt; 100 Ms;
thread implementation Sender Thread . Impl
c a l l s Main : {
} W;rapper : subprogram Sender Thread Wrapper . impl ;
ecnodppnaanrrSeaaecmmntdieeoettnreesrrTWhDrareatapadp.aeIrcm.t Dpivlaa;ttae S−o&gt;urWcera−p&gt;peDr.aDtaa tSaouarcctei v; at e ;</p>
      </sec>
      <sec id="sec-5-2">
        <title>Listing 1.3. MPC sender thread – Sporadic threads. In this case, they are triggered by an incoming event. The AADL model of the sporadic thread Receiver thread is located in Spacecraft 2 and Spacecraft 3 and is triggered by the reception of a position sent from</title>
        <p>Spacecraft 1 by thread Sender thread.</p>
        <p>Processes Processes are the AADL components used to model the Partitions
of distributed applications. Listing 1.4 shows the AADL model of the process
called Sender Process.</p>
        <p>process Sender Proces s
features</p>
        <p>Data Source : out event data port Record Type ;
end Sender Proces s ;
process implementation Sender Proces s . Impl
scuobenScvenoenemndcteptrioodnna:estnatthsrpeoardt SSeennddeerr .TDharteaadS.oIumrcpel ;−&gt; Data Source ;
end Sender Proces s . Impl ;</p>
      </sec>
      <sec id="sec-5-3">
        <title>Listing 1.4. MPC Process: Spacecraft 1</title>
        <p>5.2</p>
        <p>Deployment
The generation of BIP code helps us to rapidly prototype the MPC case study
and make it to a distributed application using our communication protocol
between each partition. The prototype helped us to analyse the case study in a
native platform (PC) in order to easily debug and evaluate it before running it
on an embedded platform.</p>
        <p>The separation between software and hardware in AADL allows the
programmer to model all the software parts of his application and test it with a native
platform (generally a PC). If the tests are successful, the same software part can
be reused with the actual hardware AADL. In addition, going from one hardware</p>
        <p>AADL
Components 20
Connectors 21
Lines of code 350
architecture to another is reduced (most of the time) to the modification of the
values of some few AADL properties.</p>
        <p>In the MPC case study, we generate for each AADL partition mapped to the
processor, its corresponding description in BIP, and for each connection mapped
to the bus a network communication protocol (sender/receiver). We compile BIP
partitions and we generate an executable model. Then, we put every executable
in the native platform (PC). First, we launch a receiver executable and then
the sender executable. When the network protocol communication is initialized
between the sender and receiver, the exchange of data is started.</p>
        <p>Once the executable model has been launched, interactive simulation and
debugging is useful for understanding the working of the distributed application.
This helped us to verifies each interaction step by step, to know which state or
port is activated, and to see the value of data received/sended. In addition, we
use observers which moves to an error state if the period of a thread exceeds
its deadline. These analysis allow to fully asses system viability, to refine and to
correct the behavior of a system.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this article, we proposed a prototyping process to model and build distributed
embedded systems. We select AADL to implement this prototype. AADL allows
a clear modeling structure and provides all the required information to configure
a local application as well as distributed application.</p>
      <p>We showed the requirements and assessments for prototyping distributed
embedded system using our tools chain. In addition, we provide a general
methodology for building and translating distributed embedded systems into an
executable implementation by using network communication protocol. The
executable application is tested for soundness, any mismatch in the application is
reported by the analysis BIP tool chain. We provide also MPC case study, which
is tested and analysed on a native platform.</p>
      <p>In the future we are continuing to work on:
– Communication between processes can have different delay characteristics
depending on the underlying communication network. The prototyping
environment should support different delay characteristics for communication
between different processes so that realistic prototypes can be built.
– Real-time clocks. This will allow real-time distributed algorithms to be
implemented, and timing properties to be studied.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Annex</given-names>
            <surname>Behavior Specification SAE AS5506.</surname>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. ASSERT: http://www.assert-project.
          <source>net/.</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>SAE. Architecture</given-names>
            <surname>Analysis</surname>
          </string-name>
          &amp;
          <article-title>Design Language (standard SAE AS5506)</article-title>
          ,
          <year>September 2004</year>
          , available at http://www.sae.org.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. SEI.
          <article-title>Open Source AADL Tool Environment</article-title>
          . http://la.sei.cmu.edu/aadlinfosite/ OpenSourceAADLToolEnvironment.html.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>5. SPICES: http://www.spices-itea.org/public/news.php.</mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>6. TOPCASED: http://www.topcased.org/.</mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>A.</given-names>
            <surname>Basu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bensalem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gallien</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ingrand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lesire</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.H.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          .
          <article-title>Incremental component-based construction and verification of a robotic system</article-title>
          .
          <source>In Proceedings of ECAI'08</source>
          ,
          <string-name>
            <surname>Patras</surname>
          </string-name>
          , Greece,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>A.</given-names>
            <surname>Basu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bozga</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          .
          <article-title>Modeling heterogeneous real-time components in bip</article-title>
          .
          <source>In Proceedings of SEFM '06</source>
          ,
          <string-name>
            <surname>Pune</surname>
          </string-name>
          , India, pages
          <fpage>3</fpage>
          -
          <lpage>12</lpage>
          . IEEE Computer Society,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>A.</given-names>
            <surname>Basu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Mounier</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Poulhi`es</article-title>
          , J. Pulou, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          .
          <article-title>Using bip for modeling and verification of networked systems - a case study on tinyos-based networks</article-title>
          .
          <source>In Proceedings of NCA'07</source>
          , Cambridge, MA USA, pages
          <fpage>257</fpage>
          -
          <lpage>260</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>S.</given-names>
            <surname>Bensalem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bozga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.H.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          .
          <article-title>Compositional verification for component-based systems and application</article-title>
          .
          <source>In Proceedings of ATVA'08</source>
          , Seoul, South Korea,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>M. Bozga</surname>
          </string-name>
          ,
          <string-name>
            <surname>J-C. Fernandez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kerbrat</surname>
            , and
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Mounier</surname>
          </string-name>
          .
          <article-title>Protocol verification with the aldebaran toolset</article-title>
          .
          <source>STTT</source>
          ,
          <volume>1</volume>
          :
          <fpage>166</fpage>
          -
          <lpage>183</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>M. Bozga</surname>
            , S. Graf, Il. Ober, Iul. Ober, and
            <given-names>J. Sifakis.</given-names>
          </string-name>
          <article-title>The if toolset</article-title>
          .
          <source>In Proceedings of SFM'04</source>
          ,
          <string-name>
            <surname>Bertinoro</surname>
          </string-name>
          , Italy, volume
          <volume>3185</volume>
          <source>of LNCS</source>
          , pages
          <fpage>237</fpage>
          -
          <lpage>267</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>M.Y Chkouri</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Robert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Bozga</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Sifakis</surname>
          </string-name>
          .
          <article-title>Translating AADL into BIP - Application to the Verification of Real-Time Systems</article-title>
          .
          <source>In Models in Software Engineering: Workshops and Symposia at MODELS</source>
          <year>2008</year>
          , Toulouse, France,
          <source>September 28 - October 3</source>
          ,
          <year>2008</year>
          ., pages
          <fpage>5</fpage>
          -
          <lpage>19</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Clements</surname>
          </string-name>
          .
          <article-title>A survey of architecture description languages</article-title>
          .
          <source>In In Proceedings of the Eighth International Workshop on Software Specification and Design</source>
          , Paderborn, Germany,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>L. M. Augustin J. Vera D. Bryan D. C. Luckham</surname>
            ,
            <given-names>J. J.</given-names>
          </string-name>
          <string-name>
            <surname>Kenney</surname>
            and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Mann</surname>
          </string-name>
          .
          <article-title>Specification and analysis of system architecture using rapide</article-title>
          .
          <source>In IEEE Transactions on Software Engineering</source>
          , volume
          <volume>1</volume>
          no.
          <issue>4</issue>
          , pages
          <fpage>336</fpage>
          -
          <lpage>335</lpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>J. Sifakis</surname>
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Gossler</surname>
          </string-name>
          .
          <article-title>Composition for component-based modeling</article-title>
          .
          <source>Science of Computer Programming</source>
          ,
          <volume>55</volume>
          :
          <fpage>161</fpage>
          -
          <lpage>183</lpage>
          ,
          <year>March 2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>J. Hugues</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Zalila</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Pautet</surname>
            , and
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Kordon</surname>
          </string-name>
          .
          <article-title>Rapid Prototyping of Distributed Real-Time Embedded Systems Using the AADL and Ocarina</article-title>
          .
          <source>In Proceedings of the 18th IEEE International Workshop on Rapid System Prototyping (RSP'07)</source>
          , pages
          <fpage>106</fpage>
          -
          <lpage>112</lpage>
          ,
          <string-name>
            <surname>Porto</surname>
            <given-names>Alegre</given-names>
          </string-name>
          , Brazil, May
          <year>2007</year>
          . IEEE Computer Society Press.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>J. Hugues</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Zalila</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Pautet</surname>
            , and
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Kordon</surname>
          </string-name>
          .
          <article-title>From the prototype to the final embedded system using the ocarina aadl tool suite</article-title>
          .
          <source>ACM Trans. Embed. Comput. Syst.</source>
          ,
          <volume>7</volume>
          (
          <issue>4</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>25</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>J.</given-names>
            <surname>Magee</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Kramer</surname>
          </string-name>
          .
          <article-title>Dynamic structure in software architectures</article-title>
          .
          <source>In In Proceedings of ACM SIGSOFT'96: Fourth Symposium on the Foundations of Software Engineering (FSE4)</source>
          , pages
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>N.</given-names>
            <surname>Medvidovic</surname>
          </string-name>
          .
          <article-title>A language and environment for architecture-based software development and evolution</article-title>
          . In
          <source>In Proceedings of the 1999 International Conference on Software Engineering</source>
          , pages
          <fpage>44</fpage>
          -
          <lpage>53</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>N.</given-names>
            <surname>Medvidovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Oreizy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.E.</given-names>
            <surname>Robbins</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.N.</given-names>
            <surname>Taylor</surname>
          </string-name>
          .
          <article-title>Using object-oriented typing to support architectural design in the c2 style</article-title>
          . In
          <source>In Proceedings of ACM SIGSOFT2˘01996: Fourth Symposium on the Foundations of Software Engineering (FSE4)</source>
          , pages
          <fpage>24</fpage>
          -
          <lpage>32</lpage>
          . ACM Press,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>M.</given-names>
            <surname>Moriconi</surname>
          </string-name>
          and
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Riemenschneider</surname>
          </string-name>
          .
          <article-title>Introduction to sadl 1.0: A language for specifying software architecture hierarchies</article-title>
          .
          <source>In Technical Report SRI-CSL-97-01</source>
          , SRI International,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23. M. Poulhi`es, J. Pulou,
          <string-name>
            <given-names>C.</given-names>
            <surname>Rippert</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          .
          <article-title>A methodology and supporting tools for the development of component-based embedded systems</article-title>
          .
          <source>In 13th Monterey Workshop</source>
          , Paris, France, volume
          <volume>4888</volume>
          <source>of LNCS</source>
          , pages
          <fpage>75</fpage>
          -
          <lpage>96</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>M. Shaw</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Deline</surname>
            ,
            <given-names>D.V.</given-names>
          </string-name>
          <string-name>
            <surname>Klein</surname>
            ,
            <given-names>T.L.</given-names>
          </string-name>
          <string-name>
            <surname>Ross</surname>
            ,
            <given-names>D.M.</given-names>
          </string-name>
          <string-name>
            <surname>Young</surname>
            , and
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Zelesnik</surname>
          </string-name>
          .
          <article-title>Abstractions for software architecture and tools to support them</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>21</volume>
          :
          <fpage>314</fpage>
          -
          <lpage>335</lpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>R.M. Taylor</surname>
            and
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Medvidovic</surname>
          </string-name>
          .
          <article-title>A classification and comparison framework for software architecture description languages</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>26</volume>
          :
          <fpage>70</fpage>
          -
          <lpage>93</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <given-names>S. Sendall V.</given-names>
            <surname>Crettaz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.M.</given-names>
            <surname>Kand</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Strohmeier</surname>
          </string-name>
          .
          <article-title>Integrating the concernbase approach with sadl</article-title>
          .
          <source>In In Proceedings 4th International Conference on Modeling Languages, Concepts</source>
          , and
          <string-name>
            <surname>Tools</surname>
          </string-name>
          .Toronto, Canada, pages
          <fpage>166</fpage>
          -
          <lpage>181</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <given-names>T.</given-names>
            <surname>Vergnaud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hugues</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Pautet</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Kordon</surname>
          </string-name>
          .
          <article-title>PolyORB: a schizophrenic middleware to build versatile reliable distributed applications</article-title>
          .
          <source>In Proceedings of the 9th International Conference on Reliable Software Techologies Ada-Europe</source>
          <year>2004</year>
          , volume LNCS
          <volume>3063</volume>
          , pages
          <fpage>106</fpage>
          -
          <lpage>119</lpage>
          , Palma de Mallorca, Spain, Jun.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <given-names>S.</given-names>
            <surname>Vestal</surname>
          </string-name>
          .
          <article-title>A cursory overview and comparison of four architecture description languages</article-title>
          .
          <source>In Technical Report</source>
          , Honeywell Technology Center,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>