Research in self-adaptive systems is growing more and more, but what is really possible with such a broad-meaning term? Do you know real examples where the self-adaptive systems can do something that classic systems can not?
I personally consider self-adaptation as a condition for a system to be labeled “intelligent” – another “broad-meaning term”! But please have a look at this recent paper (http://homepage.lnu.se/staff/daweaa/papers/2012SEAMS.pdf) supporting your interesting question:
“The study shows that the primary claims of self-adaptation are improved flexibility, reliability, and performance of the system. On the other hand, the tradeoffs implied by self-adaptation have not received much attention. Evidence is obtained from basic examples, or simply lacking. Few systematic empirical studies have been performed, and no industrial evidence is reported.”
I think it responds to a general interest (which is hardly new) in complex adaptive systems and complexity theory in general. You will find self-organization or self-adaptation being introduced into all sorts of disciplines with variable results. I've heard a lot recently about "self-healing" systems, my personal favorite when it comes to pushing terminology faster than actual results (although its been around for about a decade).
I agree with you. Rafael, that terminlogy is faster than results in many cases. However I beleave that we have not clear which kind of results we desire from a self-adaptive system. So far I could not able di discover in literature a concrete scenario, coming from the real world, in which a traditional system is not effecttive, and conversely adaptation would be the solution. Actually the biggest technology we use daily, internet, is the most evident case of self-adaptive system, but is has been realized without the term "self-adaptive" in mind...
Adaptation is needed in the presence of non-determinism. Real-time system will use adaptive control as a matter of course. In pure (deterministic) computer systems you can see adaptation as being similar to the process of convergence (as used in many numerical techniques) . In a heurstic search space we use convergence to find optimal solutions, again the need is because of non-determinism. As we solve most of the deterministic solutions in our computer models, we increasingly encounter non-determism and that may well be why "self adaptive" systems are becoming commonplace. Note that adaptive systems (that work) possess a modicum of the property commonly called intelligence.
Indeed the term Self-Adaptive is quite general and is often differently defined in each field of study: biology (where it refers to natural self-regulatory mechanisms observed in living organisms), evolution (where it refers to convergence towards an optimal configuration), and so on. The concept lies on the foundations of Control Theory, prominent and essential to many Engineering branches. Even on Computer Sciences (referring to the raised question) it is used in different scopes. When it comes to the context of Autonomic Computing (possibly another broad therm to encompass all kinds of self-management), there are also many aspects concerning adaptability. One is Autonomous Real-Time Management, where "self" may be linked to the autonomous reaction to external/internal events, and "adaptive" may be linked to restorative counter-reaction to a disturbance prone to affect performance, efficiency etc. Thus, real-time self-adaptability menas runtime autonomous resource management. It has been advocated as a need (bibliographic references are available) as a necessity of increasingly sophisticated computer systems, for which manual intervention during runtime tends to be unpractical. Examples include systems of extra large-scale, exhibiting observable dynamic proprieties (meaning inertial modes and delays in the input-output path), or that are too complex (meaning emergent from too many synergistic interacting parts). For those systems, real-time autonomously self-regulatory capabilities are desired as a means to improve management transparency. An issue around self-adaptability in Computer Systems is that, while Electrical, Mechanical Engineering, for instance, have developed a sound and rich theoretical framework for the analysis and synthesis of such properties (Control Engineering), this area is much less explored in Computer Sciences. Usually the basic concepts are neither part of the traditional knowledge domain of computer scientists, nor they are present in the basic curriculum of most courses in the field. This makes it a little difficult for computer scientists to assess the contributions proposed by papers on the topic. Control Engineering (the technical aspect of adaptability) is to other Engineering fields, as Computer Theory is to Computer Sciences.
-I agree that the term "self-adaptive systems" is not well-defined; but note that it is also not clear to me what you mean by "classical system".
-An even more ill-defined term, often used interchangeably, is "Autonomic Computing".
Note that "autonomic", according to the Merriam-Webster dictionary, means "acting or occurring involuntarily" -- it doesn't look like a desirable property.
- The basic idea: we can see that our (computer) systems require almost constant (manual) adaption. It makes sense to move some of this burden from the human to the machine, to improve response time and decrease costs.
In our research works, we use "self-adaptation" to tailor an adequate user interface for satisfying the different needs of people with disabilities. Some possible scenarios are provided in my articles.
I agree. "Autonomic Computing", as forged by IBM researchers, is just a name for a particular SE point of view on adaptability, and it mostly refers to desired self-management properties at requirements level. Indeed the term is not straightforward, as pointed by Pierre: it is a metaphor coined from the Biology jargon, where "involuntary" is meant to refer to those self-regulatory mechanisms that are triggered autonomously ("unconsciously" ) without the intervention of will (like sweating to cool down body temperature) . The expression was intended to convey that the system should adjust itself without the need of user attention. But, ironically, the term is not self-explanatory ;-)
In time, I express my own view, earned from my research experience in the field. As in any other discipline, opinions may vary. That said, my mapping of the knowledge domain boundaries of Computer Adaptive Systems appears to me as a general area to which different research branches refer with different jargon. Papers on autonomic computing often refer to AS at the requirement level. At the Engineering level, in turn, adaptation is often related to concepts as feedback computing (control-theoretical approach), evolutionary computing (non-deterministic optimization meta-heuristics), bio-inspired intelligence (swarm, ant colony, flock-based algorithms) etc. On the architectural level, works on AS focus on reflexive capability (self-diagnosis), proactive behavior and so on. All those different perspectives can be broadly related to the term Adaptive Systems, also sometimes referred to as (Real-Time) Sefl-Adaptive.
I want to be provocative: the most important example of software self-adaptation has been buit without the term of "self-adaptation" in mind: it is internet. Of course in this case the adaptation mainly concerns the network topology, not other stuffs; for instance it is not possible to change a protocol in the stack: the network will not adapt to this change. However it is an example of highly specialized strategy for adaptation.
This introduction to say that 1) maybe the property of self-adaptation must be contextualized to some aspects of the system (internet is self-adaptive with respect to the topology) and 2) software engeneering should consider that designing very general self-adapting software systems is a non-sense: the most the adptation strategy is specialized, better will be the result.
This is my opinion, please I will be glad to receive comments from you.