Software Self-Adaptability by Means of Artificial Evolution Mariusz Nowostawski 1 , Martin Purvis 1 , and Andrzej Gecow 2 1 Information Science Department, University of Otago PO Box 56, Dunedin, New Zealand {MNowostawski,MPurvis}@infoscience.otago.ac.nz 2 temporary Institute of Paleobiology Polish Academy of Science ul. Twarda 51/55, 00-818 Warszawa, Poland gecow@polbox.com Abstract. Contemporary distributed software systems are reaching ex- tremely high complexity levels which exceeds complexities of known en- gineering problems to date. Especially open heterogeneous multi-agent systems which may potentially be spread all around the globe, interacting with different changing web-services and web-technologies are exposed to demanding, dynamic and highly unpredictable environments. Traditional control-based handling of adaptability may not be suitable anymore, therefore there is a tendency for exploring different adaptability models inspired by natural/biological phenomena. In this article we review over- all design of an adaptive software system based on a simple model of ar- tificial evolution. We propose a new paradigm for handling complexity in dynamic environments based on a theory of self-producing self-adaptive software systems. We have substantial evidence to believe that a bottom- up approach based on self-production and self-maintenance may help to build more robust and more flexible self-adapting software systems. This paper introduces the new framework, provides analysis of some results, implications and future research directions toward a complete and self- contained theory of evolvable and self-adaptable software systems. 1 Introduction In plain English adaptation is the act of changing something to make it suitable for a new purpose or situation. In software systems, the term adaptation is being used mostly, if not exclusively, with the second semantic meaning. What is usually meant by software adaptation, is that the system will continue to fulfil its original and the same purpose in a different circumstances, situation or environment. The adaptability in such software systems may be achieved by a set of feedback loops between the system, the controller monitoring and changing and adapting the system, and the environment itself. The system purpose is pre- defined in advance as a set of specifications, which are kept within the controller. The behaviour of the system is automatically altered if the expected outputs are outside of these pre-defined specifications. Such models are built analogously to M. Bubak et al. (Eds.): ICCS 2004, LNCS 3038, pp. 552–559, 2004. c Springer-Verlag Berlin Heidelberg 2004