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.

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 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 Agile

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 Agile đã tách vòng đời phát triển của sản phẩm thành các giai đoạn Sprint.
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.
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..

Mô hình thác nước

Mô hình thác nước cứng nhắc, tuần tự và khó thay đổi.
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 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 sau khi việc phát triển phần mềm kết thúc.

 

Người đăng: chiu
Time: 2021-09-14 14:45:31