Whats the big deal about requirements?
One of the most reliable methods of ensuring problems, or failure, in a large, complex software project is to have poorly documented requirements specifications. (Note that requirements documentation can be electronic, not necessarily in the form of printable documents, and may be embedded in code comments, may be embodied in well-written test cases, etc.) Requirements are the details describing an application’s externally-perceived functionality and properties. Requirements should be clear, complete, reasonably detailed, cohesive, attainable, and testable. A non-testable requirement would be, for example, ‘user-friendly’ (too subjective). A more testable requirement would be something like ‘the user must enter their previously-assigned password to access the application’. Determining and organizing requirements details in a useful and efficient way can be a difficult effort; different methods are available depending on the particular project.