Thu Thập Yêu Cầu trong System Design

Tổng Quan

Thu thập yêu cầu là bước đầu tiên và quan trọng nhất trong quá trình thiết kế hệ thống. Việc hiểu rõ yêu cầu giúp định hướng kiến trúc và công nghệ phù hợp.

Các Loại Yêu Cầu

1. Functional Requirements (Yêu cầu chức năng)

- Những gì hệ thống cần làm
- Các tính năng cụ thể
- User stories và use cases
- Business logic

2. Non-Functional Requirements (Yêu cầu phi chức năng)

Performance:
- Latency: < 100ms cho read operations
- Throughput: 10,000 requests/second
- Availability: 99.9% uptime

Scalability:
- Support 1M active users
- Handle traffic spikes (10x normal)

Consistency:
- Eventual consistency vs Strong consistency
- Data consistency requirements

Quy Trình Thu Thập Yêu Cầu

Bước 1: Clarifying Questions

1. Scale và Usage Patterns:
   - Số lượng users?
   - Read vs Write ratio?
   - Peak traffic patterns?

2. Features và Priorities:
   - Core features cần thiết?
   - Nice-to-have features?
   - Future requirements?

3. Constraints:
   - Budget limitations?
   - Technology constraints?
   - Time to market?

Bước 2: Define Success Metrics

# Ví dụ metrics cho social media app
class SuccessMetrics:
    def __init__(self):
        self.performance = {
            'response_time': '< 200ms',
            'throughput': '100k posts/second',
            'availability': '99.95%'
        }

        self.business = {
            'daily_active_users': '10M',
            'user_engagement': '30 min/day',
            'content_creation': '1M posts/day'
        }

Kỹ Thuật Thu Thập Yêu Cầu

1. Stakeholder Interviews

  • Product managers
  • Engineering teams
  • End users
  • Business stakeholders

2. Requirements Documentation

## User Story Template
As a [user type]
I want [functionality]
So that [benefit/value]

Acceptance Criteria:
- [ ] Condition 1
- [ ] Condition 2
- [ ] Condition 3

3. Priority Matrix

High Impact, Low Effort: Quick wins
High Impact, High Effort: Major projects
Low Impact, Low Effort: Fill-in tasks
Low Impact, High Effort: Avoid

Best Practices

1. Be Specific

❌ "System should be fast"
✅ "API response time < 100ms for 95th percentile"

❌ "Handle many users"  
✅ "Support 1M concurrent users"

2. Consider Trade-offs

Consistency vs Availability
Performance vs Cost
Security vs Usability
Flexibility vs Simplicity

3. Document Assumptions

- Users primarily access from mobile devices
- Peak traffic occurs during 7-9 PM
- Data retention required for 7 years
- Global deployment not required initially

Common Pitfalls

1. Over-Engineering

  • Building for scale that may never come
  • Premature optimization
  • Complex solutions for simple problems

2. Under-Specifying

  • Vague performance requirements
  • Missing edge cases
  • Unclear success criteria

3. Changing Requirements

  • Scope creep during development
  • Lack of change management process
  • Poor stakeholder alignment

Ví Dụ Thực Tế

Chat Application Requirements

Functional:
- Send/receive messages
- Group chats (max 100 members)
- File sharing (max 10MB)
- Message history
- Online/offline status

Non-Functional:
- 100M registered users
- 10M daily active users
- Message delivery < 1 second
- 99.9% availability
- End-to-end encryption

Tools và Templates

Requirements Gathering Tools

  • User story mapping
  • Wireframes và mockups
  • API specifications
  • Data models
  • Use case diagrams

Documentation Templates

1. Requirements Specification Document
2. Technical Requirements Document
3. Architecture Decision Records
4. API Design Documents
5. Data Flow Diagrams

Next Steps

Nội dung này sẽ được mở rộng thêm với: - Case studies chi tiết - Requirements tracing methods - Agile requirements gathering - Stakeholder management techniques - Requirements validation strategies