The evolution of technology is leading to a world where each object around us is provided with some sort of "intelligence", making it able to compute data and act according to them, as well as to share these data with other objects. The increasing number of "intelligent" devices poses new challenges to software engineers that have to design and implement systems composed of a great number of elements interacting between them in different ways. Moreover, these systems work in a dynamic and unpredictable environment, and need the capability to adapt in an autonomous way to every change in the scenario in which they operate: they should be self-adaptive, meaning that they should be able to self-configure, self-organise, self-heal and self-defend.
Thus, distributed self-adaptive systems are an actual need and need to be studied in order to understand the most effective way to design and manage such complex systems. The literature provides various approaches to deal with such systems. In particular, self-adaptation is addressed in various ways, ranging from centralised approaches, where one element is in charge and manage the others, to completely decentralised ones, where all elements are peers and the behaviour of the system emerges from the interaction of all the elements, through hierarchical approaches, where the elements are organised into a hierarchy.
However, while this aspect is addressed in theory, stable platforms and comprehensive software engineering approaches for these kinds of systems are still to come.
This research addresses these challenges, providing methods and tools to design, evaluate and manage distributed systems able to autonomously adapt to changes and operate in a real and dynamic context, such as the emerging fields of Mobile Cloud, Cyber-Physical Systems, Smart Grids and Smart Cities.
The research will develop according to the following steps:
- Comprehensive evaluation of the existing approaches with the objective of acquiring a good understanding of the field. This task is currently ongoing.
- Identification of the gaps to be filled in. At the moment, we foresee that an important topic to be considered concerns the way distributed self-adaptive systems are evaluated through analysis and testing, but other gaps may arise during the analysis.
- Definition of a new approach focusing on filling in some of the gaps that we will identify
- Comprehensive evaluation of the new approach in a specific application context.