• Thứ Hai, 07/11/2005 15:36 (GMT+7)

    Tổng quan các mô hình phát triển phần mềm (tiếp theo)

    SO SÁNH CÁC MÔ HÌNH

    Bài viết trong tháng 8 (ID:A0508_106) đã giới thiệu các mô hình xây dựng/phát triển phần mềm (SEP), bài này xin được tiếp tục nêu lên những ưu và nhược điểm của mỗi mô hình để giúp bạn có thể lựa chọn mô hình phù hợp cho dự án phần mềm của mình.

    Mô hình Waterfall

    Ưu điểm:

    Các giai đoạn được định nghĩa, với đầu vào và đầu ra rõ ràng. Mô hình này cơ bản dựa trên tài liệu nhất là trong các giai đoạn đầu, đầu vào và đầu ra đều là tài liệu.

    Sản phẩm phần mềm được hình thành thông qua chuỗi các hoạt động xây dựng phần mềm theo trình tự rõ ràng.

    Nhược điểm:

    Đòi hỏi tất cả yêu cầu phần mềm phải được xác định rõ ràng ngay từ đầu dự án. Nhưng đa số dự án thực tế cho thấy yêu cầu phần mềm thường ẩn chứa không nhiều thì ít những điểm không chắc chắn.

    Một thực tế là các dự án hiếm khi được thực hiện đầy đủ các bước trong suốt chu kỳ dự án. Đặc biệt là giai đoạn kiểm thử khi gần đến ngày giao hàng chẳng hạn, nếu có trục trặc xảy ra do yêu cầu phần mềm không rõ ràng hay thiết kế có lỗi, xu hướng là mã nguồn được sửa đổi trực tiếp mà không qua các bước bổ sung theo đúng mô hình, nên dẫn đến bản đặc tả phần mềm cũng như một số sản phẩm trung gian khác như bản thiết kế, cho dù có được cập nhật sau này cũng có thể không phản ánh đầy đủ những gì đã được sửa đổi trong mã nguồn.

    Người sử dụng không có cơ hội tham gia trong suốt thời gian của các giai đoạn trung gian từ thiết kế cho đến kiểm thử. Đặc biệt với những dự án lớn, người sử dụng chỉ có thể nhận ra rằng hệ thống phần mềm không phù hợp cho nhu cầu của họ vào thời điểm cuối dự án.

    Nói chung, mô hình này thường ẩn chứa nhiều rủi ro mà chỉ có thể phát hiện ở giai đoạn cuối cùng (được minh họa trong hình 1) và chi phí để sửa chữa có thể rất cao.

    Ứng dụng:

    Yêu cầu được định nghĩa rất rõ ràng, chi tiết và hầu như không thay đổi, thường xuất phát từ sản phẩm đã đạt mức ổn định.

    Yêu cầu mới bổ sung (nếu có) cũng sớm được xác định rõ ràng, đầy đủ từ đầu dự án.

    Đội ngũ thực hiện quen thuộc và hiểu rõ tất cả yêu cầu của dự án, và có nhiều kinh nghiệm với các công nghệ được dùng để phát triển sản phẩm.

    Dự án được xác định hầu như không có rủi ro.

    Mô hình chữ V

    Ưu điểm:

    Các hoạt động kiểm thử được chú trọng và thực hiện song song với các hoạt động liên quan đến đặc tả yêu cầu và thiết kế. Hay nói cách khác, mô hình này khuyến khích các hoạt động liên quan đến kế hoạch kiểm thử được tiến hành sớm trong chu kỳ phát triển, không phải đợi đến lúc kết thúc giai đoạn hiện thực.

    Nhược điểm:

    Giống mô hình waterfall

    Ứng dụng:

    Tham khảo mô hình waterfall.

    Mô hình mẫu

    Ưu điểm:

    Người sử dụng sớm hình dung ra chức năng và đặc điểm của hệ thống.

    Cải thiện sự liên lạc giữa nhà phát triển và người sử dụng.

    Nhược điểm:

    Khi mẫu (prototype) không chuyển tải hết các chức năng, đặc điểm của hệ thống phần mềm thì người sử dụng có thể thất vọng và mất đi sự quan tâm đến hệ thống sẽ được phát triển.

    Prototype thường được làm nhanh, thậm chí vội vàng, theo kiểu "hiện thực - sửa" và có thể thiếu sự phân tích đánh giá một cách cẩn thận tất cả khía cạnh liên quan đến hệ thống cuối cùng.

    Nói chung mô hình này vẫn chưa thể cải thiện được việc loại trừ khoảng cách giữa yêu cầu và ứng dụng cuối cùng.

    Ứng dụng:

    Hệ thống chủ yếu dựa trên giao diện người dùng (GUI)

    Khách hàng, nhất là người sử dụng cuối, không thể xác định rõ ràng yêu cầu.

    Mô hình tiến hóa

    Ưu điểm:

    Chú trọng việc tái sử dụng mẫu. Một phần của hệ thống có thể được phát triển ngay trong các giai đoạn phân tích phát triển yêu cầu và thiết kế.

    Cho phép thay đổi yêu cầu và khuyến khích người sử dụng tham gia trong suốt chu kỳ của dự án.

    Nhược điểm:

    Làm chậm quá trình phát triển yêu cầu và có thể ảnh hưởng sự chú ý đến các công việc trung gian như kiểm tra mã nguồn, thực hiện kiểm thử cấp thấp...

    Dễ dẫn đến kết cấu của hệ thống kém.

    Thường thì với mô hình này, tính chặt chẽ, minh bạch của qui trình kém.

    Ứng dụng:

    Hệ thống tương tác nhỏ và vừa; phần GUI của những hệ thống lớn; những hệ thống cần chu kỳ phát triển ngắn.

    Đội ngũ phát triển không quen thuộc với lĩnh vực của dự án.

    Mô hình lặp và tăng dần

    Ưu điểm:

    Giảm rủi ro sớm trong chu kỳ phát triển phần mềm. Những yêu cầu quan trọng thường được phát triển và chuyển đến người sử dụng sớm.

    Phản hồi của nguời sử dụng về những vấn đề phát sinh trong phiên bản trước được dùng để cải tiến và ngăn ngừa những vấn đề tương tự xảy ra trong những phiên bản tiếp theo.

    Nhược điểm:

    Tổng chi phí lập kế hoạch phát triển cho toàn hệ thống có thể cao hơn. Lưu ý, ở đây chỉ đề cập chi phí lập kế hoạch ban đầu, không bao gồm tất cả chi phí phát sinh. Trong thực tế, nếu ứng dụng hợp lý, toàn bộ chi phí và thời gian cho đến khi sản phẩm được nghiệm thu có thể thấp hơn so với mô hình khác.

    Các yêu cầu về kế hoạch và hoạt động trong qui trình cụ thể sẽ phức tạp hơn.

    Ứng dụng:

    Mô hình lặp:

    Đội ngũ phát triển quen thuộc với lĩnh vực dự án nhưng không có nhiều kinh nghiệm, nhất là về công nghệ được dùng phát triển dự án.

    Có nhiều rủi ro về mặt kỹ thuật

    Mô hình tăng dần:


    Rủi ro được phân tích và xác định ngay từ đầu.

    Giao tiếp giữa các module cũng được xác định rõ ràng từ đầu.

    Đội ngũ phát triển quen thuộc với lĩnh vực của dự án và có nhiều kinh nghiệm.

    Hệ thống lớn được phát triển trong thời gian dài, khách hàng cần triển khai sớm một số phần của hệ thống.

    Mô hình phát triển nhanh

    Ưu điểm:


    Cho phép giảm thời gian phát triển các ứng dụng CSDL và có nhiều giao diện người dùng hay tích hợp các thành phần có sẵn.

    Người sử dụng sẽ tham gia vào các hoạt động kiểm thử.

    Nhược điểm:


    Khó có sự nhất quán giữa những thành phần được phát triển bởi các nhóm khác nhau.

    Không phù hợp cho những ứng dụng đòi hỏi hiệu suất vì thường phụ thuộc vào sự hỗ trợ của môi trường phát triển và ngôn ngữ cấp cao.

    Ứng dụng:


    Hệ thống quản lý thông tin kiểu những ứng dụng dựa trên GUI và CSDL.

    Có sự hỗ trợ của công cụ hay sử dụng ngôn ngữ cấp cao.

    Hệ thống không yêu cầu khắt khe về hiệu suất.

    Mô hình xoắn

    Ưu điểm:


    Phân tích đánh giá rủi ro được đẩy lên như một phần thiết yếu trong mỗi “spiral” để tăng mức độ tin cậy của dự án.

    Kết hợp những tính chất tốt nhất của mô hình waterfall và tiến hóa.

    Cho phép thay đổi tùy theo điều kiện thực tế dự án tại mỗi “spiral”.

    Đây chính là mô hình tổng quát nhất, tất cả các mô hình khác đều có thể xem là một hiện thực của mô hình tổng quát này, hay cũng có thể xem nó là mô hình tổng hợp các mô hình khác. Đặc biệt, nó được ứng dụng không chỉ trong phát triển phần mềm mà còn trong phát triển phần cứng.

    Nhược điểm:

    Phức tạp và không phù hợp cho dự án nhỏ với ít rủi ro.

    Cần có kỹ năng tốt về phân tích rủi ro.

    Ứng dụng:

    Dự án lớn có nhiều rủi ro hay sự thành công của dự án không có được sự đảm bảo nhất định; những dự án đòi hỏi nhiều tính toán, xử lý như hệ thống hỗ trợ
    quyết định.

    Đội ngũ thực hiện dự án có khả năng phân tích rủi ro.

    Trên đây là một số so sánh giữa các mô hình, thực sự việc lựa chọn cụ thể mô hình nào không phải dễ dàng và trên thực tế người ta thường dùng mô hình lai, kết hợp một số mô hình với nhau sao cho phù hợp với dự án.

    Việc cải tiến các mô hình phát triển phần mềm luôn là đề tài nghiên cứu hấp dẫn, với sự tham gia tích cực không những từ các nhà sản xuất phần mềm mà còn từ các viện đại học khắp thế giới. Riêng với các nhà phát triển phần mềm, họ luôn cố gắng cải tiến liên tục qui trình phát triển của mình nhằm không ngừng đổi mới, nâng cao năng suất và chất lượng sản phẩm. Tuy nhiên, một điều dễ thấy là việc lựa chọn, tùy biến mô hình phù hợp cho các dự án đã khó, nhưng việc vận hành nó vào trong quá trình phát triển sản phẩm càng khó hơn. Đó chính là thách thức cho các nhà phát triển phần mềm.

                                             Hình 1: Rủi ro tồn tại cho đến gần cuối dự án.

    Cao Đại Ân
    Global CyberSoft Vietnam

    ID: A0510_122