On software systems evolution


To the degree that a software system is large and distributed enough that there is no effective single point of control, we must expect evolutionary forces.

...

There is much to be gained by recognizing and accepting that computational systems resemble naturally evolving systems much more closely than they resemble engineered artifacts such as bridges or buildings.

Specifically, the strategies that we adopt to understand, control, interact with, and influence the design of computational systems will be different once we understand them as ongoing evolutionary processes.

-- D. H. Ackley et al. 2002



Here an example on how TDD practices can be evolutionary forces that help to spot violations of design principles:



An interesting quote from Stafford Beer, a managerial-cybernetics theorist
If you wish to tell someone how to reach the top of a mountain that is shrouded in mist, the heuristic ‘keep going up’ will get him there




Print | posted @ venerdì 18 febbraio 2011 16:38

Comments on this entry:

Gravatar # re: On software systems evolution
by LudovicoVan at 18/02/2011 23:17

> There is much to be gained by recognizing and accepting that computational systems resemble naturally evolving systems much more closely than they resemble engineered artifacts such as bridges or buildings.

I'd only partially agree on that: building software is just another level of complexity than any traditional engineering, that is correct. But, it is still fundamentally an engineering effort, engineering of complex systems: i.e., at the end of the day, you still need a working and reliable product. While the comparison to natural processes is, properly speaking, improper.

-LV
Gravatar # re: On software systems evolution
by LudovicoVan at 18/02/2011 23:20

Me:> While the comparison to natural processes is, properly speaking, improper.

Indeed, think of the dialectic analogic vs digital...

-LV
Gravatar # re: On software systems evolution
by LudovicoVan at 18/02/2011 23:28

And, pardon, as a last note: there is a theory of *evolutionary processes* in software engineering at least since the mid 80's (among which are incremental, spiral, component-based and concurrent-development models, to name the most known). Of course that has nothing to do with "natural evolution".

-LV
Comments have been closed on this topic.