Capstone: Design a System
You have covered computer architecture, algorithms, operating systems, networks, software engineering, security, and AI. This capstone ties it all together. Design a real system end-to-end — from requirements to architecture to implementation plan.
Key Concepts
Requirements Engineering
Requirements come before design. Functional requirements: what the system does (users can log in, search products, place orders). Non-functional requirements: how well it does it (99.9% uptime, < 200ms response, 10,000 concurrent users). Missed requirements are the number-one cause of software project failure.
System Architecture Patterns
Monolith: one deployable unit, simple to start, harder to scale. Microservices: small independent services, complex but scalable. Event-driven: services communicate through messages/events, highly decoupled. Client-server: most web apps. Peer-to-peer: no central server (BitTorrent, blockchain). Choose architecture based on scale and team size.
From Design to Deployment
Design phase: requirements, architecture diagrams, API contracts. Development: code, tests, code review. CI/CD pipeline: automated tests run on every commit, successful builds deploy automatically. Monitoring: logs, metrics, alerts. On-call: when the system breaks at 3am, someone needs to fix it. Engineering is a lifecycle, not just coding.
🆕 System Design Canvas
Design a system using the canvas below. Plan every layer before you build.
✅ Check Your Understanding
1. What are non-functional requirements?
2. What is a CI/CD pipeline?
3. Why do requirements matter more than architecture?