liveBook · Manning

Nonfunctional requirement

As explained in Software Design for Python Programmers

A nonfunctional requirement is a requirement specifying a quality, constraint, or condition on how an application operates rather than a specific capability.

A nonfunctional requirement specifies a restriction or quality condition that an application must satisfy to succeed. It governs how the application operates rather than a capability it provides. section 3.3 section 3.9

Typical nonfunctional requirements constrain:

  • Performance: a book search must take under two seconds. section 3.3
  • Platforms: the application must run on Windows, macOS, and Linux. section 3.3
  • User experience: the interface shall resemble the previous version. section 3.3
  • Internationalization: displayed messages shall be customizable in English, Spanish, or Vietnamese. section 3.3
  • Maintainability and other constraints that affect whether delivered functionality remains practical and successful. section 3.3

State requirements clearly and strongly with “must” or “shall,” using nontechnical language. Specify the required result, not the design or implementation used to achieve it. section 3.3 section 3.7

Book catalogue search

“A book search must take under 2 seconds” constrains observable performance without prescribing databases, algorithms, or interface code. A black-box test can submit search input and verify the expected response time without inspecting implementation internals. section 3.3 section 3.7

Capture nonfunctional requirements through client communication, observation of current tasks, meetings, and prototypes. Keep feedback active because requirements can change during design and coding. section 3.4 section 3.9

Attach applicable constraints to use cases so each user goal shows not only what the application does, but also the conditions that make that behavior practical. section 3.6.2 section 3.6

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, update existing books, and remove outdated ones. A customer interacts with the server to search for books. The books are stored in a backend database.
A diagram of a book catalogue server

Description automatically generated

Use the book-catalogue system diagram to relate platform, interface, performance, and localization constraints to customer searches, librarian operations, and stored data. section 3.1

How Software Design for Python Programmers covers it

How deep it goes
Explains definition, categories, wording, elicitation, use-case context, and black-box verification, without prescribing implementation designs.
Examples
Uses search latency, operating-system support, interface similarity, and multilingual messages in a book-catalogue application.
What it assumes
Assumes familiarity with applications and stakeholders while distinguishing functional requirements from nonfunctional requirements.
What you can do after
Evaluate application success by stating observable constraints and verifying them through external black-box tests.
How it connects
Connects nonfunctional requirements to functional requirements, use cases, functional specifications, internationalization, localization, and black-box testing.

Also explained in

Compare how 6 books explain nonfunctional requirement →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Software Design for Python Programmers. The section links point to the parts of the book it draws on.