7 Giai Đoạn Của SDLC - Giống Như Xây Nhà Vậy!

7 GIAI ĐOẠN CỦA SDLC - GIỐNG NHƯ XÂY NHÀ VẬY!
Chào các kỹ sư! 7 giai đoạn của SDLC bằng cách so sánh với việc xây nhà - cái mà ai cũng dễ hình dung.
Mở đầu: Tại sao phải có 7 bước?
Bạn có thể hỏi: "Sao phức tạp thế? Code xong chạy được là được rồi!"
Ừ, nếu làm app cá nhân thì OK. Nhưng nếu làm app banking cho 10 triệu users? Skip một bước = mất tiền tỷ đấy!
1. PLANNING - Lên kế hoạch xây nhà
Làm gì?
- Xác định: Xây nhà cho ai? Bao nhiêu người ở? Ngân sách bao nhiêu?
- Kiểm tra: Đất có xây được không? Pháp lý OK chưa?
- Lên timeline: Bao lâu xong? Ai làm gì?
Trong software:
- App này cho ai dùng? Giải quyết vấn đề gì?
- Ngân sách bao nhiêu? Team bao nhiêu người?
- Deadline khi nào? Có khả thi không?
Output: Project Charter (giống như hợp đồng xây nhà)
Sai lầm thường gặp:
- "Cứ làm đi, tính sau" → Hết tiền giữa chừng
- Không tính rủi ro → Mưa bão delay 3 tháng
- Team 3 người nhận dự án cần 10 người → Chết!
2. ANALYSIS - Thiết kế chi tiết ngôi nhà
Làm gì?
- Hỏi kỹ gia chủ: Mấy phòng ngủ? Bếp kiểu gì? Có garage không?
- Vẽ sơ đồ chi tiết từng phòng
- Check xem yêu cầu có mâu thuẫn không
Trong software:
- User cần features gì? Login như nào? Payment ra sao?
- Vẽ wireframe, user flow
- Functional vs Non-functional requirements
Output: SRS Document (bản vẽ chi tiết nhà)
Ví dụ thực tế: App food delivery cần:
- Functional: Tìm quán, order, tracking
- Non-functional: Load < 2 giây, chịu 1000 users cùng lúc
3. DESIGN - Thiết kế kiến trúc
Làm gì?
- Kiến trúc sư vẽ bản thiết kế 3D
- Chọn vật liệu: Gạch gì? Sơn màu gì?
- Thiết kế hệ thống điện nước
Trong software:
- Chọn tech stack: React hay Angular? MySQL hay MongoDB?
- Vẽ system architecture
- Design database schema
Output: Design Document (bản vẽ kiến trúc)
Tips:
- Đừng over-engineering! Nhà 2 người ở đừng xây 10 phòng
- Think about scale: Sau này mở rộng có dễ không?
4. DEVELOPMENT - Xây nhà thôi!
Làm gì?
- Đổ móng, xây tường, lợp mái
- Làm theo đúng bản vẽ
- Báo cáo tiến độ hàng ngày
Trong software:
- Bắt đầu code!
- Follow coding standards
- Daily standup meeting
Output: Source code (ngôi nhà đang xây)
Best practices:
- Git commit thường xuyên (như chụp ảnh tiến độ xây nhà)
- Code review (thợ phụ check thợ chính)
- Unit test (test từng viên gạch chắc chưa)
5. TESTING - Nghiệm thu nhà
Làm gì?
- Check điện nước chạy không?
- Cửa có đóng được không?
- Có chỗ nào nứt, thấm không?
Trong software:
- Test chức năng: Login được không? Payment work không?
- Test performance: 1000 người dùng cùng lúc OK không?
- Test security: Có lỗ hổng không?
Output: Test Report (biên bản nghiệm thu)
Levels of testing:
- Unit test - Test từng viên gạch
- Integration test - Test tường có dính với nhau không
- System test - Test cả ngôi nhà
- UAT - Gia chủ test thử
6. DEPLOYMENT - Dọn vào nhà mới
Làm gì?
- Chuyển đồ đạc vào
- Setup điện nước internet
- Hướng dẫn mọi người dùng thiết bị
Trong software:
- Deploy lên server production
- Setup monitoring, backup
- Training users
Output: Live application! (Nhà ở được rồi!)
Chiến thuật an toàn:
- Soft launch: Cho 10% users dùng trước
- Rollback plan: Có vấn đề thì quay về version cũ
- Monitor 24/7 tuần đầu
7. MAINTENANCE - Bảo trì nhà
Làm gì?
- Sửa chỗ hỏng: Ống nước bể, bóng đèn cháy
- Nâng cấp: Sơn lại nhà, thêm phòng
- Bảo dưỡng định kỳ
Trong software:
- Fix bugs users report
- Thêm features mới
- Update security patches
- Optimize performance
Output: Updates, patches (nhà luôn mới)
Fun fact: 60-80% cost của software là ở Maintenance!
Tổng kết: Skip được bước nào không?
KHÔNG! Mỗi bước đều quan trọng:
- Skip Planning = Xây nhà không phép → Bị phạt
- Skip Analysis = Xây xong gia chủ không thích → Đập đi xây lại
- Skip Design = Xây lung tung → Nhà xấu, không tối ưu
- Skip Testing = Ở được 1 tháng nhà sập → Kiện tụng
- Skip Deployment = Nhà đẹp nhưng không ở được
- Skip Maintenance = Nhà xuống cấp nhanh
Lời khuyên cuối
- Làm đủ 7 bước ngay cả với project nhỏ - Tạo thói quen tốt
- Document everything - Sau này maintain dễ dàng
- Communication is key - Nói chuyện với stakeholders thường xuyên
- Learn from mistakes - Sai ở project này, đừng sai ở project sau
Bài sau: Mình sẽ so sánh Waterfall vs Agile - cái nào phù hợp với project của bạn? Hint: Không phải lúc nào Agile cũng tốt đâu!