0
0
HLDsystem_design~7 mins

Requirements gathering (functional and non-functional) in HLD - System Design Guide

Choose your learning style9 modes available
Problem Statement
Without clear requirements, systems often fail to meet user needs or perform poorly under real conditions. This leads to costly redesigns, missed deadlines, and unhappy users because the system either lacks essential features or cannot handle expected loads.
Solution
Requirements gathering collects detailed user needs and system constraints before design begins. It separates what the system must do (functional) from how well it must perform or behave (non-functional), ensuring the design addresses both capabilities and quality attributes.
Architecture
Stakeholders & Users
Requirements Team
Functional Requirements
Functional Requirements
Non-Functional Requirements
Non-Functional Requirements
System Design & Planning
System Design & Planning

This diagram shows how input from stakeholders flows to a requirements team, which separates functional and non-functional requirements before passing them to system design.

Trade-offs
✓ Pros
Ensures the system meets actual user needs by clarifying expected features.
Identifies quality and performance goals early, reducing costly fixes later.
Improves communication between stakeholders and developers through clear documentation.
Helps prioritize features and constraints to focus design efforts effectively.
✗ Cons
Can be time-consuming and delay project start if done too extensively.
Miscommunication or incomplete input can still lead to missing or incorrect requirements.
Balancing conflicting stakeholder needs requires negotiation and compromises.
Always use for projects with multiple stakeholders or complex features, especially when quality attributes like scalability, security, or availability are critical.
For very small or throwaway projects where formal documentation overhead outweighs benefits.
Real World Examples
Amazon
Amazon gathers detailed functional and non-functional requirements to ensure their e-commerce platform supports millions of users with high availability and fast response times.
Netflix
Netflix collects non-functional requirements like streaming latency and fault tolerance to deliver smooth video playback worldwide.
Uber
Uber defines functional requirements for ride matching and non-functional ones for real-time location accuracy and system scalability.
Alternatives
Agile User Stories
Focuses on small, incremental requirements captured as user stories rather than comprehensive upfront documentation.
Use when: When rapid iteration and evolving requirements are expected.
Prototyping
Uses early mockups or prototypes to gather feedback instead of detailed written requirements.
Use when: When user needs are unclear or hard to express verbally.
Summary
Clear requirements prevent costly redesigns by defining what the system must do and how well it must perform.
Separating functional and non-functional requirements helps address both features and quality attributes effectively.
Engaging stakeholders early and documenting needs improves communication and design accuracy.