EPSRC Network on Evolvability in Biology & Software Systems

Software Evolution and Evolutionary Computation Symposium Abstracts

University of Hertfordshire, Hatfield, U.K.

7-8 February 2002


Evolution - A Non-Technocentric View

Evolution - A Non-Technocentric View

MARTIN LOOMES


Department of Computer Science
University of Hertfordshire
College Lane Hatfield, Herts AL10 9AB
United Kingdom

M.J.Loomes@herts.ac.uk


Technocentricity, a term introduced by Papert to mean the placing of technology in a central role to the denigration of people in some activity, is a major problem in the design of programmed computer-based systems. The model many people have of the system development process is one where some technical entity, usually termed ``the system" without further clarification, exists as a fact. The development of this system is then a process of nature and nurture: the systemness is ensured provided the nurture is properly carried out by the developers, whose role is thus one of providing resources. The principal model used to explain the process reinforces this view, by referring to the system's development life-cycle, as if the system had some existence in its own right, and some natural cycle exists through which it will become mature. It is rather as if the developer, through the ``specification" of the system, has planted seeds which will then inevitably grow into the ``correct" system, given the appropriate care.

Of course, things inevitably go wrong, but technocentricity is carefully maintained: ``bugs", alien beings of no identifiable source, somehow creep into the system and subert its proper behaviour. The designer then has to track these down, and apply ``patches" to the surface of the system to restore its integity and systemness.

The idea of system ``evolution" as applied to software development is certainly not new, but it has only recently re-emerged as a popular way of viewing the process. A major danger, however, is that we continue to protect the technocentricity of our models, and allow evolution to be interpreted as self-design, where systems themselves ``become" what they need to be. In fact, evolution is not usually viewed like this in any other field, where it is clear that the evolutionary process is largely detemined by the environment in which systems exist: elimination or rejection of the unfit.

In this paper we propose a way of viewing system evolution which is deliberately intended to reduce the technocentricity, forcing us to consider the designers as central to the role of development, and situating design in an environment which guides design towards systems which are fit to survive. We propose that what evolves is not some system per se, but a theoretical representation of a system (which could thus be hyperthetical or physically realised). The actual system is then a mere side-effect of this theory, resulting when we decide it is worth constructing a physical model with the predicted behaviour.

The concept of a theory is a very rich one, which has been discussed by philosphers of science for many years, and the evolution of theories forms a strand of debate within the study of scientific methodology evident since Popper. It is worth noting that Popper was attempting to reinforce the role of the scientist into the process in much the same way as we are attempting to do with technology. Kuhn, Lakatos, Feyerabend and many others have all contributed to the past 100 years of debate as to how theories evolve within a real world populated by communities of professionals devoted to progress. We would argue that this debate has many important lessons for those of us seeking to understand software system development within it proper philosophical, social and psychological context.