For most commercial applications, fifty percent or more of the shipped code cannot be traced directly to the corresponding requirements document. This is true because:
There are requirements that should have been documented but weren’t. All requirements are imperfect and incomplete. Given this fact, programmers make assumptions, add behavior, get informal, undocumented clarification of requirements, and write a lot of code to implement business requirements that never made it to the requirements document. (more…)

