Mô hình thác nước (tiếng Anh: waterfall model) là một mô hình của quy trình phát triển phần mềm, trong đó quy trình phát triển trông giống như một dòng chảy, với các pha được thực hiện theo trật tự nghiêm ngặt và không có sự quay lui hay nhảy vượt pha là: phân tích yêu cầu, thiết kế, triển khai thực hiện, kiểm thử, liên kết và bảo trì.

Đang xem: Ưu Điểm của mô hình waterfall model là gì, khi nào sử dụng waterfall?

*

Người ta thường dẫn bài báo được Winston W. Royce xuất bản vào năm 1970 để giải thích nguồn gốc cho tên gọi “thác nước”; nhưng có điều thú vị là chính Royce đã dùng mô hình phát triển lặp chứ không hề dùng thuật ngữ “mô hình thác nước”.

Nội dung mô hình thác nước

Vào năm 1970 trong bài báo của mình, Royce đã mô tả ở dạng khái niệm cái mà ngày nay được công nhận với tên gọi “mô hình thác nước”, đã bàn luận về những nhược điểm của mô hình này. Trong đó ông cũng chỉ ra rằng mô hình này có thể sẽ được tu sửa thành mô hình lặp.

Mô hình Royce nguyên gốc có các pha theo đúng thứ tự sau:

Xác định yêu cầuThiết kếXây dựng (hay “triển khai”, “mã hóa”, “viết mã”)Liên kếtKiểm thử và Chỉnh sửa (hay «kiểm nghiệm»)Cài đặtBảo trì

Theo mô hình thác nước, người phát triển phải thực hiện từng giai đoạn theo thứ tự nghiêm ngặt. Trước hết, giai đoạn “xác định yêu cầu” phải được hoàn tất, kết quả nhận được sẽ là danh sách các yêu cầu đối với phần mềm. Sau khi các yêu cầu đã hoàn toàn được xác định, sẽ chuyển sang pha thiết kế, ở pha này người ta sẽ tạo ra các tài liệu dành cho lập trình viên, trong đó mô tả chi tiết các phương pháp và kế hoạch thực hiện các yêu cầu đã được làm rõ ở pha trước. Sau khi pha thiết kế hoàn tất, lập trình viên sẽ triển khai thực hiện (mã hóa, viết mã) đồ án họ nhận được. Giai đoạn tiếp theo là liên kết các thành phần riêng lẻ đã được những đội lập trình viên khác nhau thực hiện thành một sản phẩm hoàn chỉnh. Sau khi pha triển khai và pha liên kết hoàn tất, sẽ diễn ra pha kiểm thử và chỉnh sửa sản phẩm; ở giai đoạn này những khiếm khuyết ở các giai đoạn trước đó sẽ bị loại bỏ. Sau đó, sản phẩm phần mềm sẽ được đưa vào sử dụng; phần bảo trì phần mềm cũng sẽ được bảo đảm bằng cách bổ sung chức năng mới và loại trừ các lỗi.

Như vậy, mô hình thác nước ngụ ý rằng, việc chuyển từ pha phát triển này sang pha khác sẽ diễn ra chỉ sau khi các pha trước đó đã kết thúc hoàn toàn thành công, và không thể quay lui về pha trước đó hay nhảy vượt pha.

Tuy nhiên, tồn tại một số mô hình thác nước biến thể (bao gồm cả mô hình của Royce), trong đó quy trình phát triển đã được mô tả ở trên bị biến đổi không nhiều hoặc cũng có thể bị biến đổi đáng kể.

Trong mô hình thác nước, các giai đoạn của dự án được thực hiện lần lượt và nối tiếp nhau, giai đoạn mới chỉ được bắt đầu khi giai đoạn trước nó đã được hoàn thành. 

Phương pháp thác nước vốn được tạo với mục đích là một mô hình chu kì vòng đời phát triển phần mềm, nhưng cũng được ứng dụng trong các dự án có qui mô nhỏ và có mọi tiêu chuẩn được xác định rõ ràng từ ban đầu.

Các giai đoạn trong mô hình thác nước

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

Giai đoạn yêu cầu: Nhóm thực hiện tìm kiếm các yêu cầu liên quan đến dự án, ví dụ như xác định dự án sẽ giải quyết nhu cầu kinh doanh nào, yêu cầu của người dùng đối với sản phẩm được phát triển bởi dự án, các ràng buộc và rủi ro đi kèm.

Giai đoạn thiết kế: Nhóm tạo ra thiết kế cho sản phẩm để giải quyết mọi yêu cầu, ràng buộc và mục tiêu thiết kế.

Giai đoạn thực hiện hay giai đoạn xây dựng: Sản phẩm được chế tạo để hỗ trợ thiết kế. Đôi khi, sản phẩm được xây dựng trong các đơn vị dùng để thí nghiệm và tích hợp trong giai đoạn tiếp theo. 

Giai đoạn kiểm chứng: các bộ phận của sản phẩm được kiểm tra và nếu cần, sẽ được tích hợp lại với nhau để thử nghiệm. Toàn bộ hệ thống được kiểm tra để tìm ra lỗi và để đảm bảo 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à nhu cầu kinh doanh được giải quyết.

Giai đoạn triển khai: sản phẩm được thử nghiệm thực sự đi vào hoạt động. Đối với các dự án thuộc lĩnh vực công nghệ thông tin, sản phẩm được triển khai vào môi trường để người dùng có thể bắt đầu sử dụng nó. Đối với một dự án xây dựng, giai đoạn triển khai là khi tòa nhà hoàn toàn sẵn sàng cho người ở. 

Giai đoạn bảo trì: là một khoảng thời gian giám sát ngắn trong đó nhóm dự án giải quyết các vấn đề của khách hàng. Đối với các dự án phần mềm, điều này thường có nghĩa phát hành các bản vá và cập nhật để sửa vấn đề. Trong các dự án khác, các điều chỉnh về môi trường được thực hiện để giải quyết vấn đề, chẳng hạn như tối ưu hóa điều hòa không khí trong một tòa nhà mới. 

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

Dù mô hình thác nước đã dần dần biến mất trong vài năm trở lại đây nhường chỗ cho các mô hình linh hoạt(agile) hơn, nó vẫn đem lại một số lợi ích, đặc biệt trong các dự án và tổ chức lớn mà cần các giai đoạn và hạn hoàn thành của công việc nằm trong những thác nước này.

Xem thêm: Công Dụng Của Star Anise Là Gì, Công Dụng Của Star Anise (Hoa Hồi) Là Gì

Thích nghi tốt với những nhóm linh hoạt: Dù không chỉ mình mô hình thác nước có ưu điểm này, ứng dụng nó giúp toàn bộ dự án được duy trì kỹ càng, có mục tiêu bao quát và thiết kế có cấu trúc nhờ vào việc phác thảo và pha tài liệu hóa từ trước. Điều này rất phù hợp với những nhóm lớn mà thường có các thành viên rời khỏi hoặc tham gia mới trong các chu trình sống của dự án. Nó cho phép thiết kế cốt lõi của dự án được đặt chủ yếu trong một tài liệu cụ thể, chứ không chỉ ở một thành viên nào đó của nhóm.

Áp đặt một tổ chức có kết cấu chặt chẽ: Điều này có thể bị coi là gánh nặng hơn là một lợi thế, nhưng sự thật là để duy trì mô hình thác nước bắt dự án, và thậm chí cả tổ chức xây dựng một dự án vô cùng chính xác, tuân nghiêm ngặt theo thiết kế và cấu tạo của nó. Những dự án lớn sẽ cần bao gồm những tiến trình cụ thể để quản lý toàn bộ khía cạnh của dự án, từ thiết kế và phát triển đến kiểm thử và triển khai.

Cho phép những thay đổi thiết kế sớm: Mặc dù sẽ rất khó để thay đổi thiết kế ở những giai đoạn sau, phương pháp thác nước giúp triển khai các thay đổi ở đầu vòng đời của ứng dụng khá dễ dàng. Vì chưa hề có mã hay bất cứ triển khai nào ở giai đoạn này, việc chỉnh sửa các tài liệu trở nên nhanh chóng và vô cùng đơn giản.

Thích hợp cho những dự án theo hướng đến mốc: Khi ứng dụng cấu trúc tuần tự của mô hình thác nước, những dự án sẽ rất phù hợp với những tổ chức vào nhóm hoạt động tốt dựa chủ yếu vào các mốc hoặc ngày. Với các pha rõ ràng và cụ thể, các thành viên trong nhóm có thể dễ dàng hiểu và chuẩn bị cho nó. Việc có một lịch trình cho toàn bộ quá trình và đề ra một vài thời điểm cụ thể hay dấu mốc quan trọng cho từng giai đoạn cũng đơn giản hơn. Tất nhiên điều này không có nghĩa rằng phát triển phần mềm thì không xảy ra chậm trễ, nhưng mô hình thác nước sẽ thích hợp cho những dự án có hạn chót hoàn thành.

Nhược điểm của mô hình thác nước

Mặc dù một vài khi tiến sĩ Royce lần đầu công bố, mô hình thác nước được coi là một đột phát lớn ở năm 1970. Sau hơn bốn thế kỷ, một vài nhược điểm lớn đã thể hiện vì sao mô hình khó còn đáng mong đợi như kỳ vọng và bị thay thế bởi các mô hình Agile như ngày nay.

Ràng buộc thiết kế thích ứng kém: Mặc dù có thể viết hẳn một quyển sách viết riêng về chủ đề này, thiếu sót quan trọng nhất của mô hình thác nước là khả năng thích ứng trước thay đổi trong toàn bộ vòng đời phát triển. Khi việc kiểm thử ở pha thứ năm phát hiện ra một số lỗi ở phần thiết kế hệ thống, nó không chỉ yêu cầu một bước lùi lớn về các bước cũ, trong một vài trường hợp còn phá hủy tính thống nhất của toàn bộ hệ thống. Trong khi phần lớn các nhóm và lập trình viên có kinh nghiệm sẽ rất khó để xảy ra những phát hiện muộn màng như vậy ngay từ đầu, tình trạng này vẫn có thể xảy ra, đặc biệt khi là các pha thường được để ở cuối của toàn chu trình.

Bỏ qua phản hồi người dùng ở các giai đoạn sau: Vì có một quá trình nghiêm ngặt từng bước một, mô hình thác nước gặp khó khăn trong vấn đề nhận phản hồi của người dùng ở những giai đoạn sau của vòng đời sản phẩm. Người quản lý dự án đương nhiên có thể đưa quá trình về các giai đoạn trước vì những yêu cầu hoặc thay đổi mới từ khách hàng, nhưng điều này sẽ vô cùng tốn kém và ngốn thời gian cho cả nhóm phát triển và khách hàng.

Thời gian kiểm thử bị trì hoãn: Trong khi phần lớn các mô hình SDLC hiện đại luôn tích hợp kiểm thử là một phần tất yếu và luôn luôn xuyên suốt mọi quá trình trong quá trình phát triển, mô hình thác nước để kiểm thử vào cuối vòng đời. Điều này không chỉ làm cho phần lớn lỗi kỹ thuật hay thậm chí vấn đề thiết kế không được phát hiện cho đến tận cuối chu trình sống, nó còn dễ gây ra thói quen viết mã kém chất lượng do việc kiểm thử chỉ thường khá ít và quá muộn.

Khi nào áp dụng Waterfall

Áp dụng Waterfall khi nắm được rõ yêu cầu của dự án một cách tốt nhất, yêu cầu là rõ ràng và có tính ổn định cao.Nắm vững được công nghệ phát triển.Không có những yêu cầu không rõ ràng.Tài nguyên phát triển phong phú và chuyên môn kỹ thuật cao.Thích hợp với những dự án nhỏ và ngắn hạn.

Xem thêm: Cập nhật điểm chuẩn thi tuyển sinh vào 10 năm 2022 mới nhất

Một vài mô hình SDLC khác:

Phát triển ứng dụng nhanhPhát triển hướng kiểm traVòng đời phát triển phần mềm
Mô hình phát triển lặp Lập trình cực độ Khung Agile Scaled
Mô hình Agile Scrum Quy trình hợp nhất Rational
Mô hình Big Bang Mô hình chữ V Mô hình khái niệm
Mô hình Kaizen Mô hình Kanban Mô hình xoắn ốc

 

gocnhintangphat.com chuyên: – Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,… – Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,… – Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,… – Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,… – Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,…

Vì sao chọn gocnhintangphat.com? – gocnhintangphat.com nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,… – gocnhintangphat.com có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,… – gocnhintangphat.com có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,… Quý khách xem Hồ sơ năng lực của gocnhintangphat.com tại đây >> Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>

Leave a Reply

Your email address will not be published. Required fields are marked *