Requirements engineering

Classifying Requirements and Non-Functional Categories

In short Sort requirements into a few clear types, use four categories as prompts for non-functional needs, and check every requirement, and the set as a whole, against a short list of quality characteristics.

Based on: K. Wiegers, J. Beatty, Software Requirements, 3rd ed., ch. 11; H. Kastsevich, Requirements (sketchnote); Yu. A. Maglinets, Analysis of Requirements for Information Systems (in Russian), lecture 2.

On this page

Key ideas#

The Wiegers model at a glance#

In Karl Wiegers’ model, business rules inform business requirements (recorded in a vision and scope document), which lead to user requirements, which lead to functional requirements. In parallel run quality attributes, external interface requirements and constraints. Functional and non-functional requirements come together in the software requirements specification (SRS). The BABOK® Guide uses a different split (business, stakeholder, solution, transition), but the two map onto each other reasonably well. The levels are explained on Levels and Types of Requirements.

Four practical categories of non-functional requirements#

Kastsevich’s sketchnote, which sets Wiegers’ model next to the BABOK scheme, groups non-functional requirements (NFRs) into four buckets. Use them as prompts during elicitation:

Category Ask about
Constraints Physical limits, laws and regulations, business rules, operation across several sites
Performance How often features are used, data volumes, data accuracy, how long data is kept, how fast the system must react, how fast data must be refreshed
User experience Physical access, how much interaction is needed, learnability, cultural fit, ease of use
Volatility Maintainability, portability, availability, scalability, expected rate of change, reliability

Seven characteristics of a single requirement#

Wiegers and Beatty (ch. 11) list seven, and note who is best placed to judge each:

  • Complete — contains all the information needed to implement it. Flag known gaps explicitly as TBD (“to be determined”).
  • Correct — describes the needed capability accurately and does not contradict its parent requirement. User representatives judge this, not the analyst.
  • Feasible — can be built within known technical, budget and time limits. Developers judge this.
  • Necessary — traces back to a source with authority and to a business objective. You can answer “why is this here?”
  • Prioritized — has an implementation priority.
  • Unambiguous — every reader reaches the same reading. The authors describe two kinds of ambiguity: the author can see more than one reading, or, more dangerously, each reader sees a different reading that looks obvious to them.
  • Verifiable — a tester can design a test that shows it is met. Without this, “is it done?” becomes a matter of opinion.

Four characteristics of a set of requirements#

  • Complete — nothing is missing. Fully complete is not achievable in practice, and any specification with TBDs is formally incomplete.
  • Consistent — no conflicts with requirements at the same level or above. Record the author of each requirement so you know whom to ask when conflicts appear.
  • Modifiable — every requirement has a unique ID and is stated once. Text duplicated in several places will eventually drift apart.
  • Traceable — each requirement can be linked back to its origin and forward to design, code and tests. You do not have to record every link, but the format must allow it: short, uniquely numbered statements rather than long narrative paragraphs.

Other versions of the list#

Kastsevich’s sketchnote gives a shorter list of six: clear, complete, applicable, prioritized, implementable (confirmed by developers) and testable (confirmed by testers), checked through peer reviews and walkthroughs. Maglinets’ lecture course, drawing on IEEE work and Wiegers, lists twelve properties. It adds a numeric metric for every NFR, ordering by both importance and stability, a split between necessary and merely useful requirements, and consistency both between levels and within a level. Maglinets also uses the trade-off triangle of resources, time and scope: change one side and the others must adjust, which is one more reason to state each requirement only once.

Where requirements come from#

Requirements come from people (stakeholders) and from documents (existing requirements, standards). Check that information is reliable and current, bring in a subject-matter expert when needed, and always have a stakeholder as the source of a requirement. Do not invent requirements yourself.

How to apply it#

  1. Run every new requirement through the seven characteristics before it goes for review.
  2. Assign each characteristic to the right checker: users for correctness, developers for feasibility, testers for verifiability.
  3. At each baseline, check the set: search for duplicates, for TBDs, and for requirements without a source or an author.
  4. Use the four NFR categories as an interview prompt list so non-functional needs are not left to the end.

Example#

A draft requirement at The Workshop, a fictional bike-repair chain: “The system should notify customers quickly when their bike is ready.”

  • Unambiguous / verifiable: fails. “Quickly” has no measure, and “notify” names no channel.
  • Complete: fails. What counts as “ready”?
  • Necessary: passes. It traces to the objective of fewer status calls to the front desk.
  • Prioritized: missing.

Rewrite: “FR-NOT-03. When a mechanic sets a repair job’s status to Ready for collection, the system shall send the customer an SMS and an email within 5 minutes. Priority: High. Source: workshop managers’ review meeting.”

Checklist#

  • Every requirement has a unique ID, an author and a source.
  • No vague words without a measure (“quickly”, “user-friendly”).
  • Each NFR has a unit and a target value.
  • Each requirement can be tested, and you can say how.
  • Each requirement has a priority.
  • No requirement is written in two places.
  • Open questions are marked TBD, with an owner.
  • Constraints, performance, user experience and volatility have all been discussed.

Sources and further reading#

  • K. Wiegers, J. Beatty. Software Requirements, 3rd ed. Microsoft Press, 2013, ch. 11.
  • H. Kastsevich. Requirements (sketchnote).
  • Yu. A. Maglinets. Analysis of Requirements for Information Systems, lecture notes (in Russian). Siberian Federal University, 2007, lecture 2.
  • IIBA. A Guide to the Business Analysis Body of Knowledge (BABOK® Guide), version 3. International Institute of Business Analysis, 2015.