Skip to main content

Functional versus non-functional requirements

Short answer

Functional requirements define what the system does (services, features). Non-functional requirements specify constraints on how well it performs, such as speed, reliability, and security. The latter are often more critical for system acceptability.

Differentiate function and nonfunctional requirement used during requirement engineering process.

Requirements are descriptions of what a system should do and the constraints on how it operates. In requirements engineering they are divided mainly into functional and non-functional requirements.

Functional requirements

Functional requirements are statements of the services the system should provide, how it should react to particular inputs, and how it should behave in particular situations. They may also state what the system should not do.

  • Describe what the system does: inputs, processing, outputs, data stored.
  • Depend on the type of software, its users and the system.

Examples (library system):

  • A member shall be able to search books by title, author or ISBN.
  • The system shall issue a book and record the due date.
  • The system shall calculate a fine of Rs. 5 per day for late return.

Non-functional requirements

Non-functional requirements are constraints on the services or functions offered by the system, or properties of the system as a whole, such as performance, reliability, security, usability and constraints on the development process or standards.

  • Describe how well the system does its job.
  • Often more critical than individual functional requirements: if a non-functional requirement is not met (for example, an aircraft control system that is not reliable), the whole system may be useless.

Examples (library system):

  • Search results shall be shown within 2 seconds.
  • The system shall be available 99% of the time during library hours.
  • Only librarians shall be able to delete member records.

Sommerville classifies non-functional requirements as:

Non-functional requirements
|-- Product requirements
|     usability, efficiency (performance,
|     space), reliability, portability
|-- Organisational requirements
|     delivery, implementation, standards
`-- External requirements
      interoperability, ethical,
      legislative (privacy, safety)
  • Product requirements: behaviour of the product (speed, memory, reliability, usability, portability).
  • Organisational requirements: from policies and procedures (process standards, programming language, delivery dates).
  • External requirements: from outside factors (laws, privacy, interoperability with other systems, ethics).

Differences

BasisFunctional requirementNon-functional requirement
MeaningWhat the system should doHow well / under what constraints
FocusServices, features, behaviourQuality attributes, constraints
ScopeUsually a single functionOften the system as a whole
Example"Generate monthly salary slip""Slip generated within 3 seconds"
SourceUser needs, business processesUsers, policies, laws, budget
VerificationFunctional (black-box) testingPerformance, load, security, usability tests
ExpressionUse cases, DFDs, feature listsMeasurable metrics (seconds, %, MTTF)
If not metA feature is missingSystem may be unusable or rejected

Non-functional requirements should be written in a measurable way so that they can be tested, for example using metrics such as transactions per second, response time, mean time to failure, availability, or training time. A vague goal like "the system shall be easy to use" should be changed to "a new operator shall be able to use all functions after 2 hours of training".

✓ Answer checked by Claude Sonnet 5.5

All Software Engineering chapter 1 questions →