Self-expression in adaptive architectural patterns
PDF version | Permalink
Engineering an autonomic system to be self-adaptive—that is, able to change its behaviour according to operating conditions encountered at runtime—helps simplify its design, and self-adaptive, self-aware components have been proposed to handle open-ended, highly parallel and massively distributed systems.1 However, as complexity increases, self-adaptive systems become more difficult to develop, deploy and manage. Worse, what if the scenario changes at runtime to such an extent that the adaptive pattern that was most appropriate to the initial systems configuration is no longer relevant?
An adaptive architectural pattern is a conceptual scheme describing a specific adaptation mechanism for components and ensembles. The Autonomic Service-Component ENSembles (ASCENS) project was created to support the building of adaptive, self-aware autonomic systems by applying flexibility, low management overhead and optimal use of resources to traditional software engineering approaches.2 Its research goal is to create and catalogue adaptive architectural patterns and present them along with usage guidelines explaining their features. Developers of self-adaptive components and systems will be able to select from these patterns or construct their own.3
A novelty of the ASCENS project is the introduction of the deeper concept of self-expression, by which a system may reshape its own configuration and organization dynamically whenever its patterns can no longer be effectively adapted. Self-adaptation allows a system to adjust its own operational parameters, while self-expression allows it to re-engineer itself entirely: the capabilities and architectures of its components, or even its own topology and control regime. Self-expression contextualizes self-awareness to specific adaptation needs, from ‘what I am and what is happening’ to ‘what I could become and how the world would change accordingly’.4
As a real-life example of self-expression, consider a scenario in which robots are deployed to locate and extract people trapped inside a partially collapsed building. One robot acting alone might not be able to locate and remove every person quickly, even if it had a map of the building and knew how many people were inside. Multiple robots would have to contend with a highly dynamic and uncontrollable environment, due to the constantly shifting positions and states of people and of other robots. The system's designer might take inspiration from the task allocation problem7 and choose the adaptive pattern based on swarm robotics shown in Figure 1, in which the group's emergent behaviour results from the self-adaptive behaviour of individuals, influenced by local environmental conditions. This replaces the complexities of explicitly representing a global goal with the much more manageable deployment of simple entities that carry only limited knowledge of the environment and have little need to communicate directly with one another. The environment itself plays the role of a strong stimulus, providing implicit communication that indirectly modifies the internal dynamic behaviour of components and thus propagates adaptation.8
Now suppose that the initial system requirements undergo a runtime contextual change, perhaps due to the introduction of objects not found on any map of the building (e.g. the fallen beams shown in Figure 2). A robot encountering one of these unanticipated obstacles loses substantial time in finding a path around it, and without a method of recording and relaying obstacle information to others, overall swarming performance decreases. One solution is to give the robots the ability to share the positions of obstacles with one another, but this would add complexity to their design and would compromise the autonomy that characterizes swarm robotics. Instead, the robots could be designed as self-expressing systems: initially not intercommunicating, they would only ‘re-engineer’ themselves to add that capability if it should become necessary.
Alternatively, a designer might choose to add self-expression not to the components (the robots) but to their environment. For example, suppose security cameras like the one shown at the corner of Figure 2, mounted throughout the building, are managed by an autonomic external system. Though this ‘centralized manager’ has no day-to-day need to detect extraordinary conditions such as fallen beams, self-expression would allow it to replace itself at the appropriate time with a system that can extrapolate the positions of newly present obstacles and communicate that information directly to any robots present. The advantage of this approach is that it applies adaptation logic to shared knowledge without adding complexity to the robots, allowing all components to continue to act independently. The simulation results in Figure 3 show a clear improvement, and in fact performance in this case approaches that of the case with no obstacles.
Self-expression is a mechanism that enables components and ensembles to preserve effective adaptive capabilities, yet optimize overall performance, by re-engineering their structure dynamically according to multiple patterns. Our next step is to formalize self-expression mechanisms by defining methods by which systems may change from one adaptive pattern to another, thus creating a catalogue of patterns of self-expression.