Monday, 28 October 2013

On Resilience and Elasticity

Computer systems are not dissimilar from critical infrastructures in which different mutually dependent components — in fact, infrastructures themselves — contribute to the emergence of an intended service. Thus, in computer systems the software infrastructure relies on the quality of the hardware infrastructure, and vice-versa a hypothetically perfect hardware would not result in the intended service without a corresponding healthy software infrastructure. Software resilience refers to the robustness of the software infrastructure and may be defined as the trustworthiness of a software system to adapt itself so as to absorb and tolerate the consequences of failures, attacks, and changes within and without the system boundaries. As a resilient body is one that “subjected to an external force is able to recover its size and shape, following deformation” (McGraw Hill, 2003), likewise software is said to be resilient when it is able to recover its functional and non-functional characteristics — its “identity” — following failures, attacks, and environmental changes. As critical infrastructures call for organizational resilience, likewise mission- and business-critical computer systems call for software resilience. Understanding and mastering software resilience are key prerequisites towards being able to design effective services for complex and ever changing deployment environments such as those characterizing ubiquitous and pervasive environments. Thus, how can we define (software) resilience? The term Resilience refers to a system’s ability to retain its intended function in spite of endogenous conditions, external actions, and environmental changes. The concept of resilience goes back to Aristotelian idea of entelechy (Aristotle, 1986), a central topic in Aristotle’s philosophy whose meaning and relationship with resilience is ingeniously captured by Sachs’ translation (1995): Entelechy is an entity’s ability of “being-at-work-staying-the-same”. This definition tells us that an entity — be it e.g. a physical person, an organization, or a cyber-physical system — is resilient when both the following two conditions hold:
  • The entity is able to exert purposeful active behavior (Rosenblueth, Wiener & Bigelow, 1943) to continuously adjust their functions in order to compensate for foreseen and/or unpredicted changes in its execution environment. This corresponds to the first part of Sachs’ definition: “Being at work.”
  • As a result of the above behavior, the entity is able to retain their “identity” — namely their peculiar and distinctive functional and non-functional features — in the face of the above mentioned conditions, actions, and changes, and despite the adjustments carried out by the entity so as to improve its system-environment fit. This refers to the second part of Sachs’ definition: “Staying the same”.
Another way to refer to resilience is through the concept of elasticity, namely “the ability of a body that has been subjected to an external force to recover its size and shape, following deformation” (McGraw-Hill, 2003). In this case the system does not exert any purposeful behavior but it only makes use of its internal characteristics and resources so as to mask the action of external forces. An example of the use of elasticity to achieve resilience can be found in a classic strategy of organizational resilience (Stephenson, Vargo, and Seville, 2010). In the cited reference it is remarked how organizations often interpret resilience as the result of the “redundancy of their physical resources such as plant and machinery, locations or buildings, and the lifelines infrastructure on which they rely”. Software resilience is the application of elasticity and resilience to entities in the software layers: The trustworthiness of a software system to adapt itself so as to absorb and tolerate the consequences of failures, attacks, and changes within and without the system boundaries.

References

  • Anonymous (2003). McGraw-Hill Dictionary of Architecture and Construction. McGraw-Hill Companies, Inc.
  • Aristotle (1986). De anima (On the Soul) (H. Lawson-Tancred, Trans.). Penguin classics. Penguin Books.
  • Sachs, J. (1995). Aristotle’s physics: A guided study. Masterworks of Discovery. Rutgers University Press.
  • Rosenblueth, A., Wiener, N., and Bigelow, J. (1943). Behavior, Purpose and Teleology. Philosophy of Science, 10(1), 18–24.
  • Stephenson, A., Vargo, V., and Seville, E. (2010). Measuring and Comparing Organisational Resilience in Auckland. The Australian Journal of Emergency Management, 25(2), 27-32.