How the web resuscitated evolutionary design

This issue contains two exciting papers about test automation. The first, Killing strategies for modelbased mutation testing, by Aichernig, Brandl, Jöbstl, Krenn, Schlick, and Tiran, presents techniques and algorithms for automatically generating tests from UML state machines (recommended by Mark Harman). The second, Assessing and generating test sets in terms of behavioural adequacy, by Fraser and Walkinshaw, turns the notion of criteria on its head, by defining test criteria in terms of the outputs instead of the inputs or source (recommended by Hong Zhu). Both inventions can improve test automation, and thus enhance our ability to have evolutionary design. One of my favorite oldies, The Design of Everyday Things, discusses evolutionary design. It caused me to consider what this concept means to software design, development, and testing. I want to start with cost. All technological artifacts, hardware and software, come with costs. Not being an economist or systems engineer, I may leave some out, but at least four types of costs help us understand a major trend in software: