Conceptual Integrity in Agile Processes

When Fred Brooks wrote about aristocracy, democracy, and system design, he was assuming a waterfall model in which all system design precedes all implementation, and the system design cannot be revised once implementation is underway.

Some agile processes, notably Extreme Programming, try to get by with little or no system design per se. With test-first design, the system design is expected to emerge as tests are written, and to become more coherent as code is refactored.

That's hoping for a lot. Conceptual integrity is hard to achieve without some kind of up-front design and aristocratic hierarchy. For small or easy software projects, the shared cultural assumptions of implementors and clients may provide enough conceptual integrity for the simple architectures of those systems.

For larger and more complex projects, a test-first design process, in which many different customer representatives and implementors must translate their many different foggy notions of how the system might behave into little bitty unit tests, is unlikely to produce a system architecture with conceptual integrity.

For debugging: Click here to validate.