Các mô hình phát triển phần mềm phổ biến

1. Waterfall model – Mô hình thác nước

Quy trình phát triển phần mềm
  • Mô tả
    • Mô hình thác nước là mô hình áp dụng theo tính tuần tự của các giai đoạn phát triển phần mềm
    • Có nghĩa là: giai đoạn sau chỉ được thực hiện tiếp khi giai đoạn trước đã kết thúc
    • Không được quay lại giai đoạn trước để xử lí các thay đổi trong yêu cầu
    • Đây được coi là mô hình phát triển phần mềm đầu tiên.
  • Áp dụng
    • Thường được áp dụng cho các dự án không thường xuyên bị thay đổi về yêu cầu.
  • Đặc điểm
    • Ưu điểm:
      • Dễ sử dụng, dễ tiếp cận
      • Các giai đoạn và hoạt động được xác định rõ ràng
      • Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi
    • Nhược điểm:
      • Rất khó để quay lại giai đoạn nào khi nó đã kết thúc
      • Ít tính linh hoạt và phạm vi điều chỉnh của nó khá là khó khăn, tốn kém.

2. V- Shaped Model- Mô hình chữ V

Quy trình phát triển phần mềm
  • Mô tả
    • Đây là mô hình mở rộng từ mô hình thác nước
    • Thay vì di chuyển xuống theo tuần tự các bước thì quy trình sẽ đi theo hình chữ V
  • Áp dụng
    • Yêu cầu phần mềm phải xác định rõ ràng
    • Công nghệ phần mềm và các công cụ phải được tìm hiểu kĩ
  • Đặc điểm
    • Ưu điểm:
      • Đơn giản dễ sử dụng
      • Phấn phối cụ thể theo mỗi giai đoạn
      • Thực hiện verification và validation sớm trong mỗi giai đoạn phát triển
    • Nhược điểm:
      • Phạm vi điều chỉnh khá là khó khăn và tốn kém.

3. Spiral Model – Mô hình xoắn ốc

Quy trình phát triển phần mềm
  • Mô tả
    • Là mô hình kết hợp giữa các tính năng của mô hình prototyping và mô hình thác nước.
    • Mô hình xoắn ốc được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp.
    • Mô hình này sử dụng nhiều những giai đoạn tương tự như mô hình thác nước, về thứ tự, plan, đánh giá rủi ro, …
  • Áp dụng
    • Thường được sử dụng cho các ứng dụng lớn và các hệ thống được xây dựng theo các giai đoạn nhỏ hoặc theo các phân đoạn
  • Đặc điểm
    • Ưu điểm:
      • Estimates (i.e. budget, schedule, etc.) trở nên thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan trọng đã được phát hiện sớm hơn.
      • Có sự tham gia sớm của deverlopers
      • Quản lý rủi ro và phát triển hệ thống theo phase
    • Nhược điểm:
      • Chi phí cao và thời gian dài để có sản phẩm cuối cùng
      • Phải có kỹ năng tốt để đánh giá rủi ro và giả định.

4. Iterative Model- Mô hình tiếp cận lặp

Quy trình phát triển phần mềm

Example: 

Quy trình phát triển phần mềm

Diagram:

  • Mô tả
    • Một mô hình được lặp đi lặp lại từ khi start cho đến khi làm đầy đủ spec
    • Thay vì phát triển phần mềm từ spec đặc tả rồi mới bắt đầu thực thi thì mô hình này có thể review dần dần để đi đến yêu cầu cuối cùng.
    • Quy trình phát triển được lặp đi lặp lại cho mỗi một version của sản phẩm trong mỗi chu kỳ.
  • Áp dụng
    • Yêu cầu của hề thống đã hoàn chỉnh, được xác định rõ ràng và dễ hiểu
    • Yêu cầu chính cần được xác định, và một số chi tiết có thể được đổi mới theo thời gian
  • Đặc điểm
    • Ưu điểm:
      • Xây dựng và hoàn thiện các bước sản phẩm theo từng bước
      • Nhận được phản hồi của người sử dụng từ những bản phác thảo
      • Thời gian làm tài liệu sẽ ít hơn so với thời gian thiết kế
    • Nhược điểm:
      • Mỗi giai đoạn lặp lại thì cứng nhắc
      • Tốn kiến trúc hệ thống hoặc thiết kế các vấn đề có thể phát sinh nhưng không phải tất cả đều xảy ra trong toàn bộ vòng đời.

5. Incremental Model – Mô hình tăng trưởng

Quy trình phát triển phần mềm

Example:

Quy trình phát triển phần mềm

Diagram:

  • Mô tả
    • Trong mô hình này thì spec được chia thành nhiều phần.
    • Chu kỳ được chia thành các module nhỏ, dễ quản lý.
    • Mỗi module sẽ đi qua các yêu cầu về thiết kế, thực hiện, … như 1 vòng đời phát triển thông thường.
  • Áp dụng
    • Áp dụng cho những dự án có yêu cầu đã được mô tả, định nghĩa và hiểu một cách rõ ràng
    • Có nhu cầu về sản phẩm sớm
  • Đặc điểm
    • Ưu điềm:
      • Phần mềm làm việc một cách nhanh chóng trong suốt vòng đời phát triền
      • Mô hình này linh hoạt hơn, ít tốn kém hơn để thay đổi phạm vi và yêu cầu
      • Dễ dàng hơn trong việc kiểm tra và sửa lỗi với sự lặp lại nhỏ hơn
    • Nhược điểm:
      • Cần lập plan và thiết kế tốt
      • Cần một định nghĩa rõ ràng và đầy đủ của toàn bộ hệ thống trước khi nó có thể được chia nhỏ và được xây dựng từng bước
      • Tổng chi phí là cao hơn so với thác nước.

6. RAD Model (Rapid Application Development)

Quy trình phát triển phần mềm
  • Mô tả
    • Là một dạng của incremental model
    • Trong mô hình RAD các thành phần hoặc chức năng được phát triển song song như thể chúng là các dự án nhỏ
    • Việc phát triển này theo thời gian nhất định, cung cấp và lắp ráp thành một nguyên mẫu làm việc
    • Điều này có thể nhanh chóng đưa ra một cái gì đó cho khách hàng để xem và sử dụng và cung cấp thông tin phản hồi liên quan đến việc cung cấp và yêu cầu của họ.
  • Áp dụng
    • RAD nên được sử dụng khi có nhu cầu để tạo ra một hệ thống có Modularized trong khoảng thời gian 2-3 tháng.
    • Nên được sử dụng khi đã có sẵn designer cho model và chi phí cao
    • Đặc điểm:
    • Ưu điềm:
      • Giảm thời gian phát triển.
      • Tăng khả năng tái sử dụng của các thành phần
      • Đưa ra đánh giá ban đầu nhanh chóng
      • Khuyến khích khách hàng đưa ra phản hồi
    • Nhược điểm:
      • Cần có một team giỏi để xác định yêu cầu phần mềm
      • Chỉ những hệ thống có module mới sứ dụng được mô hình này
      • Yêu cầu về dev/ design phải có nhiều kinh nghiệm
      • Phụ thuộc rất nhiều vào kỹ năng model

7. Agile Model

Quy trình phát triển phần mềm
  • Mô tả
    • Dựa trên mô hình iterative and incremental
    • Các yêu cầu và giải pháp phát triển dựa trên sự kết hợp của các function
  • Áp dụng
    • Nó có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng nó cần sự tham gia và tính tương tác của khách hàng. Ngoài ra, nó có thể được sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn ( 3 tuần )
  • Đặc điểm
    • Ưu điểm:
      • Giảm thời gian cần thiết để tận dụng một số tính năng của hệ thống
      • Kết quả cuối cùng là phần mềm chất lượng cao trong thời gian ít nhất có thể và sự hài lòng của khách hàng
    • Nhược điểm:
      • Phụ thuộc vào kỹ năng của người phát triển phần mềm Scalability
      • Tài liệu được thực hiện ở giai đoạn sau
      • Cần một team có kinh nghiệm Needs special skills for the team.

8. Scrum (Scrum là một quy trình phát triển phần mềm thuộc họ agile)

Quy trình phát triển phần mềm

Bình luận bài viết