The Decentralised Coordination of Self-Adaptive Components
Jim Dowling · Trinity's Access to Research Output (TARA) (Trinity College Dublin) · 2004
Distributed computing systems are moving towards increasingly autonomous operation and management, in which their interacting components can organise, regulate, repair and optimise themselves without human intervention. The emerging field of autonomic distributed computing addresses the challenge of how to design and build distributed computing systems that can manage, heal and optimise themselves given high-level objectives. Adaptive software provides some of the functionality required for building autonomic computing systems, as it allows system behaviour or structure to be changed at run-time to fulfil the high-level objectives. Self-adaptive software is a subclass of adaptive software that autonomously executes adaptation logic, code concerned with monitoring for adaptation conditions and triggering adaptation actions. This thesis proposes that self-adaptive components are a useful building block for autonomic computing systems, as they can autonomously adapt their structure and behaviour at run-time to fulfil specified goals. It also shows how decentralised coordination of self-adaptive components can establish autonomic properties for distributed systems in dynamic and uncertain environments, such as wireless ad-hoc networks or peer-to-peer systems. Self-adaptive software requires programming support for the specification of its adaptation logic in order to avoid tangling adaptation-specific code with functional code. Reflective techniques can help modularise adaptation logic, but existing self-adaptive systems based on reflection only support the specification of adaptation logic that executes synchronously with program execution, even though events triggering adaptive behaviour are often temporally orthogonal to program execution. Also, although it is known that self-adaptive software can evolve and learn its adaptive behaviour over time through the use of information relating to past adaptive behaviour, none of the existing models have the ability to learn improved adaptive behaviour online. Finally, the use of decentralised coordination models to build distributed systems with autonomic properties from self-adaptive components has not been addressed by existing systems. Current reflective programming models for building adaptive software lack support for the separate specification of application-level adaptation logic that can learn