Tackling the Discovery Costs of Evolving Software Systems

If software is so easy to create, why is it so difficult to change existing software to keep it up to date with changing requirements?

The cost of changing software includes discovery costs. Discovery costs are always present in any software development, but they are usually ignored in the business planning process.

Discovery costs are the costs of understanding the structure of an existing software system, at least enough to permit the system to be repaired, updated, or extended. The things that a software developer needs to discover will often be more than just the details of the algorithms and data structures. In many situations, a newcomer to a long-term project will also need to acquire information about the existing development process, tools, and testing procedures that they need to use in updating and extending the system. Discovery costs can be a significant part of the total lifecycle cost for a long-lived software product.

There are many languages, tools, and design methodologies in the software community that are aimed at the creation of new software. But a lot of valuable software is the product of evolution, reuse, and reengineering. Some software is too expensive to "throw away and start over," The evaluation of discovery costs can be an important part of the economic decision between revising and rewriting.

Most software practitioners agree that incorporating new features into an existing software system has remained stubbornly difficult and expensive. In this workshop, we will discuss why this is the case, and what can be done about it. Discovery costs - the costs of learning what one needs to know in order to evolve an existing software system - has proven to be the dominant (but often unrecognized) cost in many software systems.