2. Các mô hình phát triển phần mềm
Ở phần trước, bạn đã biết được các bước cơ bản để tạo ra một sản phẩm phần mềm. Với góc nhìn của một nhà khởi nghiệp (gồm 13 bước), và của một nhà phát triển phần mềm (gồm 10 bước).
Tuy nhiên, trong thực tế, chúng ta không nhất thiết phải thực hiện tuần tự từng bước, theo nghĩa: bước 1 phải xong thì mới chuyển qua bước 2; khi đã làm bước 2 rồi thì không được quay lại bước 1. Trong phần này, chúng ta cùng xem qua các mô hình phát triển phần mềm, để chọn một mô hình phù hợp với dự án thực tế.
2.1 Một số mô hình phát triển phần mềm
Ví dụ, một số mô hình phát triển phần mềm:
- Mô hình thác nước.
- Mô hình chữ V.
- Mô hình xoắn ốc.
- Mô hình hợp nhất.
- Mô hình tiếp cận lặp.
- Mô hình nguyên mẫu.
- Mô hình Scrum.
- Mô hình Kanban.
- Mô hình XP.
Dưới đây là mô tả ngắn gọn về đặc điểm và tình huống áp dụng của mỗi mô hình phát triển phần mềm:
[1] Mô hình thác nước (Waterfall Model)
- Đặc điểm: Đây là mô hình tuần tự, các giai đoạn phát triển diễn ra theo một trình tự tuyến tính, từ trên xuống dưới như một dòng thác. Mỗi giai đoạn phải được hoàn thành trước khi chuyển sang giai đoạn tiếp theo và không có sự quay lại.
- Áp dụng: Phù hợp với các dự án có yêu cầu ổn định, đã được xác định rõ ràng ngay từ đầu và không có khả năng thay đổi. Ví dụ: các dự án phát triển phần mềm nhúng hoặc các dự án quốc phòng.
[2] Mô hình chữ V (V-Model)

- Đặc điểm: Là một biến thể của mô hình thác
nước, mô hình chữ V nhấn mạnh việc kiểm thử được thực hiện song song với các
giai đoạn phát triển. Mỗi giai đoạn phát triển sẽ tương ứng với một giai đoạn
kiểm thử cụ thể.
- Áp dụng: Phù hợp cho các dự án yêu cầu độ tin cậy cao, ví dụ như các hệ thống y tế hoặc các hệ thống kiểm soát công nghiệp.
[3] Mô hình xoắn ốc (Spiral Model)
- Đặc điểm: Là mô hình lặp đi lặp lại, tập
trung vào việc quản lý rủi ro. Mỗi vòng xoắn tượng trưng cho một giai đoạn phát
triển, bắt đầu bằng việc lập kế hoạch (plan), sau đó là phân tích rủi ro (risk
analysis), phát triển (engineering), và đánh giá (evaluate).
- Áp dụng: Thích hợp cho các dự án lớn, phức tạp và có nhiều rủi ro. Mô hình này cho phép giảm thiểu rủi ro một cách hiệu quả.
[4] Mô hình hợp nhất (RUP - Rational Unified Process)
- Đặc điểm: RUP là một quy trình phát triển lặp đi lặp lại và hướng đối tượng. Nó chia dự án thành bốn giai đoạn chính: Khởi đầu (Inception), Cụ thể hóa (Elaboration), Xây dựng (Construction) và Chuyển giao (Transition). RUP nhấn mạnh việc lập tài liệu và tuân thủ quy trình.
- Áp dụng: Phù hợp với các dự án lớn, phức tạp, đặc biệt là các dự án phát triển phần mềm hướng đối tượng.
[5] Mô hình tiếp cận lặp (Iterative Model)
- Đặc điểm: Mô hình này chia dự án thành nhiều lần lặp (iteration) nhỏ. Mỗi lần lặp sẽ tạo ra một phiên bản sản phẩm có thể hoạt động được, bổ sung thêm tính năng qua mỗi lần lặp.
- Áp dụng: Dành cho các dự án mà yêu cầu không rõ ràng ngay từ đầu, hoặc khi cần phát hành sản phẩm sớm để lấy ý kiến phản hồi từ người dùng.
[6] Mô hình nguyên mẫu (Prototyping Model)
- Đặc điểm: Tạo ra một phiên bản thử nghiệm (prototype) của sản phẩm để người dùng đánh giá và đưa ra phản hồi. Prototype này không có đầy đủ chức năng nhưng giúp khách hàng hình dung sản phẩm cuối cùng. Sau khi có phản hồi, phiên bản cuối cùng sẽ được xây dựng dựa trên đó.
- Áp dụng: Thích hợp cho các dự án mà yêu cầu của người dùng chưa được xác định rõ ràng, hoặc khi cần một bản demo nhanh để thuyết phục khách hàng.
[7] Mô hình Scrum
- Áp dụng: Phù hợp với các dự án có yêu cầu thường xuyên thay đổi và cần sự linh hoạt, nơi mà sự hợp tác chặt chẽ giữa các thành viên và với khách hàng là yếu tố then chốt.
[8] Mô hình Kanban
- Đặc điểm: Cũng là một mô hình Agile, Kanban tập trung vào việc quản lý và tối ưu hóa quy trình làm việc. Nó sử dụng một bảng trực quan (bảng Kanban) để theo dõi tiến độ công việc, giới hạn số lượng công việc đang thực hiện ở mỗi giai đoạn để tránh tắc nghẽn.
- Áp dụng: Phù hợp cho các dự án bảo trì, hỗ trợ hoặc các dự án có luồng công việc liên tục, không theo chu kỳ cố định.
[9] Mô hình XP (Extreme Programming)
- Đặc điểm: Là một mô hình Agile chú trọng vào sự đơn giản, giao tiếp, phản hồi và sự can đảm. XP bao gồm các thực hành như lập trình theo cặp (pair programming), thiết kế đơn giản và tích hợp liên tục.
- Áp dụng: Lý tưởng cho các dự án nhỏ, yêu cầu có sự thay đổi nhanh chóng và cần sự giao tiếp liên tục trong đội ngũ.
2.2 Bài tập
Bài tập 2a.
- Lựa chọn một mô hình phát triển phần mềm cho dự án của bạn (hoặc nhóm).
- Giải thích tại sao lại chọn mô hình.
- Viết: quy trình, tiến độ, nguồn lực, thời gian, công cụ, ngôn ngữ, phần mềm để làm dự án của bạn theo mô hình đã chọn.
-----