This presentation will be in two parts: the first concerned with different ways of conceiving the analogy between software evolution and biological evolution, and the second with how these different conceptions can be understood and might be supported in software development based on Empirical Modelling principles.
1. Possible models of software evolution
The character and potential of software evolution is closely connected with the issue of how the representation of a piece of software as code is related to its interpretation and performance in the external "real-world" context in which it is deployed (the "semantic relation"). The concepts used in the construction of the software are crucial in determining this relationship. The aspiration of object-oriented programming, for instance, has always been to establish a close correspondence between the syntactic structures in a program and the salient objects in its external environment. Software evolution potentially motivates some sort of intelligible and intimate correspondence of this nature, at least in so far as it is necessary or helpful to understand how revision of a piece of code affects the semantic relation. The well-recognised difficulties in making a seamless link between object-oriented analysis and obect-oriented design, more than thirty years after the introduction of Simula, testify to the challenging nature of the problem.
The way in which the semantic relation is connected to software construction has a significant bearing on how far analogies between biological and software evolution can be framed and developed. Relevant questions are: what kinds of compact representation for a piece of software can serve as a genetic code? to what extent can software development resemble the growth of a living organism? and in what sense can we distinguish between models of software evolution that are Darwinian (where changes to the genetic code are associated with the creation of a new version) and Lamarckian (where changes to the genetic code take effect on the software in operation). A key issue in relation to these questions is what it means for a piece of software to be modified or redesigned whilst it is executing.
2. Empirical Modelling and models of software evolution
Empirical Modelling (EM) is an approach to computer-based modelling that emphasises the role of observation and experiment in the construction of the semantic relation. EM leads to a situated approach to software development in which agency, dependency and observables are the key concepts. A significant feature of this development activity is that the same paradigm for modelling states and transitions is used in representing the design and the execution of software, so that the distinction between designing and executing software is framed by the understanding of the modeller and the semantic relation. The relevance of EM to the agenda for studying software evolution and the semantic relation raised above will be discussed and illustrated with reference to practical examples. The suitability of EM as framework for software evolution will also be considered.
Also available online at http://homepages.stca.herts.ac.uk/~comqcln/EN/seec/abstracts/beynon.html.