SE Notes
Specifying what the system must do - its features and behaviors.
Functional requirements define what a software system must do—the specific behaviors, features, and functions it must provide to its users. They describe the system's responses to inputs, its processing logic, and its outputs under various conditions. If non-functional requirements describe the qualities of the system (how well it performs), functional requirements describe its capabilities (what it does). Every feature a user interacts with, every calculation the system performs, and every output it produces originates from functional requirements.
Characteristics of Good Functional Requirements
Every functional requirement should be:
Specific: Describes exactly one behavior or capability. "The system shall allow users to search products" is too broad. "The system shall allow users to search products by name, category, price range, and rating with results displayed within 2 seconds" is specific.
Testable: You can design a test case to verify it. If you cannot write a test for a requirement, it is too vague to implement.
Traceable: Has a unique identifier (REQ-F-001) that links it to its source (stakeholder interview, regulation), design elements (which module implements it), test cases (which tests verify it), and code (which functions realize it).
Prioritized: Classified by importance—must-have (system is useless without it), should-have (important but workaround exists), could-have (nice but not critical), won't-have (explicitly excluded from scope).
Categories of Functional Requirements
User Interaction Requirements: How users interact with the system—screens, forms, navigation, input methods, and output formats.
Business Logic Requirements: Rules and calculations the system must implement—pricing algorithms, eligibility criteria, workflow rules, approval processes.
Data Requirements: What data the system must store, process, and manage—entities, attributes, relationships, retention policies, and validation rules.
Interface Requirements: How the system communicates with external systems—API specifications, file formats, protocols, and data exchange patterns.
Reporting Requirements: What information the system must present—reports, dashboards, exports, notifications, and alerts.
Writing Functional Requirements
Structured Natural Language
REQ-F-042: Product Search
The system SHALL allow authenticated users to search the product catalog
using the following criteria (individually or in combination):
a) Product name (partial match, case-insensitive)
b) Category (exact match from predefined list)
c) Price range (minimum and/or maximum)
d) Rating (minimum star rating, 1-5)
e) Availability (in-stock only, or include pre-order)
Search results SHALL display:
- Product name, image thumbnail, price, rating, and availability status
- Sorted by relevance (default) or user-selected criteria (price, rating, newest)
- Paginated with 20 results per page
The system SHALL return results within 2 seconds for catalogs up to
5 million products.User Story Format
Real-World Example: Ride-Sharing App Functional Requirements
Rider Requirements:
- REQ-R-001: Riders shall request a ride by specifying pickup location (GPS or address) and destination
- REQ-R-002: System shall display estimated fare before rider confirms request
- REQ-R-003: System shall show driver name, photo, vehicle details, and estimated arrival time after matching
- REQ-R-004: Riders shall track driver location on a real-time map during approach and trip
- REQ-R-005: System shall calculate fare based on distance, time, and demand multiplier
- REQ-R-006: Riders shall rate drivers (1-5 stars) after each completed trip
Driver Requirements:
- REQ-D-001: Drivers shall receive ride requests showing pickup location, destination, and estimated fare
- REQ-D-002: Drivers shall accept or decline requests within 15 seconds
- REQ-D-003: System shall provide turn-by-turn navigation to pickup and destination
- REQ-D-004: Drivers shall mark trip milestones: arrived at pickup, trip started, trip completed
System Processing Requirements:
- REQ-S-001: System shall match ride requests to the nearest available driver within 2 minutes
- REQ-S-002: If no driver accepts within 2 minutes, system shall expand search radius by 1 km and retry
- REQ-S-003: System shall apply surge pricing multiplier when demand exceeds supply by >50% in a zone
- REQ-S-004: System shall process payment automatically upon trip completion
Functional vs. Non-Functional Requirements
| Aspect | Functional | Non-Functional |
|---|---|---|
| Describes | What the system does | How well it does it |
| Example | "Users can reset passwords" | "Password reset email arrives within 30 seconds" |
| Testing | Feature works/doesn't work | Measured against thresholds |
| Visibility | Directly visible to users | Often invisible but felt |
| Impact of Failure | Feature unavailable | Degraded experience |
Requirements Elicitation for Functional Requirements
Functional requirements are gathered through stakeholder interviews, workflow observation, document analysis, competitive analysis (what do similar systems do?), regulatory review, and prototyping. The challenge is completeness—ensuring every scenario, edge case, and exception is captured. Techniques like use case modeling, story mapping, and event storming help systematically identify functional requirements that interviews alone might miss.
Common Mistakes
Writing requirements that are too vague to implement ("system shall handle orders efficiently"), mixing functional and non-functional requirements in the same statement, specifying implementation rather than behavior ("system shall use REST API"—that is design, not a requirement), forgetting error cases and exception handling, and failing to specify what happens when preconditions are not met.
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Functional Requirements.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Software Engineering topic.
Search Terms
software-engineering, software engineering, software, engineering, requirements, functional, functional requirements
Related Software Engineering Topics