Bird
Raised Fist0
HLDsystem_design~15 mins

Requirements gathering (functional and non-functional) in HLD - Deep Dive

Choose your learning style10 modes available
Overview - Requirements gathering (functional and non-functional)
What is it?
Requirements gathering is the process of collecting and understanding what a system must do and how it should perform. It includes two main types: functional requirements, which describe specific behaviors or functions, and non-functional requirements, which describe qualities like speed, security, and usability. This process helps ensure the system meets the needs of its users and stakeholders. Without clear requirements, building a useful system is very difficult.
Why it matters
Without proper requirements gathering, systems often fail to solve the right problems or disappoint users because they miss key features or quality expectations. This can lead to wasted time, money, and frustration. Clear requirements help teams build the right system efficiently and avoid costly changes later. It connects the ideas of users and developers into a shared understanding.
Where it fits
Before requirements gathering, learners should understand basic project goals and stakeholder roles. After mastering requirements gathering, learners typically move on to system design, where they use these requirements to create architecture and detailed plans.
Mental Model
Core Idea
Requirements gathering is like making a detailed shopping list that tells exactly what to buy and how good it should be, so the final meal satisfies everyone.
Think of it like...
Imagine planning a birthday party. Functional requirements are the activities planned, like games and cake cutting. Non-functional requirements are how the party should feel, like being fun, safe, and on time. Both are needed for a great party.
┌───────────────────────────────┐
│       Requirements Gathering   │
├───────────────┬───────────────┤
│ Functional    │ Non-Functional│
│ Requirements  │ Requirements  │
│ - Features    │ - Performance │
│ - Actions     │ - Security    │
│ - Behaviors   │ - Usability   │
└───────────────┴───────────────┘
Build-Up - 7 Steps
1
FoundationUnderstanding Functional Requirements
🤔
Concept: Functional requirements describe what the system should do, focusing on specific tasks and behaviors.
Functional requirements answer questions like: What actions should the system perform? What inputs and outputs are expected? For example, a banking app must allow users to transfer money and check balances. These requirements are often written as clear statements or user stories.
Result
You can list clear, actionable features that the system must have to meet user needs.
Understanding functional requirements is the first step to knowing what the system must do, which guides all design and development.
2
FoundationUnderstanding Non-Functional Requirements
🤔
Concept: Non-functional requirements describe how the system performs and behaves, focusing on qualities rather than specific actions.
These include performance (speed), reliability (uptime), security (protection), usability (ease of use), and scalability (handling growth). For example, the banking app should process transactions within 2 seconds and protect user data. These qualities affect user satisfaction and system success.
Result
You recognize the importance of system qualities that impact user experience and trust.
Knowing non-functional requirements ensures the system is not just functional but also reliable, secure, and pleasant to use.
3
IntermediateTechniques for Gathering Requirements
🤔Before reading on: do you think interviews or surveys are better for gathering detailed requirements? Commit to your answer.
Concept: Different methods exist to collect requirements from stakeholders, each with strengths and weaknesses.
Common techniques include interviews (one-on-one talks), surveys (questionnaires), workshops (group discussions), observation (watching users), and document analysis (reviewing existing materials). Choosing the right method depends on the project context and stakeholder availability.
Result
You can select appropriate techniques to gather clear and complete requirements.
Understanding various gathering methods helps tailor the process to get the best information from stakeholders.
4
IntermediateDistinguishing Between Requirement Types
🤔Before reading on: do you think a requirement like 'the system must be easy to use' is functional or non-functional? Commit to your answer.
Concept: It is crucial to correctly classify requirements to avoid confusion and ensure proper handling during design and testing.
Functional requirements specify actions (e.g., 'user can reset password'). Non-functional requirements specify qualities (e.g., 'password reset must be secure and fast'). Misclassifying can lead to missed tests or design flaws.
Result
You can clearly separate what the system does from how well it does it.
Correct classification prevents misunderstandings and ensures all requirements are addressed properly.
5
IntermediateDocumenting Requirements Effectively
🤔Before reading on: do you think writing requirements in long paragraphs or short clear statements is better? Commit to your answer.
Concept: Clear documentation helps everyone understand and agree on what the system should do and how.
Requirements should be written clearly, concisely, and unambiguously. Use formats like user stories, use cases, or requirement specifications. Include acceptance criteria to define when a requirement is met. Good documentation supports communication and future reference.
Result
You produce requirements that reduce confusion and guide development and testing.
Effective documentation is key to aligning team understanding and reducing costly errors.
6
AdvancedHandling Conflicting Requirements
🤔Before reading on: do you think all stakeholder requirements can always be met? Commit to your answer.
Concept: Stakeholders often have conflicting needs; resolving these conflicts is essential for project success.
Conflicts arise when different stakeholders want opposing features or qualities. Techniques to resolve include prioritization, negotiation, and trade-off analysis. For example, increasing security might reduce usability. Documenting decisions and rationale helps maintain clarity.
Result
You can manage and resolve requirement conflicts to create a balanced system.
Knowing how to handle conflicts prevents project delays and ensures stakeholder satisfaction.
7
ExpertValidating and Managing Requirements Changes
🤔Before reading on: do you think requirements stay fixed throughout a project? Commit to your answer.
Concept: Requirements often evolve; managing changes carefully is critical to avoid chaos and ensure quality.
Validation ensures requirements are correct, complete, and feasible before design. Change management involves tracking changes, assessing impact, and communicating updates. Tools like requirement management software help. Poor change control leads to scope creep and project failure.
Result
You maintain a stable, accurate set of requirements throughout the project lifecycle.
Understanding validation and change management protects the project from costly rework and confusion.
Under the Hood
Requirements gathering works by engaging stakeholders through communication channels to extract explicit and implicit needs. Functional requirements are captured as discrete actions or features, while non-functional requirements are often derived from quality expectations and constraints. These inputs are analyzed, clarified, and documented to form a shared understanding that guides design and development. Iterative feedback loops refine requirements to adapt to new insights or changes.
Why designed this way?
This process evolved to reduce misunderstandings between users and developers, which historically caused project failures. Early software projects lacked clear requirements, leading to wasted effort. Structured gathering and classification into functional and non-functional types help organize complexity and ensure all aspects of system behavior and quality are addressed. Alternatives like informal or ad-hoc gathering proved unreliable.
┌───────────────┐      ┌───────────────┐      ┌───────────────┐
│ Stakeholders  │─────▶│ Communication │─────▶│ Requirements  │
│ (Users,      │      │ Channels     │      │ Analysis &    │
│ Clients)     │      │ (Interviews, │      │ Documentation │
└───────────────┘      │ Surveys, etc)│      └───────────────┘
                       └───────────────┘
                              │
                              ▼
                  ┌─────────────────────────┐
                  │ Functional & Non-Functional│
                  │ Requirements List         │
                  └─────────────────────────┘
Myth Busters - 4 Common Misconceptions
Quick: Is 'fast response time' a functional requirement? Commit to yes or no.
Common Belief:Many think performance aspects like 'fast response time' are functional requirements.
Tap to reveal reality
Reality:Performance is a non-functional requirement describing how well the system performs, not what it does.
Why it matters:Misclassifying can cause teams to overlook performance testing or design optimizations, leading to poor user experience.
Quick: Do you think requirements gathering ends once the first document is written? Commit to yes or no.
Common Belief:Some believe requirements gathering is a one-time task completed at the start.
Tap to reveal reality
Reality:Requirements gathering is iterative; requirements evolve as understanding deepens and conditions change.
Why it matters:Ignoring changes leads to outdated requirements, causing mismatches between the system and user needs.
Quick: Do you think all stakeholders always agree on requirements? Commit to yes or no.
Common Belief:People often assume all stakeholders have aligned requirements.
Tap to reveal reality
Reality:Stakeholders frequently have conflicting needs that must be negotiated and prioritized.
Why it matters:Failing to resolve conflicts causes project delays, scope creep, or unsatisfactory systems.
Quick: Is writing long, detailed paragraphs better than short clear statements for requirements? Commit to yes or no.
Common Belief:Some think more detailed paragraphs always improve clarity.
Tap to reveal reality
Reality:Long paragraphs can confuse; clear, concise statements with acceptance criteria are more effective.
Why it matters:Poor documentation leads to misunderstandings and errors during development and testing.
Expert Zone
1
Non-functional requirements often have hidden dependencies that affect multiple system parts, requiring cross-team coordination.
2
Prioritizing requirements is not just about importance but also feasibility, cost, and risk, which experts balance carefully.
3
Effective requirements gathering includes anticipating future needs to design flexible systems, avoiding costly rewrites.
When NOT to use
Requirements gathering is less effective in highly exploratory or research projects where goals are unclear; in such cases, prototyping or iterative discovery methods like Agile user stories or design sprints are better.
Production Patterns
In real-world projects, requirements gathering is integrated with Agile ceremonies like backlog grooming and sprint planning, continuously refined with stakeholder feedback and automated traceability tools to link requirements to code and tests.
Connections
User Experience Design
Builds-on
Understanding requirements deeply informs UX design by clarifying what users need and expect, ensuring the interface supports both functional and non-functional goals.
Project Management
Supports
Clear requirements enable project managers to plan scope, schedule, and resources accurately, reducing risks and improving delivery predictability.
Legal Contract Drafting
Similar pattern
Both require precise, unambiguous language to define obligations and expectations, preventing disputes and ensuring mutual understanding.
Common Pitfalls
#1Mixing functional and non-functional requirements in the same statements.
Wrong approach:"The system must allow users to login quickly and securely."
Correct approach:"Functional: The system must allow users to login. Non-functional: The login process must complete within 2 seconds and use encryption."
Root cause:Confusing what the system does with how well it does it leads to unclear requirements.
#2Writing vague requirements without measurable criteria.
Wrong approach:"The system should be user-friendly."
Correct approach:"The system should allow new users to complete registration within 5 minutes without assistance."
Root cause:Lack of specific acceptance criteria makes it impossible to verify if the requirement is met.
#3Ignoring stakeholder conflicts and assuming all requirements can coexist.
Wrong approach:Including all requested features without prioritization or trade-offs.
Correct approach:Prioritizing features based on stakeholder value and feasibility, negotiating trade-offs where needed.
Root cause:Assuming unlimited resources and ignoring practical constraints causes project failure.
Key Takeaways
Requirements gathering captures what a system must do (functional) and how well it must do it (non-functional).
Clear separation and documentation of these requirements prevent misunderstandings and guide design and testing.
Effective gathering uses appropriate techniques and involves continuous validation and change management.
Resolving conflicts and prioritizing requirements are essential to deliver a balanced, successful system.
Understanding requirements deeply connects technical work with user needs and business goals.

Practice

(1/5)
1. Which of the following best describes a functional requirement in system design?
easy
A. A usability guideline for user interface design
B. A quality that defines how fast the system should respond
C. A security measure to protect user data
D. A feature that defines what the system should do

Solution

  1. Step 1: Understand functional requirements

    Functional requirements specify the actions or features the system must perform, such as user login or data processing.
  2. Step 2: Differentiate from non-functional requirements

    Non-functional requirements describe qualities like speed, security, or usability, not specific features.
  3. Final Answer:

    A feature that defines what the system should do -> Option D
  4. Quick Check:

    Functional = What system does [OK]
Hint: Functional = what system does; Non-functional = how well [OK]
Common Mistakes:
  • Confusing functional with non-functional requirements
  • Thinking security is a functional requirement
  • Mixing usability with system features
2. Which of the following is a correct example of a non-functional requirement?
easy
A. The system shall respond to user requests within 2 seconds
B. The system shall provide a search feature
C. The system shall store user profiles
D. The system shall allow users to reset their password

Solution

  1. Step 1: Identify non-functional requirements

    Non-functional requirements describe system qualities like performance, reliability, or security.
  2. Step 2: Match options to definitions

    The system shall respond to user requests within 2 seconds specifies response time, a performance metric, which is non-functional. Others describe features (functional).
  3. Final Answer:

    The system shall respond to user requests within 2 seconds -> Option A
  4. Quick Check:

    Non-functional = system qualities [OK]
Hint: Look for qualities like speed or security for non-functional [OK]
Common Mistakes:
  • Choosing features as non-functional requirements
  • Ignoring time or performance constraints
  • Confusing functional and non-functional examples
3. Given these requirements:
  • The system must allow users to upload files.
  • Uploads must complete within 5 seconds.
  • The system must support 1000 concurrent uploads.

Which of these is a functional requirement?
medium
A. Uploads must complete within 5 seconds
B. The system must support 1000 concurrent uploads
C. The system must allow users to upload files
D. The system must ensure uploaded files are available 99.9% of the time

Solution

  1. Step 1: Identify functional requirements

    Functional requirements describe what the system does, such as allowing file uploads.
  2. Step 2: Analyze each option

    A is performance (non-functional). B is capacity/scalability (non-functional). D is availability (non-functional).
  3. Final Answer:

    The system must allow users to upload files -> Option C
  4. Quick Check:

    Functional = system features [OK]
Hint: Features = functional; qualities like speed = non-functional [OK]
Common Mistakes:
  • Selecting performance, capacity, or availability as functional
  • Confusing capacity constraints as functional
  • Ignoring direct feature statements
4. A system requirement states: "The system shall handle 1000 requests per second." Which type of requirement is this and what is wrong if it is listed as functional?
medium
A. Functional; it describes a feature, so it's correct
B. Non-functional; it describes performance, so listing as functional is incorrect
C. Functional; it describes user behavior, so it's correct
D. Non-functional; it describes security, so listing as functional is incorrect

Solution

  1. Step 1: Identify requirement type

    Handling 1000 requests per second is about performance, a non-functional quality.
  2. Step 2: Explain why listing as functional is wrong

    Functional requirements describe features, not performance metrics. Mislabeling causes confusion in design and testing.
  3. Final Answer:

    Non-functional; it describes performance, so listing as functional is incorrect -> Option B
  4. Quick Check:

    Performance = non-functional [OK]
Hint: Performance metrics are non-functional, not features [OK]
Common Mistakes:
  • Calling performance a functional requirement
  • Confusing user behavior with system qualities
  • Ignoring the impact of mislabeling requirements
5. You are gathering requirements for a new messaging app. Which combination below correctly pairs functional and non-functional requirements?
hard
A. Users can send messages; messages must be delivered within 1 second
B. Messages must be encrypted; users can create profiles
C. The app must support dark mode; users can block contacts
D. The app must be available 24/7; Messages must be delivered with 99.99% reliability

Solution

  1. Step 1: Identify functional requirements in options

    Functional requirements describe features like sending messages or creating profiles.
  2. Step 2: Identify non-functional requirements in options

    Non-functional requirements describe qualities like speed, availability, or security.
  3. Step 3: Analyze each option pair

    Users can send messages; messages must be delivered within 1 second pairs sending messages (functional) with delivery speed (non-functional). Others mix two functional or two non-functional requirements incorrectly.
  4. Final Answer:

    Users can send messages; messages must be delivered within 1 second -> Option A
  5. Quick Check:

    Functional + Non-functional = Users can send messages; messages must be delivered within 1 second [OK]
Hint: Functional = features; Non-functional = qualities like speed or availability [OK]
Common Mistakes:
  • Mixing two functional or two non-functional requirements
  • Confusing UI features with system qualities
  • Ignoring delivery time as non-functional
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard