Requirements discovery
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
| 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
We need microservices, Redis, Kafka and a NoSQL database.
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
The redirect service must be very fast and highly available.
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
Choosing Technology Before Understanding the Problem
Database, cache and queue decisions should follow from requirements, access patterns, scale and failure expectations.
Asking Only What Features Are Needed
Discover performance, security, availability, retention, recovery and operational requirements as well.
Using Vague Quality Terms
Words such as fast, scalable, reliable and secure require measurable definitions.
Ignoring Failure Scenarios
Every important journey should define what the user observes when validation, storage or an external dependency fails.
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.
Leaving Scope Boundaries Implicit
State what the system owns, what belongs to external services and what is excluded from the current release.
Treating Assumptions as Facts
Record unverified statements as assumptions with owners and validation evidence.
Ignoring Existing Systems
Existing interfaces, workflows, data formats and operational procedures can introduce important compatibility constraints.
Collecting Requirements from Only One Stakeholder
Different users, operators and governance roles can reveal conflicting needs and hidden constraints.
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
- Write the problem statement.
- Identify at least five stakeholder types.
- Define the system boundary.
- Write five functional requirements.
- Write five non-functional requirement questions.
- Define the main send-notification journey.
- Describe behaviour when a delivery provider is unavailable.
- List data that must be stored.
- Identify assumptions that require validation.
- 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
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.
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.
What is a functional requirement?
A functional requirement defines a capability, operation or observable behaviour the system must provide.
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.
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.
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.
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.
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.
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.
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.