![]() ![]() |
software and system evolution |
|
Software and business are two different life-forms, often found yoked together in a quasi-symbiotic relationship. In this context, it seems to make sense to talk about co-evolution - both software and business are changing (evolving) over time, and these changes are somehow linked, with causal influences in both directions. However, not all change counts as evolution. It is often useful to model systems as if evolution worked, providing an effective optimization mechanism. However, there are crucial areas where optimization fails. In evolution, there is no one optimal strategy. Many discussions of software evolution - especially in the context of software maintenance - imply the goal of managing and controlling evolution. How far this goal can be realised remains debatable. There are certainly some useful pragmatic steps that can be taken, but you need to start with a clear understanding of what evolution is, or could be, in the context of software and systems. That is the purpose of this page. veryard projects is happy to provide practical help - please contact us |
![]() |
Evolving Intelligence - Get smarter with beerveryard projects > sebpc > evolution > intelligence |
![]() |
Evolution and Survivalveryard projects > sebpc > evolution > survival |
Darwinian evolution is often expressed as the survival of the fittest. As Bateson pointed out, it is more accurate to speak of the survival of the fit. This phrase is deliberately ambiguous: it could mean either the survival of fit individuals and species, or the survival of the fitness relationship between the entity and its environment - in other words, it is the fitness relationship itself that is preserved, while the species itself may change almost beyond recognition.
There is an important trade-off here between evolution and efficiency. Efficiency assumes a secure position in a fixed ecological niche - in other words, an unchanging identity. Evolution involves a dynamic engagement with the Fit - in other words, a constant challenging of who and what and why as well as how.
Evolution implies that something may evolve. But what is this thing? In biology, are we talking about the individual, the species, the gene, the genome, or something else? In software, are we talking about lumps of program code, assemblies of software components, or something more abstract?
![]() |
Evolution and Deathveryard projects > sebpc > evolution > death |
Sometimes this means the death of unfit individuals within a species. If the slowest or weakest antelopes get eaten by lions, this improves the average speed and strength of the remaining antelopes. Over time, evolution "encourages" those attributes within a species that are linked to survival and reproduction, but this only works if there is a selection mechanism. (Nietzsche's principle: what doesn't kill you makes you stronger.)
Sometimes evolution involves the extinction of an entire species or genetic line, as incapable of surviving within a given ecological niche. Many recent examples involve native species unable to compete with or escape from imported species - red squirrels driven out by grey squirrels, water voles driven out by mink, even earthworms.
If we are serious about software evolution, we have to have an effective mechanism for killing "bad" software - not just tweaking it for year-2000 compliance.
The emphasis on software and business leaves out some other important lifeforms with relevance to the evolution of both software and business: including military, academic and Government. The evolution of the Internet (for example) cannot be understood merely in terms of a co-evolution of software and business alone.
![]() |
Evolution and Progressveryard projects > sebpc > evolution > progress |
Similar considerations apply to discussions of related topics, including progress and enlightenment.
When engineers talk about the evolution of engineered systems, they may mean several different things.![]() |
Genetic articulation & couplingveryard projects > sebpc > evolution > principles |
The development of these features is sometimes explained by a form of
genetic
coupling or feature interaction. One feature piggy-backed on another
feature, until it reached a point where it was providing some selective
benefit in its own right.
“Evolutionary explanations do not take the narrow form
‘Feature X exists because it maximizes the genetic fitness of the organism.’
Rather their general form is ‘X exists because it is part of a package
solution that at some time maximized the genetic fitness of the organism.’
The latter form allows for two facts that the former excludes. First, there
is the omnipresent phenomenon of pleiotropy. A tendency to conform to a
social norm might detract from genetic fitness and yet be retained by natural
selection if it is the by-product of a gene whose main product is highly
beneficial. Second, the general form allows for time lags. A social norm
may be maladaptive today and yet have been adaptive at the stage in history
when the human genome evolved and, for practical purposes, was fixed.”
[Jon Elster, The Cement of Society
(CUP, 1989) pp 149-150]
|
![]() |
Articulation |
Some people believe that God steers biological evolution. Perhaps the engineer can steer the evolution of a very simple technical system. But many of the situations of interest, in which engineered systems are supposed to evolve, are complex ones where no human engineer could be expected to steer the evolution with omnipotent and omniscient mastery.
Other people believe that God's role was to set the evolution process going, but not to intervene in the micro development of individual genes and species. This suggests a different role for the Engineer as well - either to compete, or to provide the tools and environment for others to compete.
Other people again - notably the neo Darwinians such as Richard Dawkins - deny any role for God in the process.
From both extremes of the religious debate, we can arrive at the conclusion that the Engineer is neither necessary nor sufficient for the evolution and survival of large complex systems. If God is managing everything, then engineers are redundant, and if God is managing nothing, then engineers are otiose.
![]() |
![]() This page last updated on February 22nd, 2002
|
![]() |