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 và 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
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
Post a Comment