ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
---------------------------------------
ĐẶNG QUANG VĂN
TỐI ƯU THAM SỐ TRONG MÔ HÌNH COCOMO ĐỂ ƯỚC
LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN MỀM
Chuyên ngành : KHOA HỌC MÁY TÍNH
Mã số:
60.48.01.01
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. Lê Thị Mỹ Hạnh
Đà Nẵng Năm 2017
i
LỜI CẢM ƠN
Trước hết em xin gửi lời cảm ơn chân thành đến toàn thể các thầy cô giáo trong
Khoa Công nghệ Thông tin – Trường Đại học Bách khoa – Đại học Đà Nẵng đã tận
tình dạy dỗ chúng em trong suốt quá trình học tập và nghiên cứu tại trường.
Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến Cô giáo TS. Lê Thị Mỹ Hạnh
Khoa Công nghệ Thông tin – Trường Đại học Bách khoa – Đại học Đà Nẵng đã quan
tâm hướng dẫn và đưa ra những gợi ý, góp ý, chỉnh sửa vô cùng quý báu cho em trong
quá trình làm luận văn tốt nghiệp.
Cuối cùng xin chân thành cảm ơn những người bạn, đồng nghiệp, gia đình đã tạo
điều kiện giúp đỡ, chia sẽ với em trong suốt quá trình làm luận văn.
Đà Nẵng, ngày 11 tháng 11 năm 2017
HỌC VIÊN
Đặng Quang Văn
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
ii
LỜI CAM ĐOAN
Tôi cam đoan rằng, luận văn thạc sĩ : Tối ưu các tham số trong mô hình CoCoMo
để ước lượng nỗ lực phát triển phần mềm” là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố
trong bất kỳ công trình nào khác.
Đà Nẵng, Ngày 11 tháng 11 năm 2017
TÁC GIẢ LUẬN VĂN
Đặng Quang Văn
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
iii
MỤC LỤC
LỜI CAM ĐOAN......................................................................................................ii
CÁC LOẠI DANH MỤC ........................................................................................vii
1. Danh mục các ký hiệu, các chữ viết tắt...........................................................vii
2. Danh mục các bảng...........................................................................................ix
3. Danh mục các hình vẽ........................................................................................x
MỞ ĐẦU.....................................................................................................................1
1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI.....................................................................1
2. MỤC ĐÍCH NGHIÊN CỨU..............................................................................2
3. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU...................................................2
4. PHƯƠNG PHÁP NGHIÊN CỨU .....................................................................2
5. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI................................2
6. CẤU TRÚC LUẬN VĂN...................................................................................2
CHƯƠNG 1.................................................................................................................4
TỔNG QUAN VỀ ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN MỀMTRONG MÔ
HÌNH COCOMO II .....................................................................................................4
I. ƯỚC LƯỢNG NỖ LỰC VÀ CÁC MÔ HÌNH ƯỚC LƯỢNG NỖ LỰC
TRONG PHÁT TRIỂN PHẦN MỀM ......................................................................4
1. Ước lượng nỗ lực................................................................................................4
1.1 Tiếp cận ước lượng từ dưới lên (Bottom-up estimation approach)...............5
1.2 Tiếp cận ước lượng từ trên xuống (The top-down estimation approach) .....7
2. Các mô hình ước lượng nỗ lực phát triển phần mềm ......................................8
II. TIẾP CẬN MÔ HÌNH ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN MÊM
COCOMO II ..............................................................................................................9
III. CẤU TRÚC MÔ HÌNH COCOMO II............................................................11
1. Các yếu tố quy mô của dự án ..........................................................................13
1.1 Tính tiên phong (PREC) và Tính linh hoạt trong phát triển (FLEX).........14
1.2 Kiến trúc giải quyết rủi ro (RESL) ..............................................................15
1.3 Sự gắn kết đội (TEAM) ...............................................................................17
1.4 Quy trình trưởng thành (PMAT).................................................................18
2. Các nhân tố nỗ lực của trình điều khiển chi phí ............................................18
2.1 Yếu tố sản phẩm phần mềm ........................................................................18
2.1.1 Độ tin cậy phần mềm...........................................................................18
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
iv
2.1.2 Kích thước dữ liệu (DATA) .................................................................19
2.1.3 Tính phức tạp của sản phẩm (CPLX) .................................................19
2.1.4 Yêu cầu khả năng sử dụng lại (RUSE) ...............................................22
2.1.5 Tài liệu phù hợp với nhu cầu của vòng đời (DOCU) ..........................22
2.2 Yếu tố nền tảng............................................................................................22
2.2.1 Hạn chế thời gian thực hiện (TIME) ..................................................22
2.2.2 Hạn chế lưu trữ chính (STOR) ...........................................................23
2.2.3 Nền tảng biến động (PVOL)................................................................23
2.3 Yếu tố Nhân sự............................................................................................24
2.3.1 Khả năng phân tích (ACAP) ...............................................................24
2.3.2 Khả năng lập trình (PCAP).................................................................24
2.3.3 Kinh nghiệm ứng dụng (AEXP)..........................................................25
2.3.4 Kinh nghiệm về ngôn ngữ và công cụ (LTEX) ...................................25
2.3.5 Nhân sự liên tục (PCON) ...................................................................25
2.4 Yếu tố dự án ................................................................................................26
2.4.1 Sử dụng công cụ phần mềm (TOOL)..................................................26
2.4.2 Phát triển đa chiều (SITE) ..................................................................26
2.4.3 Lịch phát triển bắt buộc (SCED).........................................................27
IV. TIỂU KẾT CHƯƠNG I .....................................................................................27
CHƯƠNG 2...............................................................................................................28
THUẬT TOÁN TÌM KIẾM CUCKOO SEARCH (CS).............................................28
I. GIỚI THỆU ........................................................................................................28
II. HÀNH VI SINH SỐNG CỦA LOÀI CHIM CUCKOO VÀ CHUYẾN BAY
LÉVY 28
1. Hành vi sinh sống của loài chim cuckoo .........................................................28
2. Chuyến bay Lévy .............................................................................................29
III. THUẬT TOÁN TÌM KIẾM CUCKOO SEARCH (CS) ................................32
1. Kiến trúc thuật toán tìm kiếm Cuckoo search(cs) .........................................32
2. Thiết kế và cài đặt thuật toán..........................................................................33
3. Một số ứng dụng của thuật toán CS ...............................................................35
IV. TIỂU KẾT CHƯƠNG 2.....................................................................................36
CHƯƠNG 3...............................................................................................................37
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
v
ÁP DỤNG THUẬT TOÁN CUCKOOS SEARCH (CS) TỐI ƯU CÁC THAM SỐ
TRONG MÔ HÌNH COCOMO II ĐỂ ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN
MỀM 37
I. GIỚI THIỆU ......................................................................................................37
II. THU THẬP DỮ LIỆU, PHÂN TÍCH, MÔ HÌNH ĐÁNH GIÁ .......................37
1. Thu thập dữ liệu ..............................................................................................37
2. Phân tích mô hình CoCoMoII.........................................................................40
3. Mô hình đánh giá chất lượng ước tính ...........................................................42
III. ÁP DỤNG THUẬT TOÁN CUCKOO SEARCH (CS) ĐỂ TỐI ƯU CÁC
THAM SỐ TRONG MÔ HÌNH COCOMO II.......................................................43
1. Thuật toán cuckoo search(CS) ........................................................................43
2. Hàm chất lượng ước tính (fitness)...................................................................44
3. Ứng dụng thuật toán Cuckoo search (CS) tối ưu các tham số trong mô hình
CoCoMo II............................................................................................................44
IV. KẾT QUẢ VÀ ĐÁNH GIÁ HIỆU QUẢ CỦA THUẬT TOÁN, SO SÁNH VỚI
MỘT SỐ THUẬT TOÁN KHÁC ...........................................................................47
1. Kết quả thuật toán ...........................................................................................47
2. Đánh giá hiệu quả của thuật toán và so sánh với một số thuật toán khác ....47
V. TIỂU KẾT CHƯƠNG 3.....................................................................................49
TÀI LIỆU THAM KHẢO..........................................................................................50
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
vi
TỐI ƯU CÁC THAM SỐ TRONG MÔ HÌNH COCOMO ĐỂ ƯỚC LƯỢNG
NỖ LỰC PHÁT TRIỂN PHẦN MỀM
Học viên: Đặng Quang Văn.
Chuyên ngành: Khoa Học Máy Tính
Mã số: ………Khóa: K32 Trường Đại học Bách khoa - ĐHĐN
Tóm tắt - Ước lượng nỗ lực, chi phí phần mềm là một hoạt động quan trọng trong chu
trình phát triển để kiểm soát rủi ro và lập kế hoạch lịch trình dự án. Chính xác dự toán của
chi phí trước khi bắt đầu một dự án là điều cần thiết cho cả hai nhà phát triển và khách hàng.
Do đó, nhiều mô hình đã được đề xuất để giải quyết vấn đề này, trong đó COCOMO II đã
được sử dụng rộng rãi trong các dự án phần mềm hiện đại. Mô hình này là một trong những
mô hình ước lượng nỗ lực đã đem lại kết quả ước lượng tốt nhất trong mọi dự án phần mềm,
đảm bảo tính khả thi cao cho dự án. Tuy nhiên, các thông số này chưa được ước tính và kết
quả không gần với kết quả thực tế. Trong luận văn này, một phương pháp mới để tối ưu hóa
các tham số cho mô hình COCOMO II bằng cách sử dụng thuật toán CS được đề xuất lấy từ
nguồn cảm hứng của thiên nhiên để tối ưu hóa. Hiệu suất của mô hình đã được thử nghiệm
trên dữ liệu dự án phần mềm NASA. Các kết quả báo cáo rằng việc cải thiện các thông số
được cung cấp bởi mô hình COCOMO II.
Từ khóa - COCOMO II, dự toán chi phí, phần mềm NASA, tối ưu hóa, thuật toán CS.
OPTIMIZATION OF PARAMETERS IN COCOMO MODEL II TO
ESTIMATE THE SOFTWARE DEVELOPMENT
Summary - Estimating effort, software costs are an important activity in the
development cycle for risk control and project scheduling. Accurate estimation of costs
before starting a project is essential for both developers and clients. Therefore, many models
have been proposed to solve this problem, in which COCOMO II has been widely used in
modern software projects. This model is one of the effort estimation models that has yielded
the best estimate of all software projects, ensuring high feasibility for the project. However,
these parameters have not been estimated and the results are not close to the actual results. In
this essay, a new method for optimizing parameters for the COCOMO II model using the
proposed CS algorithm is derived from the inspiration of nature for optimization. The
performance of the model was tested on NASA software project data. The results reported
that the improvement of parameters was provided by the COCOMO II model.
Keywords - COCOMO II, cost estimation, NASA software, optimization, CS algorithm
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
vii
CÁC LOẠI DANH MỤC
1. Danh mục các ký hiệu, các chữ viết tắt
Các chữ viết tắt
LTEX Kinh nghiệm về ngôn ngữ và công cụ
PCAP Khả năng lập trình
PCON Nhân sự liên tục
PEXP Nền tảng Kinh nghiệm
PM
Nỗ lực (Người - tháng)
PVOL Nền tảng biến động
RELY Yêu cầu Phần mềm Độ tin cậy
RUSE Yêu cầu khả năng sử dụng lại
SCED Lịch phát triển bắt buộc
SITE
Phát triển đa chiều
SLOC Dòng mã nguồn
STOR Hạn chế lưu trữ chính
TIME Hạn chế thời gian thực hiện
TOOL Sử dụng các công cụ phần mềm
TDEV Xác định thời gian để phát triển (tháng)
DATA Kích thước dữ liệu DATA
CPLX Tính phức tạp của sản phẩm
DOCU Tài liệu phù hợp với nhu cầu của vòng đời
ACAP Khả năng phân tích
AEXP Kinh nghiệm ứng dụng
PREC Tính tiên tiến
FLEX Tính linh hoạt trong phát triển
RESL Kiến trúc / Giải quyết Rủi ro
TEAM Sự gắn kết đồng đội
PMAT Quy trình trưởng thành
SF
Yếu tố quy mô
EM
Yếu tố điều khiển chi phí
SIZE Kích thước mã nguồn
CS
Thuật toán Cuckoo search
KLOC
Đơn vị ngàn dòng lệnh
MMRE
Độ lớn trung bình của lỗi tương đối
PRED (N) Dự đoán ở mức N
TLBO
Thuật toán dạy và học
COCOMO Mô hình ước lượng, nỗ lực phát triển phần mềm
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
viii
Các ký hiệu
A
B
C
C
F
E
T
f
Hệ số
Hệ số
Hệ số
Hệ số
Hệ số mũ
Hệ số mũ
Các dự án
Giải pháp
Giải pháp mới
Hàm chất lượng ước tính
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
ix
2. Danh mục các bảng
Số
Tên bảng
Trang
hiệu
bảng
1.1 Các yếu tố quy mô cho các mô hình COCOMO II và các mô hình
14
hậu kiến trúc một giao diện mô đun đáng kể, % xác định, % rủi ro
đáng kể được loại bỏ
1.2 Các yếu tố quy mô liên quan đến các phương thức phát triển
15
COCOMO II
1.3 Các thành phần đánh giá RESL
16
1.4 Thành phần đánh giá của đội
17
1.5 Yêu cầu độ tin cậy phần mềm
18
1.6 Kích thước số liệu DATA
19
1.7 Tính phức tạp của sản phẩm CPLX
20
1.8 Yêu cầu khả năng sử dụng lại
22
1.9 Tài liệu phù hợp với nhu cầu của vòng đời (DOCU)
22
1.10 Hạn chế thời gian thực hiện (TIME)
23
1.11 Hạn chế lưu trữ chính (STOR)
23
1.12 Nền tảng biến động (PVOL)
24
1.13 Khả năng phân tích (ACAP)
24
1.14 Kinh nghiệm lập trình (PCAP)
25
1.15 Kinh nghiệm ứng dụng (AEXP)
25
1.16 Kinh nghiệm về ngôn ngữ và công cụ (LTEX)
25
1.17 Nhân sự liên tục (PCON)
26
1.18 Sử dụng công cụ phần mềm (TOOL)
26
1.19 Phát triển đa chiều (SITE)
27
1.20 Lịch phát triển bắt buộc (SCED)
27
3.1 Bảng giá trị về các nhân tố nỗ lực của trình điều khiển chi phí dự án
38
3.2 Bảng giá trị các yếu tố về quy mô của dự án
38
3.3 Dữ liệu dự án phần mềm của NASA
39
3.4 Bảng các giá trị PRED cho ước tính sử dụng CS, COCOMO II và
48
TLBO
3.5 Bảng các giá trị MRE cho ước tính sử dụng CS, COCOMO II và
48
TLBO
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
x
3. Danh mục các hình vẽ
Số hiệu
bảng vẽ
Tên bảng
Trang
1.1
Chi phí phần mềm và xác định độ chính xác so với giai đoạn
12
2.1
Sơ đồ thuật toán tìm kiếm cuckoo search (CS)
34
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
1
MỞ ĐẦU
1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Ngày nay, với nhu cầu sử dụng phần mềm và sự cạnh tranh giữa các cá nhân tổ
chức danh nghiệp phát triển phần mềm ngày một phức tạp. Vì vậy để đảm bảo tính
khả thi và hiệu quả cho một dự án phần mềm, việc ước lượng nỗ lực dự án phần mềm
là một trong những vấn đề then chốt và quan trọng nhất trước khi bắt đầu triển khai dự
án và đưa đến người sử dụng. Một loạt các kỹ thuật ước lượng sử dụng dữ liệu thu
thập được từ các dự án trước đó cộng với công thức toán học để dự đoán chi phí cho
dự án được giới thiệu như mô hình COCOMO II, SLIM, ... Kỹ thuật ước lượng được
phân bố vào các mô hình hồi quy, phương pháp chuyên gia dựa trên các phương pháp
học tập theo định hướng và phương pháp Bayesian .Nhưng những phương pháp trên
khó có thể đưa ra được một sự ước lượng chính xác tốt nhất so với thực tế và sự thành
công hay thất bại của một dự án điều phụ thuộc rất lớn vào độ chính xác của kết quả
ước lượng chi phí và tiến độ. Do đó, bài toán được đặt ra là cần phải tìm ra một
phương pháp tối ưu hơn để ước lượng chi phí dự án phần mềm. Mô hình COCOMO II
được phát triển vào năm 1995, là một mô hình cho phép ước tính chi phí, nỗ lực và
tiến độ lập kế hoạch cho một hoạt động phát triển phần mềm mới. Trong COCOMO II,
nỗ lực này được thể hiện như Người-tháng (PM). Một tháng là khoảng thời gian được
tính cho một người dành khoảng thời gian đó làm việc cho dự án phát triển phần mềm.
Qua việc giới thiệu mô hình COCOMO II đã góp phần đáng kể vào việc nâng cao
độ chính xác trong ước lượng chi phí phần mềm và hiện nay đây là một trong những
mô hình được sử dụng phổ biến nhất. Tuy nhiên, mô hình này dựa trên một số giá trị
không đổi của các phương trình ước lượng dựa trên tham số. Những hằng số này đã
không được tối ưu hóa, và do đó tính chính xác của ước lượng đối với các dự án không
cao so với nỗ lực và thời gian thực tế.
Trong khi đó, Các thuật toán hiện đại ngày càng được lấy cảm hứng từ tự nhiên
đang nổi lên và chúng ngày càng trở nên phổ biến. Thuật toán Cuckoo là một thuật
toán siêu dữ liệu mới, được gọi là Cuckoo Search (CS), để giải quyết các vấn đề tối ưu
hoá. Thuật toán này dựa trên hành vi ký sinh trùng bắt buộc của một số loài chim cu
cùng với sự di chuyển được phân phối bởi Le'vy của một số loài chim và ruồi giấm.
Vì những lý do như trên, tôi quyết định chọn đề tài:
“ Tối ưu tham số trong mô hình CoCoMo để ước lượng nỗ lực phát triển phần
mềm”.
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
2
2. MỤC ĐÍCH NGHIÊN CỨU
Áp dụng thuật toán CS vào bài toán tối ưu tham số trong mô hình COCOMO II
để ước lượng nỗ lực phát triển phần mềm.
3. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Đối tượng nghiên cứu: Nghiên cứu các ước lượng nỗ lực phát triển phần mềm và
mô hình ước lượng COCOMO II, thuật toán tối ưu CS.
Phạm vi nghiên cứu: Nghiên cứu về ước lượng nỗ lực phát triển phần mềm trong
mô hình COCOMO II, phương pháp tối ưu các tham số trong mô hình COCOMO II sử
dụng thuật toán CS.
4. PHƯƠNG PHÁP NGHIÊN CỨU
Tôi sử dụng kết hợp nhiều phương pháp, trong đó chủ yếu là nghiên cứu lý
thuyết và nghiên cứu thực nghiệm.
Phương pháp nghiên cứu lý thuyết: Tìm hiểu, tra cứu, phân tích và tổng hợp từ
sách, các bài báo, tạp chí khoa học, các trang web, các bài luận văn thạc sĩ trong nước
và nước ngoài.
Phương pháp thực nghiệm: Cài đặt thuật toán CS để tối ưu các tham số trong mô
hình COCOMO II trên công cụ MATLAB, đánh giá kết quả tối ưu qua kỹ thuật đánh
giá MMRE, PRED.
5. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI
Ý nghĩa khoa học: Đề xuất phương pháp tối ưu mới bằng cách áp dụng thuật toán
CS để tối ưu tham số trong mô hình CoCoMo II.
Ý nghĩa thực tiễn của đề tài: Kết quả nghiên cứu giúp cho việc ước lượng nỗ lực,
chi phí, thời gian phát triển phần mềm trong mô hình CoCoMo II một cách chính xác
nhất, đảm bảo tính khả thi cho dụ án.
6. CẤU TRÚC LUẬN VĂN
Luận văn được trình bày gồm 3 chương.
Chương 1: Tổng quan về ước lượng nỗ lực phát triển phần mềm trong mô
hình COCOMO II.
Nội dung chương này sẽ trình bày chi tiết về tầm quan trọng của việc ước lượng
trong dự án phát triển phần mềm, ước lượng nỗ lực và mô hình ước lượng nỗ lực phát
triển phần mềm, tiếp cận ước lượng nỗ lực phát triển phần mềm trong mô hình
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
3
CoCoMo II và cấu trúc của nó và đưa ra phương trình tổng quát về ước lượng nỗ lực,
thời gian phát triển phần mềm trong mô hình CoCoMo II.
Chương 2: Thuật toán tìm kiếm Cuckoo Search (CS)
Trong nội dung chương này, giới thiệu và mô tả chi tiết về thuật toán tìm kiếm
cuckoos search (CS), là một trong những thuật toán lấy cảm hứng từ thiên nhiên, dựa
vào hành vi ký sinh trùng của một số loài chim Cuckoos.
Chương 3: áp dụng thuật toán CUCKOO SEARCH (CS) tối ưu các tham số
trong mô hình COCOMO II để ước lượng nỗ lực phát triển phần mềm
Trong chương 3 này sẽ trình bày chi tiết về cách tối ưu các tham số trong mô hình
CoCoMo II sử dụng thuật toán CS để ước lượng nỗ lực, chi phí và thời gian trong phát
triển dự án phần mềm. Trong đó, giới thiệu lý do tối ưu, các mô hình đánh giá và phân
tích mô hình tuyến tính trong mô hình CoCoMo II. Giới thiệu sơ lược về thuật toán CS
và ứng dụng thuật toán này vào việc tối ưu các tham số A, B, C và D trong mô hình
CoCoMo II.
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
4
CHƯƠNG 1
TỔNG QUAN VỀ ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN
MỀMTRONG MÔ HÌNH COCOMO II
Trên thế giới, số lượng dự án phần mềm được sản xuất để phục vụ cho nhu cầu xã
hội mỗi năm là rất lớn. Tuy nhiên nhiều dự án trong số này có chất lượng không như
kỳ vọng của khách hàng hoặc không cung cấp các phần mềm trong phạm vi ngân sách
và thời gian hoàn thành. Tại sao quá nhiều dự án phần mềm thất bại? Mặc dù có rất
nhiều lý do, một trong những lý do quan trọng nhất là quản lý, ước lượng dự án phần
mềm không phù hợp. Ví dụ, các lý do chính làm cho việc ước lượng dự án phần mềm
có sự chênh lệch rất lớn so với thực tế là mục tiêu và lập kế hoạch không rõ ràng,
không làm chủ công nghệ mới, thiếu phương pháp quản lý dự án, và không quản lý
được rủi ro trong dự án..v..v.
Chính vì lẽ đó, việc ước lượng là một trong những nhiệm vụ rất quan trọng và
phức tạp nhất trong quản lý dự án. Với mục tiêu là để chính xác các nguồn lực cần
thiết và lịch trình yêu cầu cho các dự án phát triển phần mềm. Quá trình ước lượng
phần mềm bao gồm ước tính kích cỡ của sản phẩm phần mềm sẽ được tạo ra, ước tính
các nỗ lực cần thiết, xây dựng sơ đồ dự án ban đầu, và cuối cùng là ước tính toàn bộ
chi phí của dự án. Trong vài năm nghiên cứu gần đây, có nhiều phương pháp, mô hình
ước lượng chi phí, nỗ lực phần mềm có sẵn bao gồm các phương pháp thuật toán, ước
tính bằng phương pháp tương tự, phương pháp đánh giá chuyên gia, mô hình AGILE,
CoCoMo..v.v, đã góp phần đưa ra một kết quả ước lượng chính xác so với thực tế.
I.
ƯỚC LƯỢNG NỖ LỰC VÀ CÁC MÔ HÌNH ƯỚC LƯỢNG NỖ
LỰC TRONG PHÁT TRIỂN PHẦN MỀM
1. Ước lượng nỗ lực
Ước lượng thường diễn ra sau giai đoạn phân tích, tức là khi người quản lý dự án
ước lượng nỗ lực, các yêu cầu đã được hiểu rõ ràng. Các quy trình nghiệp vụ được tổ
chức để hỗ trợ phương pháp này. Ví dụ, giai đoạn yêu cầu đôi khi được thực hiện như
một dự án riêng biệt với dự án phát triển phần mềm.
Với nhiều phương pháp ước lượng đã được đề xuất, người quản lý dự án có thể lựa
chọn bất kỳ phương pháp ước lượng nào miễn là nó thích hợp với tính chất công việc.
Đôi khi, người quản lý dự án có thể thực hiện ước lượng bằng cách sử dụng nhiều
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
5
phương pháp khác nhau, để xác nhận độ chính xác của một ước lượng được làm bởi
một phương pháp chính nào đó hoặc để giảm rủi ro, đặc biệt là khi không có nhiều dữ
liệu quá khứ của dự án tương tự. Có 2 phương pháp cơ bản để ước lượng nỗ lực.
1.1 Tiếp cận ước lượng từ dưới lên (Bottom-up estimation approach)
Đa số các dự án phát triển phần mềm được thực hiện thì rất khác nhau, sự tiếp
cận từ dưới lên cũng được ưa thích và được khuyến khích. Với phương pháp này sử
dụng đơn vị công việc, mặc dù một số hạn chế của chiến lược này đã được khắc phục
thông qua việc sử dụng các dữ liệu quá khứ và cơ sở về khả năng của quy trình.
Trong phương pháp đơn vị công việc, người quản lý dự án đầu tiên chia phần mềm sắp
được phát triển ra thành các chương trình chính hoặc đơn vị chương trình. Mỗi đơn vị
chương trình sau đó được phân loại là trung bình, đơn giản hoặc phức tạp dựa trên các
tiêu chí nhất định. Đối với mỗi đơn vị phân loại, người quản lý dự án xác định một nỗ
lực tiêu chuẩn cần thiết để cài đặt mã và tự kiểm thử (cả hai công việc này được gọi
chung là nỗ lực xây dựng. Nỗ lực xây dựng chuẩn này có thể được xác định từ dữ liệu
quá khứ của một dự án tương tự, từ các hướng dẫn nội bộ có sẵn, hoặc kết hợp những
khả năng này. Một khi số lượng các đơn vị trong ba loại phức tạp được biết và nỗ lực
xây dựng đã được ước lượng cho mỗi chương trình được chọn, số nỗ lực tổng thể cho
giai đoạn xây dựng của dự án sẽ được biết. Từ nỗ lực xây dựng, nỗ lực được cần cho
các giai đoạn và các hoạt động khác sẽ được xác định bằng một tỷ lệ phần trăm của nỗ
lực cài đặt mã. Dựa vào cơ sở về khả năng của quy trình hoặc cơ sở dữ liệu quy trình,
phân phối nỗ lực trong dự án được biết. Nhà quản lý dự án sử dụng tỷ lệ phân phối này
để xác định các nỗ lực cho giai đoạn và các hoạt động khác nhau. Từ những ước lượng
này, nỗ lực tổng thể cho dự án được biết. Phương pháp này đã sử dụng một hỗn hợp
của kinh nghiệm và dữ liệu một cách hợp lý. Nếu không có sẵn dữ liệu phù hợp (ví dụ,
nếu bạn đang bắt đầu một kiểu dự án mới), bạn có thể ước lượng nỗ lực xây dựng dựa
theo kinh nghiệm sau khi bạn phân tích dự án xong và khi bạn biết số lượng các đơn vị
chương trình khác nhau. Với các ước lượng đã có sẵn, có thể ước lượng cho các hoạt
động khác nhau bằng cách sử dụng dữ liệu về tỷ lệ phân phối nỗ lực của các dự án
trong quá khứ. Chiến lược này có khả năng tính đến các hoạt động mà chúng thường
khó được liệt kê ra ở giai đoạn đầu của dự án, khi thực hiện phân phối nỗ lực cho một
dự án, loại khác thường được sử dụng để thực hiện các công việc hoặc nhiệm vụ linh
tinh.
Quy trình (thủ tục) ước lượng có thể được tóm tắt theo trình tự các bước như sau:
Xác định các chương trình trong hệ thống và phân loại chúng là đơn giản,
trung bình, hoặc phức tạp (S/M/C). Càng nhiều càng tốt, hãy sử dụng các
định nghĩa chuẩn đã được cung cấp hoặc các định nghĩa của các dự án trong
quá khứ.
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
6
Nếu một cơ sở riêng của dự án tồn tại, hãy tính ra nỗ lực xây dựng trung bình
cho các chương trình S/M/C từ cơ sở này.
Nếu cơ sở riêng của dự án chưa tồn tại, hãy sử dụng: loại dự án, công nghệ,
ngôn ngữ, và các thuộc tính khác để tìm kiếm các dự án tương tự trong cơ sở
dữ liệu quy trình. Hãy sử dụng dữ liệu từ các dự án này để xác định nỗ lực
xây dựng cho các chương trình S/M/C.
Nếu không có dự án tương tự tồn tại trong cơ sở dữ liệu quy trình và cũng
không có cơ sở riêng của dự án, hãy sử dụng nỗ lực xây dựng trung bình cho
các chương trình S/M/C từ cơ sở chung về khả năng quy trình.
Sử dụng các yếu tố riêng của dự án để tinh chỉnh các nỗ lực xây dựng cho
chương trình S/M/C.
Tính ra tổng nỗ lực xây dựng bằng cách sử dụng nỗ lực xây dựng của các
chương trình S/M/C và đếm chúng.
Sử dụng tỷ lệ phân phối nỗ lực được đưa ra trong cơ sở về khả năng hoặc
trong các dự án tương tự trong cơ sở dữ liệu quy trình, ước lượng nỗ lực cho
các công việc/nhiệm vụ khác và nỗ lực tổng.
Tinh chỉnh lại các ước lượng dựa trên các yếu tố riêng của dự án. Thủ tục này
sử dụng cơ sở dữ liệu quy trình và cơ sở về khả năng quy trình. Nếu nhiều dự
án có cùng một loại đang được thực hiện, bạn có thể xây dựng một cơ sở về
khả năng của dự án. Một cơ sở như vậy là tương tự như các cơ sở chung
nhưng chỉ sử dụng dữ liệu từ vài dự án cụ thể. Các cơ sở này đã được nhận
thấy là tốt nhất để ước lượng nỗ lực cho một dự án mới có cùng loại đó. Vì
thế, chúng được ưa thích khi được sử dụng cho ước lượng.
Bởi vì nhiều yếu tố khác nhau có thể ảnh hưởng đến lượng nỗ lực cần thiết cho
một dự án, điều quan trọng khi làm ước lượng là phải xác định được các yếu tố riêng
của dự án. Thay vì phân loại các tham số ra thành các mức khác nhau và sau đó xác
định mức độ ảnh hưởng lên lượng nỗ lực được cần, phương pháp được nêu ra ở đây
cho phép người quản lý dự án xác định tác động của các yếu tố riêng của dự án lên
ước lượng. Người quản lý dự án có thể thực hiện điều chỉnh bằng cách sử dụng kinh
nghiệm của họ, kinh nghiệm của các thành viên trong nhóm, hoặc dữ liệu từ các dự án
được tìm thấy trong cơ sở dữ liệu quy trình.
Lưu ý rằng phương pháp phân loại các chương trình ra thành vài loại và sử dụng số nỗ
lực xây dựng trung bình cho mỗi loại được áp dụng để thực hiện ước lượng nỗ lực
tổng thể. Tuy nhiên, khi lập kế hoạch chi tiết, người quản lý dự án phân công mỗi đơn
vị kích thước cho một thành viên của nhóm để cài đặt mã, và thời gian cho các hoạt
động đặc trưng của một đơn vị kích thước sẽ được ghi nhận xem nó có cần thời gian
nhiều hơn hoặc ít hơn so với trung bình.
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
7
1.2 Tiếp cận ước lượng từ trên xuống (The top-down estimation approach)
Giống như tiếp cận từ dưới lên, ở phương pháp tiếp cận này bắt đầu với một ước
lượng kích thước mã nguồn của các phần mềm dùng các điểm chức năng. Các điểm
chức năng có thể được đếm bằng cách sử dụng các quy tắc đếm điểm chức năng
chuẩn. Ngoài ra, nếu kích thước được ước lượng bằng LOC, nó có thể được chuyển
đổi thành các điểm chức năng.
Ngoài ước lượng kích thước mã nguồn, tiếp cận từ trên xuống đòi hỏi phải ước lượng
năng suất. Các tiếp cận cơ bản là bắt đầu với các mức năng suất của các dự án tương
tự (dữ liệu đã có sẵn trong cơ sở dữ liệu quy trình) hoặc với số liệu năng suất chuẩn
(mà dữ liệu về nó đã có sẵn trong baseline về khả năng của quy trình), sau đó phải điều
chỉnh lại các mức này nếu cần thiết, để phù hợp với dự án đang được ước lượng.
Ước lượng năng suất sau đó được sử dụng để tính ra nỗ lực tổng thể. Từ nỗ lực tổng
thể, nỗ lực cho các giai đoạn khác nhau được ước lượng bằng cách sử dụng các bảng
phân phối tỷ lệ phần trăm. Như trong tiếp cận từ dưới lên, những phân phối này có thể
thu được từ cơ sở dữ liệu quy trình hoặc cơ sở về khả năng quy trình.
Tóm tắt tiếp cận tổng thể để thực hiện ước lượng từ trên xuống bao gồm các bước
sau đây:
Ước lượng kích thước tổng cộng của phần mềm bằng các điểm chức năng.
Sử dụng các dữ liệu về năng suất từ cơ sở về khả năng của dự án, từ cơ sở về
khả năng của quy trình, hoặc từ các dự án tương tự, sửa chữa lại các mức
năng suất cho phù hợp với dự án đang được ước lượng.
Có được nỗ lực tổng thể của dự án từ năng suất và kích thước.
Tinh chỉnh lại ước lượng, có xem xét đến mức độ ảnh hưởng của các yếu tố
riêng của dự án.
Sử dụng dữ liệu về phân phối nỗ lực từ cơ sở về khả năng của quy trình hoặc
từ các dự án tương tự để ước lượng nỗ lực cho các giai đoạn khác nhau. Cũng
giống như tiếp cận từ dưới lên, tiếp cận từ trên xuống cũng cho phép tinh
chỉnh lại kết quả ước lượng bằng cách sử dụng các yếu tố riêng của dự án. Sự
cho phép này (không thực sự định nghĩa các yếu tố nào) báo hiệu rằng mỗi dự
án là duy nhất và có thể có vài yếu tố đặc trưng có thể không có mặt trong các
dự án khác. Không thể liệt kê ra những yếu tố đặc trưng này hoặc lập mô hình
một cách hình thức về sự ảnh hưởng của chúng lên năng suất. Do đó, hãy để
cho người quản lý dự án quyết định các yếu tố nào cần được xem xét và
chúng sẽ ảnh hưởng lên dự án thế nào.
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
8
2. Các mô hình ước lượng nỗ lực phát triển phần mềm
Một mô hình ước lượng phần mềm định nghĩa các đặc trưng của dự án mà giá trị
của những đặc trưng này được dùng để tính nỗ lực (effort). Một mô hình ước lượng
không thể hoạt động trong chân không, nó cần các yếu tố đầu vào để tạo ra nỗ lực ở
đầu ra. Ở lúc bắt đầu dự án, khi các chi tiết của phần mềm chưa được biết đến, mô
hình ước lượng sẽ đòi hỏi các giá trị của các yếu tố đặc trưng có thể được xác lập ở
giai đoạn này. Kích thước mã nguồn (SIZE) của phần mềm là yếu tố quan trọng nhất
trong việc xác định bao nhiêu nỗ lực là cần thiết để xây dựng nó. Tuy nhiên, SIZE cuối
cùng thì không được biết khi dự án vẫn còn đang được hình thành, và phần mềm chưa
thực sự tồn tại. Do đó, nếu SIZE được sử dụng cho một mô hình ước lượng nỗ lực thì
nó phải được ước lượng ngay từ lúc đầu.
Tiếp cận phổ biến thông thường sử dụng một phương trình đơn giản để có được một
ước lượng nỗ lực tổng thể từ ước lượng kích thước mã nguồn. Phương trình này có thể
được xác định thông qua phân tích hồi quy các dữ liệu quá khứ về nỗ lực (effort) và
SIZE. Sau đó, một khi nỗ lực tổng thể của dự án được biết, nỗ lực phân bổ cho các giai
đoạn hoặc các hoạt động khác nhau có thể được xác định bằng một tỷ lệ phần trăm của
nỗ lực tổng thể.
Nhiều mô hình đã đề xuất sử dụng tiếp cận từ trên xuống (top-down approach) để
ước lượng, ví dụ như mô hình nổi tiếng COCOMO. Các mô hình sử dụng điểm chức
năng thay vì LOC làm đơn vị kích thước mã nguồn cũng đã được xây dựng. Trong các
mô hình này, được xác định thêm các yếu tố khác (có ảnh hưởng đến nỗ lực) để điều
chỉnh lại các ước lượng dựa trên các yếu tố này. Đây là tiếp cận được thực hiện trong
mô hình COCOMO model . Một tiếp cận khác là điều chỉnh kích thước mã nguồn của
hệ thống dựa trên các thông số (parameters), như đã được thực hiện trong điểm chức
năng (Function points).
Trong tiếp cận từ dưới lên (bottom-up approach), trước tiên thực hiện các ước
lượng cho các phần của dự án và sau đó ước tính cho tổng thể dự án. Tức là, ước
lượng tổng thể của dự án được suy ra từ các ước lượng của các bộ phận của nó. Một
tiếp cận từ dưới lên được gọi là ước lượng dựa trên các hoạt động.
Trong chiến lược này, trước hết các hoạt động chính được liệt kê ra, và sau đó nỗ lực
cho từng hoạt động được ước lượng. Từ những ước lượng này, bạn thu được nỗ lực
cho toàn bộ dự án.
Tiếp cận ước lượng từ dưới lên là ước lượng trực tiếp (ước lượng ngay) nỗ lực, một
khi dự án được phân chia thành các công việc hoặc nhiệm vụ nhỏ hơn thì việc ước
lượng trực tiếp nỗ lực cần thiết cho chúng là điều có thể. Mặc dù kích thước đóng một
vai trò quan trọng trong việc xác định các nỗ lực cho các hoạt động trong một dự án,
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
9
nhưng lợi thế của tiếp cận từ dưới lên là nó không cần ước lượng kích thước cho phần
mềm. Thay vào đó, nó đòi hỏi một danh sách các công việc hoặc nhiệm vụ trong dự án
có thể được chuẩn bị dễ dàng hơn.
Một rủi ro của tiếp cận từ dưới lên là có thể bỏ qua một số hoạt động quan trọng trong
danh sách các công viêc hoặc nhiệm vụ. Khi nỗ lực được ước lượng trực tiếp cho các
công việc hoặc nhiệm vụ, khó có thể ước lượng cho các công việc hoặc nhiệm vụ về
quản lý, chẳng hạn như quản lý dự án trong suốt chu kỳ sống, đây là các công việc
không được xác định rõ ràng như cài đặt mã hoặc kiểm thử.
Cả hai tiếp cận từ trên xuống và từ dưới lên điều cần các thông tin về dự án: kích
thước (đối với tiếp cận từ trên xuống) và một danh sách các công viêc hoặc nhiệm vụ
(đối với tiếp cận từ dưới lên). Bằng nhiều cách, những tiếp cận này có thể bổ sung cho
nhau. Cả hai loại ước lượng sẽ cho kết quả chính xác hơn nếu thông tin về dự án có
được biết nhiều hơn. Ví dụ, ước lượng kích thước từ các yêu cầu ở mức cao (high level
requirements) thì khó hơn nhiều so với ước lượng kích thước khi đã thiết kế (design)
xong, và thậm chí sẽ dễ dàng hơn và chính xác hơn khi mã (code) đã được phát triển.
Như vậy, độ chính xác của ước lượng phụ thuộc vào thời điểm mà tại đó nỗ lực ước
lượng, và độ chính xác sẽ tăng khi có thêm thông tin về dự án được biết.
II.
TIẾP CẬN MÔ HÌNH ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN
PHẦN MÊM COCOMO II
Mô hình CoCoMo II là một trong những mô hình ước lượng chi phí, nỗ lực sử
dụng phương pháp tiếp cận ước lượng từ trên xuống. Trong mô hình này, đơn vị tính
của ước lượng nỗ lực(PM) là người-tháng. Một người tháng là thời gian mà một người
dành thời gian đó làm việc cho dự án phát triển phần mềm trong một tháng. Thời gian
này là không kể các ngày lễ và ngày nghỉ mà chỉ tính đến thời gian nghỉ cuối tuần. Số
tháng người khác với số tháng thời gian nó sẽ mất để hoàn thành dự án, đây được gọi
là tiến độ phát triển. Phương trình tổng quát của mô hình CoCoMo II:
PM = A *
*
(1.1)
Trong đó:
PM : ước lượng nỗ lực
A: là một hằng số, bắt nguồn từ dữ liệu dự án lịch sử (hiện tại là A = 2.94 )
SIZE: Kích thước là trong KSLOC (nghìn dòng mã nguồn), hoặc chuyển
đổi từ các điểm chức năng hoặc điểm đối tượng.
GVHD: TS. Lê Thị Mỹ Hạnh
HV: Đặng Quang Văn
- Xem thêm -