COCOMO I and II

 Chương 1

1.1  Khái niệm quản lý chi phí dự án

Chi phí là tài nguyên được hy sinh hay tính trước để đạt được một mục tiêu rõ ràng hay để trao đổi cái gì đó. Chi phí thường được đo bằng đơn vị tiền tệ.

Quản lý chi phí dự án bao gồm những quy trình yêu cầu đảm bảo cho dự án được hoàn tất trong sự cho phép của ngân sách.

1.2 Tầm quan trọng của quản lý chi phí dự án

Quản lý chi phí dự án rất quan trọng vì:

·     Kiểm soát tài chính:Giúp đảm bảo dự án không vượt quá ngân sách được giao, tránh gây ra chi phí không cần thiết hoặc không lường trước được.

·     Dự báo và quản lý rủi ro: Phân tích chi phí giúp dự đoán và quản lý các rủi ro tài chính, từ đó đảm bảo sự ổn định và tin cậy cho dự án.

·     Tối ưu hóa sử dụng tài nguyên:Quản lý chi phí giúp tối ưu hóa việc sử dụng nguồn lực, bao gồm cả nhân lực và vật liệu, để đảm bảo hiệu suất cao nhất với chi phí thấp nhất.

·     Đảm bảo chất lượng sản phẩm/dịch vụ:Bằng cách phân bổ tài nguyên một cách hợp lý, quản lý chi phí giúp đảm bảo chất lượng của sản phẩm hoặc dịch vụ cuối cùng không bị ảnh hưởng do hạn chế ngân sách.

·     Tăng tính cạnh tranh: Quản lý chi phí hiệu quả giúp tăng tính cạnh tranh của dự án bằng cách giữ cho giá cả cạnh tranh và hợp lý, làm tăng khả năng thu hút khách hàng và đối tác.

Chương 2

2.1 Lịch sử phát triển của COCOMO 

COCOMO, hay COnstructive COst MOdel, là một mô hình ước tính chi phí phát triển phần mềm đã được Barry William Boehm giới thiệu lần đầu vào năm 1981. Mục đích của COCOMO là ước lượng và dự đoán các yếu tố chi phí, thời gian và nguồn lực cần thiết cho việc phát triển phần mềm.

COCOMO được phát triển qua nhiều phiên bản khác nhau từ thời điểm ban đầu. Các phiên bản chính của COCOMO bao gồm:

·       COCOMO 81: Đây là phiên bản ban đầu của COCOMO được giới thiệu vào năm 1981. Mô hình này tập trung vào ước lượng dự án dựa trên kích thước của phần mềm và các yếu tố điều kiện của dự án.

·       COCOMO II: Phiên bản này được phát triển vào những năm 2000 và là một cải tiến lớn so với COCOMO 81. COCOMO II cung cấp các mô hình ước lượng chi phí phù hợp với các dự án phần mềm lớn và phức tạp hơn, bao gồm cả phần mềm nhúng và phần mềm phân tán.

COCOMO đã trở thành một trong những công cụ phổ biến nhất để ước lượng chi phí và quản lý dự án phần mềm. Mặc dù đã có sự phát triển của các phương pháp ước lượng khác sau này, COCOMO vẫn được sử dụng rộng rãi trong ngành công nghiệp phần mềm và là một phần quan trọng của các quy trình quản lý dự án

2.2 Loại dự án phần mềm

Mô hình COCOMO có thể được áp dụng vào ba loại dự án phần mềm:

·     Dự án Organic project: Một dự án phần mềm hữu cơ yêu cầu một nhóm nhỏ, vấn đề được hiểu rõ, và các thành viên trong nhóm có kinh nghiệm trong việc phát triển các dự án tương tự.

·     Dự án Semi-detached project: Một dự án có kích thước trung bình, với quá trình phát triển bao gồm sự kết hợp giữa nhân viên có kinh nghiệm và không có kinh nghiệm

·     Dự án Embedded: Một dự án phần mềm nhúng có mức độ phức tạp cao, yêu cầu một nhóm lớn có kinh nghiệm, và liên kết với phần cứng phức tạp.

2.3. Các loại mô hình cocomo

Mô hình COCOMO được chia thành ba loại:

2.3.1 Mô hình cơ bản

Phương trình của COCOMO cơ bản có dạng:

E=ab(KLOC)b b

D=cb(E)d b

P=E/D

Trong đó:

        E = Ước tính của NGƯỜI/THÁNG,

        D = Thời gian triển khai tính theo tháng

        P = Số người yêu cầu

        KLOC = Số dòng lệnh (đơn vị=1000) ước tính của sản phẩm dự án phần mềm.

        Hệ số ab, bb, cb và db được cho bởi bảng sau đây:

 

Dự án phần mềm

ab

bb

cb

db

Organic

2.4

1.05

2.5

0.38

Semi - detached

3.0

1.12

2.5

0.35

Embbeded

3.6

1.20

2.5

0.32

COCOMO cơ bản rất tốt cho Ước tính chi phí thô, dễ dàng và nhanh. Tuy nhiên, sự chính xác sẽ bị giới hạn vì thiếu một số nhân tố chưa kể đến là sự khác nhau trong ràng buộc về phần cứng, kinh nghiệm và khả năng chuyên nghiệp của con người, việc sử dụng các công cụ hiện đại và các đặc trưng khác có ảnh hưởng đấn chi phí phần mềm.

Ví dụ 1

Giả sử dự án được ước tính khoảng 400 KLOC. Hãy tính nhân lực và thời gian cho mỗi loại dự án khác nhau

1. Đối với loại Organic:

E = 2.4(400)1.05 = 1295.31 PM

D = 2.5(1295.31)0.38 = 38.07 M

2. Đối với loại Semi - detached:

E = 3.0(400)1.12 = 2462.79 PM

D = 2.5(2462.79)0.35 = 38.45 M

3. Đối với loại Embbeded:

E = 3.6(400)1.20 = 4772.81 PM

D = 2.5(1295)0.32 = 38 M

Ví dụ 2

Quy mô dự án được ước tính khoảng 200 KLOC. Đội phát triển phần mềm có kinh nghiệm ở mức trung bình cho các loại dự án tương tự. Lịch biểu của dự án không đòi hỏi chặt chẽ lắm. Hãy tính thời gian phát triển, số người bình quân của đội, và tính hiệu suất của dự án.

Solution: Dự án thuộc loại semi-detached

        Tính các hệ số: E = 3.0(200)1.12 = 1133.12 PM

   D = 2.5(1133.12)0.35 = 38.67 M

        Số nhân viên (staff size) = E/D = 38.67 người

        Hiệu suất dự án (productivity) = KLOC/E = 176 LOC/PM

2.3.2 Mô hình trung gian.

          Mô hình Cocomo cơ bản cho rằng nỗ lực (Effort) có thể tính toán dựa vào số dòng mã (kLOC) và một số hằng số được tính toán theo các hệ thống phần mềm khác nhau. Mô hình COCOMO trung gian nhận ra những yếu điểm này và tinh chỉnh các ước tính ban đầu được thu được thông qua mô hình COCOMO cơ bản bằng cách sử dụng một tập hợp được chia làm 4 nhóm gồm 15 yếu tố đánh giá chi phí dựa trên các thuộc tính khác nhau của kỹ thuật phần mềm.

         Mỗi thuộc tính được đánh giá theo thang điểm có 6 mức từ rất chậm (very low) cho đến mức quá cao (extra high). Dựa trên thang điểm ta có thể tính toán được hệ số điều chỉnh nỗ lực (EAF- effort adjustment factor) bằng cách nhân các giá trị của thuộc tính lại với nhau

Các yếu tố đánh giá chi phí và các thuộc tính của chúng:

(i) Thuộc tính của sản phẩm

-     Phạm vi độ tin cậy của phần mềm (RELY)

-     Kích thước của cơ sở dữ liệu (database) (DATA)

-     Độ phức tạp của sản phẩm (CPLX)

(ii) Thuộc tính của phần cứng

-     Ràng buộc về hiệu suất thời gian chạy (TIME)

-     Ràng buộc về bộ nhớ (STOR)

-     Sự biến động của môi trường máy ảo (VIRT)

-        Yêu cầu về thời gian chuyển hướng (turnabout time) (TURN)

(iii) Thuộc tính của nhân sự

-     Khả năng của nhà phân tích (ACAP)

-     Khả năng kỹ thuật phần mềm (AEXP)

-     Kinh nghiệm ứng dụng (PCAP)

-     Kinh nghiệm với máy ảo (VEXP)

-     Kinh nghiệm với ngôn ngữ lập trình (LEXP)

(iv) Thuộc tính của dự án

-     Sử dụng các công cụ phần mềm (MODP)

-     Áp dụng các phương pháp kỹ thuật phần mềm (TOOL)

-     Lịch trình phát triển được yêu cầu (SCED)


Công thức tính toán chi phí:

-     Nỗ lực (E-effort) được đo bằng người- tháng (person-months)

-     Thời gian (T-time) được đo bằng đơn vị tháng (months)

-     kLOC: số dòng lệnh (đơn vị = 1000) ước tính của phần mềm

-     People required được tính bằng đơn vị người

-     Các hằng số a, b, c d khác nhau đối với từng loại mô hình, dựa vào bảng sau:

Ví dụ: Giả sử một dự án được ước tính có 400 kLOC (kilo Lines of code). Hãy tính toán nỗ lực (E), thời gian (Time) và số lượng người cần thiết (People required) trong khi xem xét dự án thuộc loại Organic và có độ phức tạp thông thường (normal complexity). Nhà phát triển có kinh nghiệm cao với máy ảo.( high virtual machine experience.)

Giá trị độ phức tạp thông thường (CPLX) của một dự án là 1.00

Kinh nghiệm cao với máy ảo (VEXP) của nhà phát triển là 0.90

Ø  Từ đó có thể tính được các giá trị:

2.2.3 Mô hình chi tiết

Mô hình COCOMO chi tiết tích hợp tất cả các đặc điểm của mô hình cơ bản và trung gian với một đánh giá về ảnh hưởng của yếu tố chi phí đối với mỗi phương pháp của quá trình kỹ thuật phần mềm. Mô hình chi tiết sử dụng các hệ số nhân công sức khác nhau cho mỗi thuộc tính của yếu tố chi phí. Trong COCOMO chi tiết, toàn bộ phần mềm được phân biệt thành nhiều mô-đun, sau đó chúng ta áp dụng COCOMO vào các mô-đun khác nhau để ước tính công sức (E), và sau đó tính tổng công sức.

Sáu giai đoạn chi tiết của COCOMO là:

1. Lập kế hoạch và yêu cầu: Xác định và phân tích yêu cầu của dự án cũng như lập kế hoạch cho các công việc tiếp theo.

2. Cấu trúc hệ thống: Thiết kế cấu trúc tổng thể của hệ thống và xác định các khối chức năng.

3. Cấu trúc hoàn chỉnh: Phát triển cấu trúc chi tiết của hệ thống, bao gồm các giao diện và định nghĩa dữ liệu.

4. Mã mô-đun và kiểm tra: Viết mã, thực hiện các mô-đun và kiểm tra chúng để đảm bảo tính đúng đắn và độ tin cậy.

5. Tích hợp và kiểm tra: Tích hợp các mô-đun và phần mềm con thành một hệ thống hoàn chỉnh và thực hiện các bài kiểm tra tích hợp.

6. Mô hình xây dựng chi phí: Ước lượng chi phí và thời gian dự án dựa trên các yếu tố như kích thước của dự án, độ phức tạp và khả năng của nhóm phát triển.

Ø  Tóm gọn lại, mô hình chi tiết kết hợp các đặc điểm của cả mô hình trung gian và cơ bản bằng cách phân tách phần mềm thành nhiều phần nhỏ hơn để áp dụng công thức COCOMO vào từng phần một, sau đó ghép lại và tính tổng nỗ lực (E) của phần mềm đó

Chương 3

COCOMO 2

3.1. Khái niệm

COCOMO 2 là một phương pháp ước tính chi phí khác được sử dụng để tính toán chi phí phát triển phần mềm. Đây là một phiên bản sửa đổi của COCOMO ban đầu được phát triển tại Đại học Nam California. Nó chủ yếu được thiết kế để giải quyết nhược điểm của mô hình COCOMO 1. Mục tiêu chính của nó là cung cấp các phương pháp, cấu trúc phân tích định lượng và công cụ. Nó tính toán tổng thời gian và nỗ lực phát triển dựa trên ước tính của tất cả các hệ thống phụ cá nhân.

Nó dựa trên công thức tái sử dụng phi tuyến tính. Phương pháp này hỗ trợ việc cung cấp các ước tính đại diện cho một độ lệch chuẩn của ước tính phổ biến nhất. Năm yếu tố tỷ lệ xác định số mũ của phương trình nỗ lực của nó, và có 17 trình điều khiển chi phí được gán cho nó. Nó hữu ích trong các mô hình phát triển phần mềm không tuần tự, tái sử dụng, phát triển nhanh và tái kỹ thuật lại chu trình phát triển phần mềm.COCOMO-II có 4 loại mô hình :

-       Mô hình thành phần ứng dụng

-       Mô hình thiết kế ban đầu       

-       Mô hình tái sử dụng

-       Mô hình kích thước đã biết

3.2. Các loại mô hình COCOMO 2

3.2.1. Mô hình thành phần ứng dụng

Mô hình thành phần ứng dụng (Application Composition Model - ACM) cho phép người dùng ước lượng chi phí và nỗ lực ở giai đoạn 1 của Mô hình COCOMO II. Trong mô hình này, kích thước được ước lượng đầu tiên bằng cách sử dụng Điểm Đối tượng (Object Point). Điểm Đối tượng dễ xác định và đếm. Điểm Đối tượng xác định các màn hình (screens), báo cáo (report) và các mô-đun thế hệ thứ ba (3GL)

Có thể tính toán nỗ lực thông qua 7 bước:

1. Xác định đối tượng truy cập

Ước lượng số lượng màn hình, báo cáo và các thành phần 3GL sẽ tạo thành ứng dụng này.

2. Phân loại Cấp độ Phức tạp của Mỗi Đối tượng

Chúng ta phải phân loại mỗi trường hợp đối tượng thành các cấp độ đơn giản, trung bình và khó khăn tùy thuộc vào giá trị của các đặc điểm của nó. Các cấp độ phức tạp được gán theo bảng được cung cấp.

3. Gán Trọng số Phức tạp cho Mỗi Đối tượng

Các trọng số được sử dụng cho ba loại đối tượng, tức là màn hình, báo cáo và các thành phần 3GL. Trọng số phức tạp được gán tùy theo cấp độ phức tạp của đối tượng bằng cách sử dụng bảng sau.

4. Xác định Điểm Đối tượng (OP)

Cộng tất cả các trọng số của đối tượng để có được một số và số này được gọi là điểm đối tượng.

OP = Sigma (số đối tượng) * (Trọng số phức tạp của mỗi đối tượng)

5. Tính Toán Điểm Đối tượng Mới (NOP)

Chúng ta phải ước lượng %tái sử dụng được đạt được trong một dự án. Tùy thuộc vào %tái sử dụng

NOP = [(OP) * (100 - % reuse)] / 100

NOP là số điểm đối tượng sẽ cần được phát triển và khác biệt so với số điểm đối tượng vì có thể có sự tái sử dụng của một số trường hợp đối tượng trong dự án.

6. Tính Tỷ lệ Năng suất (PROD)

Tỷ lệ năng suất được tính dựa trên thông tin về kinh nghiệm và khả năng của nhà phát triển. Để tính toán nó, chúng ta sử dụng bảng sau.

7. Tính Toán Nỗ lực Ước lượng

Nỗ lực để phát triển một dự án có thể được tính toán như sau:

E = NOP / PROD

Ví dụ: Ứng dụng có bốn màn hình (screens) với mỗi màn hình có bốn chế độ xem (views) và bảy bảng dữ liệu cho ba máy chủ và bốn máy khách.

Ứng dụng có thể tạo ra hai báo cáo mỗi báo cáo có sáu phần từ bảy bảng dữ liệu cho hai máy chủ và ba máy khách.

10% tái sử dụng điểm đối tượng.

Kinh nghiệm và khả năng của nhà phát triển trong môi trường tương tự là thấp.

Tính toán số điểm đối tượng (OP), số điểm đối tượng mới (NOP) và nỗ lực (E) để phát triển dự án?

 

Bước 1: Số màn hình = 4 và Số báo cáo = 2

Bước 2:

Đối với màn hình,

Số chế độ xem = 4

Số máy chủ = 3

Số máy khách = 4

Từ những dữ liệu trên. Khi tra cứu bảng cấp độ phức tạp đối với màn hình giá trị sẽ là trung bình

Đối với báo cáo

Số bảng dữ liệu = 7

Số máy chủ = 2

Số máy khách = 3

Từ những dữ liệu trên. Khi tra cứu bảng cấp độ phức tạp đối với báo cáo, giá trị cho dữ liệu trên là: khó

Bước 3: Bằng cách sử dụng bảng trọng số phức tạp, chúng ta có thể gán trọng số phức tạp cho mỗi trường hợp đối tượng dựa trên cấp độ phức tạp của chúng.

Trọng số phức tạp cho mỗi màn hình = 2

Trọng số phức tạp cho mỗi báo cáo = 8

Bước 4:

Số điểm đối tượng = Sigma (Số lượng trường hợp đối tượng) * (Trọng số Phức tạp của nó)

= 4 * 2 + 2 * 8 = 24

Bước 5:

% tái sử dụng điểm đối tượng = 10%

NOP = [OP * (100 – % tái sử dụng)] / 100

= [24 * (100 -10)]/100 = 21.6

Bước 6:

Kinh nghiệm và khả năng của nhà phát triển là thấp. Sử dụng thông tin về nhà phát triển và bảng tỷ lệ năng suất

Tỷ lệ năng suất (PROD) của dự án cụ thể = 7

Bước 7:

E = NOP / PROD

= 21.6/7

= 3.086 người-tháng

Do đó, nỗ lực để phát triển dự án đã cho = 3.086 người-tháng

3.2.2.  Mô hình thiết kế ban đầu

Mô hình Thiết kế Ban đầu (Early Design Model - EDM) là một trong bốn mô hình của COCOMO II, được sử dụng để ước tính nỗ lực phát triển cho các dự án phần mềm ở giai đoạn đầu của vòng đời dự án, khi thông tin chi tiết về yêu cầu chức năng còn hạn chế.

Áp dụng công thức EDM để tính toán nỗ lực: E = A * (size)B

E = Nỗ lực được tính bằng đơn vị Người-Tháng

A = là hằng số biểu thị giá trị năng suất có giá trị là 2.25

Size = số lượng dòng code (kLOC)

B = Hệ số quy mô được đo bằng công thức với 5 giá trị: B = 0.91 + 0.01 * (tổng của các giá trị quy mô theo bảng)

 

Rất thấp

Thấp

Bình thường

Cao

Rất cao

Cực cao

Tiền lệ

6.20

4.96

3.72

2.48

1.24

0.00

Linh hoạt phát triển

5.07

4.05

3.04

2.03

1.01

0.00

Rủi ro và giải pháp

7.07

5.65

4.24

2.83

1.41

0.00

Sự gắn kết đồng đội

5.48

4.38

3.29

2.19

1.10

0.00

Quá trình phát triển

7.80

6.24

4.68

3.12

1.56

0.00

Theo công thức trên thì khi tất cả các giá trị đạt cực cao, giá trị cao nhất của B là 0,91

Khi tất cả giá trị đạt giá trị cực thấp thì giá trị của B là 1.23

Vậy khoảng giá trị của B là 0,91 đến 1.23

3.2.3. Mô hình tái sử dụng

Mô hình này tính toán nỗ lực cần thiết để kết hợp các thành phần có thể tái sử dụng và/hoặc mã chương trình được tạo ra bởi các công cụ thiết kế hoặc chuyển đổi chương trình. Có chủ yếu hai loại mã được tái sử dụng: mã hộp trắng và mã hộp đen. Khi không cần thiết hiểu rõ về cách hoạt động của mã và không có sự thay đổi nào được tiến hành trong đó, mã hộp đen được sử dụng. Ngược lại, mã hộp trắng được sử dụng khi mã mới được thêm vào. Nỗ lực cần thiết để tích hợp mã này được ước lượng như sau:

E = (ALOC x AT/100)/ATPROD

Trong công thức này:

ALOC đại diện cho số dòng mã (LOC) cần được sửa đổi trong một thành phần.

AT đại diện cho phần trăm mã đã được tạo ra tự động và được điều chỉnh.

ATPROD đại diện cho năng suất trong việc kết hợp mã. Nó có thể lên đến 2400 LOC mỗi tháng.

3.2.4.    3.2.4. Mô hình kích thước đã biết

Mô hình kích thước đã biết (Post Architecture Model - PAM):

  • Mô hình ước tính chi tiết nhất.
  • Sử dụng khi kiến trúc vòng đời phần mềm đã được hoàn thành.
  • Được sử dụng trong việc phát triển và bảo trì phần mềm

Công thức tính 

EM: Hệ số nhân nỗ lực là tích của 17 trình điều khiển chi phí.

Pmnominal được tính bằng công thức sau:

PMnominal = 2.5 * (KLOC)B

B bằng tích các thuộc tính sau:

          B = 0.91 + 0.01 * (tổng của các giá trị quy mô theo bảng)

 

Rất thấp

Thấp

Bình thường

Cao

Rất cao

Cực cao

Tiền lệ

6.20

4.96

3.72

2.48

1.24

0.00

Linh hoạt phát triển

5.07

4.05

3.04

2.03

1.01

0.00

Rủi ro và giải pháp

7.07

5.65

4.24

2.83

1.41

0.00

Sự gắn kết đồng đội

5.48

4.38

3.29

2.19

1.10

0.00

Quá trình phát triển

7.80

6.24

4.68

3.12

1.56

0.00

17 yếu tố đánh giá chi phí:

Thuộc tính sản phẩm:

        Độ tin cậy phần mềm yêu cầu (RELY)

         Kích thước cơ sở dữ liệu (DATA)  

         Độ phức tạp của sản phẩm (CPLX)  

         Tài liệu (DOCU)  

         Khả năng tái sử dụng yêu cầu (RUSE) 

Thuộc tính máy tính:

        Ràng buộc thời gian thực thi (TIME) 

        Sự biến động của nền tảng (PVOL) 

        Ràng buộc lưu trữ chính (STOR) 

Thuộc tính nhân sự:

        Khả năng của nhà phân tích (ACAP) 

        Sự liên tục của nhân sự (PCON) 

        Kinh nghiệm lập trình viên (PEXP) 

        Khả năng của lập trình viên (PCAP) 

        Kinh nghiệm của nhà phân tích (AEXP) 

        Kinh nghiệm về ngôn ngữ và công cụ (LTEX) 

Thuộc tính dự án:

        Sử dụng công cụ phần mềm (TOOL)

        Lịch trình phát triển yêu cầu (SCED)

        Địa điểm và công nghệ truyền thông giữa các địa điểm (SITE)

Câu hỏi: Một dự án phần mềm thuộc thể loại tạo ứng dụng với ước tính 50 KLOC cần được phát triển. Hệ số tỷ lệ (B) có mức độ tiền lệ thấp (precedentnes), khả năng linh hoạt cao  (flexibility) và sự gắn kết nhóm thấp (team cohension). 17 trình điều khiển chi phí được xác định là độ tin cậy cao (RELY), kích thước cơ sở dữ liệu rất cao (DATA), ràng buộc thời gian thực thi cao (TIME), khả năng của nhà phân tích rất cao (ACAP), khả năng của lập trình viên cao (PCAP).

Giải: B = 1.1129

PMnominal = 2.5 * 50 1.1129 = 194.41 người tháng

= 194.41 x (1.15 x 1.19 x 1.11 x 0.67 x 0.87)

= 194.41 x 0.885

= 172.05 người tháng

 

 

Comments