Trong quá trình tìm hiểu về phát triển phần mềm, chắc hẳn nhiều bạn kỹ sư công nghệ đã nghe tới nhiều thuật ngữ về mô hình thác nước (waterfall model). Tuy nhiên, nhiều bạn còn chưa hiểu rõ về mô hình này. Hãy cùng Got It Vietnam khám phá Mô hình thác nước là gì và những đặc điểm của mô hình thác nước qua bài viết này nhé!
Mục lục
Mô hình thác nước là gì?
Mô hình thác nước là một mô hình có tính trình tự trong phát triển phần mềm. Nó chú trọng vào sự phát triển logic và lần lượt trong suốt vòng đời phát triển phần mềm (software development life cycle-SDLC), trong đó những pha (phase) ở phía trước phải được hoàn thành trước khi những pha tiếp theo có thể bắt đầu. Mỗi pha trong mô hình thác nước có vai trò khác nhau trong SDLC.
Mô hình thác nước được giới thiệu trong một bài báo của Winston Royce vào năm 1970. Mặc dù sự phổ biến của mô hình này đã giảm nhiều trong vài năm trở lại đây khi các phương pháp linh hoạt (Agile) xuất hiện, tuy nhiên mô hình thác nước vẫn đang được ưa chuộng bởi nhiều kỹ sư CNTT vì tính logic và tuần tự của mô hình này.
5 pha (phase) của mô hình thác nước
Waterfall Model – Mô hình thác nước bao gồm 5 pha chính, lần lượt là:
- Phân tích yêu cầu: Các kỹ sư IT sẽ phải thu thập tất cả các yêu cầu cần thiết, sau đó sẽ hội ý để hiểu đúng những yêu cầu. Cuối cùng, các kỹ sư sẽ cần phải tìm hiểu xem những yêu cầu này có phù hợp để kiểm thử ở các bước tiếp theo hay không.
- Thiết kế hệ thống: Dựa vào những yêu cầu, các kỹ sư IT sẽ thiết kế hệ thống, ghi lại những yêu cầu về phần cứng/phần mềm và sau đó họ sẽ ghi chú lại phần thiết kế
- Triển khai: Dựa vào ghi chú thiết kế, các kỹ sư IT sẽ tạo ra chương trình hoặc codes, sau đó tích hợp codes lại cho pha kế tiếp. Cuối cùng, họ kiểm thử đơn vị phần code này.
- Kiểm thử hệ thống: Ở phần này, các kỹ sư IT sẽ kiểm thử toàn bộ hệ thống để xem các đơn vị có vận hành trơn tru không, sau đó họ sẽ hoàn thiện báo cáo kiểm thử.
- Vận hành và duy trì: Ở phần cuối, sau khi chắc chắn đã sửa hết lỗi, các kỹ sư IT sẽ tiến hành chạy thử phần mềm và đưa vào sử dụng, sau đó fix các lỗi phát sinh trong tương lai (nếu có). Quá trình này bao gồm cả việc phát triển phần mềm để có thể tích hợp thêm nhiều tính năng trong tương lai.
Ưu điểm và nhược điểm của mô hình thác nước
Ưu điểm
Mô hình thác nước có một vài ưu điểm như sau:
- Dễ dàng triển khai và quy trình dễ hiểu
- Với những dự án nhỏ, mô hình thác nước hoạt động hiệu quả và cho kết quả rất tốt.
- Vì quá trình phát triển rất chặt chẽ, do đó chất lượng mỗi phần và cả dự án sẽ rất chặt chẽ.
- Yêu cầu đầu vào và đầu ra có sự rõ ràng, nên tiến trình làm việc rất dễ dàng và chất lượng
- Kết quả được ghi chép dễ dàng
Nhược điểm
Tuy nhiên, mô hình thác nước cũng còn 1 vài nhược điểm sau:
- Do pha đầu tiên là phân tích yêu cầu, nên sẽ không thể thay đổi yêu cầu ở các pha tiếp theo trong mô hình
- Mô hình thác nước không phù hợp để triển khai với những dự án dài và phức tạp, có nhiều sự thay đổi trong yêu cầu
- Khó di chuyển qua lại giữa các pha. Ví dụ, nếu phần mềm chuẩn bị bước vào pha kiểm thử và có sự thay đổi ở yêu cầu thì sẽ rất khó để quay lại và thay đổi. Việc quay lại sẽ ngốn một khoảng thời gian và công sức rất lớn của team phát triển
- Rủi ro cao hơn. Do quá trình kiểm thử trong mô hình thác nước xuất hiện gần cuối, các chiến thuật để giảm thiểu rủi ro không được triển khai từ sớm. Trong khi ở những mô hình linh hoạt, quá trình kiểm thử diễn ra song song với quá trình phát triển do đó việc giảm thiểu rủi ro hiệu quả hơn rất nhiều
Khi nào nên sử dụng mô hình thác nước
Mô hình thác nước nên được sử dụng khi:
- Dự án ngắn và đơn giản: Như đã trình bày ở trên, các dự án dài và phức tạp thường đòi hỏi các bước phải được thực hiện đồng thời cùng với kiểm thử để tiết kiệm thời gian, trong khi ở mô hình thác nước thì các bước và thứ tự đã cố định, do đó sẽ tốn nhiều thời gian để sửa chữa và hoàn thành hơn
- Những yêu cầu cố định, không thay đổi thường xuyên và dễ hiểu
- Tài nguyên phong phú và các thành viên có chuyên môn kỹ thuật tốt
Sự khác biệt của mô hình thác nước với mô hình Agile
Mô hình Agile và mô hình thác nước là hai mô hình thường được sử dụng thường xuyên nhất trong quá trình phát triển phần mềm. Sau đây là một vài sự khác nhau cơ bản giữa hai mô hình:
Mô hình Agile | Mô hình thác nước |
Mô hình Agile dễ dàng thay đổi trong các bước, có thể thay đổi những yêu cầu ban đầu kể cả khi kế hoạch phát triển đã hoàn thành | Mô hình thác nước cứng nhắc, tuần tự và khó thay đổi. |
Mô hình Agile đã tách vòng đời phát triển của sản phẩm thành các giai đoạn Sprint. | Các giai đoạn trong mô hình thác nước được tách riêng biệt, hoàn thành giai đoạn trước thì mới làm được giai đoạn sau. |
Mô hình Agile chú trọng đến tư duy sản phẩm và trải nghiệm sử dụng của khách hàng, và sẽ thay đổi sản phẩm theo khách hàng | Mô hình thác nước chú trọng đến tư duy dự án và xây dựng sản phẩm dựa trên tư duy này. |
Kế hoạch kiểm thử được thực hiện song song với kế hoạch phát triển phần mềm. | Kế hoạch kiểm thử được thực hiện sau khi việc phát triển phần mềm kết thúc. |
Hy vọng sau bài viết này của chúng tôi, các bạn sẽ hiểu rõ hơn về mô hình thác nước là gì, cũng như một vài ưu nhược điểm và sự khác biệt của mô hình thác nước so với mô hình khác.