Mô hình thác nước (Waterfall) là gì? Phân biệt Agile và Waterfall

>> Hãy đảm bảo bạn đã hiểu rõ mô hình Agile – 1 mô hình phát triển phần mềm hiện đại trước khi đọc bài viết này! 

Mô hình thác nước (Waterfall model) đã xuất hiện khá lâu trong cách làm việc của các tổ chức từ nhỏ đến lớn. Qua rất nhiều năm áp dụng, mô hình này đã làm nổi bật lên được nhiều đặc điểm khác nhau, hãy cùng tìm hiểu kĩ hơn về Waterfall để so sánh với Agile bạn nhé.

Mô hình thác nước (Waterfall) là gì?

Mô hình thác nước (Waterfall model) là mô hình của quy trình phát triển phần mềm được giới thiệu lần đầu tiên bởi tiến sĩ Winston W.Royce trong một bài báo công bố năm 1970. Trong mô hình này, quá trình phát triển phần mềm được chia thành các giai đoạn khác nhau và thực hiện tuần tự, đầu ra của giai đoạn này là đầu vào của giai đoạn tiếp theo và không có sự chồng chéo. Việc tiếp cận tuần tự từ trên xuống dưới như vậy giống như dòng chảy của một thác nước nên mô hình này được đặt tên là mô hình thác nước.

Trên thực tế, đây là mô hình đầu tiên được sử dụng rộng rãi trong ngành công nghiệp phần mềm. Tuy nhiên, trong những năm gần đây, mô hình này đang bộc lộ nhiều bất cập và dần bị thay thế bởi các phương pháp phát triển phần mềm linh hoạt (Agile Software Development).

–> Tham khảo khi nào Waterfall và khi nào Agile trước khi quyết định áp dụng cho dự án của tổ chức!

Các giai đoạn của mô hình thác nước Waterfall ?

Một mô hình thác nước đơn giản gồm có 6 giai đoạn: phân tích yêu cầu, thiết kế hệ thống, xây dựng (viết mã), kiểm thử, triển khai và bảo trì.

1/ Phân tích yêu cầu

Đây là pha đầu tiên trong các dự án waterfall với mục đích xác định và phân tích tất cả các nhu cầu kinh doanh, các yêu cầu từ người dùng đối với sản phẩm, các ràng buộc và rủi ro đi kèm. 

2/ Thiết kế hệ thống

Từ những yêu cầu được xác định trong bước 1, nhóm dự án tạo ra thiết kế cho sản phẩm để đáp ứng tất cả các yêu cầu đó, bao gồm cả thiết kế phần cứng, thiết kế phần mềm, ngôn ngữ lập trình, lưu trữ dữ liệu. Đây đồng thời cũng là phần giúp bạn xác định dự án sẽ hữu ích thế nào đối với người dùng. Nếu bước này gặp vấn đề thì rất có thể phải quay lại bước 1 để thực hiện lại.

3/ Xây dựng

Khi hệ thống đã được thiết kế đầy đủ và cụ thể, các module chức năng của sản phẩm sẽ được thực hiện trong giai đoạn này để đáp ứng các tiêu chuẩn đã thực hiện ở bước trước. Đây là giai đoạn mà các nhiệm vụ công việc được thảo luận ở bước 2 được tiến hành và cũng là giai đoạn mà đội ngũ lập trình sẽ là nguồn lực chủ yếu được sử dụng.

4/ Kiểm thử hệ thống

Ở giai đoạn này, thường sẽ là công việc của đội ngũ QA và tester nhằm tìm kiếm và báo cáo các lỗi trong hệ thống cần được xử lý. Việc này bao gồm tất cả các hoạt động kiểm thử tính năng và phi tính năng. Đây là giai đoạn cực kỳ quan trọng mà nhóm không được phép mắc sai lầm nhằm đảm bảo hệ thống được kiểm tra đầy đủ, các mục tiêu thiết kế và chức năng người dùng yêu cầu được đáp ứng và các nhu cầu kinh doanh được giải quyết.

5/ Triển khai hệ thống

Đây là giai đoạn mà sản phẩm được triển khai vào môi trường mà người dùng có thể bắt đầu sử dụng được. Hay nói cách khác là giai đoạn mà sản phẩm thực sự đi vào hoạt động. Trong giai đoạn này, nhóm dự án cần đảm bảo các yếu tố như: môi trường đang hoạt động, không có lỗi trên server, các tiêu chí test đã được đáp ứng hoặc kiểm tra lại môi trường sau khi ứng dụng được triển khai để đảm bảo sản phẩm không gặp vấn đề….

6/ Bảo trì hệ thống

Đây là giai đoạn cuối cùng của quá trình, trong đó nhóm dự án tập trung giải quyết các vấn đề của khách hàng. Trong các dự án phần mềm, đây thường là giai đoạn các bản được phát hành để cập nhật và sửa lỗi.

Ưu và nhược điểm của mô hình thác nước?

Ưu điểm:

  • Đây là mô hình đơn giản, dễ áp dụng, quy trình rõ ràng theo từng bước.

  • Dễ quản lý và bảo trì bởi cách tiếp cận tuyến tính và cố định theo từng bước. 

  • Các tiêu chí đầu vào và đầu ra được xác định rõ ràng nên dễ dàng trong công tác kiểm tra chất lượng.

  • Hoạt động hiệu quả trong các dự án nhỏ, với các yêu cầu rõ ràng.

  • Có nhiều tài liệu cung cấp cho khách hàng.

Nhược điểm:

  • Không phải mô hình lý tưởng cho các dự án lớn và dài ngày.

  • Không hiệu quả đối với những dự án đối mặt với các yêu cầu không rõ ràng từ đầu.

  • Khó thích ứng với thay đổi bao gồm yêu cầu, kế hoạch, phạm vi dự án…

  • Độ trực quan thấp và giá trị chuyển giao chậm khi đến cuối chu trình người dùng mới nhìn thấy và sử dụng sản phẩm.

Qua những phân tích trên, có thể thấy rằng mô hình Waterfall chỉ phù hợp với các dự án nhỏ, đơn giản. Còn đối với các dự án lớn và phức tạp thì nên lựa chọn mô hình Agile để thích ứng nhanh chóng với sự biến động của thị trường và yêu cầu của khách hàng.

Thấu hiểu những vấn đề trên, Học viện Agile đã xây dựng Khóa học Scrum Hành dụng với mục đích cung cấp kiến thức và kỹ năng nền tảng về Agile/Scrum cho đội nhóm để triển khai dự án đồng bộ và hiệu quả.

Sau khóa học, học viên sẽ hiểu được các kiến thức tổng quan về Scrum, thành thạo 22 công cụ và biện pháp thực hành Scrum để có thể áp dụng được ngay vào công việc.

Học viện Agile đã triển khai thành công hàng chục lớp học với hơn 400 học viên, trong đó có nhiều quản lý của các doanh nghiệp như: Viettel, Techcombank, MSB, NTQ Solution, Bravestars, SotaTek…

>> Tìm hiểu thêm thông tin về khóa học Scrum Hành dụng TẠI ĐÂY!