Software Lifecycle
Waterfall (Mô hình thác nước):

requirements ⇒ design ⇒ implementation ⇒ testing ⇒ deployment ⇒ maintenance
-
Đặc điểm:
- Các giai đoạn được xác định rõ ràng và tuần tự: Yêu cầu -> Thiết kế -> Thực hiện -> Kiểm thử -> Triển khai -> Bảo trì.
- Mỗi giai đoạn phải hoàn thành trước khi chuyển sang giai đoạn tiếp theo.
- Thay đổi trong quá trình thực hiện rất khó khăn và tốn kém.
-
Ưu điểm:
- Dễ hiểu và dễ quản lý, đặc biệt với các dự án nhỏ và đơn giản.
- Tài liệu rõ ràng và đầy đủ.
- Dễ dàng đo lường tiến độ.
-
Nhược điểm:
- Không linh hoạt, khó thích ứng với thay đổi.
- Rủi ro cao vì các vấn đề chỉ được phát hiện ở giai đoạn cuối.
- Không khuyến khích sự tương tác giữa các bên liên quan.


Agile (Linh hoạt):
- Đặc điểm:
- Chia dự án thành nhiều giai đoạn nhỏ (sprint) với thời gian cố định (thường 2-4 tuần).
- Mỗi sprint bao gồm tất cả các giai đoạn: lập kế hoạch, thực hiện, kiểm thử và đánh giá.
- Tập trung vào việc giao sản phẩm có giá trị cho khách hàng sớm và thường xuyên.
- Khuyến khích sự thay đổi và thích ứng với phản hồi của khách hàng.
- Ưu điểm:
- Linh hoạt và thích ứng cao với thay đổi.
- Giảm thiểu rủi ro nhờ việc phát hiện và giải quyết vấn đề sớm.
- Tăng cường sự tương tác và hợp tác giữa các bên liên quan.
- Tập trung vào việc giao sản phẩm có giá trị cho khách hàng.
- Nhược điểm:
- Yêu cầu sự tham gia tích cực và liên tục của khách hàng.
- Khó khăn trong việc đo lường tiến độ tổng thể của dự án.
- Có thể dẫn đến sự thiếu tập trung và mất kiểm soát nếu không được quản lý tốt.
Agilefall (Kết hợp Agile và Waterfall):
- Đặc điểm:
- Kết hợp các yếu tố của cả Agile và Waterfall.
- Thường sử dụng Waterfall cho các giai đoạn đầu (yêu cầu, thiết kế) và Agile cho các giai đoạn sau (thực hiện, kiểm thử, triển khai).
- Ưu điểm:
- Tận dụng được ưu điểm của cả hai phương pháp.
- Linh hoạt hơn Waterfall nhưng vẫn đảm bảo được sự kiểm soát nhất định.
- Phù hợp với các dự án có yêu cầu ban đầu rõ ràng nhưng có thể thay đổi trong quá trình thực hiện.
- Nhược điểm:
- Yêu cầu sự hiểu biết sâu sắc về cả Agile và Waterfall.
- Có thể dẫn đến sự phức tạp trong quản lý dự án.