Waterfall là gì?
Waterfall hay còn gọi là mô hình thác nước, là một mô hình phát triển phần mềm theo hướng tuần tự. Có nghĩa là một dự án sẽ được chia thành nhiều giai đoạn và team sẽ thực hiện lần lượt từng giai đoạn, thường phải hoàn thành bước trước rồi mới chuyển sang bước tiếp theo. Điểm đặc trưng của Waterfall là team cố gắng xác định rõ yêu cầu và kế hoạch của sản phẩm ngay từ đầu. Sau khi thống nhất được sản phẩm cần làm gì, team mới tiến hành thiết kế, lập trình, kiểm thử và triển khai. Vì vậy, Waterfall phù hợp với cách làm mà mọi thứ được chuẩn bị và lên kế hoạch tương đối đầy đủ trước khi bắt đầu phát triển.
Các giai đoạn của Waterfall
Một dự án Waterfall thường trải qua các giai đoạn chính gồm Requirement, Design, Development, Testing, Deployment và Maintenance.
Requirement là giai đoạn tìm hiểu và xác định sản phẩm cần làm gì. Team sẽ làm việc với khách hàng hoặc stakeholder để thu thập yêu cầu và xác định phạm vi của dự án.
Design là lúc team quyết định hệ thống sẽ được xây dựng như thế nào dựa trên những yêu cầu đã có. Có thể bao gồm kiến trúc hệ thống, database, API, giao diện và các thành phần kỹ thuật khác.
Development là giai đoạn developer bắt đầu viết code và xây dựng sản phẩm theo yêu cầu và thiết kế đã được thống nhất.
Testing là lúc tester kiểm tra sản phẩm để tìm bug và xác nhận các chức năng có hoạt động đúng theo requirement hay không.
Deployment là quá trình đưa sản phẩm lên môi trường thực tế để người dùng có thể sử dụng.
Cuối cùng là Maintenance, tức quá trình bảo trì, sửa lỗi và xử lý những vấn đề phát sinh sau khi sản phẩm đã được triển khai.

Cách thức hoạt động của Waterfall
Waterfall hoạt động theo một quy trình tương đối cố định. Ban đầu, team dành thời gian để tìm hiểu và thống nhất yêu cầu. Sau đó những yêu cầu này được chuyển thành thiết kế, rồi developer dựa trên thiết kế để xây dựng sản phẩm. Khi phần phát triển hoàn thành, sản phẩm mới được đưa sang kiểm thử và sau khi đạt yêu cầu thì được triển khai.
Điểm cần hiểu ở đây là các giai đoạn có sự phụ thuộc vào nhau. Requirement ảnh hưởng đến Design, Design ảnh hưởng đến Development và Development là cơ sở cho Testing.
Vì vậy, nếu một yêu cầu quan trọng bị thay đổi khi team đã đi đến giai đoạn phát triển hoặc kiểm thử thì việc thay đổi có thể khá tốn kém. Team có thể phải sửa lại thiết kế, code và thực hiện kiểm thử lại.
Ưu và nhược điểm của Waterfall
Waterfall có ưu điểm là quy trình rõ ràng, dễ theo dõi và dễ lập kế hoạch. Vì các yêu cầu và phạm vi của dự án thường được xác định từ đầu nên team có thể biết mình cần làm gì, làm theo thứ tự nào và dự kiến hoàn thành từng giai đoạn ra sao. Waterfall cũng phù hợp với những dự án có yêu cầu ổn định và thường chú trọng documentation, giúp việc quản lý và bàn giao dự án dễ dàng hơn.
Tuy nhiên, Waterfall có hạn chế lớn ở khả năng thích nghi với thay đổi. Khi dự án đã đi qua một giai đoạn, việc quay lại thay đổi những quyết định trước đó có thể ảnh hưởng đến nhiều phần đã hoàn thành. Bên cạnh đó, khách hàng thường nhận được feedback về sản phẩm khá muộn, nên nếu team hiểu sai yêu cầu ngay từ đầu thì vấn đề có thể chỉ được phát hiện sau khi đã tốn nhiều thời gian và chi phí để phát triển.
Vì vậy, Waterfall có thể phù hợp với những dự án yêu cầu rõ ràng, ổn định và ít thay đổi, nhưng sẽ gặp khó khăn hơn với những sản phẩm cần liên tục thử nghiệm, nhận feedback và thay đổi trong quá trình phát triển.




Khoá học lập trình game con rắn cho trẻ em




