<!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>Formal Design Models for Distributed Embedded Control Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Christo Angelov</string-name>
          <email>angelov@mci.sdu.dk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Krzysztof Sierszecki</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yu Guo</string-name>
          <email>guo@mci.sdu.dk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Mads Clausen Institute for Product Innovation University of Southern Denmark Alsion</institution>
          <addr-line>2, 6400 Soenderborg</addr-line>
          ,
          <country country="DK">Denmark</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <volume>6</volume>
      <issue>2009</issue>
      <fpage>43</fpage>
      <lpage>57</lpage>
      <abstract>
        <p>The paper presents a formal specification of the software design models used in COMDES-II - a component-based framework for distributed control systems, featuring open architecture and predictable operation under hard real-time constraints. In this framework, an application is modelled as a network of distributed embedded actors that communicate transparently by exchanging labeled messages (signals), independent of their allocation on network nodes. Actors are configured from prefabricated executable components such as modal function blocks controlled by a master state machine, whereby actor structure is specified by a data flow model (function block network). Accordingly, actor behaviour is specified by composite functions representing signal transformations - from input to output signals, and system behaviour - by actor-level composite functions representing the overall sequence of computation - from system input to system output signals. Input and output signals are exchanged with the controlled plant at precisely specified time instants in accordance with the concept of Distributed Timed Multitasking, resulting in the elimination of transaction I/O jitter. System operation is ultimately described by a clocked synchronous model of computation featuring communicating actors, atomic (zero-time) execution of input and output actions and constant, non-zero execution time of system reactions.</p>
      </abstract>
      <kwd-group>
        <kwd>distributed control systems</kwd>
        <kwd>component-based design of embedded software</kwd>
        <kwd>domain-specific frameworks</kwd>
        <kwd>correct-by-construction systems</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Nowadays, embedded software development is still dominated by conventional design
methods and manual coding techniques. However, these are not able to cope with
continuously growing demands for high quality of service, reduced development and
operational costs, reduced time to market, as well as ever growing demands for
software safety and dependability. In particular, software safety is severely affected by
design errors that are typical for informal design methods, as well as implementation
errors that are introduced during the process of manual coding.</p>
      <p>
        This situation has stimulated the development of new software design methods
based on formal design models (frameworks) specifying system structure and
behaviour, which can be verified and validated before the generation of the program
code [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ]. Furthermore, model-driven development can be combined with
component-based design, whereby design models are implemented by means of
reusable and reconfigurable components. Thus, embedded applications can be
configured using repositories of prefabricated and validated components (rather than
programmed), whereby the configuration specification is stored in data structures
containing relevant information such as component parameters, input/output
connections, execution sequences, etc. Hence, it is possible to reconfigure applications
by updating data structures rather than reprogramming and reloading the entire
application.
      </p>
      <p>
        The main problem that has to be addressed with this method is to develop a
comprehensive, yet intuitive and open framework for embedded systems. There are a
considerable number of frameworks developed in the traditional Software Engineering
domain that employ components with operational interfaces as well as various types of
port-based objects, e.g. actor frameworks [
        <xref ref-type="bibr" rid="ref4 ref5 ref6 ref7 ref8">4-8</xref>
        ]. However, it can be argued that the
architecture of the framework (i.e. models used to specify component functionality,
interfacing and interaction) should be derived from areas such as Control Engineering
and System Science, taking into account that modern embedded systems are
predominantly control and monitoring systems. This approach has been used for some
time with industrial control systems, whose software is built from component objects
(function blocks) that implement standard application functions and interact by
exchanging signals. Accordingly, function blocks are „softwired‟ into function block
networks that are mapped onto real-time control tasks, e.g. standards IEC 61131-3 [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
and IEC 61499 [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>Unfortunately, this is a relatively low-level approach, which is inadequate for
modern embedded applications. These vary from simple controllers to highly complex,
time-critical and distributed systems featuring autonomous subsystems with
concurrently running activities (tasks) that have to interact with one another within
various types of distributed transactions. The above standards do not provide modeling
techniques and component definitions at this level and do not define concurrency,
whereby the mapping of function block networks on real-time tasks, as well as task
scheduling and interaction are considered implementation details that are not a part of
the standard.</p>
      <p>
        In order to overcome the above problems, the Control Engineering models must be
augmented with concepts and techniques developed in the Computer Science domain
(concurrency, scheduling, communication, state machines, etc.), as advocated by
leading experts in the area of Embedded Software Design, e.g. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The resulting
framework must support compositionality and scalability through a well-defined
hierarchy of reusable and reconfigurable components, including both actors and
function blocks. On the other hand, it has to adequately specify system behaviour for a
broad range of sequential, continuous and hybrid control applications.
      </p>
      <p>
        These guidelines have been instrumental in developing the framework COMDES-II
[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. This is a domain-specific framework for time-critical distributed control
applications, featuring a hierarchical component model as well as transparent
signalbased communication at all levels of specification. In COMDES-II, an embedded
application is composed from actors, which are configured from prefabricated function
blocks. This is an intuitive and simple model that is easy to use and understand by
application experts, i.e. control engineers.
      </p>
      <p>
        An informal description of the above component models is given elsewhere [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
This paper presents a formal specification of COMDES-II design models focusing on
two interrelated aspects, i.e. system structure and behaviour. It is organized as follows:
Section 2 presents a top-down specification of system structure in terms of data flow
models describing actors and actor interactions, as well the internal structure of actors,
which are composed of prefabricated function blocks. Section 3 presents a bottom-up
specification of system behaviour starting with function block behaviour, followed by
actor behaviour and finally - system behaviour. These are defined as composite
functions specifying signal transformations - from input to output signals - of function
blocks, actors and the system itself, respectively. Section 4 presents related research.
The concluding section summarizes the main features of the framework and their
implications for a software development process aimed at designing systems that are
correct by construction.
2
2.1
      </p>
    </sec>
    <sec id="sec-2">
      <title>Specification of System Structure</title>
      <sec id="sec-2-1">
        <title>COMDES-II Design Models - an Introduction</title>
        <p>In COMDES-II, an embedded system is conceived as a composition of active objects
(actors) that communicate via labelled state messages (signals) encapsulating process
variables, such as speed, pressure, temperature, etc. Communication is transparent, i.e.
independent of the allocation of actors on network nodes. Accordingly, the system can
be modelled by an actor network specifying constituent actors and the signals
exchanged between them (see e.g. Fig. 1).</p>
        <p>Visualization Unit
Command Entry</p>
        <p>ittaondoeSOMCoilltttnoanuaaoageSVOMntroittoanpeedSSOlleritttrrsnoaaaeePSOm CVoonlttraoglleer
Pulses</p>
        <p>Sensor</p>
        <p>Sensor
Speed</p>
        <p>Actuator</p>
        <p>Voltage
An actor is modelled as an integrated circuit consisting of a signal-processing block,
which is mapped onto a non-blocking (basic) task, as well as input and output signal
drivers that are used to exchange signals with other actors and the outside world (see
Fig. 2). Actor tasks are configured from function blocks (FBs) and are modelled by
function block networks. A function block is a reusable executable component that
may have multiple instances within a given configuration. There are four kinds of
function block: basic, composite, state machine and modal function blocks that can be
used to implement a broad range of sequential, continuous and hybrid applications.</p>
        <p>Input signal drivers</p>
        <p>Signal processing block (task)</p>
        <p>Output signal drivers</p>
        <p>OStationMode
OStationManualVoltage
1
1
mode
manual
voltage
1
2
3 cDoignittraoll</p>
        <p>1
SensorSpeed
1 realRPM
voltage 1</p>
        <p>ControllerVoltage
OStationSpeed
1 setRPM</p>
        <p>4
OStationParameters
1 PIDParam 5</p>
        <p>Local signals</p>
        <p>
          Basic function blocks have simple stateless behaviour, which is specified by
functions defining signal transformations - from input signals to output signals (e.g. a
PID controller function block). Complex stateful behaviour is implemented with modal
function blocks (MFBs). These may be viewed as a generalization of stateless function
blocks: a MFB has a number of operational modes where each mode encapsulates one
or more FB instances used to execute a control action associated with that mode. A
modal function block receives indication of current mode from a supervisory state
machine (SSM), whereby it executes the corresponding control action, in the context of
a continuous or sequential control actor, e.g. manual/automatic control of DC motor
rotation speed (see Fig. 3). A function block network may be encapsulated into a
composite function block, which can be subsequently reused as an integral component.
1 mode 1
3 realRPM 2 SSM 1
4 setRPM 3
Signal drivers are a special class of component - these are wrappers providing an
interface to the system operational environment by executing kernel- or
hardwaredependent functions. Specifically, signal drivers can invoke kernel primitives to
transparently broadcast and receive signals, independent of the allocation of sender and
receiver actors on network nodes [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
        <p>
          A detailed informal description of the above component models is given elsewhere
[
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. The following discussion presents a formal specification of COMDES-II
components and component configurations. The latter takes into account the two levels
(1)
(2)
(3)
(4)
(5)
of the framework, i.e. system and actor levels, which are treated in a top-down fashion.
At the top level, the system is described as an actor network - a data flow model
involving system actors and the global signals exchanged between them, as well as a
definition of the signals in terms of identifiers and constituent signal variables. At the
next level, each system actor is described by a function block network, i.e. a data flow
model involving constituent function blocks and the local signals exchanged.
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Distributed Control System Specification</title>
        <p>A distributed embedded control system (ECS) is modelled as an actor network:
where A is the set of system actors, S is the set of system signals and C is the set of
channels used to exchange signals between actors. The set of system actors A consists
of environment actors Aenv modelling the plant, and control actors Acon operating in a
distributed system environment:</p>
        <p>ECS = &lt; A, S, C &gt; ,</p>
        <p>A = Aenv</p>
        <sec id="sec-2-2-1">
          <title>Acon .</title>
          <p>S = Sin</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>Scom</title>
        </sec>
        <sec id="sec-2-2-3">
          <title>Sout ,</title>
          <p>The set of system signals S can be represented as:
where Sin is the subset of physical input signals, Scom is the subset of signals (messages)
exchanged over the communication network, and Sout is the set of output physical
signals. Furthermore, si S: si = &lt; Idi, Vi &gt;, where Idi is a signal identifier and Vi is a
set of signal variables defined in terms of variable names and the corresponding data
types:</p>
          <p>Vi = { &lt; si1: typei1&gt;, &lt; si2: typei2&gt;, … , &lt;siki: typeiki &gt; } ,
e.g. signal OStationParameters consisting of PID parameters, such as proportional,
integral and derivative gain values (see Fig. 2).</p>
          <p>The communication relationship between actors is specified in terms of channels
that are defined by a source - signal - destination relation:</p>
          <p>C</p>
          <p>A</p>
          <p>S
2A ,
e.g. one of the channels depicted in Fig. 1, which is specified by the tuple &lt; Sensor,</p>
        </sec>
        <sec id="sec-2-2-4">
          <title>Sensor_Speed, {Controller, Vizualization_Unit} &gt; .</title>
          <p>In an actual implementation, control actors will be allocated to network nodes, and
channels – to the network communication channel and physical I/O channels. The
subsequent discussion assumes a real-time network with predictable message latency,
such as CAN, which has been used for the experimental validation of COMDES-II.</p>
          <p>A system control actor can be defined as:
acon = &lt; X , Lin, NFB, Lout, Y &gt; ,
(6)
where: X is the set of input signals received by the actor, X S, Lin is an input signal
latch, NFB is a signal-processing network of function blocks, Lout is an output signal
latch and Y is a set of output signals generated by the actor, Y S.</p>
          <p>The input latch is used to receive input signals and decompose them into input
signal variables constituting the set V, which may be viewed as local signals that are
processed by the function block network. The latter computes output variables
constituting the set W, which are used to compose the output signals generated by the
output latch (see e.g. Figs. 2 and 3).</p>
          <p>The I/O latches are composed of communication objects called signal drivers,
denoted as Din and Dout. In particular:</p>
          <p>Lin = { Dini }; Dini : sini
Lout = { Douti }; Douti : Wi</p>
          <p>Vi , Vi
souti , Wi</p>
          <p>V ,</p>
          <p>W ,
where Vi and Wi denote the constituent variables of the corresponding I/O signals sini
and souti , respectively.</p>
          <p>The I/O latches are activated at the release and deadline instants of the actor task.
This is a basic (non-blocking) task, whose internal structure is specified as a function
block network performing the transformation of input signal variables into output
signal variables: V W.</p>
          <p>The FB network is modelled by an acyclic data flow graph (see e.g. Fig. 3), which
can be defined as follows:</p>
          <p>NFB = &lt; B, Z, Con &gt; ,
where B is a set of function blocks (FBs), Z is a set of FB network variables and Con is
the set of FB network connections.</p>
          <p>A function block performs the signal transformation X Y, where X is the set of
FB input variables, X Z, and Y is the set of FB output variables, Y Z.
Specifically, a function block can be defined as:</p>
          <p>FB</p>
          <p>= &lt; X, Y, P, F &gt; ,
where X, Y and P denote input, output and persistent variables, respectively and F is a
set of functions.</p>
          <p>
            Input variables X are generated by input drivers or other function blocks, X Z.
These are used together with persistent variables to compute output variables Y,
Y Z. Persistent variables P represent the internal state of the function block, which
is retained from one execution to the next, e.g. various types of controllers, filters, etc.
[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ]. Simple function blocks may not have internal state, e.g. arithmetic function
blocks, comparators. Output variables are computed by functions f F that are
defined as y = f(x, p), where y Y, x X and p P.
          </p>
          <p>The variables constituting the set Z may be viewed as local signals associated with
the function block network:
(7)
(8)
(9)
Z = V</p>
          <p>I</p>
          <p>W ,
(10)
where the input signal variables V are generated by input drivers and processed by
function blocks; internal variables I are generated and processed by function blocks;
output signal variables W are generated by function blocks and used by output drivers
to compose output signals (see e.g. Fig. 3).</p>
          <p>FB network connections are used to wire function blocks with input and output
signal drivers, and with each other. The corresponding set can be specified as a union
of subsets denoting input, internal and output connections: Con = Conin Conint</p>
        </sec>
        <sec id="sec-2-2-5">
          <title>Conout . These are defined as source - local signal - destination relations as follows:</title>
        </sec>
        <sec id="sec-2-2-6">
          <title>Conin</title>
        </sec>
        <sec id="sec-2-2-7">
          <title>Conint</title>
        </sec>
        <sec id="sec-2-2-8">
          <title>Conout Lin</title>
          <p>B
B
V
I
W
B ,
B ,</p>
        </sec>
        <sec id="sec-2-2-9">
          <title>Lout ,</title>
          <p>(11)
e.g. the connection represented by the tuple &lt; SSM, mode, MFB &gt; shown in Fig. 3.
3
3.1</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Specification of System Behaviour</title>
      <sec id="sec-3-1">
        <title>COMDES-II Model of Computation – an Introduction</title>
        <p>
          System operation is specified in terms of distributed transactions executed in
accordance with a model of computation known as Distributed Timed Multitasking
[
          <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
          ], which is presently supported by the distributed real-time kernel HARTEXμ
[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. The distributed transaction involves a number of actors that execute transaction
phases by invoking sequences of function blocks within the corresponding actor tasks.
Actors interact with each other by exchanging labelled state messages (signals) using
dedicated communication objects (signal drivers) that provide for transparent
one-tomany communication between the actors involved.
        </p>
        <p>
          Distributed Timed Multitasking (DTM) combines the concepts of Timed
Multitasking [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] and transparent signal-based communication. With this model, it is
assumed that signal drivers are short pieces of code that are executed atomically in
logically zero time at precisely specified time instants, which is typical for control
applications. Specifically, input signal drivers are executed when the actor task is
released, and output drivers - when the task deadline arrives or when the task comes to
an end, if it has no deadline (see Fig. 4). Consequently, task I/O jitter is effectively
eliminated as long as the task comes to an end before its deadline.
        </p>
        <p>Actor task release event</p>
        <p>Deadline
preemption
task</p>
        <p>jitter
Input drivers</p>
        <p>Output drivers
Input signals</p>
        <p>Output signals</p>
        <p>Jitter-free operation can be extended to distributed systems, e.g. a phased-aligned
transaction involving the actors Sensor (S), Controller (C) and Actuator (A) from
Fig. 1, which are triggered by a periodic timing event, such as a synchronization (sync)
message denoting the initial instant of the transaction period (T), with deadline D ≤ T
(see Fig. 5). In this case, input and output signals are generated at transaction start and
deadline instants, resulting in the elimination of transaction I/O jitter.</p>
        <p>sensor
s → c
controller</p>
        <p>c → a
actuator</p>
        <p>I/O
tik
OStationSync</p>
        <p>deadline event
message arrival event
D (D ≤ T)</p>
        <p>T
tok
tik+1
tok+1</p>
        <p>The following discussion presents a formal specification of system operation, taking
into account the adopted model of computation and the model of system structure
developed in the preceding section.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Specification of Function Block Behaviour</title>
        <p>Function block operation is specified with simple and/or composite functions from FB
input variables x(k) to FB output variables y(k), x X, y Y, assuming periodic
execution of system actors and constituent function blocks, which are invoked at time
instants kT, k = 1, 2, …... , where T is the execution period of the host actor.</p>
        <p>Basic function blocks implement standard signal-processing functions, such as:
y(k) = f(x(k)) - with simple FBs implementing various kinds of</p>
        <p>
          mathematical operations, comparators, etc.
y(k) = f(x(k), p(k-1), p(k-2), … p(k-l)) - with FBs having persistent state,
(12)
(13)
where the state is defined in terms of one or more persistent variables p(k-1), p(k-2),
…., p(k-l), retained from previous periods 1, 2 …, l and updated during each period (as
specified by the concrete FB algorithm, e.g. the discrete-time versions of filters,
various control algorithms, etc. [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]).
        </p>
        <p>A composite function block (CFB) encapsulates a FB network whose behaviour is
described with one or more functions such as y(k) = f(x(k)) , where f is a composite
function specifying the transformation of signals from CFB inputs to CFB outputs,
which is defined in terms of the functions executed by the constituent function blocks.
Assuming that the CFB encapsulates a sequence of r function blocks, this function can
be represented as:
f = fr ◦ fr-1 ◦ .... ◦ f1 , or using another notation: y(k) = fr ( fr-1 ( ... ( f1(x(k)))...))
(14)
In the general case, this function will have a different expression for each particular
configuration of the FB network, which has to be always modelled by an acyclic data
flow diagram. However, cycles are allowed at actor level but these are effectively
broken by one-period delays due to the adopted clocked synchronous model of
computation (see below).</p>
        <p>The supervisory state machine (SSM) implements the reactive aspect of actor
behaviour, in separation from the transformational (signal processing) aspect, which
is delegated to the modal function block. The SSM generates two output signals - m
and u, meaning mode and mode-updated, which are specified by the corresponding
functions:
m(k) = f (m(k-1), e(k), pr(e(k)) - a mode transition function, and</p>
        <p>u(k) - a Boolean function, which is defined as follows:
u(k) = true when m(k) ≠ m(k-1), i.e. when a mode transition has taken place,
u(k) = false when m(k) = m(k-1), and no transition has taken place.</p>
        <p>In the above expression e(k) denotes a transition trigger, i.e. an event specified as a
Boolean expression involving binary input signals that are present at time kT, T is the
period of the host actor, and pr(k) is the priority of the event triggering the transition
from m(k-1) to m(k).</p>
        <p>The modal function block (MFB) implements the signal processing aspect of actor
behaviour by executing constituent function blocks within the corresponding modes of
operation. These compute control signals yi, i = 1, 2, …, r, by invoking signal
transformation functions f1, f2, …., fr – from input to output signals. Subsets of these
functions are selected for execution, depending on the mode and mode-updated input
signals indicated by the state machine function block, such that:
yi</p>
        <p>Ap , yi(k) = fi(x(k)) , and yi Aq, q p, yi(k) = yi(k-1) - when m(k) = p
and u(k) = true;
yi , yi(k) = yi(k-1) - when u(k) = false ,
where Ap denotes the control action, i.e. the subset of control signals generated in mode
p, and fi is the function executed by the corresponding function block(s) in order to
generate the signal yi, yi Ap. For instance, the control signal voltage of Fig.3 will be
generated by a PID function block if mode has been updated to automatic.</p>
        <p>
          The composition of supervisory state machine and modal function block operates as
a periodically executed event-driven state machine whose operational semantics and
implementation are presented in [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. This state machine is invoked within a
periodically executing host actor but a state transition takes place only when the
corresponding transition trigger is present, much in the same way as event-driven state
machines triggered by external interrupts.
(15)
(16)
(17)
3.3
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Specification of Actor Behaviour</title>
        <p>Actors generate reactions to execution triggering events in the form:
e</p>
        <p>Ye ,
where Ye Y, Ye being the set of output signals generated by the actor in response to
the execution trigger e. The latter may be a local timing event ↑(kT), a global timing
event ↑sync(kT) generated by a periodic synchronization message or an external event
↑xtrigger , where xtrigger is one of the actor input signals (e.g. a message arrival event)1.</p>
        <p>Actor output signals y Y are specified by functions of input signals x X that are
latched by input drivers at the time of input tin. With periodic actors triggered by local
or global timing events tin = kT, k = 0, 1, 2, …</p>
        <p>Output signals are composed of output signal variables generated by the actor FB
network, which has a zero logical execution time (LET). Hence, the output signal
variables are logically related to the input time instant kT:</p>
        <p>w(k) = φ(v(k)) ,
where φ is a composite function – from input signal variables v V to output signal
variables w W that constitute actor input signals x and output signals y, respectively.</p>
        <p>With actors having purely transformational behaviour, φ can be defined like a CFB
function, e.g.:</p>
        <p>φ = fr ◦ fr-1 ◦ ….. ◦ f1 ,
where fi are basic and/or composite signal-transformation functions executed by
constituent function blocks, i = 1, 2, …, r.</p>
        <p>With complex actors built from supervisory state machines coupled to modal
function blocks, each mode generates certain control signals specified by the
corresponding functions, for example:
w1(k) = φ1 (v(k)) - generated in mode 1
w2(k) = φ2 (v(k)) - generated in mode 2</p>
        <p>.............................</p>
        <p>ws(k) = φs (v(k)) - generated in mode s
(18)
(19)
(20)
(22)
(23)</p>
        <p>In this case, for each φi , φi = fi ◦ m , where m is the mode transition function of the
SSM function block and fi(v(k)) is the signal transformation function executed by the
modal function block when the supervisory state machine has indicated that m(k) = i.</p>
        <p>In the general case:
φi = fi ◦ m ◦ g ,
(21)
where g denotes a pre-processing function. The latter is executed by a pre-processing
(basic or composite) function block, generating a transition-trigger signal for the
supervisory state machine (e.g. various types of arithmetic, comparators, counters, etc.)</p>
        <p>The output variables generated by the actor task are used to compose output signals,
which are latched into the output drivers at the time of output:</p>
        <p>y(tout) = φ(x(tin)) , tout = tin+ D = kT + D, k = 0, 1, 2, … ; 0 ≤ D ≤ T ,
Hence:</p>
        <p>
          y(kT + D) = φ(x(kT)) ,
1 Bold symbols denote actor-level events and input/output signals.
and the actor as a whole has a clocked synchronous semantics [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], chracterized by a
non-zero logical execution time (LET).
        </p>
        <p>In the special case of actor without deadline, it is assumed that D = 0, and tin = tout =
kT. Hence: y(k) = φ(x(k)), and the actor has a perfect synchronous semantics (zero
LET). This is the case with intermediate actors of phase-aligned transactions, where
the deadline is usually associated with the last actor, which has to generate the control
signal at the transaction deadline instant (see next section).
3.4</p>
      </sec>
      <sec id="sec-3-4">
        <title>Specification of System Behaviour</title>
        <p>
          System operation is specified in terms of distributed transactions, such as the
transaction shown in Fig. 5, assuming: 1) Periodic phase-aligned transactions involving
non-blocking basic tasks, such as the one shown in Fig. 5, which are typical for
distributed control applications [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]; 2) Non-blocking signal-based communication;
3) Distributed Timed Multitasking, which is an extension of Timed Multitasking for
distributed transactions.
        </p>
        <p>Under these assumptions, a periodic phase-aligned transaction with a period Ttrans
can be represented as a sequence of transaction phases, involving a number of actors,
which are executed in response to a global timing event ↑sync(kTtrans) represented by
the arrival of a synchronisation (sync) message generated by a sync master node:
↑sync(kTtrans)</p>
        <p>y1 ; y1 = φ1 (x1) ,
where: x1 = xin , x2 = y1, x3 = y2 ,…, xn = yn-1, yn = yout .</p>
        <p>Hence, transaction execution can be modelled with a composite function:
where φi is the function implemented by the i-th actor, i = 1, 2, …., n.</p>
        <p>Taking into account Distributed Timed Multitasking, transaction execution can be
represented as a transformation from input signals xin(tin) to output signals yout(tout),
where tin and tout are determined by the transaction period Ttrans and deadline Dtrans :
↑sync(kTtrans)</p>
        <p>yout ,
yout (kTtrans + Dtrans) = Φ(xin (kTtrans)); Dtrans ≤ Ttrans .</p>
        <p>For the particular example illustrated by Figures 1 and 5, the behaviour of the
control system can be represented in the form:</p>
        <p>Voltage(kTtrans + Dtrans) = Φ(pulses(kTtrans)), Φ = φactuator ◦ φcontroller ◦ φsensor .</p>
        <p>In the general case, the distributed system may consist of multiple subsystems
executing distributed transactions with different rates of activation (multi-rate system),
e.g. a multi-loop distributed control system. Accordingly, subsystem actors are
allocated onto network nodes, and subsystem channels – onto the physical
(24)
(25)
(26)
communication channel(s). This raises the issue of concurrent execution of transaction
tasks/communications within the corresponding operational domains.</p>
        <p>
          Following the adopted model of computation (Fig. 4), actor tasks are executed in a
dynamic priority-driven scheduling environment provided by node-resident kernels,
which are instances of the HARTEXμ timed multitasking kernel [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Communication
takes place in a real-time network supporting predictable interactions, such as CAN.
Transparent signal-based communication is supported by a dedicated protocol
provided by the HARTEXμ kernel. With this protocol, signal drivers are executed
atomically at precisely specified time instants that are fixed on the time axis. This
makes it possible to eliminate the undesirable effects of task preemption and network
communication, i.e. transaction I/O jitter, as long as transaction (end-to-end) response
times are less than the corresponding end-to-end deadlines. This requirement can be
checked using response time analysis developed for distributed real-time systems, e.g.
the analysis method and tool presented in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Related research</title>
      <p>
        COMDES-II is a follow-on version of COMDES-I [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. It employs an actor-based
system model, whereby actors are conceived as units of concurrency as well as
functionality (e.g., sensor, controller, actuator, etc.), whereas in the previous version a
system is composed from function units encapsulating multiple threads of control. It
also incorporates a different, i.e. composite state machine model emphasizing the
separation of reactive and transformational (signal-processing) behaviour.
      </p>
      <p>
        In COMDES-II, system operation is described by the Distributed Timed
Multitasking (DTM) model of computation, which has been inspired by the original
Timed Multitasking model [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and is similar to the LET model adopted in the xGiotto
language [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. However, both of these models use port-based communication between
actors, whereas DTM employs broadcast communication with labeled state messages
(signals). This solution rules out artifacts such as ports, message queues, mailboxes,
operational interfaces, etc., and provides for transparent interactions that are
independent of the allocation of the actors on network nodes. Furthermore, the above
frameworks use flat actor models with actors programmed in a conventional fashion,
whereas COMDES-II actors are configured from prefabricated executable components
– function blocks.
      </p>
      <p>
        The adopted communication mechanism is characterized by complete separation of
computation and communication, as recommended in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], since signal drivers are
executed in separation from actor tasks and from each other. That is not the case with
port-based objects, where ports are usually defined as communication objects whose
methods are invoked within task I/O drivers in a conventional call-return manner, see
e.g. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Consequently, the communication pattern is „hardwired‟ in the code of I/O
drivers and cannot be reconfigured without reprogramming.
      </p>
      <p>
        The presented model of computation bears certain similarities with the models used
in synchronous languages [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], and in particular: atomic execution of input and output
actions; clocked operation similar to the execution pattern used in LUSTRE and
SIGNAL; compositional data flow models inspired by the Control Engineering domain.
      </p>
      <p>At the same time, there are substantial differences that have to be highlighted in
order clearly differentiate the two models:
─ Synthetic, component-based approach using prefabricated executable components
vs. a conventional language-based approach used in synchronous languages
─ True actor-level concurrency vs. conceptual concurrency, which is „compiled
away‟ during program compilation
─ Constant non-zero reaction time vs. instantaneous (zero-time) reaction assumed by
perfectly synchronous systems.</p>
      <p>The last feature facilitates the engineering of distributed systems and eliminates
problems related to fixpoints, instantaneous loops, etc., which have been major issues
with synchronous systems. Furthermore, the synchronous model does not address the
problem of task and transaction jitter because of the very nature of the synchrony
hypothesis, whereas it is practically eliminated with the COMDES model of distributed
computation.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>The paper presents the formal specification of COMDES-II - a domain-specific
framework for distributed embedded control systems, which combines open
architecture and predictable behaviour under hard real-time constraints. The
framework employs a hierarchical system model combining the concepts of both actor
and function block: an embedded system is composed from autonomous system agents
(actors), which are configured from prefabricated executable components – function
blocks. Actors interact by exchanging signals, i.e. labeled messages with state message
semantics, rather than using I/O ports or operational interfaces. This feature facilitates
system reconfiguration and provides for transparent communication between actors,
resulting in flexible and truly open distributed systems. Signal-based communication is
also used for internal interactions involving constituent function blocks. That is why
system configuration is specified by data flow models at all levels of specification.
Consequently, actor behaviour is represented as a composition of component functions,
and system behaviour – as a composition of actor functions. A synchronous model of
computation is applied at the component level. A clocked synchronous model of
execution is applied at the actor and system levels, i.e. Distributed Timed Multitasking.</p>
      <p>The presented software architecture has important implications for software safety
and predictability, as well as the entire software development process. In this case,
applications are configured from prefabricated and validated (trusted) components,
following strict composition rules that are derived from the syntax and static semantics
of the framework. The behaviour of software components and applications is
rigorously specified via a hierarchy of formal models that constitute the behavioural
semantics of the framework. On the other hand, the use of timed multitasking makes it
possible to engineer highly predictable systems operating in a flexible, dynamic
scheduling environment.</p>
      <p>
        This has been demonstrated in a number of experiments used to validate the
framework, e.g. distributed computer control systems involving physical and computer
models of plants, such as electric DC motor, production cell, steam-boiler, turntable
machine, etc. It has also been applied in an industrial case study - a medical ventilator
control system [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. In all cases, the use of the framework helped reduce development
time and increase software quality. This was quite obvious with some of the systems
mentioned above, e.g. the production cell control system, which was developed in a
relatively short time and became operational without extensive testing and debugging.
      </p>
      <p>However, in order to guarantee that an application is correct by construction, it has
to be proven correct with respect to the required functional and timing behaviour. That
is only possible if a precise and unambiguous system model is developed, whose
particular features would desirably facilitate the process of analysis. In COMDES-II
that is accomplished through formal design models emphasizing the principle of
separation of concerns, i.e. separate treatment of computation and communication,
functional and timing behaviour, reactive and transformational behaviour, etc. Thus,
different aspects of system behaviour can be verified in separation using appropriate
techniques and tools. Functional behaviour can be analyzed using tools such as
Simulink (with continuous systems) and Uppaal (with discontinuous systems),
following semantics-preserving transformation of system design models into the
corresponding analysis models, whereas timing behaviour can be verified through
numerical response-time analysis.</p>
      <p>In particular, Simulink can be used to analyse system behaviour via simulation. That
is facilitated by the similarity between COMDES-II design models and Simulink
analysis models representing the controller part of the system, both of which are
discrete-time data flow models. Consequently, it is possible to export a COMDES-II
design model to the Simulink environment, by wrapping COMDES-II components into
S-functions and wiring them together, following the interconnection pattern of the
original design model. This analysis method has been successfully experimented with
the medical ventilator case study, whereby the COMDES-II design of the control
system has been exported to Simulink and subsequently validated via numerical
simulation.</p>
      <p>
        The envisioned development process will make it possible to engineer embedded
applications that are correct by construction. This will hopefully eliminate design
errors, which are difficult and costly to repair. On the other hand, implementation
errors will be eliminated through an automated configuration process supported by an
integrated toolchain [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], which is based on meta-models that have been derived from
the formal design models presented in this paper. Ultimately, the elimination of both
design and implementation errors will considerably enhance software safety, which is
of paramount importance for the overall safety of embedded applications.
6
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>B.</given-names>
            <surname>Bouyssounouse</surname>
          </string-name>
          and J.
          <string-name>
            <surname>Sifakis</surname>
          </string-name>
          (Eds.),
          <source>“Embedded Systems Design. The ARTIST Roadmap for Research and Development”, LNCS</source>
          <volume>3436</volume>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>T.A.</given-names>
            <surname>Henzinger</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sifakis</surname>
          </string-name>
          , “
          <article-title>The Embedded Systems Design Challenge”</article-title>
          ,
          <source>Proc. of the 14th International Symposium on Formal Methods FM</source>
          <year>2006</year>
          , LNCS
          <volume>4085</volume>
          (
          <year>2006</year>
          ), pp.
          <fpage>1</fpage>
          -
          <lpage>15</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>P.</given-names>
            <surname>Caspi</surname>
          </string-name>
          , “
          <article-title>Some Issues In Model-Based Development for Embedded Control Systems”</article-title>
          , Invited Lecture, DIPES‟
          <year>2006</year>
          , Braga, Portugal, Oct.
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>D.B. Stewart</surname>
            ,
            <given-names>R.A.</given-names>
          </string-name>
          <string-name>
            <surname>Volpe and P.K. Khosla</surname>
          </string-name>
          , “
          <article-title>Design of Dynamically Reconfigurable RealTime Software Using Port-Based Objects”</article-title>
          ,
          <source>IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>23</volume>
          , No 12,
          <year>1997</year>
          , pp.
          <fpage>759</fpage>
          -
          <lpage>776</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>J.</given-names>
            <surname>Liu</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.A.</given-names>
            <surname>Lee</surname>
          </string-name>
          , “
          <article-title>Timed Multitasking for Real-Time Embedded Software”</article-title>
          ,
          <source>IEEE Control Systems Magazine: Advances in Software Enabled Control, Feb</source>
          .
          <year>2003</year>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>75</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>A.</given-names>
            <surname>Ghosal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.A.</given-names>
            <surname>Henzinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.M.</given-names>
            <surname>Kirsch</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.A.</given-names>
            <surname>Sanvido</surname>
          </string-name>
          , “
          <article-title>Event-Driven Programming with Logical Execution Times”</article-title>
          ,
          <source>Proc. of HSCC</source>
          <year>2004</year>
          , LNCS
          <volume>2993</volume>
          (
          <year>2004</year>
          ), pp.
          <fpage>357</fpage>
          -
          <lpage>371</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>D.</given-names>
            <surname>Isovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Norström</surname>
          </string-name>
          , “
          <article-title>Components in Real-Time Systems”</article-title>
          ,
          <source>Proc. of the 8th International Conference on Real-Time Computing Systems and Applications RTCSA‟</source>
          <year>2002</year>
          , Tokyo, Japan, March 2002
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>H.</given-names>
            <surname>Hansson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Åkerholm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Crnkovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Törngren</surname>
          </string-name>
          , “
          <article-title>SaveCCM - A Component Model for Safety-Critical Real-Time Systems”</article-title>
          ,
          <source>Proc. of the 30th EUROMICRO Conference on Software Engineering and Advanced Applications SEAA</source>
          <year>2004</year>
          , pp.
          <fpage>627</fpage>
          -
          <lpage>635</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>A.L.</given-names>
            <surname>Sangiovanni-Vincentelli</surname>
          </string-name>
          and G. Martin, “
          <article-title>Platform-Based Design and Software Design Methodology for Embedded Systems”</article-title>
          ,
          <source>IEEE Design and Test of Computers</source>
          , vol.
          <volume>18</volume>
          (
          <year>2001</year>
          ), pp.
          <fpage>23</fpage>
          -
          <lpage>33</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>K.H. John and M. Tiegelkamp</surname>
          </string-name>
          ,
          <source>IEC 61131-3: Programming Industrial Automation Systems</source>
          , Springer,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>R.</given-names>
            <surname>Lewis</surname>
          </string-name>
          ,
          <source>Modeling Control Systems Using IEC 61499</source>
          , Institution of Electrical Engineers (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>C. Angelov</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Sierszecki</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Marian</surname>
          </string-name>
          and J. Ma, “
          <article-title>A Formal Component Framework for Distributed Embedded Systems”</article-title>
          , in I. Gorton et al. (Eds.):
          <source>Proc. of CBSE</source>
          <year>2006</year>
          , LNCS
          <volume>4063</volume>
          (
          <year>2006</year>
          ), pp.
          <fpage>206</fpage>
          -
          <lpage>221</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>C. Angelov</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          <string-name>
            <surname>Ke</surname>
            and
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Sierszecki</surname>
          </string-name>
          , “
          <article-title>A Component-Based Framework for Distributed Control Systems”</article-title>
          ,
          <source>Proc. of the 32nd EUROMICRO Conference on Software Engineering and Advanced Applications SEAA</source>
          <year>2006</year>
          , Cavtat, Dubrovnik, Croatia, Aug.-Sept.
          <year>2006</year>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>27</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>K.</given-names>
            <surname>Sierszecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Angelov</surname>
          </string-name>
          and
          <string-name>
            <given-names>X.</given-names>
            <surname>Ke</surname>
          </string-name>
          , “
          <article-title>A Run-Time Environment Supporting Real-Time Execution of Embedded Control Applications”</article-title>
          ,
          <source>Proc. of the 14th International IEEE Conference on Embedded and Real-Time Computing Systems and Applications RTCSA</source>
          <year>2008</year>
          , Kaohsiung, Taiwan, Aug. 2008
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>C. Angelov</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          <string-name>
            <surname>Ke</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          <string-name>
            <surname>Guo</surname>
            and
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Sierszecki</surname>
          </string-name>
          , “
          <article-title>Reconfigurable State Machine Components for Embedded Applications”</article-title>
          ,
          <source>Proc. of the 34th EUROMICRO Conference on Software Engineering and Advanced Applications SEAA</source>
          <year>2008</year>
          , Parma, Italy, Sept.
          <year>2008</year>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>58</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Y.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sierszecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Angelov</surname>
          </string-name>
          , “
          <article-title>COMDES Development Toolset”</article-title>
          ,
          <source>Proc. of the 5th International Workshop on Formal Aspects of Component Software FACS</source>
          <year>2008</year>
          , Malaga, Spain, Sept.
          <year>2008</year>
          , pp.
          <fpage>233</fpage>
          -
          <lpage>238</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>F.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Guan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sierszecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Angelov</surname>
          </string-name>
          , “
          <article-title>Component-Based Design of Software for Embedded Control Systems: the Medical Ventilator Case Study”</article-title>
          ,
          <source>Proc. of the International Conference on Embedded Software and Systems ICESS</source>
          <year>2009</year>
          , Hanchzhou, China, June 2009
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>W.</given-names>
            <surname>Henderson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kendall</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Robson</surname>
          </string-name>
          , “
          <article-title>Improving the Accuracy of Scheduling Analysis Applied to Distributed Systems”</article-title>
          ,
          <string-name>
            <surname>Real-Time</surname>
            <given-names>Systems</given-names>
          </string-name>
          , vol.
          <volume>20</volume>
          , No 1 (
          <year>2001</year>
          ), pp.
          <fpage>5</fpage>
          -
          <lpage>25</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>A.</given-names>
            <surname>Jantsch</surname>
          </string-name>
          ,
          <source>Modeling Embedded Systems and SoCs - Concurrency and Time in Models of Computation</source>
          , Morgan Kaufmann, 2003
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>A.</given-names>
            <surname>Benveniste</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Caspi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Edwards</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Halbwachs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. Le</given-names>
            <surname>Guernic</surname>
          </string-name>
          and R. de Simone, “
          <source>The Synchronous Languages 12 Years Later”, Proc. of the IEEE</source>
          , vol.
          <volume>91</volume>
          , No 1,
          <string-name>
            <surname>Jan</surname>
          </string-name>
          .
          <year>2003</year>
          , pp.
          <fpage>64</fpage>
          -
          <lpage>83</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>