Mô hình phát triển dự án kết hợp giữa Agile và Waterfall

Phát triển waterfall (thác nước) là gì?

Kỹ thuật thác nước là một ý tưởng rất ngắn gọn và cực kỳ cổ điển về quản lý phát triển hệ thống. Nó là một phương pháp dạng thác nước để phát triển một kế hoạch chi tiết như:

  • Ngày giao hàng và ngày hoàn thành dự án được xác định.
  • Đặc điểm kỹ thuật (specs) cuối cùng của sản phẩm không thay đổi trong quá trình phát triển.

Vì lý do đó, mô hình này được áp dụng tốt nhất trong một dự án dài hạn với một kế hoạch vững chắc.

Phương pháp này thường áp dụng cho nhiều loại hình phát triển khác nhau như: sản xuất máy móc, công nghiệp đóng tàu và ngành công nghiệp không gian.

Sự phát triển của loại thác cũng rất thường được áp dụng để phát triển phần mềm như hệ thống ERP (phần mềm kinh doanh tích hợp) và phát triển version up phần mềm quy mô lớn hoặc hệ điều hành đã phổ biến.

Phát triển agile (nhanh) là gì?

Nếu buộc phải thay đổi đặc điểm kỹ thuật thường xuyên trong quá trình phát triển, chẳng hạn như kết hợp công nghệ mới, đặc biệt ngành công nghiệp di động luông không ngừng phát triển với tốc độ cao tần suất tầm khoảng 6 tháng sẽ thay đổi theo khuôn khổ mới. Trong một ngành như vậy, cần phải quyết định một cách linh hoạt phương pháp phát triển áp dụng cho phát triển phần mềm. Agile là mô hình phát triển hướng tới xu thế mới, linh hoạt và dễ dàng thay đổi tùy theo đặc tính sản phẩm. Phát triển agile có một phương pháp điển hình được gọi là "phát triển scrum". "Phát triển Scrum" là một giải pháp lý tưởng có thể thích nghi linh hoạt với ngành công nghiệp di động, thay đổi ở tốc độ cao.

Việc phát triển scrum thực sự sẽ được phân tích và sửa chữa cho từng thời điểm để ước tính đặc điểm kỹ thuật cuối cùng được yêu cầu. Các đội phụ trách phát triển sản phẩm và các đội phụ trách thử nghiệm, tham gia dự án, nhằm hoàn thành bằng cách liên tục làm việc để phát triển các chức năng "nhỏ" trong khi làm việc chặt chẽ với nhau.

Ngoài ra, có thể đáp ứng linh hoạt nhu cầu của khách hàng cuối, vì vậy có thể xây dựng mối quan hệ tin cậy với khách hàng.

Ưu điểm của Waterfall

  • Ngắn gọn, dễ hiểu và dễ sử dụng. Phù hợp với đa số các công ty.
  • Chất lượng cao. Thác nước có bản vẽ và quy tắc chất lượng nghiêm ngặt cũng như công việc kỹ thuật, nhập dữ liệu, performance. Chất lượng được ưu tiên theo thời gian và chi phí.
  • Ổn định. Thông số kỹ thuật sản phẩm ít thay đổi.
  • Khả năng thích ứng và cấu trúc rộng, có thể bắt đầu dự án với giá thấp.
  • Không nhất thiết liên quan đến người dùng cuối trong quá trình phát triển.

Ưu điểm của Agile

  • Phương pháp phát triển biến đổi, dễ tương tác và sáng tạo.
  • Mạnh mẽ trong sự thay đổi. Là mô hình phân chia yêu cầu thành những phần nhỏ và phát triển phần mềm thông qua giai đoạn lặp lại.
  • Có thể sửa đổi hướng của dự án với một tuần hoặc hai tuần chạy nước rút (khung thời gian). Hoặc bạn có thể thuê một đội ngũ hoặc nhà phát triển, các chuyên gia kiểm soát chất lượng vv. (Ví dụ, khi một dự án được thay đổi đột ngột, hoặc về mặt kỹ thuật, có một sự thay đổi đáng kể, nhóm ban đầu tiếp tục hoàn thành công việc, trong khi một nhóm mới hoạt động linh hoạt, chẳng hạn như làm việc một phần mới.
  • Agile có lẽ là cách nhanh nhất để khởi chạy một mẫu thử nghiệm. Do đó, đánh giá và thử nghiệm bằng cách sử dụng các cuộc biểu tình sẽ có thể ở giai đoạn đầu.
  • Có thể giao tiếp với người dùng cuối và sử dụng phản hồi đó trong quá trình phát triển của mình.
  • Bằng cách sử dụng hộp thời gian, bạn có thể nắm bắt quá trình phát triển và tiến bộ của sản phẩm tổng thể tốt.

Nhược điểm của Waterfall

  • Quá trình phát triển thác nước càng tốn kém nếu thời gian phát triển càng dài.
  • Lượng lớn tài liệu để đáp ứng mức độ chính xác và cụ thể cao trong tất cả các thông số kỹ thuật, chức năng và chất lượng cần thiết.
  • Các tài liệu kỹ thuật có xu hướng gây khó hiểu cho người dùng cuối.
  • Trước khi bắt đầu công việc, phải có đầu vào chi tiết và thông số kỹ thuật chi tiết.
  • Không có sự linh hoạt và không thể thực hiện các thay đổi lớn của dự án.
  • Chi phí cho việc chính thức hóa là rất lớn. Nếu không có những người có kỹ năng nhìn nhận bức tranh tổng thể, sẽ gây đến việc lộn xộn về các tài liệu và cách thực hiện.
  • Chi phí duy trì khi phát sinh re-work là một vấn đề rất lớn mà dự án thất bại do mô mình waterfall gây ra .

Nhược điểm của Agile

  • Agile có một điểm yếu chết người. Kể từ khi phát triển Agile cho phép thay đổi thường xuyên mỗi lần, các thử nghiệm được lặp lại bằng cách sử dụng các công nghệ khác nhau. Do đó, nếu bạn không chỉ định kỹ các chi tiết kỹ thuật và thiết kế của sản phẩm, chất lượng của sản phẩm cuối cùng có thể xấu đi. Vấn đề này là một vấn đề nghiêm trọng mà người mới bắt đầu và các công ty cố gắng để thúc đẩy các dự án mà không có người quản lý dự án dễ bị.
  • Hạn chế khả năng mở rộng của dự án trong tương lai.
  • Rủi ro khi dự án không thể hoàn thành trong điều kiện sửa đổi hoặc thay đổi công nghệ định kỳ. Một nhóm thiếu kinh nghiệm sẽ trì trệ nếu bạn không biết đủ để giả định sản phẩm sau khi giao hàng sẽ là gì, hoặc làm thế nào để đạt được kết quả mong muốn.

Agile vs. Waterfall, cái nào tốt hơn?

Có nhiều lý do cho sự thất bại của dự án, waterfall là ý tưởng về dự án có thể thành công nếu bạn trực quan hóa kiến thức của mọi người, và Agile là ý tưởng rằng "nếu bạn thực hiện từng chút một, bạn có thể thành công dự án" .

Các phương pháp Agile và Waterfall đều có các khía cạnh tích cực và tiêu cực. Lựa chọn phương pháp phù hợp sẽ phụ thuộc vào thẩm quyền phát triển, thời hạn giao hàng và chất lượng cần thiết cho sản phẩm cuối.

Để sử dụng phương pháp quản lý dự án phù hợp nhất cho việc phát triển phần mềm cần dựa vào các tiêu chí sau:

  • Đặc điểm của dự án
  • Đặc điểm kỹ thuật sản phẩm
  • Dữ liệu đầu vào và yêu cầu ứng dụng của khách hàng
  • Quy mô và ý nghĩa của sản phẩm phát triển

Có một cách hiệu quả đó là kết hợp cả 2 mô hình để tận dụng những điểm tốt hơn là tập trung vào chỉ một trong hai.

Mô hình kết hợp này không mang khái niệm loại trừ lẫn nhau, mà lấy lợi thế để tăng hiệu quả trong quản lý dự án.

Sau đây là một số mẫu quản lý sử dụng kết hợp giữa 2 mô hình.

Mô hình kết hợp song song với nền tảng là waterfall (water scrum fall)

Chỉ để lại waterfall ở giai đoạn yêu cầu định nghĩa và kiểm thử hệ thống. Giai đoạn thiết kế và thực hiện coding sẽ được tăng năng suất bằng cách thực hiện phát triển với Agile (như Scrum).

Đặc trưng:

  • Cần có kiến thức tổng quan về hệ thống một cách. Phần chi tiết và cốt lõi có thểlinh động chia nhỏ để thực hiện một cách nhanh nhẹn.
  • Phát triển nhanh chóng, dễ đối phó với những thất bại hoặc rủi ro của dự án hoặc thay đổi về thiết kế.
  • Giảm về mức độ thiết kế chi tiết của lớp tài liệu, do đó cải thiện năng suất bằng cách giảm khối lượng công việc.
  • Phù hợp cho các dự án hệ thống quy mô lớn.

Mô hình quản lý tập trung phát triển khuynh hướng sử dụng waterfall

Mô hình này nhằm tăng tính linh hoạt bằng cách phát triển trên waterfall nhưng chia theo thứ tự ưu tiên. Phân chia các yêu cầu theo nhóm có đặc tính tương tự nhau xét theo các thứ tự ưu tiên như về mặt performance, về thiết kế.

Ngoài ra còn tăng tốc độ bằng cách kết hợp với giao hàng kiểu cuốn chiếu.

Đặc trưng:

  • Bằng cách sử dụng bộ phận tập trung nhanh nhẹn linh hoạt có thể đáp ứng với những thay đổi yêu cầu.
  • Mặc dù tổng quan chung là chậm hơn so với agile thuần, vì trọng tâm phát triển được chia ra, nhưng việc phát triển ban đầu nhanh hơn.  - Phù hợp với các dự án quy mô nhỏ, yêu cầu phức tạp, thay đổi nhiều.

Mô hình bóc tách hệ thống phức hợp Scrum & Waterfall

Giai đoạn định nghĩa yêu cầu được thực hiện chung bước đầu, sau đó chia nhỏ phần thiết kế để phát triển song song các phần tương ứng, sau đó tích hợp hệ thống cuối cùng.

Đặc trưng:

  • Là waterfall nhưng tận dụng lợi thế của Agile.
  • Dễ dàng cùng phát triển các hệ thống khác nhau
  • Phù hợp với các dự án EC, nâng cấp cải tạo các hệ thống kinh doanh cửa hàng.

Mô hình cải tiến và thực hiện song song waterfall nhằm rút ngắn thời gian phát triển (Waterfall Parallel)

Không phải là kết hợp của waterfall và agile, là sự kết hợp của mình waterfall. Cơ sở là waterfall, nhưng phân chia quá trình phát triển, chẳng hạn chia nhỏ theo đơn vị chức năng để thiết kế và thực hiện coding song song. So với waterfall thuần, thời gian phát triển được rút ngắn vì thực hiện song song.

Đặc trưng:

  • Tốc độ nhanh đến chóng mặt cho đến khi release cuối cùng.
  • Tương đối mạnh mẽ đối với các lỗi thiết kế chức năng nếu như thất bại nhưng bất lợi nếu gặp thay đổi yêu cầu.
  • Phù hợp với các dự án quy mô rất lớn.

Tóm tắt

Bằng cách này, thay vì sử dụng duy nhất, có thể kết hợp bội số kỹ năng phát triển để linh hoạt và phù hợp với tất cả các loại hình dự án. Nếu biết tối ưu hóa lợi thế của từng mô hình sẽ làm tăng phẩm chất tuyệt vời của người quản lý dự án.