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

  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

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.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
February 06, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Visual Studio Code là gì? Lợi thế từ việc sử dụng Visual Studio Code

Visual Studio Code là gì? Lợi thế từ việc sử dụng Visual Studio Code

Visual Studio Code là gì mà khiến cộng đồng IT Việt yêu thích đến vậy? Trình soạn thảo code này sẽ giúp bạn xây dựng ứng dụng web và cloud như thế nào? Hãy cùng Got It tìm hiểu Visual Studio Code ngay hôm nay nhé! Mục lục1. Visual Studio Code là gì?2. Phân biệt […]
Hướng dẫn cách sử dụng Visual Studio Code căn bản

Hướng dẫn cách sử dụng Visual Studio Code căn bản

Nhanh, gọn nhẹ, đa năng và hoạt động mạnh mẽ trên đa nền tảng là những ưu điểm nổi trội của trình soạn thảo VS Code. Cách sử dụng Visual Studio Code cơ bản sẽ được hướng dẫn cụ thể trong bài viết dưới đây. Mục lụcVisual Studio Code là gì và dành cho ai?Phiên […]
Hướng dẫn cách format code Visual Studio Code với Prettier

Hướng dẫn cách format code Visual Studio Code với Prettier

Việc định dạng mã sao cho thống nhất là một thử thách khó khăn đối với đa phần lập trình viên. Prettier chính là công cụ format code của Visual Studio Code giúp bạn duy trì sự nhất quán trong toàn bộ cơ sở mã của nhóm. Cùng tìm hiểu cách dùng Prettier để format […]
Cách sử dụng phím tắt sắp xếp code trong Visual Studio Code

Cách sử dụng phím tắt sắp xếp code trong Visual Studio Code

Chỉ với một vài thao tác đơn giản với phím tắt sắp xếp code trong Visual Studio Code, bạn đã có thể tạo ra một đoạn mã đẹp mắt, ngay ngắn và dễ đọc. Cùng tìm hiểu về cách sử dụng phím tắt này và khám phá thêm một vài phím tắt hữu ích khách […]
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 […]