| Examples of Bad (Vague and Untestable) Requirements | Examples of Good (at Least Better) Requirements |
| The system shall be responsive. | The system shall provide the correct response to 99.9% of user inputs. The system shall provide a response within 1 second to 98% of user inputs. |
| The system shall be user-friendly. | The system user interface shall employ a graphical user interface and permit input with a mouse. |
| The system shall be reliable. | The system shall run uniterrupted for at least 1,000 hours during normal use. |
If you don't know exactly what the software is supposed to do (that is, if the requirements are wrong or vague), then how can you do the right thing?
Take the examples on this slide. The bad (vague and untestable) requirements can be interpreted differently by different people (and usually are). What, exactly, does "responsive" mean? What the developer thinks is "responsive" is probably not what the customer thinks is responsive.
Wrong or vague requirements are responsible for some of the biggest problems industry has with the traditional process (in fact, problems in requirements are often cited as industry's #1 software problem):
Requirements are hard to write down; they need to be complete, cover all of the details, and work together. This becomes nearly impossible when the number of detailed requirements gets up into the thousands. The exercise after this unit will help you understand how hard it is to write detailed, specific requirements.
Megaprogramming helps you in the requirements stage. How does megaprogramming do this?