Evolutionary development (Was: Novel use of keysigning sessions)

Ross Anderson Ross.Anderson at cl.cam.ac.uk
Fri, 25 May 2001 12:19:16 +0100


There's an increasing amount of stuff being written on evolutionary
software development models, driven by the realisation that ever
larger and more complex products, such as Microoft Word, simply don't
get written from scratch; they evolve from previous versions. There
are many tools to support this, of which large-scale regression
testing facilities are reckoned to be the most important. Viable code
is not just code that compiles clean, but code that does not introduce
any errors when fed one of the already documented inputs.

The best book on this is probably Steve Maguire's `Debugging the
Development Process'. Steve is a Microserf, and he describes how
things get done at Redmond. There is relatively little academic
writing on the subject, since most academic software engineers are
heads-down in formal methods, and still enamoured of the waterfall
model. One exception is a brief tech report we wrote on how the
mathematics of population genetics provides a good model for the
reliability growth of software under test:

	http://www.cl.cam.ac.uk/ftp/users/rja14/babtr.pdf

I don't believe that the design of hardware and software are nowadays
all that different. Same processes but different tools. For that
matter, writing specifications isn't all that different from writing
code, although debugging can he harder. In all (combinations of)
these cases, I expect that the waterfall and evolutionary models will
often be combined in practice

Ross