Specification by example

Abstract requirements are rarely complete – they don’t provide a full and unambiguous context for development or testing. When dealing with abstract statements, it is hard to spot functional gaps and inconsistencies until the requirements are expressed concretely in code. When functional gaps and ambiguities are discovered during development, the project always overruns.

Instead of abstract requirements, use realistic examples to specify what the software should do. Realistic examples provide a very concrete and precise context for development and testing. This makes it easy to spot functional gaps and inconsistencies, leading to more precise and complete specifications.