The coverage of requirements is a fundamental need throughout the software life cycle. Be it during design, coding or testing, the ability to ensure that the software meets the expected requirements is something that every developer and project manager aspires for. However, the challenge is how do we as developers or project managers ensure that the piece of software delivered did meet all the requirements? As a client, how do I make sure that the outsourced requirements are being delivered? Moreover, as the software matures and goes into several iterations of enhancements and bug fixes, it becomes more and more daunting to ensure requirement coverage in the software.
Several techniques and tools have been invented to target requirement coverage. Some tools offer the capability of mapping requirements to the other project artifacts, such as, use cases, test cases and design documents. Some projects prefer to follow simple spreadsheet based traceability matrix of requirements to various other artifacts. As the project enters the coding phase, maintaining requirement coverage becomes even more challenging. Many a times the individual developers may not be the requirements experts. However, they are supposed to deliver what the requirements demand from the software. Also, they may not be using the same requirement coverage tool or techniques on a daily basis that were used in the earlier phases of the project.
In a nutshell, while it is understood that the requirement coverage is critical for the successful delivery of the project, the means to achieve it is not so obvious and straight-forward.
How do you track how your codebase fulfills a set of requirements? Do you track requirements formally? At what point is requirements tracking necessary for a project?