<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Petri nets as a means to validate an architecture for time aware systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Francesco Fiamberti</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniela Micucci</string-name>
          <email>daniela.micucci@disco.unimib.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Tisato</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>D.I.S.Co., University of Milano-Bicocca</institution>
          ,
          <addr-line>Viale Sarca 336, 20126, Milano</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>117</fpage>
      <lpage>132</lpage>
      <abstract>
        <p>ions and the entities performing time aware activities. The latter have been exploited to model the dynamics of a time aware system.</p>
      </abstract>
      <kwd-group>
        <kwd>real-time</kwd>
        <kwd>architectural abstractions</kwd>
        <kwd>UML</kwd>
        <kwd>Petri nets</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Time aware systems [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] deal with time-related issues when accomplishing
domainrelated tasks. For example, a time aware system includes activities whose
activation is time driven, activities that need to reason on timestamped facts, and
activities that need to know what time it is. Therefore, time ought to emerge as
a first-class concept because of its relevance in the application domain.
      </p>
      <p>
        As stated in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], only recently model-based development has begun focusing
on timing aspects of a system in addition to its functional and structural ones.
However, the proposed approaches tend to specify the requirements with respect
to timing focusing on a specific solution. Moreover, the satisfaction of timing
requirements is verified only during the test phase of the development process.
As stated in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], this is due to the fact that model-driven approaches applied to
embedded systems in early design phases do not always rely on a systematic and
rigorous methodology that includes specifying and verifying timing requirements.
      </p>
      <p>
        To overcome the above drawbacks, several modeling techniques have been
proposed. MARTE [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is an UML profile designed to face real-time aspects of
a system from a model-based perspective. UML [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] is a standardized
generalpurpose modeling language used to specify the artifacts of a software system. A
UML profile customizes UML for a specific purpose or domain by using extension
mechanisms able to modify the semantics of the meta-model elements [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
exploits MARTE (the logical time concept) and the CCSL language [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] to specify
the causal and temporal characteristics of the software as well as the hardware
parts of the system. However, modeling capabilities need to be supported by
tools that directly implement the system.
      </p>
      <p>
        Languages like Giotto [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and SIGNAL [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] extend existing paradigms to
include time-related issues. Close to Giotto, PTIDES [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] is a programming model
for distributed embedded systems based on a global, consistent notion of time.
However, such approaches allow time-related issues to be managed at compile
time only, preventing the temporal behavior of the system from being adaptive.
      </p>
      <p>
        The key idea behind our proposal is that time-related concepts should be
first-class concepts, which directly turn into basic architectural abstractions [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
supported by a running machine. In this way, it is possible to explicitly treat
time-related aspects from the analysis of the requirements to the test phase of
the life cycle of a system. Even if UML [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] is a well-known modeling language
in the software engineering area, the features of Petri nets [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] make them a
suitable tool to model the dynamics of a time aware system. Indeed, when a set
of time driven entities must be performed, they must be enabled in a
deterministic way. However, once they have been enabled, their actual execution can be
nondeterministic, that is, their execution order should have no significance and
should not affect the system behavior. Therefore, we used UML to describe the
architectural abstractions and the time-related activities (static structure), and
Petri nets to describe the dynamics of a time aware system.
      </p>
      <p>The paper is organized as follows. Section 2 introduces time-related
abstractions by means of UML class diagrams. Section 3 identifies the three base entities
performing time aware activities by means of UML class and state diagrams.
Section 4 discusses the dynamics of a time aware system exploiting Petri nets.
Finally, Section 5 presents concluding remarks.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Time-related abstractions</title>
      <p>To give a flavor of the proposed model, the following simplified example will be
used. Consider a road gate equipped with a camera. The gate provides access
to an area with traffic restrictions. In particular, car transits are only allowed
at night and for a restricted set of vehicles. Every second, the camera must
acquire a frame, which must be stored with the acquisition timestamp. Finally,
the acquired frames are elaborated offline to detect infractions.</p>
      <p>The described scenario is an example of a time aware system. A time aware
system reifies the following time aware activities:
– a time driven activity is triggered by events that are assumed to model the
flow of time. In the proposed example, the acquisition activity must be time
driven in order to acquire frames at predefined time instants.
– a time observer activity observes “what time it is”. Thus, the acquisition
activity in the example must also be time observer, since it needs the correct
timestamp for every acquired frame.
– a time conscious activity reasons on facts placed in a temporal context,
no matter when the computation is realized. In the example, the infraction
GroundTimer</p>
      <p>Timer
- emitEvent()
1
-reference</p>
      <p>0..*</p>
      <p>VirtualTimer
- internal counter
+ count()
+ setDuration(Duration)
-duration</p>
      <p>Duration
1
1
{redefines duration}
-duration</p>
      <p>VirtualDuration
- value
detection activity is time conscious, as it performs an offline elaboration of
timestamped frames.</p>
      <p>Drivenness, observability, and consciousness can be enabled by means of three
well distinguished architectural abstractions: Timer, Clock, and Timeline.
2.1</p>
      <sec id="sec-2-1">
        <title>Timer</title>
        <p>A Timer is a cyclic source of events, all of the same type: two successive events
define a duration. A timer generates events by means of its emitEvent operation.</p>
        <p>A Virtual Timer is a timer whose event generation is constrained by the
behavior of its reference timer: it counts (by means of the count operation)
the number of events it receives from its reference timer and generates an event
when this number equals a predefined value. The duration is specialized to virtual
duration. Timers can thus be arranged in hierarchies, in which every descendant
timer has exactly one reference timer. The root of every hierarchy is a Ground
Timer, which is a timer whose duration is not constrained by the duration of
another timer. Therefore, the duration of a ground timer can be interpreted
as intervals of the real external time, so that the events generated by a ground
timer can be interpreted as marking the advance of time. Finally, the setDuration
operation allows the duration of a virtual timer to be modified, thus varying the
speed at which events are generated. Figure 1 sketches the described concepts.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Clock 2.3</title>
      </sec>
      <sec id="sec-2-3">
        <title>Timeline</title>
        <p>A Clock counts (by means of its increment operation) the events it receives from
the associated timer. The event count is interpreted as the clock’s current time
(see Figure 2). Thus, time is not a primitive concept but it is built from events.
A Timeline is a data structure (thus intrinsically discrete) constituting a static
representation of time as a numbered sequence of grains. A grain is an
elementary unit of time identified by its index and whose interior cannot be inspected.
A Time Interval, defined on a timeline, is a subset of contiguous grains belonging
to that timeline. A virtual timeline is a timeline whose grains (virtual grains )
have a duration that can be expressed as a time interval in the associated
reference timeline. Timelines can thus be arranged in hierarchies. The root of every
hierarchy is a Ground Timeline, which is a timeline whose grain durations are
not constrained by the grains of another timeline. In each hierarchy, the ground
timeline is therefore the only one whose grains can be interpreted as an
elementary time interval in an arbitrary ground reference time (e.g., the “real” time
from the application viewpoint).</p>
        <p>A Fact is an assertion regarding the system domain. A Timed Fact is a fact
associated to a time interval representing the fact’s interval of validity. Therefore,
timelines are histories of timed facts. Figure 3 sketches all the described concepts.</p>
        <p>By connecting a clock with a timeline, it is possible to interpret as present
time on the associated timeline the grain whose index equals the clock’s current
time (see Figure 4). Every time the clock receives an event from the connected
timer, it advances the present time on the corresponding timeline by one grain.
The clock also defines the concepts of past and future in the associated timeline:
the grains with index less than current time belong to the past and the grains
with index greater than current time belong to the future.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Time aware entities</title>
      <p>The identified abstractions enable the design of the following time aware entities
(see Figure 5), which reify the activities of a time aware system:
– Time driven entity : an entity whose activation is triggered by a virtual timer
– Time observer entity : an entity that reads current time from clocks
– Time conscious entity : an entity that reads/writes timed facts on a timeline
without any reference to when such a management is actually realized
More articulated behaviors can be obtained by combining the three basic entities.
For example, a time driven time conscious entity is an entity that is triggered
by a virtual timer (time driven) and reads/writes timed facts (time conscious).
3.1</p>
      <sec id="sec-3-1">
        <title>Time driven entities</title>
        <p>A time driven entity is associated to its activating timer, and it may be in two
states: running and idle. A time driven entity enters the running state when its
begin 1 end 1
index</p>
        <p>Grain
grains
1..* {ordered}</p>
        <p>defined over
VirtualTimeline 0..*
reference 1 1
activating timer emits an event. In this state, it performs its domain-dependant
operation. At the end of the execution, the entity goes back to the idle state.</p>
        <p>This simple model assumes that the deadline for an execution coincides with
the beginning of the next execution. To adapt the model to the general case
where deadlines temporally precede the beginning of the next execution, it is
possible to associate a second timer to each time driven entity, as sketched in
Figure 6. When the deadline timer emits an event, the associated time driven
entity must have already completed the perform operation. It follows that a time
driven entity must include an additional state, denoted terminated.</p>
        <p>Timer
Clock
Timeline
activated by
reads time from
reasons on
idle</p>
        <p>Time Driven Entity</p>
        <p>Time Observer Entity
readClocks()</p>
        <p>Time Conscious Entity
observe()
expose()</p>
        <p>Time Aware Entity
perform()
emitEvent()
emitEvent()</p>
        <p>running
Some care must be used to guarantee consistency when designing entities that
are both time driven and time conscious. In fact, it is desirable that the behavior
of all the entities that are triggered simultaneously does not depend on the order
in which the executions are actually managed, which may be affected by
lowlevel details such as the number of available cores or the particular scheduling
algorithm that is being used. Therefore, it is necessary to guarantee that all the
time driven time conscious entities that are triggered simultaneously share the
same view of the timelines, to avoid the situation of an entity that reads timed
facts written by another entity triggered simultaneously just because the latter
was granted higher execution priority by the low-level scheduler.</p>
        <p>A possible solution is that all entities read timed facts immediately when they
are activated by the activating timer and write timed facts only when they receive
an event by the deadline timer, even if the actual execution ends before the
deadline. The state diagram in Figure 7 enriches Figure 6 by introducing effects
in the transitions triggered by timers: the effect of an event from the activating
timer is the reading of facts by means of the observe operation, whereas the
effect of an event from the deadline timer is the writing of facts by means of
the expose operation. In an actual implementation, the concrete component in
charge of the execution of entities must guarantee that when the execution of
a set of entities is triggered, all the entities read timed facts before any one of
idle
emitEvent() /observe()
emitEvent() /expose()</p>
        <p>running
them is allowed to start the actual execution, and that every entity writes timed
facts only at the deadline for its execution.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Time aware systems</title>
      <p>This section presents the behavior of time aware systems exploiting Petri nets.
First, the dynamics of a timer hierarchy will be discussed. Afterwards, the model
of the activation of time driven and time conscious entities will be presented.
4.1</p>
      <sec id="sec-4-1">
        <title>Timer hierarchy</title>
        <p>Before describing a complete timer hierarchy, we will detail the internal behavior
of a virtual timer. Figure 8 shows the subnet modeling the timer T2, of duration
3, without descendant timers. In the initial marking, a token is present in place
p1. The first time a token is put into place Event to T2, transition t1 is enabled
and fires, putting a token into both p2 and T2 updated. The structure made of
p* and t* works as an internal counter, and the token to T2 updated is needed
to allow the external system to be notified that the timer completed its update
operations (simple increment of the internal counter or event generation). When
the internal counter equals the timer’s duration, transition Emit event is fired.
At the end, a token is put into place T2 updated. If a clock is connected to
the timer, after every generated event, the corresponding transition increment
clock time is fired before the end of the timer’s update. Note also that the gray
arcs in Figure 8 are required for the correct behavior of the Petri net, but do not
have any particular time-related semantics. For example, the arcs from the place
Event to T2 to transitions t1, t2 and t3 allow such transitions to fire only one
at a time, when a token is present in place Event to T2.</p>
        <p>Figure 9 shows the subnet of T1, a timer with descendants (T3 and T4). Unlike
in the previous case, transition Emit event puts tokens into all the places Event
to T* of the descendant timers, whose places T* updated are joined in transition
Join descendant timers, after which the system’s behavior is the same as in
the case without descendant timers. No assumptions are made on the order in
which descendant timers are updated.</p>
        <p>Figure 10 shows a Petri net modeling a four-level hierarchical timer
structure. Place Ground timer event receives a token that is interpreted as the flow</p>
        <p>Event to T2
p1
t1</p>
        <p>Emit
event
t3
p2
t2
p3
of real time. If the previous update of the system has been completed (a
token is present in place All timers updated), transition Start execution is
enabled. When the transition is fired, a token is sent to place Event to T*
of every virtual timer directly connected to the ground timer, enabling
internal update operations. When a timer emits an event, its update can terminate
only when all its possible descendant timers’ updates have been triggered and
completed. Once the timer has been updated, a token is put into the
corresponding place T* updated. Places T* updated are joined in transition Join direct
descendants of ground timer, whose firing terminates the atomic update of
all timers by putting a token into place All timers updated. This token enables
transition Start execution when the next token is produced in place Ground
timer event. Thanks to the recursive structure of virtual timers, only direct
descendants of the ground timer need to be joined in transition Join direct
descendants of ground timer to ensure atomicity of all timers’ updates. In
Figure 10, for clarity the details regarding the internal structure of timers have
been hidden and represented by means of simple transitions shown in gray.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Time driven entities</title>
        <p>Time driven entities can be executed by associating them to timers. Every time a
timer emits an event, it sends a signal to all its associated entities, which behave
consequently according to their internal state. To make the concepts clear, we
Ground timer
event</p>
        <p>Start new</p>
        <p>cycle
assume that the relative deadlines of the time driven entities coincide with the
beginning of the next execution. Figure 11 sketches an example of such a system,
where timers T3, T4, and T5 have been hidden for the sake of readability. The
assumption is made that the execution of a time driven entity is an instantaneous
action. Thus, if the actual time taken by an entity is not negligible with respect to
the smallest time scale in the system, the execution considered here is made only
of the (instantaneous) set of operations needed to decouple the actual actions
from the main system flow (e.g., the operations needed to start a new thread
where threads are available).</p>
        <p>Figures 12 and 13 show the structures of timers T2 and T1 respectively in
presence of time driven entities: when an event is generated, a token is put into
place T* time driven entities to be enabled, to enable the execution of
the entities associated to T*. Note that habilitation does not mean immediate
execution: the actual execution of all the time driven entities can be started only
once all the timers have been updated, as will be explained later. To ensure that
the entities have been enabled, a token is required in place T* time driven
entities enabled for the transition in input to place T* updated to fire.</p>
        <p>Figure 14 shows how atomicity of all timers’update can be granted. A copy of
place All timers updated is available for every subnet modeling a group of time
driven entities associated to the same timer. Every entity group has a T* time</p>
        <p>Ground timer
event</p>
        <p>Start new</p>
        <p>cycle
driven entities completed place, where the presence of a token indicates that
no additional actions are required for the group. This is needed to deal with the
(typical) situation where only a subset of all the timers emit an event. All places
T* time driven entities completed are initialized with a token, and a token</p>
        <p>T1 time driven
entities to be enabled
is always present at the end of every execution. Only in case of an event from
the associated timer, place T* time driven entities completed is cleared as
a consequence of the habilitation of time driven entities. In fact, when a token is
put into place T* time driven entities to be enabled, transition Enable
time driven entities fires, removing the token from place T* time driven
entities completed and putting it into place T* time driven entities to
be completed. Transition Execute time driven entities is not enabled until
a token is present in the current timer’s copy of place All timers updated, that
is, until all the timers have been updated. All places T* time driven entities
completed are joined in transition Join time driven entities (see Figure
11). At the end of each global timer update, the time driven entity groups that
do not require execution (because their timer did not emit an event) already
have a token in place T* time driven entities completed.</p>
        <p>Transition Join time driven entities is not enabled only if some of the
time driven entities must still be executed. If this is the case, all the
corresponding transitions Execute time driven entities are now enabled, removing the
token from place T* time driven entities to be completed and putting it
into T* time driven entities completed. No assumptions are made on the
possible order in which time driven entities are executed. Once all the executions
have been completed, the transition Join time driven entities is enabled.
Note that in order to prevent an early firing of this transition in the case where
no entity groups need to be executed, a copy of place All timers updated is
present as an input to Join time driven entities, so that the global update</p>
        <p>T* time driven
entities to be enabled</p>
        <p>Enable
time driven
entities
of timers must be terminated first even though all the places T* time driven
entities completed contain a token.</p>
      </sec>
      <sec id="sec-4-3">
        <title>Time driven time conscious (observer) entities</title>
        <p>As stated in subsection 3.2, some care must be used when designing entities
that are time driven and time conscious, or time driven, time conscious and
time observer. The two cases can be analyzed together, since the differences are
limited to the presence of clocks and to the need to read the relevant clocks’
current times before starting the executions. Figure 15 contains the model of a
group of time driven time conscious entities associated to the same timer, while
an example of time aware system is shown in Figure 16.</p>
        <p>As introduced in Subsection 3.2, the sequence of operations of a time driven
time conscious entity can be organized in three blocks: expose (that puts on
the right timelines the timed facts computed during the previous execution),
observe (that reads timed facts from the timelines of interest), and perform
(the actual execution of the entity’s actions). Since no constraints are put on
the order in which entities are executed, consistency and predictability of the
system’s behavior require that timed facts are added on a timeline by an entity
only at the end of the time grain of the timer to which the entity is associated,
and before any other entity in the system reads facts from the same timelines.
So the exposition of all the facts generated by all entities must be realized as an
atomic action after all timers have been updated and before the execution of the
perform of any time driven time conscious entity.</p>
        <p>With reference to Figure 15, for every group of entities, place T* facts
exposed is initialized with a token. When the associated timer emits an event,
the token put into place Time driven entities to be enabled enables
transition Enable time driven entities, which removes the tokens from places
Time driven entities completed and T* facts exposed, putting a token
into Facts to be exposed. Once all the timers have been updated, so that
a token is put into the copy of place All timers updated for every group of
entities, transition expose is fired, putting a token into the corresponding places T*
facts exposed and Execution enabled (whose presence prevents unrequested
End of
execution</p>
        <p>Join
time driven entities
All facts
exposed</p>
        <p>Join fact
expositions
T1 facts
exposed
T2 facts
exposed</p>
        <p>All facts
exposed
All facts
exposed</p>
        <p>observe (+ readClocks) + perform that would be
otherwise triggered by the simple presence of a token in place All timers updated).
All places T* facts exposed are joined, together with a copy of All timers
updated, in transition Join fact expositions. Only after all the expositions
have been completed, this transition can fire, putting a token into the copy of</p>
        <sec id="sec-4-3-1">
          <title>Property</title>
        </sec>
        <sec id="sec-4-3-2">
          <title>Y/N Property Y/N Pure (PUR) No Covered by P-invariants (CPI) Yes Ordinary (ORD) Yes Strongly Covered by T-invariants (SCTI) Yes</title>
          <p>Homogeneous (HOM) Yes Structurally Bounded (SB) Yes
Non-Blocking Multiplicity (NBM) Yes Bounded (kB) Yes
Conservative (CSV) No Safe (1-B) Yes
Structurally Conflict-Free (SCF) No Dynamically Conflict-Free (DCF) Yes
FT0, TF0, FP0, PF0 Yes No Dead States (DSt(0)) Yes
Connected (CON) Yes No Dead Transitions (DTr) Yes
Strongly Connected (SC) Yes Live (LIV) Yes
Deadlock-Trap Property (DTP) No Reversible (Rev) Yes
Covered by T-invariants (CTI) Yes
place All facts exposed for all groups of entities. This enables all transitions
observe (+ readClocks) + perform (for time observer entities, readClocks is
executed on all the clocks of interest before perform), whose firing puts a token
into the corresponding place T* time driven entities completed. At this
stage, as in the case of pure time driven entities, places Time driven entities
completed are joined in transition Join time driven entities, which fires
when all the entity executions have been completed. The gray arcs in Figure
16 involve groups of entities: one connects place All facts exposed of each
group and transition Join time driven entities, to ensure that tokens do
not pile up in these places when the corresponding timer does not emit an event.
The other is between transition Join fact expositions and place T* facts
exposed of every group, needed to recharge the token for the next execution.
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Final remarks</title>
      <p>The time-related abstractions and the dynamics of a time aware system could
have been fully described by means of UML diagrams (i.e., class and state to
model the basic abstractions and sequence to model the dynamics). Initially, this
was the direction we followed, but we soon realized that the resulting sequence
diagrams would be complex and difficult to read. So we decided to use Petri nets,
because of their suitability to model the dynamics of a system. The obtained
result consists in a set of Petri nets that are simpler and more readable with
respect to the corresponding UML sequence diagrams, notwithstanding the need
for additional places and transitions that do not have an application semantic
but are required for the Petri nets to behave correctly.</p>
      <p>
        Table 1 summarizes the properties of the proposed Petri nets, as defined
in [
        <xref ref-type="bibr" rid="ref12 ref13">12,13</xref>
        ]. Some of the properties cannot be satisfied because of the intrinsic
nature of time aware systems (e.g., the proposed nets are not pure because of
the presence of loops, which are required to obtain a cyclic behavior).
      </p>
      <p>
        The proposed models supported the implementation of a Java framework
named Time Aware Machine (TAM) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] that has been used for the experimental
testing of the Space Integration Services platform [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Currently, the framework
is being used in ALARM [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], an architecture based on a time driven mechanism
that verifies hypotheses about domain entities against previsions.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Fiamberti</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Micucci</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisato</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>An architecture for time-aware systems</article-title>
          .
          <source>In: 2011 IEEE 16th Conference on Emerging Technologies &amp; Factory Automation (ETFA)</source>
          ,
          <source>IEEE</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Buckl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gaponova</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Geisinger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knoll</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>E.A.</given-names>
          </string-name>
          :
          <article-title>Model-based specification of timing requirements</article-title>
          .
          <source>In: Proceedings of the tenth ACM international conference on Embedded software. EMSOFT '10</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2010</year>
          )
          <fpage>239</fpage>
          -
          <lpage>248</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>E.A.</given-names>
          </string-name>
          :
          <article-title>A programming model for Time-Synchronized distributed Real-Time systems</article-title>
          .
          <source>In: 13th IEEE Real Time and Embedded Technology and Applications Symposium</source>
          ,
          <year>2007</year>
          . RTAS '07,
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2007</year>
          )
          <fpage>259</fpage>
          -
          <lpage>268</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. OMG:
          <article-title>MARTE Modeling and Analysis of Real-Time and Embedded systems</article-title>
          . http://www.omg.org/spec/MARTE/1.1/PDF/
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. OMG:
          <article-title>Unified Modeling Language (UML), Superstructure</article-title>
          . http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF/
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Peraldi-Frati</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>DeAntoni</surname>
          </string-name>
          , J.:
          <article-title>Scheduling multi clock real time systems: From requirements to implementation</article-title>
          . In: Object/Component/Service-Oriented
          <source>RealTime Distributed Computing (ISORC)</source>
          ,
          <year>2011</year>
          14th IEEE International Symposium on. (
          <year>2011</year>
          )
          <fpage>50</fpage>
          -
          <lpage>57</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Mallet</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Clock constraint specification language: specifying clock constraints with UML/MARTE</article-title>
          . Innovations
          <source>in Systems and Software Engineering</source>
          <volume>4</volume>
          (
          <issue>3</issue>
          ) (
          <year>2008</year>
          )
          <fpage>309</fpage>
          -
          <lpage>314</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Henzinger</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horowitz</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kirsch</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Giotto: a time-triggered language for embedded programming</article-title>
          .
          <source>Proceedings of the IEEE 91(1)</source>
          (
          <year>2003</year>
          )
          <fpage>84</fpage>
          -
          <lpage>99</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Gamatié</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gautier</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guernic</surname>
            ,
            <given-names>P.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Talpin</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          :
          <article-title>Polychronous design of embedded real-time applications</article-title>
          .
          <source>ACM Trans. Softw. Eng. Methodol</source>
          .
          <volume>16</volume>
          (
          <issue>2</issue>
          ) (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Shaw</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>DeLine</given-names>
            , R.,
            <surname>Klein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.V.</given-names>
            ,
            <surname>Ross</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.L.</given-names>
            ,
            <surname>Young</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.M.</given-names>
            ,
            <surname>Zelesnik</surname>
          </string-name>
          , G.:
          <article-title>Abstractions for software architecture and tools to support them</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>21</volume>
          (
          <issue>4</issue>
          ) (
          <year>1995</year>
          )
          <fpage>314</fpage>
          -
          <lpage>335</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Murata</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Petri nets: Properties, analysis and applications</article-title>
          .
          <source>Proceedings of the IEEE 77(4)</source>
          (
          <year>1989</year>
          )
          <fpage>541</fpage>
          -
          <lpage>580</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Starke</surname>
            ,
            <given-names>P.H.</given-names>
          </string-name>
          :
          <article-title>Analyse von Petri-netz-modellen</article-title>
          .
          <source>Teubner BG GmbH</source>
          (
          <year>1990</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Starke</surname>
            ,
            <given-names>P.H.</given-names>
          </string-name>
          :
          <article-title>INA Integrated Net Analyzer</article-title>
          . http://www2.informatik.huberlin.de/lehrstuehle/automaten/ina/manual.html
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Fiamberti</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Micucci</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisato</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>An object-oriented application framework for the development of real-time systems</article-title>
          .
          <source>In: 50th International Conference on Objects, Models</source>
          , Components,
          <source>Patterns (TOOLS</source>
          <year>2012</year>
          ), Springer (
          <year>2012</year>
          )
          <fpage>75</fpage>
          -
          <lpage>90</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Bernini</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fiamberti</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Micucci</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisato</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Architectural Abstractions for Spaces-Based Communication in Smart Environments</article-title>
          .
          <source>Journal of Ambient Intelligence and Smart Environments</source>
          <volume>4</volume>
          (
          <issue>3</issue>
          ) (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Fiamberti</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Micucci</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mobilio</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tisato</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>A Layered Architecture based on Previsional Mechanisms</article-title>
          .
          <source>In: ICSOFT 2013 - Proceedings of the 8th International Joint Conference on Software Technologies (accepted for publication)</source>
          .
          <source>(</source>
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>