Published on

Requirements Gathering in System Design

What Are Requirements?

Requirements define what the system should do and how it should perform. They guide the entire design process.

Two Main Types:

  1. Functional Requirements: Describe specific features or functions the system must support. Example: “Users can upload photos.”

  2. Non-Functional Requirements: Describe system qualities like performance, security, scalability, etc. Example: “The system should handle 10,000 uploads per minute.”


Why Are Requirements Important?

  • Aligns stakeholders’ expectations
  • Helps prioritize features and design decisions
  • Prevents scope creep and costly redesigns later

How to Gather Requirements?

  • Stakeholder Interviews: Talk to users, business teams, engineers.
  • Use Cases: Describe interactions between users and system.
  • User Stories: Short descriptions of user needs (“As a user, I want to…”)
  • Documentation Review: Existing specs, market analysis, competitor research.

Visual: Requirements Flowchart

[Stakeholders]
     |
     v
[Gather Needs & Constraints]
     |
     v
[Define Functional Requirements] ----> [User Stories & Use Cases]
     |
     v
[Define Non-Functional Requirements]
     |
     v
[Prioritize & Validate Requirements]

Quick Exercise:

Pick a simple app you know. Write down 2 functional and 2 non-functional requirements you think are important for it.