Live Documentation

Large specification documents often get out-of-date as soon as development starts, as people implement change requests directly in the code without updating the specifications. Out-of-date specifications are misleading, but are often all we have available to explain the system. The code is the only true description of what the the system does, but it is unusable for communication.

An incrementally built set of acceptance tests does not suffer from these issues. As acceptance tests are automated and connected directly to the code, we can have the same level of confidence in them as we have in the code. Acceptance tests are by nature easily understandable (or at least they should be) so the set of implemented acceptance tests serves as a very reliable source of information on the system.

back to key ideas