6.Ước lượng công sức cho các dự án nhiều thành phần

Một phần của tài liệu Các đặc trưng cơ bản của các mô hình ứng dụng ước lượng chi phí phần mềm thông dụng nhất và nghiên cứu mô hình COCOMO II (Trang 66)

TOOL Tối thiểu Đôi chút Tập hợp các công cụ CASE đơn giản Các công cụ vòng đời cơ bản Tốt, tích hợp vừa phải Mạnh, tích hợp vừa phải Mạnh, tích hợp tốt Các điều kiện đa địa điểm Hỗ trợ yếu việc phát triển đa địa điểm Hỗ trợ đôi chút viêc phát triển đa địa điểm phức tạp Hỗ trợ đôi chút việc phát triển đa điểm phức tạp vừa phải Hỗ trợ về cơ bản việc phát triển đa điểm phức tạp vừa phải Hỗ trợ mạnh việc phát triển đa điểm phức tạp vừa phải Hỗ trợ mạnh việc phát triển đa điểm đơn giản Hỗ trợ rất mạnh việc phát triển tại cùng vị trí hay đa điểm đơn giản Các cấp độ phân loại Cực thấp Rất thấp Thấp Trung bình Cao Rất cao Cực cao Hệ số nhân công sức 1.43 1.30 1.10 1.00 0.87 0.73 0.62 Bảng 40: Hệ số chi phí SCED

Hệ số yêu cầu về thời gian phát triển SCED (Required Development Schedule)

Cách đánh giá và các giá trị như trong mô hình PA.

6. Ước lượng công sức cho các dự án nhiều thành phần

Trong thực tế hầu hết các dự án phần mềm đều bao gồm nhiều thành phần, và việc ước lượng các chi phí cho dự án không đơn thuần là tổng chi phí các thành phần, bởi cần thêm những công sức và thời gian để tăng cường thiết kế, kiểm thử, tích hợp.. các thành phần lại thành một dự án hoàn chỉnh. COCOMO II có đưa ra giải pháp để ước lượng công sức và thời gian phát triển như sau:

6.1 Ước lượng công sức

 Cộng tổng các kích cỡ thành phần để có được kích cỡ cả dự án:

 Áp dụng các hệ số tỷ lệ của dự án và hệ số co giãn thời gian SCED cho kích cỡ dự án để thu được công sức tổng thể cơ sở cho dự án

 Xác định công sức cơ sở cho từng thành phần theo tỷ lệ về kích cỡ:

 Áp dụng các hệ số nhân công sức của từng thành phân cho công sức cơ sở tương ứng để có được ước lượng công sức từng thành phần.

 Tổng công sức các thành phần là công sức của dự án.

6.2 Ước lượng thời gian để phát triển TDEV (Time to Develope)

COCOMO II xác đinh thời gian để phát triển TDEV theo công thức :

Trong đó C=3.67, D=0.28, B=0.91 và đều có thể thay đổi được, E là tổng các hệ số tỷ lệ của dự án và B, PMNS là công sức ước lượng không tính tới hệ số SCED, SCED là phần trăm rút ngắn hay kéo dài thời gian phát triển.

TDEV là khoảng thời gian tính bằng tháng từ khi xác định những yêu cầu cơ bản của sản phẩm tới khi có sự chấp nhận đảm bảo rằng sản phẩm thỏa mãn các yêu cầu trong mô hình thác nước (giữa SRR và SAR), và ứng với khoảng gian giữa hai cột mốc quan trọng LCO và IOC.

7. Bảo trì phần mềm

Bảo trì phần mềm là quá trình sửa đổi mà không làm thay đổi chức năng chính của một phần mềm. COCOMO II cho rằng chi phí bảo trì phần mềm nhìn chung có cùng các yếu tố chi phối chi phí với phát triển phần mềm. Bảo trì bao gồm cả việc thiết kế lại và lập trình lại một phần nhỏ của phần mềm, thiết kế lại hoặc phát triển giao diện, thay đổi một phần nhỏ cấu trúc phần mềm. Bảo trì có thể chia làm hai loại là nâng cấp và sửa chữa. Trong đó sửa chữa có thể chia nhỏ thành : vá lỗi, thích ứng hóa, và hoàn thiện. Một số thay đổi trong các hệ số:

 Hệ số RELY có tập các giá trị khác cho bảo trì Dấu hiệu đánh giá RELY Bất tiện không đáng kể Mất mát ít, dễ khôi phục Mất mát vừa phải, dễ khôi phục Mất mát lớn về tài chính Nguy hiểm đến tính mạng con người Các cấp độ phân loại Rất thấp Thấp Trung bình Cao Rất cao Cực cao Các hệ số nhân công sức 1.23 1.10 1.00 0.99 1.07 n/a Bảng 41: Hệ số bảo trì RELY

 Số mũ E được áp dụng cho số KSLOC bị thay đổi (thêm, sửa, không tính phần bị xóa) chứ không phải cho số KSLOC của tòan hệ thống

Với

Công thức tính công sức vẫn không đổi

Trong đó số hệ số nhân công sức n của mô hình PA là 15, ED là 5 Số nhân viên bảo trì trung bình

Với TM là khoảng thời gian thực hiện hoạt động bảo trì.

8. Tổng kết:

Trên đây chúng ta đã nghiên cứu về mô hình COCOMO II với các công thức ước lượng cũng như các tham số của mô hình. Đây là một mô hình ước lượng có độ chính xác cao, lại có tính “mở”: các tham số trong mô hình đều cho phép người dùng tùy biến cho phù hợp nhất với môi trường phát triển của mình, cho nên COCOMO II được sử dụng rộng rãi và có nhiều phát triển, hiệu chỉnh trong cộng đồng phát triển phần mềm.

Sau đây chúng ta sẽ nghiên cứu chi tiết chương trình ứng dụng, áp dụng mô hình COCOMO II để ước lượng chi phí phần mềm.

CHƯƠNG III: CHƯƠNG TRÌNH ƯỚC LƯỢNG CHI PHÍ PHẦN MỀM – ÁP DỤNG MÔ HÌNH COCOMO II

I. Giới thiệu:

Đây là chương trình được xây dựng bằng ngôn ngữ Visual C# 2005 với cơ sở dữ liệu MS SQL 2000. Chương trình đã cài đặt thành công các giải thuật COCOMO II để ước lượng các chi phí như: công sức, thời gian phát triển, năng suất, chi phí và số nhân viên tham gia cho từng module cũng như cho toàn bộ dự án.

II. Dữ liệu đầu vào:

Chương trình nhận dữ liệu đầu vào là kích cỡ vật lý của từng module, các hệ số tỷ lệ của dự án, cũng như các hệ số nhân công sức theo mô hình ước lượng của từng thành phần. (adsbygoogle = window.adsbygoogle || []).push({});

1. Nhập kích cỡ vật lý của từng module:

Đây là một tham số rất quan trọng trong mô hình COCOMO II, quyết định tất cả các phép ước lượng chi phí. Kích cỡ vật lý của từng module có thể được ước lượng bằng nhiều cách khác nhau (như đã trình bày trong chương 2 ) và có thể được tính theo số dòng mã lệnh SLOC, số điểm chức năng FP. Để kích hoạt form nhập kích cỡ ta kích chuột vào ô “Kích cỡ module SLOC

1.1. Nhập kích cỡ theo SLOC:

Khi có được số dòng mã lệnh SLOC ta có thể chọn nút chọn “Số dòng mã lệnh SLOC” và nhập vào kích cỡ cùng ngôn ngữ lập trình.

1.2. Nhập kích cỡ theo số điểm chức năng FP:

Khi ước lượng được số chức năng và xếp loại được cho chúng, ta sẽ nhập kích cỡ theo số điểm chức năng bằng cách chọn nút chọn “Số điểm chức năng FP” rồi nhập dữ liệu vào theo hình sau:

Sau khi chọn ngôn ngữ lập trình, ta có thể nhấn vào nút “Thay đổi hệ số nhân” để thay đổi giá trị chuyển đổi FP/SLOC tương ứng với ngôn ngữ ta đã chọn.

Ở đây số điểm chức năng chưa điều chỉnh UFP được tình bằng tổng tất cả các chức năng đã nhân với trọng số tương ứng của nó. Các trọng số này có thể điều chỉnh như trong phần điều chỉnh tham số (sẽ giới thiệu ở phần sau).

1.3. Kích cỡ của thành phần tái sử dụng và thích ứng:

Chọn tab “Mã tái sử dụng” rồi nhập các thông số:

Trong đó hiệu số điều chỉnh tương thích được tính theo công thức:

Số dòng mã lệnh tương đương được tình theo công thức:

2. Nhập các tham số mô hình

Đây là các tham số để hiệu chỉnh phép ước lượng cho phù hợp với dự án và các module thành phần đang xét. Bao gồm các tham số chi phối tòan dự án, và các hệ số nhân công sức cho từng thành phần.

Trong các dự án phát triển phần mềm thực tế, các giá trị tham số đôi khi không có giá trị chính xác theo các giá trị ngầm định, mà đôi khi ở những khoảng giữa các giá trị chuẩn, nên trong chương trình có sử dụng thêm một biến phụ “% tăng thêm” là phần trăm hiệu giá trị hiện tại của một tham số và giá trị ở mức kế tiếp với các mức 25%, 50%, 75% và 0% để thực hiện nội suy tuyến tính cho giá trị của tham số sát với thực tế nhất.

2.1. Các tham số của dự án

2.1.1. Hệ số tỷ lệ:

Các hệ số tỷ lệ SF đặc trưng cho môi trường phát triển của dự án, tác động lên tất cả các module trong dự án. Kích vào nút bấm “Hệ số tỷ lệ SF” trong màn hình chính để kích họat form cài đặt các hệ số tỷ lệ

Kích vào các nút trong từng hệ số sẽ cho ta cấp độ đánh giá và giá trị tương ứng. Các giá trị này có thể thay đổi qua phần điều chỉnh các tham số hệ thống (trong phần điều

chỉnh các tham số)

2.1.2. Hệ số SCED co giãn thời gian phát triển :

Kích vào nút “Thời gian phát triển” để kích hoạt form điều chỉnh giá trị SCED

Các giá trị chuẩn của SCED có thể điều chỉnh qua điều chỉnh chỉnh các tham số trong mô hình PA hay ED:

2.2. Các tham số cho từng module:

Đây là các tham số hiệu chỉnh cho phép ước lượng của từng module, số lượng và giá trị các tham số phụ thuộc vào mô hình ước lượng là PA hay ED.

2.2.1. Các hệ số nhân công sức:

Kích vào ô “Hệ số điều chỉnh công sức EAF” để kích hoạt form điều chỉnh các hệ số nhân công sức EM cho module.

Nếu đang áp dụng mô hình ước lượng PA ta có form

Nếu đang sử dụng mô hình ước lượng ED ta có form sau

2.2.2. Lương tháng nhân công: (adsbygoogle = window.adsbygoogle || []).push({});

Đây là giá trị lương tháng nhân công tùy của từng doanh nghiệp, là một yếu tố đầu vào để tính chi phí thực tế cho từng module, cũng như cho cả dự án.

III. Hiệu chỉnh các giá trị chuẩn cho các tham số của mô hình

Chức năng này, cho phép người sử dụng chương trình cài đặt lại các giá trị chuẩn cho các tham số của mô hình cho phù hợp với môi trường phát triển của dự án hiện tại. Để kích hoạt ta chọn nút “Tham số” trên menu main.

Rồi chọn nhóm tham số cần thay đổi.

1. Hiệu chỉnh các hệ số tỷ lệ của mô hình:

Chức năng này hiệu các giá trị ngầm định theo từng cấp độ cho các hệ số tỷ lệ của mô hình. Kích hoạt chức năng bằng lựa chọn thứ 3: “Hệ số tỷ lệ

Ý nghĩa mỗi hệ số, mức phân loại và giá trị mặc định mỗi mức được đã được đề cập chi tiết trong phần 4.1

2. Hiệu chỉnh các tham số trong mô hình PA:

Đây là chức năng hiệu chỉnh các giá trị mặc định theo từng mức độ phân loại cho từng tham số trong mô hình. Kích hoạt bằng lựa chọn thứ nhất “Mô hình PA

Rồi chọn nhóm tham số chi tiết.

Ý nghĩa mỗi hệ số, mức phân loại và giá trị mặc định mỗi mức được đã được đề cập chi tiết trong phần 5.1

2.1. Hiệu chỉnh các tham số về sản phẩm:

Chức năng hiệu chỉnh các giá trị mặc định các tham số về Sản phẩm. kích hoạt bằng lựa chọn thứ nhất: “Sản phẩm”.

2.2. Hiệu chỉnh các tham số về nền tảng:

Chức năng hiệu chỉnh các giá trị mặc định các tham số về Sản phẩm. kích hoạt bằng lựa chọn thứ hai: “Nền tảng”.

2.3. Hiệu chỉnh các tham số về nhân sự:

Chức năng hiệu chỉnh các giá trị mặc định các tham số về Sản phẩm. kích hoạt bằng lựa chọn thứ ba: “Nhân sự”.

2.4. Hiệu chỉnh các tham số về dự án:

Chức năng hiệu chỉnh các giá trị mặc định các tham số về Sản phẩm. kích hoạt bằng lựa chọn thứ tư: “Dự án”.

2.5. Các tham số người dùng định nghĩa:

Đây là các tham số người dùng có thể đưa thêm vào để hiệu chỉnh hệ số nhân công sức chung EAF: giá trị ngầm định các mức độ đều là 1.

3. Hiệu chỉnh các tham số trong mô hình ED

Đây là chức năng hiệu chỉnh các giá trị mặc định theo từng mức độ phân loại cho từng tham số trong mô hình. Kích hoạt bằng lựa chọn thứ nhất “Mô hình ED

Rồi chọn nhóm tham số chi tiết.

Ý nghĩa mỗi hệ số, mức phân loại và giá trị mặc định mỗi mức được đã được đề cập chi tiết trong phần 5.2

4. Hiệu chỉnh các tham số hệ thống trong các công thức

Chức năng này sẽ hiệu chỉnh các hệ số điều chỉnh trong các công thức ước lượng của mô hình COCOMO II: A,B,C, D

5. Hiệu chỉnh số giờ công trong một tháng nhân lực

Chức năng xác định số giờ công bình quân cho một tháng nhân lực trong tổ chức phát triển phần mềm.

Kích hoạt chức năng bằng chọn lựa chọn 5: “Nhân công” (adsbygoogle = window.adsbygoogle || []).push({});

6. Hiệu chỉnh trọng số cho các mức của điểm chức năng

Chức năng này xác định trọng số tương ứng với mỗi mức độ các điểm chức năng. Kích hoạt bằng chọn lựa chọn 6: “Trọng số FP

IV. Ước lượng chi phí dự án phần mềm:

Dựa vào các yếu tố đầu vào: kích cỡ vật lý, các hệ số tỷ lệ đặc trưng cho dự án, và các hệ số nhân công sức…; chương trình sẽ ước lượng các chi phí: công sức, thời gian cần để phát triển, lượng nhân viên cũng như chi phí thực tế tùy theo số module trong dự án.

1. Ước lượng cho 1 module hay dự án 1 thành phần

Đối với dự án một thành phần hay một module riêng lẻ chương trình sẽ ước lượng dựa theo các công thức sau:

 Công sức phát triển:

trong đó mEAF =

là tích các hệ số nhân công sức của module. Trong mô hình PA thì số các hệ số nhân côn sức là n= 17, còn trong ED thì n=7

Công sức danh nghĩa chưa tính mEAF

PM= Công sức danh nghĩa ước lượng bao gồm cả mEAF:

mEffort =  Thời gian cần để phát triển:

Trong đó

 Năng suất: số dòng mã lệnh/công sức ước lượng PROD = mSize/PMNS

 Chi phí: lương nhân công * công sức ước lượng: Cost = salary * PMNS

 Chi phí theo dòng lệnh: chi phí/ số dòng mã lệnh: Inst Cost = Cost/SLOC

 Số nhân viên tham gia dự án: công sức ước lượng/thời gian để phát triển: mStaff=mEffort/mTDEV

2. Ước lượng cho dự án nhiều thành phần:

Trong dự án nhiều thành phần ngoài những chi phí cho từng thành phần ta còn cần thêm những chi phí cho việc thiết kế, phát triển, kiểm thử, tích hợp từng thành phần vào hệ thống. Do vậy ta cần thực hiện việc ước lượng theo các công thức khác.

a) Ước lượng công sức thông qua các bước sau:  Tính kích cỡ toàn dự án:

 Tính công sức cơ sở của toàn bộ dự án:  Tính công sức cơ sở của từng thành phần:  Tính công sức ước lượng cho từng thành phần:  Ước lượng công sức toàn bộ dự án:

Ước lượng này được tính qua hàm clsMain.estimate(false) trong chương trình

b) Ước lượng thời gian thực hiện:

C=3.67, D=0.28, B=0.91

Trong đó PMNS là công sức danh nghĩa của dự án hay của thành phần đang cần ước lượng thời gian phát triển.

c) Các ước lượng còn lại cho từng thành phần được tính như trong trường hợp tính cho 1 module. Sau đó cộng tổng chi phí thành phần ta sẽ có chi phi dự án tCost

Chi phí dòng lệnh: inst tCost=tCost/tSize Năng suất: tPROD= tSize/tEffort

Số nhân viên: tStaff=tEffort/tTDEV

Ước lượng này được thực hiện qua hàm clsMain.estimate() trong chương trình

suất cao nhất có thể đạt được với tổng công sức dự án được tính theo công sức dự án ước lượng thông thường tEffort[0] như sau: (adsbygoogle = window.adsbygoogle || []).push({});

tEffort[1]=tEffort[0]/1.25

Và ước lượng xấu nhất có năng suất thấp nhất có thể đạt được với tổng công sức dự án được tính theo công sức dự án ước lượng thông thường tEffort[0] như sau:

tEffort[1]=tEffort[0]*1.25

Các yếu tố chi phí khác được tính cùng công thức như tính cho cả dự án thông thường.

V. Hiệu chỉnh mô hình ước lượng:

Một phần của tài liệu Các đặc trưng cơ bản của các mô hình ứng dụng ước lượng chi phí phần mềm thông dụng nhất và nghiên cứu mô hình COCOMO II (Trang 66)