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.

Mô hình Waterfall là gì? Cách áp dụng Waterfall vào quản lý dự án

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.

Bài viết khác

WaterFall

1. Waterfall là gì và cách thức hoạt động? Waterfall (hay còn gọi là mô hình thác nước) là một trong những phương pháp quản lý và phát triển phần mềm mang tính cổ điển, tuần tự theo đúng nghĩa đen. Giống như một dòng thác nước chảy từ trên đỉnh núi xuống dưới, quy […]

AGILE

1. Agile là gì? Agile (phương pháp phát triển phần mềm linh hoạt) không phải là một công cụ hay một quy trình kỹ thuật cụ thể nào cả, mà nó là một tư duy (mindset) và triết lý làm việc. Thay vì lập ra một kế hoạch khổng lồ từ đầu, làm một mạch […]

GIT

1. Git là gì? -Git là hệ thống quản lý phiên bản (Version Control System – VCS) được sử dụng cực kỳ phổ biến trong phát triển phần mềm hiện đại. Git giúp developer theo dõi, quản lý và lưu lại lịch sử thay đổi của source code trong suốt quá trình phát triển dự […]

Agile

Agile là gì? Agile là cách tư duy và tiếp cận trong việc phát triễn sản phẩm, tập trung vào việc tạo ra giá trị sớm chi nhỏ công việc nhận phản hồi thường xuyên từ khách hàng và liên tực thích nghi với những thay đổi trong quá trình phát triển.   Các đặc […]

git

git là gì ? Git là một hệ thống quản lý phiên bản (Version Control System – VCS) được sử dụng phổ biến trong phát triển phần mềm. Git giúp developer theo dõi, quản lý và lưu lại lịch sử thay đổi của source code trong quá trình phát triển dự án. Thay vì chỉ […]

Domain

Domain là gì? Dành cho những bạn chưa biết Domain là gì thì Domain hay tền miền là một chuỗi ký tự dễ nhớ được sử dụng để định danh một trang web hoặc một tài nguyên trực tuyến cụ thể trên Internet. Tên miền giúp con người dễ dàng truy cập trang web bằng […]