Mô hình thác nước là gì? Mô hình thác nước có vai trò gì?

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ô hình thác nước là gì?
Mô hình thác nước là một khái niệm nhiều người vẫn chưa hiểu rõ. Nguồn: Unsplash

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.

Mô hình thác nước là gì? 5 pha của mô hình thác nước
Mô hình thác nước là gì? Nguồn: Unsplash

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à:

  1. 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.
  2. 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ế
  3. 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.
  4. 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ử.
  5. 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:

  1. 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
  2. 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
  3. 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
  4. 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
Mô hình thác nước là gì? Những ưu và nhược điểm của mô hình thác nước
Ưu và nhược điểm của mô hình thác nước? Nguồn: Unsplash

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 AgileMô 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ànhMô 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àngMô 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.
Sự khác nhau chủ yếu giữa mô hình Agile và mô hình thác nướ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.

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

Nhan Tung
Nhan Tung
February 06, 2021
0
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
5 phương pháp Agile phổ biến trong phát triển phần mềm

5 phương pháp Agile phổ biến trong phát triển phần mềm

Phương pháp Agile đã dần trở thành một xu hướng mới trong việc phát triển phần mềm trên thế giới. Bài viết này sẽ giới thiệu cho các bạn 5 phương pháp Agile hiện phổ biến nhất hiện nay.   Mục lục1. Scrum2. Kaban3. Extreme Programming4. Lean Development5. Crystal 1. Scrum Trong số các framework […]
Thiết kế kiến trúc phần mềm và những vấn đề cơ bản

Thiết kế kiến trúc phần mềm và những vấn đề cơ bản

Thiết kế kiến trúc phần mềm là một trong những yêu cầu quan trọng đối với mỗi lập trình viên. Nếu bạn đang muốn tìm hiểu về lĩnh vực trên, thì hãy bắt đầu từ những vấn đề cơ bản sau đây. Mục lục1. Thiết kế kiến trúc phần mềm là gì?2. Một số quy […]
Tìm hiểu mô hình kiến trúc Microservice là gì

Tìm hiểu mô hình kiến trúc Microservice là gì

Cùng với sự phát triển của lĩnh vực lập trình phần mềm, Microservice là gì đang dần trở thành vấn đề được nhiều người quan tâm. Nếu bạn là một người đam mê công nghệ, thì đừng bỏ qua những thông tin liên quan đến kiểu mô hình kiến trúc này trong bài viết dưới […]
Mô hình thác nước là gì? Mô hình thác nước có vai trò gì?

Mô hình thác nước là gì? Mô hình thác nước có vai trò gì?

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à […]
Giới thiệu về quy trình phát triển phần mềm

Giới thiệu về quy trình phát triển phần mềm

Mỗi loại hệ thống khác nhau sẽ có một quy trình phát triển phần mềm khác nhau. Một quy trình tốt sẽ giúp tạo ra những sản phẩm chất lượng, đúng với yêu cầu mà khách hàng đặt ra. Vậy, có những loại quy trình nào? Chúng gồm những bước nào? Cùng Got It tìm […]
So sánh các mô hình phát triển phần mềm Thác nước và Scrum

So sánh các mô hình phát triển phần mềm Thác nước và Scrum

Hai trong số các mô hình phát triển phần mềm được dùng rộng rãi nhất là mô hình Thác nước và Scrum. Cùng so sánh các mô hình phát triển phần mềm này để xem chúng có những đặc điểm gì, ưu nhược điểm và ứng dụng thế nào vào từng loại dự án. Mục […]