Bird
0
0
LLDsystem_design~7 mins

Requirements analysis in LLD - System Design Guide

Choose your learning style9 modes available
Problem Statement
Projects often fail because the final system does not meet user needs or business goals. This happens when requirements are unclear, incomplete, or misunderstood, leading to costly rework and delays.
Solution
Requirements analysis gathers, clarifies, and organizes what users and stakeholders need from the system. It breaks down goals into clear, testable requirements that guide design and development, ensuring the final product matches expectations.
Architecture
┌───────────────┐      ┌───────────────┐      ┌───────────────┐
│ Stakeholders  │─────▶│ Requirements  │─────▶│ System Design │
│ (Users, Biz)  │      │ Analysis Team │      │ & Development │
└───────────────┘      └───────────────┘      └───────────────┘
       ▲                      │                      │
       │                      ▼                      ▼
       └───────────── Feedback Loop ────────────────┘

This diagram shows how stakeholders provide input to the requirements analysis team, which produces clear requirements that guide system design and development, with feedback loops to refine needs.

Trade-offs
✓ Pros
Ensures the system meets actual user and business needs.
Reduces costly changes during development by clarifying requirements early.
Improves communication between stakeholders and developers.
Provides a clear foundation for testing and validation.
✗ Cons
Can be time-consuming and delay project start if overdone.
May require skilled analysts to avoid misinterpretation.
Incomplete or changing requirements still pose risks despite analysis.
Use when building new systems or major features where user needs are complex or unclear, especially for projects with multiple stakeholders or long timelines.
Avoid heavy upfront analysis for small, simple projects or prototypes where speed is more important than completeness.
Real World Examples
Amazon
Amazon uses detailed requirements analysis to align new features with customer expectations and business goals, reducing costly redesigns in their e-commerce platform.
Uber
Uber performs requirements analysis to understand diverse user needs across cities, ensuring their app supports local regulations and rider-driver interactions.
LinkedIn
LinkedIn applies requirements analysis to design new social networking features that meet professional users' needs and privacy concerns.
Code Example
The before code stores requirements as unstructured data, making it hard to manage or prioritize. The after code defines Requirement objects with clear fields and a RequirementsAnalysis class to organize and prioritize them, improving clarity and maintainability.
LLD
### Before: No clear structure for requirements
class Project:
    def __init__(self):
        self.details = {}

project = Project()
project.details['feature'] = 'fast login'

### After: Structured requirements analysis using classes
class Requirement:
    def __init__(self, id, description, priority):
        self.id = id
        self.description = description
        self.priority = priority

class RequirementsAnalysis:
    def __init__(self):
        self.requirements = []
    def add_requirement(self, req):
        self.requirements.append(req)
    def list_requirements(self):
        priority_order = {'High': 1, 'Medium': 2, 'Low': 3}
        return sorted(self.requirements, key=lambda r: priority_order.get(r.priority, 4))

analysis = RequirementsAnalysis()
analysis.add_requirement(Requirement(1, 'User can login within 2 seconds', 'High'))
analysis.add_requirement(Requirement(2, 'Support multi-factor authentication', 'Medium'))

for req in analysis.list_requirements():
    print(f"Req {req.id}: {req.description} (Priority: {req.priority})")
OutputSuccess
Alternatives
Agile User Stories
Focuses on lightweight, iterative requirement gathering through user stories rather than upfront detailed analysis.
Use when: Choose when requirements are expected to evolve rapidly and early delivery of working software is prioritized.
Prototyping
Uses early mockups or prototypes to gather feedback instead of formal requirement documents.
Use when: Choose when visualizing ideas quickly helps clarify needs and reduce misunderstandings.
Summary
Requirements analysis prevents project failure by clarifying user and business needs early.
It organizes goals into clear, testable requirements that guide design and development.
Effective analysis improves communication, reduces rework, and aligns the final system with expectations.