At the architecture level, the application of adaptation strategies often implies dynamic reconfiguration and, ultimately, system evolution. Hence adaptation can be considered as a low-level version of architectural evolution; generic dynamic techniques, such as meta-level superimposition, can effectively be used for both. This approach can be translated to several different contexts, and we describe the specific case of service-oriented architectures.
The conceptual relationship between software evolution and adaptation is well known. Nonetheless, they have evolved into full-fledged research fields, acquiring new features and connotations; hence this relationship has to be carefully analyzed in different contexts.
In Software Architecture, the system is studied as a whole; and then the impact of evolution has to be considered system-wide. From the beginning, this has been a key concern in architectural research; indeed, the notion of architectural style was specifically conceived for the needs of evolution. Moreover, the area of dynamic architecture was designed to combine both issues, usually within the limits of a style. In recent times, the specific notion of evolution style has been conceived of to provide an analogous abstraction, within the area of architectural dynamism.
Meanwhile, self-adaptive architectures, those able to adapt to changes in the environment, stress the limits of existing dynamic techniques. Only the most general approaches are able to express the needs of self-adaptive components. Among these, the most powerful are probably the autonomic control loop and reflection. In both cases, a part of the system, ie services, is devoted to perform system tasks, while another is in charge of managing these services. These meta-services were originally designed to control evolution; currently they also are in charge of performing required adaptations. In fact, as summarized in Figure 1, when an adaptation has to modify the system’s structure and/or behaviour, it is actually executing a step of dynamic evolution.
Reflective architectures were introduced roughly a decade ago. They encompass two levels: the meta-level, which is able to operate on the system itself, and the base-level, which is adapted by these operations. Almost any potential change can be described using this approach; but the implicit capability to modify the meaning of internal concepts is often considered too complex.
An alternative perspective can be offered, using the notion of superimposition. Instead of having meta-components which manage the concepts of the language itself, this approach defines interactive supervisors which impose their control on selected components. Thus, they provide the same dynamic effects, just by observing and altering their interactions. Note also that this just defines a conceptual layer: the adaptive structure is still essentially decentralized, providing the basis not only for adaptation, but also for self-organization.
Several proposals have covered these issues from a generic perspective; in our own research we have developed the reflective architectural language PiLar, to describe dynamic architectures, and also an equivalent aspectual language, specifically designed on top of superimposition. Both are based on the -calculus, which defines a sound formalization for the approach; besides, this choice happens to provide another coincidence with service technologies.
Self-adaptive approaches are relatively new, and their application to architecture is even more recent. In particular, the way to provide self-adaptive properties in specific architectural styles can differ depending on the application domain. We have developed both a theoretical foundation for adaptive architectures, and the application of this theory to multi-agent systems and agreement technologies. Even considering their commonalities, these versions are clearly distinct from each other.
Furthermore, the service-oriented domain is particularly interesting; services have specific features which separate them from conventional components. In particular, a service has a unique locator and can be accessed even when it is composed. Therefore, it can perform a dynamic adaptation even from inside a coordination process, whether a strict orchestration, or a more generic choreography.
Figure 1: Decentralized adaptation of services may imply system-level architectural evolution.
The relationship between a meta-service and its managed services is therefore much more flexible than other constructions. Figure 1 depicts a number of services within a SOA, which are affected by the corresponding meta-services, inducting an adaptation in their behaviour. This adaptation may or may not alter the choreography. The service itself will be able to decide about this, and hence it becomes an adaptive service.
As already noted, the adaptation can modify the structure of the service architecture, hence implying an evolution in the system. But the corresponding scenario can be even more complex: sometimes the resulting structure has emergent properties, which must be distilled and considered at the meta-level. Therefore, in such a case our system-wide evolution happens effectively at two different levels of abstraction.
Our current work is exploring the properties and implications of this kind of adaptive service architecture, as well as its relationship with the notion of evolution style, even in the context of product lines; and also considering co-evolutionary transformations of the design decision model.
Carlos E. Cuesta, Rey Juan Carlos University, Madrid, Spain
M. Pilar Romay, St. Paul-CEU University, Madrid, Spain
Elena Navarro, Castilla-La Mancha University, Albacete, Spain