Functional requirement
A functional requirement specifies what the system must do: a specific behavior, feature, or function it has to perform. If you can phrase it as “the system shall [do something],” it’s a functional requirement. Examples: “the system shall email a receipt when payment succeeds,” or “a user shall be able to reset their password.”
Functional requirements are the backbone of the Requirements stage of the SDLC. They describe behavior that a user or another system can observe, and they are what most people picture when they hear “the requirements.”
Also known as
functional requirements · FRs · behavioral requirements · (informally) “the shall statements” · features
Don't confuse with
- Non-functional requirement: a functional requirement is what the system does; a non-functional requirement is how well it does it (speed, security, reliability). “Send a receipt” is functional; “send it within two seconds” is non-functional.
- Business requirement: a higher-level business goal (“reduce checkout abandonment”), not a specific system behavior. Functional requirements are how you deliver on it.
In plain English
Functional requirements are the verbs: what can the software actually do?
How they’re expressed
Functional requirements take different forms depending on the team’s process:
- “The system shall…” statements in a formal requirements document (plan-driven and waterfall shops).
- User stories with acceptance criteria (agile shops): “As a shopper, I want a receipt emailed to me, so that I have proof of purchase.”
- Use cases: step-by-step interaction scripts between an actor and the system.
Examples
- The system shall allow a user to log in with an email and password.
- The system shall let an administrator export the user list as CSV.
- When an order ships, the system shall notify the customer.
Each names a concrete behavior you could write a test for. If you can’t test whether it’s present, it isn’t a well-formed functional requirement yet.
See also
- Non-functional requirement: the quality side of requirements
- User story: the common agile container for a functional requirement
- Software development life cycle: the Requirements stage these belong to
References
- ISO/IEC/IEEE 29148:2018 (Systems and software engineering: requirements engineering), the current international requirements standard (it supersedes IEEE 830). https://www.iso.org/standard/72089.html
- K. Wiegers and J. Beatty, Software Requirements (3rd ed., Microsoft Press, 2013). https://www.microsoftpressstore.com/store/software-requirements-9780735679665