<!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>Case studies for a new IoT programming paradigm: Fluidware?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Stefano Mariani</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Roberto Casadei</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fabrizio Fornari</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giancarlo Fortino</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Danilo Pianini</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Barbara Re</string-name>
          <email>barbara.reg@unicam.it</email>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Wilma Russo</string-name>
          <email>w.russog@unical.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Claudio Savaglio</string-name>
          <email>csavaglio@dimes.unical.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mirko Viroli</string-name>
          <email>mirko.virolig@unibo.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Franco Zambonelli</string-name>
          <email>franco.zambonellig@unimore.it</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DIMES, University of Calabria</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>DISI, University of Bologna</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>DISMI, University of Modena and Reggio Emilia</institution>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>School of Science and Technology, University of Camerino</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>A number of scienti c and technological advancements enabled turning the Internet of Things vision into reality. However, there is still a bottleneck in designing and developing IoT applications and services: each device has to be programmed individually, and services are deployed to speci c devices. The Fluidware approach advocates that to truly scale and raise the level of abstraction a novel perspective is needed, focussing on device ensembles and dynamic allocation of resources. In this paper, we motivate the need for such a paradigm shift through three case studies emphasising a mismatch between state of art solutions and desired properties to achieve.</p>
      </abstract>
      <kwd-group>
        <kwd>Fluidware IoT programming coordination</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        To reveal the full potential of large-scale IoT deployments demands for novel
models and programming abstractions [
        <xref ref-type="bibr" rid="ref22 ref6">6, 22</xref>
        ]. The need to adapt to short, medium,
and long-term contingencies, to operate on a dynamically evolving infrastructure
comprising the full spectrum of Edge, Fog, and Cloud devices and resources, to
react to the inner dynamics of the environment (there including the space-time
fabric) in near real-time, and to execute goal-oriented orchestration of distributed
activities across devices (with a varying degree of computational power), raises
challenges yet to be addressed by currently available programming languages
and executing platforms [
        <xref ref-type="bibr" rid="ref14 ref16 ref22">22, 16, 14</xref>
        ].
? Work Supported by the Italian MIUR, PRIN 2017 Project \Fluidware".
      </p>
      <p>Copyright c 2019 for this paper by its authors. Use permitted under Creative
Commons License Attribution 4.0 International (CC BY 4.0)</p>
      <p>
        A novel programming model for IoT services and applications has been
conceived in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] with the purpose of tackling the aforementioned challenges:
grounded on results in the areas of attribute-based coordination [
        <xref ref-type="bibr" rid="ref1 ref2 ref7">1, 2, 7</xref>
        ],
eldbased coordination [
        <xref ref-type="bibr" rid="ref13 ref21">13, 21</xref>
        ], collective adaptive systems [
        <xref ref-type="bibr" rid="ref18 ref4">4, 18</xref>
        ], and aggregate
computing [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ], the proposed \Fluidware" framework aims to address the
complexity of designing and deploying large-scale IoT systems. Fluidware revolves around
the core idea of abstracting away devices of the IoT fabric (sensors, actuators,
gateways, etc.) as sources, digesters, and targets of distributed ows of
contextualised events delivering information about data produced, manipulated, and
consumed, over time and across space. Programming services and applications
then amounts at designing \funnel processes" to capture, process, manipulate,
and route such ows in a fully distributed way, as a means to coordinate the
activities of devices towards achievement of system (application or service) goals.
Funnel processes are declarative speci cations de ning what event ows to
consume and produce over time and across space, operating on distributed and
contextualised event streams in terms of pattern-matching mechanisms
considering both semantics of data and space-time constraints.
      </p>
      <p>In this paper we advocate the need for such a paradigm shift in designing
and developing IoT services and applications by discussing three envisioned
deployment scenarios: a smart retirement centre, a smart university campus, and a
generic stress-free workplace. Accordingly, the paper is organised as follows:
Section 2 overviews the Fluidware approach to IoT systems engineering; Section 3
describes the issues in developing IoT services according to current practice,
and how Fluidware may overcome them, in a smart retirement centre scenario,
whereas Sections 4 and 5 do the same for a university campus and a generic
workplace, respectively; nally, Section 6 provides nal remarks.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Fluidware</title>
      <p>The key idea of Fluidware is that IoT services and applications can be conceived
and designed as transformations of widely distributed event streams (\ ows")
encompassing ensembles of devices. This is achieved by means of the \funnel
process" abstraction, acting as both producer and consumer of ows, and able to
capture, merge, split, replicate, redirect, lter, process, namely manipulate them
in time and space, over the network of distributed IoT devices, and ranging the
whole spectrum from Edge to Cloud. As a consequence, Fluidware raises the
abstraction level for developers willing to design an IoT service or application:
they no longer think in terms of programming physical devices and
orchestrating their communications, but rather in terms of programming purely logical
processes (the funnels) dealing with event streams detached from the physical
devices actually producing and consuming them|as depicted in Figure 1.</p>
      <p>
        Funnel processes are declaratively speci ed in a totally agnostic and
orthogonal way with respect to their actual allocation to computational nodes, and
distribution across the Edge-Cloud spectrum|which are aspects delegated to
the Fluidware middleware. Such a speci cation de nes which ows to capture
and what to get out of them depending on contextual, spatio-temporal, and
semantic constraints (e.g., \gather all temperatures from this area in the last 15
mins which are above the de ned critical threshold, then chart a heatmap").
This enables to de ne scale-independent computational processes inherently to
contextual conditions and seamlessly tting heterogeneous computing and
network infrastructures. More speci cally, an event ow is manipulated by funnel
processes to produce a new ow, by a combination of techniques typical of stream
processing and self-organising systems, such as merging, splitting, ltering,
aggregation, spreading, and so on [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Funnel processes may work as lters,
selecting events from ows if and only if they match semantic and spatio-temporal
criteria de ned by a suitable Domain Speci c Language (e.g. as for Regular
Expressions); aggregators, to fuse di erent event ows into new ones, depending on
how their attributes relate to each other, so as to change the structure of the ow
(e.g. summarising information by averaging data); transmuters, that modify the
content of events in ows, leaving the structure unchanged (e.g. resetting
counters for a \rolling horizon" measure); routers, that may re-locate, grow, shrink,
etc. the span of events in the space-time fabric (e.g. moving a source of events to
a more reliable device). Basic primitive operators will take care of manipulating
event ows and funnel processes as well, as a higher order calculus, such as
splitters and mergers to manipulate cardinality of input and output streams, pipes
and multiplexers to handle sequential and parallel composition of streams and
funnels, etc. As an example, the following pseudo-code snippet may implement
the aforementioned \heatmap charting" funnel:
function critical temp nearby:
if temp(bind-to [area(here), last(15, 0m0)]) &gt; thresholds(0temp0) then
end if
sys:viz:chart(0heatmap0, temp)
end function
Indeed, a suitable platform/middleware [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] is a key enabler of the Fluidware
approach, as the responsible for the actual allocation of funnel processes at
the more appropriate layer of an Edge-Fog-Cloud network of devices and
computational nodes [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], as well as of their optimised execution and transparent
replication/relocation across the network. The Fluidware middleware will thus
take care of performing two critical kinds of decision during run-time, both with
the goal of fully realising the funnel processes speci cation: (a) which ows to
connect to a given funnel process (e.g., all ows in target area, only ows with
certain properties, etc.), and how (e.g., as a message stream, through a
publishsubscribe blackboard, or with a tuple space), and (b) where to deploy such a
process (e.g., at the Edge, in the Fog, or on the Cloud), and how (e.g., as
individual process, or as part of a swarm of distributed replicas, or as a worker in a
map-reduce like architecture).
      </p>
      <p>For instance, a funnel process collecting temperature measures from a given
area to chart a heatmap of that area may be actually composed by three
subprocesses: one gathering temperatures from sensors, thus directly deployed
onboard Edge devices, one aggregating results to average out temperatures
depending on sub-areas (e.g., the kitchen, the living room, 1st oor, 2nd oor, left-wing,
right-wing, etc.), hence deployed in Fog gateways, and the last one charting the
heatmap, deployed on the Cloud (as it needs global information and more
computational capacity). Such sub-processes, which can be funnel processes themselves,
are opportunistically connected to the most suitable event ows (Figure 2), and
deployed to the most suitable device (Figure 3). For instance, should the
Fluidware middleware detect failure of a sensor, it could replace the connection to the
event ow coming from such sensor with another, non faulty one. Also, should
the middleware detect a performance drop in processing at the Edge, it could
decide to re-locate the correspondent sub-process to an available Fog gateway.</p>
      <p>In next sections, we discuss three Fluidware deployment scenarios so as to
shed light on why the kind of paradigm shift proposed by Fluidware is needed,
how it advances beyond the current state of art in delivering services in the IoT,
and what bene ts it delivers.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Smart Retirement Centre</title>
      <p>We envision the scenario of a retirement facility for elderly people or people with
chronic diseases, both requiring peculiar care and continuous assistance. There,
we assume guests can live together with a member of their family or an assistant
(social worker, nurse) in small furnished ats, properly equipped with IoT devices
and services meant to support health and general lifestyle monitoring (e.g., smart
cameras, A/C, illumination, doors, etc.). Also, we assume that the centre has
dedicated rooms for providing care to guests (e.g., rehabilitation rooms and spa
services) as well as rooms for social and leisure activities (e.g., the canteen, and
common living rooms), also equipped with smart devices (e.g., smart TVs, pill
boxes, refrigerators, beds, sofas, chairs and wheelchairs, etc.).</p>
      <p>Several speci c IoT services can be delivered to guests, which usually require
coordination of several components (software and hardware), and each having
its solutions and issues to deal with|as summarised in Table 1.
3.1</p>
      <sec id="sec-3-1">
        <title>Services</title>
        <p>In the ats of the facility, other than services to access and control individual
appliances, one can think at providing coordinated services that, by accessing
and directing the lightening system, the light sensors, and the window curtains
in a speci c room, can modify the overall light situation of that room depending
on the speci c needs/preferences of the persons occupying it. Similarly, sensors
and actuators associated to the heating and A/C systems can set up the climate
conditions in accord to the speci c comfort levels of the inhabitants.</p>
        <p>Concerning care delivery, one can think at services to monitor the health
conditions of patients and their everyday activities, and possibly send noti cations
to the medical personnel to alert about unusual or potentially safety-critical
situations. Furthermore, in presence of suitable actuators (e.g, robotic personal
assistants or properly instrumented furniture such as electro-mechanical beds
and sofas) the system can directly trigger the necessary actions to prevent
damage (e.g.,, put the bed in vertical position upon sensing choking). All of the
aforementioned IoT services are local in the sense that they do not require a
global understanding of the situation.</p>
        <p>In addition to the local services conceived to orchestrate speci c portions
of the facility, a number of global ones can be envisioned to regulate its overall
functioning. For instance, services to control the heating and lightening systems,
and in particular to monitor and keep under control energy expenses. Services
to monitor re and other dangerous situations, and automatically organise
evacuation plans upon need. Services to control the overall distribution of people in
the facility and steer assistance personnel accordingly.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>IoT devices</title>
        <p>In order to set up the aforementioned services, the following sensors and
actuators are needed:
{ general ambient sensors and actuators: light and heat controllers, gas and
smoke detectors, presence and motion sensors, energy consumption sensors
on electric appliances, shutter/curtain controllers, as well as daily life objects
augmented with sensing capabilities (e.g, cup, fork, cane).
SafeOtScymc-cuar&amp;pritaticncaltail-melcreaatnusttet&amp;roecmdonnaoidtltleiiutdmicopanirntsoiaoctneiodsnures ASuttaomraotuedtiEnengveaarcgnuydateoiocnccuipepnlaacnnytsgesnteeerraitnigon
SmBarrSottkaOSetriybc-njbe2cach/st3.e-/dRtiWEperuSosbTTalirssrcehehr-svisotuiuecbcrestcscuerri/ebeWS EvCenlSot-ueCrdvo-ihncodesitctieoodmn-ppAroocsctitieoisonsninrugles</p>
        <p>SO abstraction level
WoT full network stack
Adding device/service</p>
        <p>Simple message-based interaction</p>
        <p>Static network topology
Design-time process allocation</p>
        <p>Semantic pattern matching
Dynamic network re-con guration</p>
        <p>Run-time process allocation
{ speci c sensors and actuators needed to monitor and assist with the health
conditions peculiar to each guest, there including body sensors such as heart
rate, glucose, blood pressure, temperature, or medical devices such as ECG
monitors, sleep quality monitors, spyrometry devices, smart scales.
Besides devices inside guests' ats, all other places in the facility may include
sensors to detect people presence and ambient conditions, actuators to regulate
ambient conditions, and digital signals (e.g., audio system) or screens to provide
noti cations, messages, and alerts.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>State of art solutions</title>
        <p>
          At the modelling level, solutions readily available to deliver the aforementioned
services are either based on the concept of Smart Object (SO) [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], on the Web
of Things vision (WoT) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], or on service-orientation. From the architectural
standpoint, service-oriented architectures (SOA) [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] are most prominent, as the
service abstraction can span the whole spectrum of Edge-Fog-Cloud layers
typically featured in modern IoT deployments. Also, SOA is a good t for both SO
and WoT modelling. A the infrastructural level, the 2/3-tiers model
encompassing the whole network of devices from the Edge to the Cloud (possibly including
Fog nodes) is the most popular right now, as it enables system administrators
to deploy each service at the most appropriate location [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>The above considerations imply that, for instance, realising services for
monitoring patient clinical conditions and trigger appropriate action in case anomalies
are detected would amount, essentially, at developing a web services stack for
data processing and the appropriate communications with sensor and actuator
devices. For instance, these may be connected to a local gateway (e.g., a RasPi or
a desktop computer) for sending data, which is then processed by an ensemble of
web services to realise the system functionalities. Cooperation between services
may happen in a point-to-point fashion through simple RESTful endpoints, or
by relying on a publish-subscribe broker. Finally, deployment would be mostly
decided at design-time: the web service backends would be likely deployed on
the Cloud, or possibly to a su cient powerful Fog node, and devices connected
to the gateway would have their own logic embedded to send data and listen for
commands. This practice limits scalabilty as forces developers to individually
deal with each speci c device individually.
3.4</p>
      </sec>
      <sec id="sec-3-4">
        <title>Issues</title>
        <p>The solutions described above have a few limitations which current research
proposals fail to address in a holistic and conceptually sound way. WoT modelling
requires a full network stack to be available on connected devices, which is
impractical for the resource-constrained ones usually employed at the Edge. SOA
does not cope well with moving services across tiers' boundaries depending on
available resources. The 2/3-tiered network topology model is usually accepted
as a static one, where services are allocated to one speci c tier at design time.</p>
        <p>This means that, for instance, adding a new device to the system usually implies
adding a new service to the stack, taking care of connecting the device to the
rest of the application, re-wiring service composition routing paths, and such.
Also, scaling the service to, for instance, a whole at instead of a single room
usually requires a re-deployment of the whole application.
3.5</p>
      </sec>
      <sec id="sec-3-5">
        <title>Fluidware approach</title>
        <p>Fluidware would enable developers to de ne the event streams they are
interested in (e.g., the blood pressure or heart rate time series), the funnel processes
they want to deploy (e.g., one triggering alerts if a combination of vital signs
is worsening, and another one gathering vital signs measurements from body
sensors) and how they combine the aforementioned streams, and let the
Fluidware middleware taking care of (a) connecting the event streams to the actual
source devices' data, and (b) allocating the funnel processes to the
computational nodes composing the network. This means that developers need no longer
to bother with re-wiring service connections if new applications are deployed, or
to re-con gure the network topology if new devices come in, nor to deal with
device failures as long as other providing the same data are available.</p>
        <p>Overall, this means that not only system designers have an higher abstraction
level provided, but also a higher degree of decoupling between system hardware
and software components. With Fluidware, indeed, \ ows" decouple
computational processes from the actual data sources they need, while \funnels" decouple
developers from the burden of statically deciding where to deploy their services.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Smart University Campus</title>
      <p>Another scenario suitable for Fluidware is a smart university campus, as it should
provide comfortable living spaces for both students and faculty sta to support
individual studies and research, as well as student teamwork and sta
collaborative research. There, spaces could be re-organised on a per-need basis, such as
in the case of planned temporary events (e.g., meetings, conferences, seminars,
industry recruiting, etc.) or unexpected contingencies. For instance the
earthquake of October 2016 seriously damaged the whole city centre of Camerino,
causing damage to buildings of the Department of Computer Science, among the
many. In presence of scarcity of space, organisation is thus even more critical,
and opportunistic exploitation of available rooms is of paramount importance.
Several services can then be conceived to deal with the shortage of spaces|as
summarised in Table 2.
4.1</p>
      <sec id="sec-4-1">
        <title>Services</title>
        <p>A rst service that can be delivered to students and faculty sta is the real-time
(a) tracking of rooms occupancy and (b) adjustment of rooms' environmental
conditions to the occupants' needs. At the local level, students, researchers, and
professors may utilise a smartphone app indicating the place that better matches
the users' requirements: for instance, some students require a study place which
is isolated, quiet, warm, and bright, whereas others are just interested in nding
the closest spot. At the global level, administration sta and campus managers
may nd convenient to have a Decision Support System for governance, aimed
at analysing data generated from the university IoT infrastructure to better
understand how to allocate the available spaces and to nd the most suitable
spaces for locating new services.</p>
        <p>Another service could be a navigation system to steer people towards their
destination, featuring integrated contextual information such as current or future
crowded areas, planned events, etc. Di erent path optimisation methods (e.g.,
the shortest distance, the shortest time, accessible paths only, stairs
minimisation, etc.) can be applied according to individual preferences and conditions.
Another example is assisted parking: free parking slots (for cars or bikes) can be
suggested according to planned activities of individuals; for instance, slots nearby
the branch of the campus where activities will be located could be prioritised.</p>
        <p>Lastly, an interesting service would be a recommendation system informing
about opportunities of interaction and activities contextual to students' and
researchers' goals and preferences. For example, in a multi-disciplinary campus,
students may grow interest in seminars or events which belong to di erent degree
courses; in these cases, it may be easy not to get appropriately noti ed. If the
campus is big enough, it is also likely the opposite happens: students receive so
many noti cations about upcoming events that they simply ignore them all. In
this case, the recommender system should be able to customise the information
conveyed to each student, dynamically considering dominating interests, as well
as maximising the interests of groups, as people are more likely to attend an
event if an entire group is involved.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>IoT devices</title>
        <p>Several devices have to be scattered across the campus to support the
aforementioned services: presence and motion sensors; temperature, humidity, light, and
noise sensors; RFID tags and readers; cameras; electric actuators; Edge devices
such as single-board computers (e.g., Raspberry Pi). These devices will not form
a nite and static set, immutable for the whole services lifetime: instead, it can
dynamically change for device addition or failure and replacement. Moreover, it
is worth emphasising that students and faculty sta , too, can serve as
crowdsensing sources sharing data through their own personal devices, for instance by
simply accepting to communicate their position to the smart campus services.
4.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>State of art solutions</title>
        <p>Several techniques are available for designing the aforementioned functionalities,
however, none of them takes a holistic stance, which is instead quintessential for
a system where decisions depend on a variety of factors. Also, existing solutions
do normally require to send data through the Cloud to third parties, which can
be undesirable. From the point of view of the developers, traditional approaches
such as object orientation or web services quick fall short in terms of
expressiveness, extendability, and integration in such highly and heterogeneous scenarios
such as the IoT.
4.4</p>
      </sec>
      <sec id="sec-4-4">
        <title>Issues</title>
        <p>Using graphical notations for representing processes is a well-known practice
in the areas of Model-driven engineering and Business Process Management
(BPM). For instance, in our scenario we can represent processes for the search
of a room, the information retrieval from sensors, the analysis of sensors
information, the activation of sensors failure procedures, the engagement of users
and their devices in the data retrieval procedure. However it is challenging to
capture all the required details about sensors and smart devices with the
actually available notations (e.g., BPMN). Especially, there is no standard way to
represent an IoT device, and data are generally represented by a single element
called data-objects. No support is given for the concept of ow/streaming of
data which are necessary in many IoT deployments.
4.5</p>
      </sec>
      <sec id="sec-4-5">
        <title>Fluidware approach</title>
        <p>The objective of Fluidware funnel processes is to leverage on sensors
opportunistically, so as to enable seamless provisioning of timely and reliable data for
supporting the services o ered to users. We may conceive a uid process in two
way: on one side, a top-down approach can be used by designing all the process
variations that may be activated in some circumstances, whereas on the other
side a bottom-up approach based on mining techniques can be used to discover
relevant emerging processes. We could of course also think about a mixed
approach. In any case, the activated processes are strongly dependent from sensors
data, which means the processes are di erentiated in terms of control- ow but
also in terms of data- ow, which is something Fluidware can nicely support
thanks to device decoupling and dynamic resource allocation.</p>
        <p>As sensors and actuators can dynamically change, the decoupling between
devices and data ows o ered by Fluidware becomes of paramount importance.
E.g., if each student has a dedicated application on his smartphone, hence is
working as a crowdsensing source, as he/she moves around the campus the
information that his/her smartphone provides changes context, hence may be
opportunistically connected to another funnel process by the Fluidware
middleware. Not only connection between event ows and funnel processes may change,
but also allocation of such processes across the IoT network can: for instance,
funnel process may migrate across Fog nodes (e.g., RasPis deployed in strategic
positions across the Campus) with the goal of minimising latency in delivering
services to students and researchers.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Stress-free Workplace</title>
      <p>Overworking, con icting relationships, psychological harassment, etc., contribute
to workplaces stress, with negative impacts on workers' productivity and,
especially, health. Cardiac monitoring is a key activity to detect high-stress
conditions and the ECG monitoring has become one mainstream activity in ambient
assisted living. A variety of services may be engineered to relieve workers and
to help the governance to manage stressful collective situations (e.g., noisy
ofce rooms, dangerously overcrowded canteen, etc.) while improving the livability
and safety of the workplace.
5.1</p>
      <sec id="sec-5-1">
        <title>Services</title>
        <p>At a local level, a cardiac monitoring IoT service can acquire the real-time ECG
of a single user from a worn chest band, process the received heart signals, and
enable the individual HRV analysis. Eventually, doctors and psychologists can
outline the stress pro le of the monitored individual and take actions to preserve
worker safety and well-being (e.g., notify a worker to take a break).</p>
        <p>At the global level, instead, the IoT service can exploit distributed acquisition
of ECG ows related to several monitored workers. In this case, a multi-user
stress monitoring, along with other contextualised data, allows the workplace
governance to identify both common uncomfortable situations (e.g., a noisy o ce
room) and episodic dangerous ones (e.g., an overcrowded parking slot).
Therefore, situations threatening the workplace livability and safety can be properly
managed through immediate actuation (e.g., opening a window) or plan future
actions (e.g., re-thinking distribution of parking spaces).
5.2</p>
      </sec>
      <sec id="sec-5-2">
        <title>IoT devices</title>
        <p>The envisioned stress monitoring service would hence need wearable, speci
cpurpose devices, such as Polar H10 chest band, for the heart signal acquisition
and the Bluetooth-based communication to the user smartwatch/smartphone;
portable, general-purpose devices, such as Android-based smartwatches Huawei
Watch2, to be interfaced with the wearables; a single-board computer (e.g.,
Raspberry Pi3, Zotac CI540 NANO Pc, etc.) acting as a gateway for collecting and
locally processing ECG data. These IoT devices are all commercially available
and a ordable. Besides these devices, the monitored workplace might include
sensors to detect people presence and ambient conditions, actuators to regulate
ambient conditions, and the like.
5.3</p>
      </sec>
      <sec id="sec-5-3">
        <title>State of art solutions</title>
        <p>
          Conventional ECG-based stress monitoring systems are typically designed for
a single, speci c (indoor or outdoor) setting provided with a set of (both xed
and mobile) physiological and wearable devices [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], considered as Smart Objects
(SOs) [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] which can be accessed and controlled through the Web in the Web
of Things vision (WoT) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Cloud-based, Edge-based or hybrid solutions are
chosen according to the speci c requirements (real-time, costs, mobility, etc.)
of a given scenario [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Private/public Cloud platforms typically support the
system to store and process the data while lighter tasks are performed directly
at the Edge. Gateways are often exploited to overcome the heterogeneity of
communication protocols adopted by the di erent devices. Service composition
typically happens in a point-to-point fashion through simple RESTful endpoints,
with interactions statically de ned by Event Condition Action rules [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
5.4
        </p>
      </sec>
      <sec id="sec-5-4">
        <title>Issues</title>
        <p>The aforementioned solutions are typically tailored on a single, well-de ned
scenario (e.g., a highly instrumented infrastructure of an o ce room) and do not
e ectively handle the gradual transition between di erent environments.
Device/worker mobility introduces the need for the seamless, dynamic execution
of computational task according to changes in the devices' availability (e.g., a
worker's smartphone might run out of battery and be automatically replaced
by the smartwatch). Ad-hoc mechanisms are also typically provided to make
heterogeneous devices interoperable (software bridges, data model translators,
etc.), but these solutions often result in not scalable architectures, di cult to be
extended. maintained, and upgraded in the future.
5.5</p>
      </sec>
      <sec id="sec-5-5">
        <title>Fluidware approach</title>
        <p>The Fluidware approach allows overcoming many of the aforementioned
limitations. Being device independent, Fluidware does not assume the existence of
speci c types of devices in speci c locations: this allows continuous and mobile
monitoring of the workers, thus enabling the ECG-based stress monitoring
system to (a) adaptively and reliably serve its purpose, despite contingencies like
unreachable devices; (b) dynamically integrate new devices; (c) support
semantic interoperability specifying the event/data ow in a declarative way. Indeed,
Fluidware design and programming abstractions natively and seamlessly support
Edge to Cloud computations, thus fostering the development of a scalable
ECGbased stress monitoring system which adapts to the application requirements
(ECG acquisition responsiveness, HRV calculation accuracy, etc.).
6</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>
        In this paper we discussed three case studies motivating the need for a paradigm
shift in engineering and programming IoT services and applications. Such a
paradigm shift is actually envisioned by the Fluidware approach already
presented in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], which we here conceptually evaluate against three di erent case
studies with the aim of emphasising how it allows overcoming issues in current
state of art solutions.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Alrahman</surname>
            ,
            <given-names>Y.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De</surname>
            <given-names>Nicola</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Garbi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Loreti</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>A distributed coordination infrastructure for attribute-based interaction</article-title>
          . In: Baier,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Caires</surname>
          </string-name>
          ,
          <string-name>
            <surname>L</surname>
          </string-name>
          . (eds.)
          <article-title>Formal Techniques for Distributed Objects, Components, and Systems</article-title>
          . pp.
          <volume>1</volume>
          {
          <fpage>20</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Alrahman</surname>
            ,
            <given-names>Y.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De</surname>
            <given-names>Nicola</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Loreti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Tiezzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Vigo</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.:</surname>
          </string-name>
          <article-title>A calculus for attribute-based communication</article-title>
          .
          <source>In: Proceedings of the 30th Annual ACM Symposium on Applied Computing</source>
          . pp.
          <year>1840</year>
          {
          <year>1845</year>
          . SAC '15,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Andreoli</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gravina</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giannantonio</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierleoni</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fortino</surname>
          </string-name>
          , G.:
          <article-title>Spinehrv: A bsn-based toolkit for heart rate variability analysis in the time-domain. In: Wearable and autonomous biomedical devices and systems for smart environment</article-title>
          , pp.
          <volume>369</volume>
          {
          <fpage>389</fpage>
          . Springer (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Andrikopoulos</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bucchiarone</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gomez Saez</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karastoyanova</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mezzina</surname>
            ,
            <given-names>C.A.</given-names>
          </string-name>
          :
          <article-title>Towards modeling and execution of collective adaptive systems</article-title>
          . In: Lomuscio,
          <string-name>
            <given-names>A.R.</given-names>
            ,
            <surname>Nepal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Patrizi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Benatallah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Brandic</surname>
          </string-name>
          , I. (eds.)
          <string-name>
            <surname>Service-Oriented</surname>
            <given-names>Computing</given-names>
          </string-name>
          {
          <article-title>ICSOC 2013 Workshops</article-title>
          . pp.
          <volume>69</volume>
          {
          <fpage>81</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Audrito</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Viroli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Damiani</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pianini</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beal</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A higher-order calculus of computational elds</article-title>
          .
          <source>ACM Trans. Comput. Logic</source>
          <volume>20</volume>
          (
          <issue>1</issue>
          ), 5:
          <issue>1</issue>
          {5:
          <fpage>55</fpage>
          (Jan
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Beal</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pianini</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Viroli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Aggregate programming for the internet of things</article-title>
          .
          <source>Computer</source>
          <volume>48</volume>
          (
          <issue>9</issue>
          ),
          <volume>22</volume>
          {30 (Sep
          <year>2015</year>
          ). https://doi.org/10.1109/
          <string-name>
            <surname>MC</surname>
          </string-name>
          .
          <year>2015</year>
          .261
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>De</surname>
            <given-names>Nicola</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Latella</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Lafuente</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.L.</given-names>
            ,
            <surname>Loreti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Margheri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Massink</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Morichetta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Pugliese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Tiezzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Vandin</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <source>The SCEL Language: Design, Implementation</source>
          , Veri cation, pp.
          <volume>3</volume>
          {
          <fpage>71</fpage>
          . Springer International Publishing, Cham. https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -16310-9 1
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fortino</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Re</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Viroli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zambonelli</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Fluidware: An Approach Towards Adaptive and Scalable Programming of the IoT</article-title>
          , pp.
          <volume>411</volume>
          {
          <fpage>427</fpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2019</year>
          ). https://doi.org/10.1007/978-3-
          <fpage>030</fpage>
          -21485-2 22
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Guinard</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trifa</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Towards the web of things: Web mashups for embedded devices</article-title>
          . In: Workshop on Mashups,
          <source>Enterprise Mashups and Lightweight Composition on the Web (MEM</source>
          <year>2009</year>
          ),
          <source>in proceedings of WWW (International World Wide Web Conferences)</source>
          , Madrid, Spain. vol.
          <volume>15</volume>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Jovanov</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lords</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Raskovic</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cox</surname>
            ,
            <given-names>P.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Adhami</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Andrasik</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Stress monitoring using a distributed wireless intelligent sensor system</article-title>
          .
          <source>IEEE Engineering in Medicine and Biology Magazine</source>
          <volume>22</volume>
          (
          <issue>3</issue>
          ),
          <volume>49</volume>
          {
          <fpage>55</fpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kortuem</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kawsar</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sundramoorthy</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fitton</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Smart objects as building blocks for the internet of things</article-title>
          .
          <source>IEEE Internet Computing</source>
          <volume>14</volume>
          (
          <issue>1</issue>
          ),
          <volume>44</volume>
          {
          <issue>51</issue>
          (
          <year>December 2009</year>
          ). https://doi.org/10.1109/MIC.
          <year>2009</year>
          .
          <volume>143</volume>
          , http://usir.salford.ac.uk/id/eprint/2735/
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Santos</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Delicato</surname>
            ,
            <given-names>F.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pires</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pirmez</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wei</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Song</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zomaya</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Khan</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>System modelling and performance evaluation of a three-tier cloud of things</article-title>
          .
          <source>Future Generation Computer Systems</source>
          <volume>70</volume>
          ,
          <fpage>104</fpage>
          {
          <fpage>125</fpage>
          (
          <year>2017</year>
          ). https://doi.org/https://doi.org/10.1016/j.future.
          <year>2016</year>
          .
          <volume>06</volume>
          .019, http://www.sciencedirect.com/science/article/pii/S0167739X16302047
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Mamei</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zambonelli</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Programming pervasive and mobile computing applications: The tota approach</article-title>
          .
          <source>ACM Trans. Softw. Eng. Methodol</source>
          .
          <volume>18</volume>
          (
          <issue>4</issue>
          ),
          <volume>15</volume>
          :1{
          <fpage>15</fpage>
          :56 (Jul
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Namiot</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sneps-Sneppe</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>On iot programming</article-title>
          .
          <source>International Journal of Open Information Technologies</source>
          <volume>2</volume>
          (
          <issue>10</issue>
          ),
          <volume>25</volume>
          {
          <fpage>28</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Pace</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aloi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gravina</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Caliciuri</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fortino</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liotta</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>An edgebased architecture to support e cient applications for healthcare industry 4.0</article-title>
          .
          <source>IEEE Trans. on Industrial Informatics</source>
          <volume>15</volume>
          (
          <issue>1</issue>
          ),
          <volume>481</volume>
          {
          <fpage>489</fpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Palade</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabrera</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>White</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Razzaque</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Middleware for internet of things: A quantitative evaluation in small scale</article-title>
          .
          <source>In: 2017 IEEE 18th International Symposium on A World of Wireless, Mobile and Multimedia Networks (WoWMoM)</source>
          . pp.
          <volume>1</volume>
          {
          <issue>6</issue>
          (
          <year>June 2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Perrey</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lycett</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Service-oriented architecture</article-title>
          .
          <source>In: 2003 Symposium on Applications and the Internet Workshops</source>
          ,
          <year>2003</year>
          . Proceedings. pp.
          <volume>116</volume>
          {
          <issue>119</issue>
          (Jan
          <year>2003</year>
          ). https://doi.org/10.1109/SAINTW.
          <year>2003</year>
          .1210138
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Pournaras</surname>
          </string-name>
          , E.:
          <article-title>Overlay service computing - modular and recon gurable collective adaptive systems</article-title>
          .
          <source>Scalable Computing: Practice and Experience</source>
          <volume>16</volume>
          (
          <issue>3</issue>
          ),
          <volume>249</volume>
          {
          <fpage>270</fpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Rausch</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dustdar</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ranjan</surname>
          </string-name>
          , R.:
          <article-title>Osmotic message-oriented middleware for the internet of things</article-title>
          .
          <source>IEEE Cloud Computing</source>
          <volume>5</volume>
          (
          <issue>2</issue>
          ),
          <volume>17</volume>
          {25 (Mar
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Viroli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Audrito</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beal</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Damiani</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pianini</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Engineering resilient collective adaptive systems by self-stabilisation</article-title>
          .
          <source>ACM Trans. Model. Comput. Simul</source>
          .
          <volume>28</volume>
          (
          <issue>2</issue>
          ),
          <volume>16</volume>
          :1{
          <fpage>16</fpage>
          :28 (Mar
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Viroli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Casadei</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Montagna</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zambonelli</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Spatial coordination of pervasive services through chemical-inspired tuple spaces</article-title>
          .
          <source>ACM Trans. Auton. Adapt. Syst</source>
          .
          <volume>6</volume>
          (
          <issue>2</issue>
          ),
          <volume>14</volume>
          :1{
          <fpage>14</fpage>
          :24 (Jun
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Zambonelli</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Key abstractions for iot-oriented software engineering</article-title>
          .
          <source>IEEE Software 34(1)</source>
          ,
          <volume>38</volume>
          {45 (Jan
          <year>2017</year>
          ). https://doi.org/10.1109/MS.
          <year>2017</year>
          .3
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>