Mô hình ước lượng COCOMO (Constructive Cost Model) là mô hình ước lượng chi phí phần mềm do tiến sỹ Barry Boehm đưa ra đầu năm 1981, trong cuốn “Software Engineering Economics” (Kinh tế học kỹ nghệ phần mềm). Phiên bản đầu tiên này của COCOMO còn được gọi là “COCOMO 81”. Từ khi ra đời cho đến nay, mô hình liên tục được nghiên cứu và cải tiến để phù hợp với sự thay đổi của kỹ nghệ phần mềm. Năm 1987, hai phiên bản của mô hình COCOMO là Ada COCOMO và Incremental COCOMO (COCOMO gia tăng) được giới thiệu. Trong hai năm tiếp theo 1988 và 1989, mô hình Ada COCOMO được tinh chỉnh. Tuy nhiên, điểm nhấn trong sự phát triển của mô hình
COCOMO là vào những năm 1990 khi COCOMO II đã ra đời [13]. COCOMO II là phiên bản chính thức thứ hai đáp ứng được những thay đổi của thực tiễn phát triển phần mềm chuyên nghiệp từ những năm 1970 đến bấy giờ.
2.2.1.1 Lợi ích của COCOMO II đối với người dùng
Mô hình COCOMO II có thể trợ giúp cho người dùng:
− Đưa ra quyết định đầu tư hoặc các chính sách tài chính có đòi hỏi nỗ lực phát triển phần mềm.
− Thiết lập các ngân sách và lịch biểu, làm cơ sở cho việc lập kế hoạch và kiểm soát.
− Ra quyết định, thương lượng hay chọn thỏa hiệp giữa các yếu tố chi phí lịch biểu, chức năng, tính năng hay chất lượng phần mềm.
− Đưa ra các quyết định quản lý rủi ro về chi phí và thời gian phát triển.
− Quyết định việc phát triển, tái sử dụng, xuất xưởng hoặc mua những phần nào trong một hệ thống phần mềm.
− Đưa ra các quyết định kiểm kê đối với những phần mềm kế thừa.
− Xác định các chiến lược đầu tư kết hợp để tăng cường năng lực phần mềm của tổ chức, thông qua tái sử dụng, các công cụ, sự thuần thục về quy trình, thuê bên ngoài gia công.
− Đưa ra quyết định về cách thức thực hiện một chiến lược nhằm cải thiện quy trình.
2.2.1.2 Mục đích của mô hình COCOMO II
Từ những nhu cầu cải tiến và qua những phản hồi của người dùng, mô hình cải tiến COCOMO II được xây dựng với những mục đích sau [13]:
− Mang lại những ước lượng chính xác về chi phí và thời gian cho những dự án hiện tại và có thể cả trong tương lai.
− Cho phép các tổ chức có thể dễ dàng điều chỉnh lại, xác lập hoặc mở rộng COCOMO II để phù hợp hơn với hoàn cảnh cụ thể của họ.
− Cung cấp các định nghĩa chi tiết, dễ hiểu về các đầu vào, các đầu ra và các giả định của mô hình.
− Cung cấp một mô hình có tính xây dựng.
− Cung cấp một mô hình quy chuẩn.
− Cung cấp một mô hình tiến triển.
2.2.1.3 Mô hình COCOMO
Các biểu thức xác định kích thước
Cả hai mô hình Post – Architecture (PA) và Early – Design (ED) đều sử dụng các biểu thức ước lượng kích thước.
REVL Size = 1 + x (EquivalentKSLOC) 100 AT
EquivalentKSLOC = AdaptedKSLOC x 1 - x AAM 100 AA + AAF x (1 + 0.02 x SU x UNFM) , AAF 50 100 AAM =
AA + AAF + (SU x UNFM)
, AAF > 50 100 AAF = (0.4 x DM) + (0.3 x CM) + (0.3 x IM)
Các biểu thức của mô hình Post – Architecture
17 E i Auto i = 1 PM = A x Size x EM + PM 5 j j=1 E = B + 0.01 x SF AT AdaptedSLOC x 100 PM = ATPROD
Các biểu thức của mô hình Early – Design
7 E
i Auto
i = 1
PM = A x Size x EM + PM
Biểu thức về thời gian phát triển
F NS SCED% TDEV = C x PM x 100 F = D + 2 x (E - B)
Phân loại các mô hình COCOMO [20]
Trong một số cuốn sách về kinh tế kỹ nghệ phần mềm, các mô hình ước lượng phần mềm mang tên COCOMO được sắp thứ tự như sau:
Mô hình 1, COCOMO cở sở là một đơn trị tĩnh tính ra công sức để phát triển phần mềm xem như hàm kích cỡ chương trình được diễn đạt theo số dòng mã ước lượng.
Mô hình 2, COCOMO trung bình tính công sức phát triển phần mềm như một hàm của kích cỡ chương trình và một tập các hướng dẫn chi phí bao gồm các định giá chủ quan về sản phẩm, phần cứng, nhân sự và thuộc tính dự án.
Mô hình 3, COCOMO nâng cao tổ hợp tất cả các đặc trưng của các bản trung bình về việc định giá chi phí hướng dẫn ảnh hưởng lên từng bước (phân tích, thiết kế,…) của tiến trình kỹ nghệ phần mềm.
COCOMO có thể được áp dụng cho 3 lớp phần mềm sau:
− Mode có cấu trúc: các dự án phần mềm tương đối nhỏ, đơn giản, làm việc với một tập các yêu cầu ít chặt chẽ (ví dụ: chương trình phân tích nhiệt dùng cho nhóm truyền nhiệt).
− Mode bán cấu trúc: một dự án phần mềm trung bình về kích cỡ và độ phức tạp, phải đáp ứng các yêu cầu chặt chẽ và kém chặt chẽ (ví dụ: hệ thống xử lý giao tác cho phần cứng là thiết bị đầu cuối và phần mềm là cơ sở dữ liệu).
− Mode nhúng: một dự án phần mềm phải được phát triển bên trong một tập phần cứng, phần mềm và các ràng buộc chặt chẽ (như phần mềm kiểm soát bay của máy bay).
Phương trình COCOMO cơ bản có dạng:
b b
E = a (KSLOC) exp(b )
b b
Với E là công sức được áp dụng theo người-tháng, D là thời gian phát triển theo tháng còn KSLOC là số được ước lượng về số dòng mã (biểu diễn theo nghìn dòng) phải bàn giao cho dự án (Hệ số ab và cb và phần mũ bb và db xem trong bảng P.7 phần phụ lục).
Mô hình cơ sở được mở rộng để xem xét một tập các thuộc tính hướng dẫn chi phí có thể được gộp lại thành bốn loại chính:
Thuộc tính sản phẩm:
Độ tin cậy của phần mềm cần có.
Kích cỡ cơ sở dữ liệu ứng dụng.
Độ phức tạp của sản phẩm.
Thuộc tính phần cứng:
Ràng buộc hiệu năng khi chạy.
Ràng buộc bộ nhớ.
Tính dễ thay đổi của môi trường máy ảo.
Thời gian quay vòng cần thiết.
Thuộc tính nhân viên:
Khả năng phân tích.
Khả năng kỹ nghệ phần mềm.
Kinh nghiệm ứng dụng.
Kinh nghiệm máy ảo.
Kinh nghiệm ngôn ngữ lập trình.
Thuộc tính dự án:
Dùng công cụ phần mềm.
Ứng dụng phương pháp kỹ nghệ phần mềm.
Lập lịch phát triển theo yêu cầu.
Phương trình COCOMO trung bình có dạng:
i i
Với E là công sức được áp dụng theo người-tháng còn LOC là số ước lượng về dòng mã phải bàn giao cho dự án (Chi tiết hệ số ai và số mũ bi xem bảng P.8 phần phụ lục).
COCOMO biểu thị cho một mô hình kinh nghiệm toàn diện cho việc ước lượng phần mềm. Để minh họa cho việc dùng COCOMO, áp dụng mô hình cơ sở cho thí dụ phần mềm CAD đã mô tả trước đây. Dùng ước lượng LOC được phát triển và hệ số cho trong bảng P.26 để được:
E = 3.0 (LOC) exp(1.12) = 3.0 (33.3)1.12 = 152 người-tháng
Giá trị này khá phù hợp với ước lượng được suy dẫn trong các mục trước (ước lượng LOC, FP và công sức).
Để tính thời hạn dự án ta dùng ước lượng công sức được mô tả ở trên:
D = 2.5 (E) exp (0.35) = 2.5 (125)0.35 = 14.5 tháng
Giá trị cho thời hạn dự án giúp cho người lập kế hoạch xác định một số người cần cho dự án:
N = E/D = 152/14.5 11 người
Trong thực tế, người lập kế hoạch có thể quyết định dùng bốn người và kéo dài thời hạn dự án tương ứng.
Chi tiết về mô hình COCOMO xem P.2 Mô hình COCOMO phần phụ lục.