Engineering Self-Organizing Applications (ESOA) is the attempt to apply the concept of self-organization to engineering, esp. software engineering. Wether this is possible or not is still controversial. The goal (or hope) is to achieve complex collective tasks with relatively simple individual elements, units and behaviors. The name ESOA is sometimes also used as an abbreviation for "Enterprise SOA", i.e. to describe a "Service-Oriented Architecture for Enterprises".
A Name for a Problem
EOSA is like AOSE more a name for a problem than its solution. It is closely related to the problem of "engineering emergence". Engineering is at odds with emergence, a phenomenon which usually accompanies self-organization, and planned organization as it is found in engineering contradicts more or less the concept of self-organization. It is obviously difficult to organize a system which is able to organize itself.
Why do we need self-organization at all? A demand for self-organization exists for instance in the following systems:
- highly distributed systems without central control
- open systems embedded in fast changing dynamic environments
- pervasive or ubiquitous computing where computers become invisible
In short, self-organization is needed if the system is (or becomes) very large, very distributed or very complex. Here is already the first problem: such systems are not easy to create.
Many systems in nature demonstrate that self-organization is indeed possible. These natural system are of course quite different from traditional software applications, they are more like agent-based systems and multi-agent systems (MASs). There is also no clear or precise definition of self-organization which makes an easy application to any domain difficult. Another problem with biologically inspired systems is that there number is limited. There is certainly not a countless number of techniques used in natural self-organizing systems. A concrete application often boils down to the use of pheromones, stigmergy and ant-based systems.
The core problem of ESOA is to create a system with a certain macroscopic global behavior by specifying only local behavior and microscopic interactions. It is the old contradiction or antagonism between forced engineering and spontaneous emergence, imposed purpose and independent autonomy, planned organization and self-organization. All these items pairs are more or less contrary to each other.
In traditional engineering, the structure, function and organization of the systems is carefully planned and impressed from the outside on the system. If a situation occurs which has not been anticipated or tested before, the system usually crashes. The system is predictable, reliable and comprehensible, but it is not always robust, adaptive and scalable.
In ESOA and MASs, the systems are partly able to organize themselves, and the tolerance for unpredictable properties and situations is a bit higher. If a situation occurs which has not been anticipated before the system is expected to handle it. A self-organizing system is robust, adaptive and scalable, but usually less predictable, reliable and comprehensible.
A possible solution
A possible solution to the fundamental ESOA problem is the application of the scientific method by the engineer, the step-by-step investigation of hypotheses with experiments and simulations. The scientific method is an iterative process that is the basis for any scientific inquiry, and it can also be used to examine artificial systems and simulated worlds (for instance synthetic societies of multi-agent systems). The scientific method follows a series of steps: (1) identify a problem you would like to solve, (2) formulate a hypothesis, (3) test the hypothesis, (4) collect and analyze the data, (5) make conclusions and restart with (1) (see also the paper preprint On Engineering and Emergence).
ESOA 2003 workshop (from the AAMAS 2003 conference):
- Giovanna Di Marzo Serugendo et al., Engineering Self-Organizing Systems, Springer LNAI 2977, 2004
ESOA 2004 workshop (from the AAMAS 2004 conference):
- Sven A. Brueckner et al., Engineering Self-Organizing Systems, Springer LNAI 3464, 2005