High Level Design (HLD)
Table of Contents
Non Functional Requirements
NFRs define "how it works" not "what it does."
They describe behavior under certain conditions. NFRs ensure the system is not only functional but also optimized for user expectations and operational environments.
Types of Non Functional Requirements
Performance: Speed and responsiveness
- Example: API response time should be <200ms
Scalability: Handling users and data increasing
- Example: Users grow from 100k to 10 million
Availability: Accessible and operational always
- Example: 99.99% uptime (AWS)
Reliability: Failure-free operations
- Example: 1 server fails, backup server comes online
Security: Secure user authentication
- Example: Hashing user passwords and secure communications with HTTPS (SSL/TLS)
Maintainability: Should be easy to modify, debug, upgrade
- Example: Code flexible for future feature implementations and updates
Usability: User-friendly experience
- Example: Kids use YouTube easily
Capacity: How much system can handle data and traffic
- Example: Google Maps handles millions of concurrent users
Compliance: Legal and regulations
- Example: Healthcare systems should follow HIPAA standards and banks follow PCI DSS
Auditability: Track and log
- Example: Bank transactions have complete audit trail
How to Specify NFRs
Good Examples:
- API response time should be < 100ms under 500 concurrent users
- System should handle 1 million requests/day with 99.9% availability
- All sensitive data must be encrypted using AES-256
Bad Examples:
- System should be fast
- System should be secure
- System should handle high traffic