Requirements are hard to understand and harder to specify. The wrong solution to this problem is to do a slipshod job of requirements specification, and rush ahead to design and code in the vain hope that:
- Any system is better than no system.
- The requirements will work themselves out sooner or later.
- Or the designers will figure out what can be built as they are building it.
The right solution is to do whatever it takes to learn as many of the requirements as possible now.
- Do prototyping.
- Talk with more customers.
- Work with a customer to get to know his or her job firsthand.
- Collect data.
- Do whatever it takes.
Reference:
Boehm, B., "Verifying and Validating Software Requirements and Design Specifications, IEEE Software, January 1984.