Writing Rules
Ambiguous Terms | Ways to Improve Them |
---|---|
acceptable, adequate | Define what constitutes acceptability and how the system can judge this. |
as much as practicable | Don't leave it up to the developers to determine what's practicable. Make it a TBD and set a date to find out. |
at least, at a minimum, not more than, not to exceed | Specify the minimum and maximum acceptable values |
between | Define whether the end points are included in the range. |
depends on | Describe the nature of the dependency. Does another system provide input to this system, must other software be installed before your software can run, or does your system rely on another one to perform some calculations or services? |
efficient | Define how efficiently the system uses resources, how quickly it performs specific oper ations, or how easy it is for people to use. |
flexible | Describe the ways in which the system must change in response to changing conditions or business needs. |
improved, better, faster, superior | Quantify how much better or faster constitutes adequate improvement in a specific functional area |
including, including but not limited to, and so on, such as, etc. | The list of items should include all possibilities. Otherwise, it can't be used for design or testing. |
maximize, minimize, optimize | State the maximum and minimum acceptable values of some parameter. |
normally, ideally | Also describe the system's behavior under abnormal or non-ideal conditions. |
optionally | Clarify whether this means a system choice, a user choice, or a developer choice. |
reasonable, when necessary, where appropriate | Explain how to make this judgment. |
robust | Define how the system is to handle exceptions and respond to unexpected operating conditions. |
seamless, transparent, graceful | Translate the user's expectations into specific observable product characteristics. |
several | State how many, or provide the miinimum and maximum bounds of a range. |
shouldn't | Try to state requirements as positives, describing what the system will do. |
sufficient | Specify how much of something constitutes sufficiency |
support, enable | Define exactly what functions the system will perform that constitute supporting some capability. |
user-friendly, simple, easy | Describe system characteristics that will achieve the customer's usage needs and usability expectations. |
Source: Software Requirementsby Karl Wiegers, 2ndEdition, Microsoft Press, 2003