Table of Contents

    Requirements discovery

    SYSTEM DESIGN FOUNDATIONS

    Requirements Discovery in System Design

    Learn how to transform an unclear product idea into specific, measurable and testable design inputs before selecting databases, caches, queues, APIs or deployment technologies.

    Introduction

    Requirements discovery is the structured process of identifying, clarifying, documenting and validating what a system must achieve. It happens before detailed architecture decisions are made.

    A system-design request often begins as a short and ambiguous statement:

    Design a URL shortener.
    Design a notification service.
    Design an online marketplace.
    Design a chat application.
    Design a video-streaming platform.

    These statements name a product category, but they do not contain enough information to produce a defensible architecture. A designer must discover users, workflows, data, scale, quality expectations, constraints, failure behaviour and scope boundaries.

    Core idea: System design should begin with the problem and its requirements, not with databases, microservices, caches or other technologies.

    In your System Design.xlsx curriculum, Requirements Discovery is the first topic under System Design Process and Estimation. The module combines requirements, constraints, request flow, high-level diagrams, quality attributes and scale estimation before component selection. 【1-c3ca5d】

    Prerequisites

    # Prerequisite Why It Is Needed
    1 Basic software-system knowledge Requirements describe how users, applications and external systems interact.
    2 Client-server model Many requirements involve clients sending requests to backend services.
    3 Basic database knowledge Data requirements eventually influence storage and access patterns.
    4 Basic networking concepts Latency, bandwidth and connectivity constraints affect system behaviour.
    5 Clear communication Discovery depends on asking precise questions and validating interpretations.

    Purpose of Requirements Discovery

    Requirements discovery helps a system designer determine:

    • What problem the system must solve
    • Who will use or interact with the system
    • Which workflows must be supported
    • Which data enters, leaves and remains in the system
    • How well the system must perform
    • Which failures must be tolerated
    • Which legal, technical or business constraints apply
    • Which features are essential for the first release
    • Which features are outside the current scope
    • How successful behaviour will be verified

    Requirements gathering is commonly described as identifying and recording what users and stakeholders want a system to do, including scope, constraints, functional requirements and non-functional requirements. 【2-65d6bc】

    Requirements Discovery Workflow

    Discovery Flow
    problem → stakeholders → scope → user journeys → requirements → constraints → priorities → validation
    Stage Primary Question Expected Output
    Problem discovery What real problem needs to be solved? Problem statement and desired outcome
    Stakeholder discovery Who uses, funds, operates or depends on the system? Stakeholder map
    Scope discovery What is inside and outside the system boundary? Scope statement and context diagram
    Journey discovery What must each actor accomplish? User journeys and use cases
    Quality discovery How well must the workflows perform? Measurable non-functional requirements
    Constraint discovery Which conditions restrict the possible solution? Constraint and assumption register
    Prioritization Which requirements are essential now? Prioritized requirement backlog
    Validation Did the team understand the requirements correctly? Reviewed and accepted requirements

    Start with the Problem, Not the Solution

    Solution-first statement
    We need microservices, Redis, Kafka and a NoSQL database.
    Problem-first statement
    Users need short, shareable links that redirect reliably to long destination
    URLs. The system must support high redirect traffic, prevent abusive links and
    provide basic usage statistics.

    The first statement locks the design into technologies before the problem has been measured. The second identifies user value and design pressures while leaving room to evaluate alternatives.

    Problem Statement Template

    Problem:
    What difficulty, delay, risk or unmet need exists?
    
    Affected users:
    Who experiences the problem?
    
    Current process:
    How is the work performed today?
    
    Business impact:
    What cost, delay, risk or missed opportunity results?
    
    Desired outcome:
    What improvement should the new system provide?
    
    Success evidence:
    How will stakeholders know that the problem has been addressed?

    Identify Stakeholders

    A stakeholder is a person, group or external party that uses, funds, operates, supports, regulates or is affected by the system.

    Stakeholder Type Typical Interest Discovery Questions
    End users Usability, speed and successful completion of tasks What are the main workflows and current pain points?
    Business owners Business value, cost, scope and delivery priority Which outcomes define success?
    Product owners Feature behaviour and release sequence Which capabilities are required in the first release?
    Engineers Feasibility, dependencies and maintainability Which technical limitations or integrations matter?
    Operations teams Deployment, monitoring, recovery and support How will failures be detected and handled?
    Security teams Identity, access, abuse and data protection Which threats, trust boundaries and controls apply?
    Compliance teams Retention, audit, privacy and regulatory obligations Which records and controls must be maintained?
    External systems Interface contracts and availability dependencies Which data and operations are exchanged?

    Discovery rule: Do not collect requirements only from the project sponsor. Include people who perform the workflow, operate the system, manage failures and depend on its outputs.

    Define the System Boundary

    The system boundary distinguishes responsibilities owned by the proposed system from responsibilities owned by users or external services.

    Example: URL Shortener Boundary

    Inside the system:
    - Accept a long URL
    - Generate or accept a short alias
    - Store the mapping
    - Redirect a visitor
    - Disable an invalid or abusive link
    - Record basic access events
    
    Outside the system:
    - Render the destination website
    - Guarantee the destination website's availability
    - Operate third-party identity providers
    - Control external social-media platforms
    - Repair invalid destination content

    Explicitly stating what is outside the system reduces scope drift and prevents the architecture from silently assuming responsibilities that belong to another service.

    Discover User Journeys

    A user journey describes a concrete path from an actor's goal to an observable result.

    Journey Template

    Actor:
    Who initiates the journey?
    
    Trigger:
    What event starts it?
    
    Preconditions:
    What must already be true?
    
    Main flow:
    What actions occur in the normal case?
    
    Alternative flow:
    What happens when a decision differs?
    
    Failure flow:
    What can fail and what should the user observe?
    
    Result:
    What state or output exists after completion?

    Example Journey

    Actor:
    Registered user
    
    Trigger:
    The user submits a long URL.
    
    Preconditions:
    The account is active and the submitted URL uses an allowed scheme.
    
    Main flow:
    1. The system validates the URL.
    2. The system generates a unique short code.
    3. The system stores the short-code mapping.
    4. The system returns the short URL.
    
    Alternative flow:
    The user supplies an available custom alias.
    
    Failure flow:
    The URL is malformed, the custom alias is already used, or the request exceeds
    an applicable limit.
    
    Result:
    A valid short URL is returned, or a descriptive error is provided without
    creating a partial mapping.

    Functional Requirements

    Functional requirements define the behaviours, capabilities and operations the system must provide. In simple terms, functional requirements describe what the system must do. 【3-31a261】【4-6f1c4c】

    URL Shortener Functional Requirements

    ID Functional Requirement Priority
    FR-01 The system shall create a short URL for a valid destination URL. Must
    FR-02 The system shall redirect a valid short code to its destination URL. Must
    FR-03 The system shall reject a malformed or unsupported destination URL. Must
    FR-04 The system shall allow an authenticated user to deactivate an owned link. Should
    FR-05 The system shall return a not-found response for an unknown short code. Must
    FR-06 The system shall support an optional expiration time for a short link. Should
    FR-07 The system shall reject an unavailable custom alias. Could
    FR-08 The system shall record a redirect event for reporting when analytics is enabled. Could

    Functional Discovery Questions

    • Who can create, read, update or delete data?
    • Which actions require authentication?
    • What information is required for each operation?
    • What does the system return after success?
    • What happens when a record does not exist?
    • Can users repeat the same operation safely?
    • Which actions must be reversible?
    • Which reports, searches or filters are required?
    • Which external systems participate in the workflow?
    • What should happen when an external dependency fails?

    Non-functional Requirements

    Non-functional requirements define quality attributes and operating constraints. They describe how well the system must work, including performance, reliability, security, usability, scalability and maintainability. 【3-31a261】【4-6f1c4c】

    Category Questions Possible Measurement
    Performance How quickly must an operation complete? Response-time percentile under a stated load
    Throughput How many operations must be processed? Requests or events per second
    Availability When must the service be usable? Availability target over a defined period
    Reliability What failures or incorrect results are unacceptable? Failure rate or successful-operation rate
    Durability Which accepted data must survive failures? Maximum acceptable data loss
    Scalability How much growth must the design accommodate? Expected users, data volume or traffic growth
    Security Who can perform sensitive actions? Authentication, authorization and audit criteria
    Privacy Which personal data is collected and retained? Retention, access and deletion rules
    Consistency How quickly must users observe the latest state? Strong, eventual or workflow-specific guarantee
    Recoverability How quickly must service and data be restored? Recovery objectives and tested procedures
    Observability How will operators detect and diagnose failures? Required logs, metrics, traces and alerts
    Cost Which financial limits influence the design? Budget or cost per operation

    Make Quality Requirements Measurable

    Ambiguous requirement
    The redirect service must be very fast and highly available.
    Measurable requirement template
    Under:
    <defined workload and environment>
    
    The system shall:
    <perform a specified operation>
    
    Within:
    <measurable target and unit>
    
    Measured at:
    <defined boundary or observation point>
    
    Excluding:
    <documented exclusions, if any>

    Exact values must come from stakeholders, product evidence, existing measurements or an explicitly documented design assumption. Do not invent a target merely because it is common in another system.

    Constraints

    A constraint limits the solution space. Unlike a requirement that describes desired behaviour, a constraint describes a condition the solution must respect.

    Constraint Type Examples
    Technical Required protocol, supported platform, legacy integration or approved runtime
    Business Budget, delivery scope, licensing or operating model
    Regulatory Privacy, residency, retention or audit obligations
    Organizational Available skills, support ownership or approved technology standards
    Operational Deployment window, recovery process or monitoring platform
    Compatibility Existing clients, API versions or data formats that must continue working

    Assumptions vs Constraints

    Concept Meaning Required Action
    Requirement A capability or quality the system must provide Design and verify it
    Constraint A confirmed limit the design must respect Document its architectural effect
    Assumption An unconfirmed statement temporarily treated as true Assign an owner and validate it
    Dependency An external capability required by the solution Define its contract and failure behaviour
    Risk An uncertain event that could affect delivery or operation Assess and mitigate it

    Assumption Register

    Assumption ID:
    A-01
    
    Statement:
    Redirect traffic is expected to be substantially greater than link-creation
    traffic.
    
    Source:
    Initial product discussion
    
    Impact if false:
    The read-optimized design may not suit the actual workload.
    
    Validation owner:
    Product analytics owner
    
    Validation evidence:
    Traffic report or approved forecast
    
    Status:
    Open / Confirmed / Rejected

    Requirements Discovery Techniques

    Requirements elicitation can use stakeholder interviews, surveys, observation, workshops, brainstorming, document analysis, use cases, role-playing and prototypes. No single technique is guaranteed to uncover every relevant requirement. 【5-bf4ff0】

    Technique Best Used For Important Limitation
    Interviews Detailed goals, pain points, rules and exceptions One person's description may not represent the complete process
    Workshops Cross-functional alignment and conflict resolution Requires preparation and balanced facilitation
    Observation Real workflows and tacit operational knowledge Observed behaviour may not reveal every exceptional case
    Document analysis Policies, interfaces, reports and existing procedures Documents can be incomplete or outdated
    Surveys Input from a broad user population Responses can lack context and depth
    Prototypes Clarifying interactions and uncertain workflows Stakeholders may mistake a prototype for the final implementation
    Existing-system analysis Current data, workflows, errors and integration points Existing behaviour may include defects that should not be preserved
    Event analysis Triggers, state changes and asynchronous workflows Can miss broader user goals without journey context

    Effective Discovery Questions

    Business Questions

    • What problem should this system solve?
    • Who experiences the problem?
    • What happens if the problem is not solved?
    • Which outcome would make the project successful?
    • Which capabilities are mandatory for the first release?

    User Questions

    • Who are the primary and secondary users?
    • What starts each user journey?
    • What information does the user provide?
    • What result does the user expect?
    • Which errors occur most frequently today?
    • Which actions require approval or escalation?

    Data Questions

    • Which entities must the system store?
    • Which fields uniquely identify each entity?
    • Where does the data originate?
    • How frequently is the data created, read, updated or deleted?
    • How long must the data be retained?
    • Can data be corrected or permanently deleted?
    • Which data is sensitive or regulated?

    Scale Questions

    • How many active users are expected?
    • What are the average and peak request rates?
    • Which operations dominate the workload?
    • How large is a typical request, response or stored record?
    • How quickly is traffic or data volume expected to grow?
    • Are workloads global, regional or concentrated in a particular period?

    Reliability and Security Questions

    • Which operations must continue during partial failure?
    • What data loss, if any, is acceptable?
    • Can an operation be retried safely?
    • Which actions require authentication and authorization?
    • What abuse scenarios should be prevented?
    • Which events require an audit record?
    • How should operators detect and diagnose failures?

    Prioritize Requirements

    Requirements should be prioritized because time, cost and implementation capacity are limited.

    Priority Meaning
    Must The release cannot satisfy its purpose without the requirement
    Should Important, but a temporary workaround or later delivery is possible
    Could Valuable when capacity permits
    Will not now Explicitly excluded from the current scope

    Priority should reflect business value, risk, dependency and release necessity. It should not simply reflect which stakeholder speaks most frequently.

    Validate Requirements

    A high-quality requirement should be:

    • Necessary
    • Clear
    • Consistent
    • Complete enough for its purpose
    • Feasible
    • Measurable
    • Testable
    • Traceable
    • Prioritized
    • Owned

    Requirement Template

    Requirement ID:
    <Unique identifier>
    
    Title:
    <Short descriptive name>
    
    Statement:
    The system shall <specific capability or quality>.
    
    Reason:
    <Business or user need>
    
    Source:
    <Stakeholder, document, policy or analysis>
    
    Priority:
    Must / Should / Could / Will not now
    
    Acceptance criteria:
    <Observable conditions proving completion>
    
    Dependencies:
    <Related system, requirement or decision>
    
    Assumptions:
    <Unconfirmed inputs affecting the requirement>
    
    Owner:
    <Accountable role>
    
    Status:
    Draft / Reviewed / Approved / Changed / Retired

    Acceptance Criteria

    Acceptance criteria convert a requirement into observable verification conditions.

    Requirement:
    The system shall create a short link for a valid destination URL.
    
    Given:
    The destination URL uses an allowed scheme and the requested alias is available.
    
    When:
    The client submits the create-link request.
    
    Then:
    The system stores one mapping.
    The response contains the generated short URL.
    A repeated request using the documented idempotency mechanism does not create
    an unintended duplicate.
    No partial record remains when the operation fails.

    Requirements Traceability

    Traceability connects the original need to design decisions, implementation components and verification evidence.

    Requirement Design Impact Component Test Status
    FR-01 Create-link request flow Link service TC-LINK-001 Draft
    FR-02 Read-optimized redirect path Redirect service TC-REDIRECT-001 Draft
    NFR-01 Capacity and caching decision Redirect path PT-REDIRECT-001 Target pending
    SEC-01 Abuse validation and blocking Safety service ST-ABUSE-001 Draft

    Complete URL Shortener Discovery Example

    Problem

    Users need compact links that can be shared conveniently and redirected to longer destination URLs.

    Actors

    • Anonymous link creator
    • Registered link owner
    • Redirect visitor
    • System operator
    • Abuse-review process

    Core Functional Scope

    • Create a short link
    • Redirect a short code
    • Reject invalid destinations
    • Return a clear result for unknown or expired links
    • Allow an owner to deactivate an owned link

    Initial Out-of-scope Items

    • Rendering destination content
    • Guaranteeing external website availability
    • Advanced marketing campaigns
    • Complex attribution reporting
    • Custom domain management

    Quality Questions Requiring Answers

    • What redirect latency is acceptable?
    • What availability target applies to redirects?
    • What availability target applies to link creation?
    • How long should a mapping remain valid by default?
    • How quickly must deactivated links stop redirecting?
    • How much analytics delay is acceptable?
    • What protection is required against malicious links or automated abuse?

    Scale Inputs Requiring Evidence

    • Average links created per day
    • Peak link-creation requests per second
    • Average redirects per day
    • Peak redirect requests per second
    • Average destination URL length
    • Retention period
    • Expected growth

    Open Decisions

    • Whether anonymous creation is supported
    • Whether custom aliases are supported
    • Whether links expire automatically
    • Whether analytics is required in the first release
    • Whether one short code can map to a changing destination
    • Whether redirects must work during analytics failure

    Requirements Discovery Output

    A completed discovery activity should produce:

    • Problem statement
    • Stakeholder list
    • System context and boundary
    • In-scope and out-of-scope lists
    • Functional requirements
    • Non-functional requirements
    • Constraints
    • Assumptions and open questions
    • User journeys and failure flows
    • Data and access-pattern summary
    • Scale inputs
    • Requirement priorities
    • Acceptance criteria
    • Traceability matrix

    Common Requirements Discovery Mistakes

    1

    Choosing Technology Before Understanding the Problem

    Database, cache and queue decisions should follow from requirements, access patterns, scale and failure expectations.

    2

    Asking Only What Features Are Needed

    Discover performance, security, availability, retention, recovery and operational requirements as well.

    3

    Using Vague Quality Terms

    Words such as fast, scalable, reliable and secure require measurable definitions.

    4

    Ignoring Failure Scenarios

    Every important journey should define what the user observes when validation, storage or an external dependency fails.

    5

    Confusing Requirements with Solutions

    “Use Kafka” is a design decision. “Accepted events must not block the main request path” is a requirement that can be evaluated against several solutions.

    6

    Leaving Scope Boundaries Implicit

    State what the system owns, what belongs to external services and what is excluded from the current release.

    7

    Treating Assumptions as Facts

    Record unverified statements as assumptions with owners and validation evidence.

    8

    Ignoring Existing Systems

    Existing interfaces, workflows, data formats and operational procedures can introduce important compatibility constraints.

    9

    Collecting Requirements from Only One Stakeholder

    Different users, operators and governance roles can reveal conflicting needs and hidden constraints.

    10

    Failing to Validate the Result

    Discovery notes must be reviewed and converted into agreed, testable statements.

    Requirements Review Checklist

    Discovery Readiness

    • The problem is stated without prescribing a technology.
    • Primary and secondary stakeholders are identified.
    • The system boundary is explicit.
    • In-scope and out-of-scope capabilities are documented.
    • Main user journeys are described.
    • Alternative and failure flows are included.
    • Functional requirements use clear action statements.
    • Non-functional requirements use measurable targets or identify pending targets.
    • Data entities and access patterns are listed.
    • Average and peak workload inputs are distinguished.
    • Security and privacy requirements are included.
    • External dependencies and their failure behaviour are recorded.
    • Constraints are separated from assumptions.
    • Every important assumption has a validation owner.
    • Requirements are prioritized.
    • Acceptance criteria are observable and testable.
    • Conflicting requirements have been resolved or escalated.
    • Requirements are traceable to design and testing.
    • Stakeholders have reviewed the documented interpretation.

    Practice Exercise

    Perform requirements discovery for a notification service that can deliver email, SMS and mobile push notifications.

    Tasks

    1. Write the problem statement.
    2. Identify at least five stakeholder types.
    3. Define the system boundary.
    4. Write five functional requirements.
    5. Write five non-functional requirement questions.
    6. Define the main send-notification journey.
    7. Describe behaviour when a delivery provider is unavailable.
    8. List data that must be stored.
    9. Identify assumptions that require validation.
    10. Separate must-have features from later features.

    Model Functional Requirements

    FR-01:
    The system shall accept a notification request containing a recipient,
    channel, template reference and template data.
    
    FR-02:
    The system shall validate that the requested channel is supported.
    
    FR-03:
    The system shall generate channel-specific content from an approved template.
    
    FR-04:
    The system shall record the current delivery status.
    
    FR-05:
    The system shall expose the delivery status to an authorized requester.

    Model Discovery Questions

    • May one request target several channels?
    • What delivery delay is acceptable for each notification category?
    • Are duplicate notifications acceptable after a retry?
    • How long must delivery status be retained?
    • Which failures should trigger retries?
    • How many retry attempts are permitted?
    • Which notifications require user consent?
    • What happens when one provider is unavailable?
    • Which delivery events require an audit trail?
    • Who may create or modify message templates?

    Frequently Asked Questions

    1

    What is requirements discovery?

    Requirements discovery is the structured activity of identifying, clarifying, documenting and validating the needs, behaviours, qualities, constraints and assumptions that guide a system design.

    2

    Why must requirements come before architecture?

    Architecture decisions should respond to required workflows, scale, quality targets, constraints and failure behaviour. Without those inputs, technology selection is largely speculative.

    3

    What is a functional requirement?

    A functional requirement defines a capability, operation or observable behaviour the system must provide.

    4

    What is a non-functional requirement?

    A non-functional requirement defines a quality attribute or operating condition such as performance, reliability, security, scalability or maintainability.

    5

    What is the difference between a constraint and an assumption?

    A constraint is a confirmed limit the design must respect. An assumption is an unconfirmed statement being treated as true until it is validated.

    6

    How many requirements should be collected?

    There is no universal number. Collect enough to define the agreed scope, critical workflows, quality expectations, data rules, constraints and verification conditions without producing unnecessary detail.

    7

    Should requirements mention technology?

    A confirmed platform or integration can be documented as a constraint. Otherwise, requirements should usually describe the needed outcome while allowing the design to compare implementation alternatives.

    8

    How are conflicting requirements handled?

    Record the conflict, identify the affected stakeholders, compare business value and design impact, and obtain an explicit prioritization or decision.

    9

    When is requirements discovery complete?

    Discovery is sufficiently complete for design when the system boundary, priority workflows, important quality targets, constraints, assumptions and acceptance criteria are clear enough to compare architecture options. Requirements can continue to evolve through controlled review.

    10

    What comes after requirements discovery?

    The next steps are to classify functional and non-functional requirements, confirm constraints, map the main request flows and begin scale estimation before selecting major components.

    Key Takeaway

    Requirements discovery converts a vague product idea into reliable system design inputs. Start with the problem, identify stakeholders, define the system boundary and walk through concrete user journeys. Separate functional behaviour from measurable quality requirements, document constraints and assumptions, prioritize the required scope and attach acceptance criteria. Only after these inputs are understood should the design select APIs, databases, caches, queues and deployment patterns.