This guide walks through defining functional requirements, distinguishing them from non-functional requirements, applying the EARS templates, and assembling a Functional Requirements Document (FRD).
1. Know What a Functional Requirement Is
Functional requirements define what a product, system, subsystem, or software component must do — its operations, workflows, inputs/outputs, user interactions, safety behaviors, and access control mechanisms. Typical categories:
- Operational workflows and system behaviors
- Input/output data formats and validation rules
- User interface interactions
- Data integrity and security rules
- Safety and regulatory behaviors
- User authentication and authorization processes
2. Separate Functional from Non-Functional Requirements
- A functional requirement states what the system must do. Example: "The control system shall prevent engine overspeed."
- A non-functional requirement defines constraints or qualities of the system — how it must be built or behave. Example: "Communication between subsystems must use a MIL-STD-1553B digital bus."
Keep the two separate in your document; do not mix "what it does" with "how well it performs."
3. Study Examples by Industry
| Industry | Example Requirement |
|---|---|
| Software | The system shall return search results within 0.5 seconds. |
| Software | If a user fails login three times, the system shall lock the account for 10 minutes. |
| Automotive | The lane assist system shall alert the driver when drifting without signaling. |
| Automotive | The vehicle shall automatically notify emergency services within 30 seconds after airbag deployment. |
| Healthcare | The EHR system shall retrieve patient history within 3 seconds. |
| Healthcare | The insulin pump shall deliver dosage with ±1% accuracy. |
| E-Commerce | The platform shall process credit-card transactions and confirm within 5 seconds. |
| E-Commerce | When a product is out of stock, the system shall show an alert and disable the Add to Cart button. |
4. Avoid Common Mistakes
| Mistake | How to Avoid It |
|---|---|
| Ambiguity | Replace vague terms ("the system should be fast") with measurable statements ("the system shall respond within 0.3 seconds"). |
| Combining multiple requirements | Break complex statements into individual requirements. |
| Mixing functional and non-functional rules | Keep separate what the system does vs. how well it must perform. |
| Not ensuring testability | Make every requirement measurable and verifiable. |
| Excessive technical jargon | Write clearly so technical and non-technical teams understand. |
| Missing rationale | Explain why a requirement exists to avoid misinterpretation. |
| Not updating requirements | Review regularly to prevent outdated or invalid requirements. |
| Over-engineering | Focus on actual value; avoid unnecessary complexity. |
5. Apply the EARS Requirement Archetypes
Use the Easy Approach to Requirements Syntax (EARS) templates to structure each requirement:
| Archetype | Template |
|---|---|
| Ubiquitous | The <system> shall <do something>. |
| State-Driven (WHILE) | WHILE <state>, the system shall <do>. |
| Event-Driven (WHEN) | WHEN <event>, the system shall <do>. |
| Optional Feature (WHERE) | WHERE <feature exists>, the system shall <do>. |
| Unwanted Behavior (IF/THEN) | IF <undesired condition> THEN the system shall <respond>. |
| Complex | Combine multiple EARS conditions (state + event + feature). |
6. Follow the Writing Checklist
- Use consistent modal verbs ("shall" for functional, "must" for constraints).
- Give every requirement a unique ID.
- Write only one requirement per statement.
- Keep requirements concise and clear.
- Ensure every requirement is testable.
- Keep rationale separate from the requirement text.
7. Assemble the Functional Requirements Document (FRD)
An FRD is the detailed specification of what the system must do. It guides developers, informs testers, and gives stakeholders a clear expectation of system behavior. Recommended practices:
- Organize content hierarchically (features, subsystems, functions).
- Use consistent terminology and a project glossary.
- Use templates or requirements management tools for traceability.