Chapter 2: Metaphors for a Richer Understanding of Software Development

Software Oyster Farming: System Accretion

In incremental development, you first make the simplest possible version of the sys- tem that will run. It doesn’t have to accept realistic input, it doesn’t have to perform realistic manipulations on data, it doesn’t have to produce realistic output—it just has to be a skeleton strong enough to hold the real system as it’s developed. It might call dummy classes for each of the basic functions you have identified. This basic begin- ning is like the oyster’s beginning a pearl with a small grain of sand.

After you’ve formed the skeleton, little by little you lay on the muscle and skin. You change each of the dummy classes to real classes. Instead of having your program pretend to accept input, you drop in code that accepts real input. Instead of having your program pretend to produce output, you drop in code that produces real output. You add a little bit of code at a time until you have a fully working system.

Applying Software Techniques: The Intellectual Toolbox

In software, consultants sometimes tell you to buy into certain software-development methods to the exclusion of other methods. That’s unfortunate because if you buy into any single methodology 100 percent, you’ll see the whole world in terms of that methodology. In some instances, you’ll miss opportunities to use other methods bet- ter suited to your current problem

Key Points