A nonfunctional requirement imposes a restriction or constraint that an application must satisfy to succeed. It addresses qualities, platforms, maintainability, or other behavior without defining a discrete feature. Functional requirements state what the application must do; nonfunctional requirements constrain how practical and acceptable that functionality is. section 3.3 section 3.10
Write nonfunctional requirements as strong, testable constraints:
- State measurable limits, such as requiring a book search to take under two seconds. section 3.3
- Specify supported environments, such as Windows, macOS, and Linux. section 3.3
- Constrain user experience without prescribing implementation, such as requiring similarity to a previous interface. section 3.3
- Require customizable messages in English, Spanish, or Vietnamese; localization may also affect dates, times, monetary formats, and character encoding. section 3.3
- Use must or shall, and keep design and implementation details out of the requirement. section 3.3 section 3.10
Book catalogue search
For a book catalogue server, “A book search must take under 2 seconds” constrains performance, while “The application must run on Windows, macOS, and Linux” constrains the platform. A fully functional catalogue still fails if it responds too slowly or cannot run where customers need it. section 3.3
Figure 3.2 A more advanced version of the book catalogue application. A librarian interacts with the book catalogue server to enter new books into the catalogue and to update and remove existing books. A customer interacts with the server to search for books. The books are stored in a backend database.
Use the catalogue-system view to relate nonfunctional constraints to customers, librarians, the server, and the backend database. section 3.1





