Understading and Capturing Your Requirements

 1. There are three levels of requirements.
+ Business Requirements - High level objectives of the project which are recorded in the Vision and Scope Document 
+ User Requirements - Task and facilities available to the end user recorded in the Use Cases.
+ Functional Requirements - Detailed listing out of each behavior that the software must exhibit. This along with the quality attributes and other non-functional requirements is documented in the Software Requirements Specification (SRS).

2. Involve the end-user or customers as much as possible during the requirements capture stage. Identify various user groups and one representative individual from each group for inputs regarding their specific requirements. They could also review prototypes and the SRS to ensure completeness and effectiveness.

3. Ensure that the requirements are quantifiable and measurable. Areas that are unclear may require more detailed analysis or even the development of a prototype. Developing Test cases early also help reveal any gaps in the requirements capture. Verify the completeness of the requirements by formally inspecting the documents generated.

4. Prioritize Requirements by their relative importance. This will help weed out high cost-low value functionality. It will also help in making informed and critical decisions when faced with time/ resource and functionality tradeoffs. Identify and remove any functionality which will not be used or which do not help meet any of the business objectives.

5. Ensure that the project scope is clearly defined in the Vision and Scope document. Expect some amount of requirements growth and buffer for it, since rarely is the project deadline changed, additional resources provided or any existing functionality deleted to compensate for it.

6. Establish and enforce a clear and realistic process for change management. Prioritize the proposed requirement changes against the requirements yet to be implemented. Ensure that each change and its impact are sufficiently analyzed to avoid unforeseen complexities and slipping project schedule and deadlines.

7. Finally, while it is important to have a complete set of requirements to start design and development, it is also important not to get bogged down at this stage. After a set of requirements has been fully identified, development can begin on this while unclear requirements continue to get analyzed and clearly defined.