Due to the diffusion of IoT, modern software systems are often thought to
control and coordinate smart devices in order to manage assets and resources,
and to guarantee efficient behaviours. For this class of systems, which
interact extensively with humans and with their environment, it is thus crucial
to guarantee their correct behaviour in order to avoid unexpected and possibly
dangerous situations. In this paper we will present a framework that allows us
to measure the robustness of systems. This is the ability of a program to
tolerate changes in the environmental conditions and preserving the original
behaviour. In the proposed framework, the interaction of a program with its
environment is represented as a sequence of random variables describing how
both evolve in time. For this reason, the considered measures will be defined
among probability distributions of observed data. The proposed framework will
be then used to define the notions of adaptability and reliability. The former
indicates the ability of a program to absorb perturbation on environmental
conditions after a given amount of time. The latter expresses the ability of a
program to maintain its intended behaviour (up-to some reasonable tolerance)
despite the presence of perturbations in the environment. Moreover, an
algorithm, based on statistical inference, is proposed to evaluate the proposed
metric and the aforementioned properties. We use two case studies to the
describe and evaluate the proposed approach.