|
(Post 24/01/2006)
Bài viết lần trước
đã 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.
SO SÁNH CÁC MÔ HÌ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
(theo PC World VN) |