Professional Documents
Culture Documents
DangQuangVan TT PDF
DangQuangVan TT PDF
Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ ngành Khoa học máy tính, họp tại Trường Đại
học Bách khoa vào ngày 06 tháng 01 năm 2018
Có thể tìm hiểu luận văn tại:
Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học
Bách khoa
Thư viện Khoa CNTT, Trường Đại học Bách khoa - ĐHĐN
1
MỞ ĐẦU
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” sử dụng thuật toán Cuckoo Search
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, 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.
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.
E: là số mũ, cho phép phân chia quy mô phụ thuộc vào năm
trình điều khiển quy mô dự án theo công thức (1.2).
: Là nhân tố nỗ lực của trình điều khiển chi phí.
Phương trình (1.1) là mô hình tổng quát nhất cho mô hình ước lượng
nỗ lực, chi phí thiết kế và hậu thiết kế. Đầu vào là kích thước mã nguồn,
một hằng số A, B và các yếu tố quy mô , kích thước mã nguồn (SIZE)
có nguồn gốc từ ước tính kích thước của module phần mềm sẽ tạo thành
chương trình ứng dụng. Nó cũng có thể được ước tính từ các điểm chức
năng không điều chỉnh (UFP), được chuyển đổi sang SLOC sau đó chia cho
1000. Và cuối cùng là các nhân tố nỗ lực của trình điều khiển chi phí ,
bao gồm 17 nhân tố nỗ lực về sản phẩm phần mềm, nền tảng, nhân sự, và
dự án. Trong phương trình (1.1), hệ số mũ E được tính theo công thức sau:
E = B + 0.01 * ∑ (1.2)
Trong đó
B = 0,91. (B là hằng số)
: Các yếu tố quy mô.
Ngoài ước lượng nỗ lực, chi phí cho dự án thì việc ước lượng thời gian
phát triển dự án cũng rất quan trọng, được các nhà quản lý dự án quan tâm
rất nhiều. Bởi vì, việc ước lượng thời gian phát triển để kết thúc dự án đúng
thời hạn thì được xem như đảm bảo tiến độ hoàn thành dự án mà khách
hàng mong đợi, hạn chế được rủi ro ngoài ý muốn. Ngược lại, nếu không
ước lượng thời gian phát triển dự án thì không có cơ sở để lập lịch cho dự
án dẫn đến việc kết thúc dự án không đúng thời hạn, rủi ro và phát sinh chi
phí tăng cao, sức ép về tiến độ gây căng thẳng và có thể phá vỡ những quy
định trong dự án..v.v. Đó là một trong những nguyên nhân dẫn đến dự án
thất bại, không có khả thi. Vì vậy, ước lượng thời gian để kết thúc dự án
đúng hạn là một trong những thách thức lớn. Trong mô hình CoCoMo II,
công thức ước lượng thời gian được tính từ nỗ lực của dự án.
TDEV = C * (1.3)
Trong đó:
TDEV: Thời gian phát triển dự án.
C = 3,67. (C là hằng số)
F = D + 0.2 * 0.01 * ∑
D = 0,28. (D là hằng số)
Trong công thức (1.3), việc ước tính thời gian để phát triển dự án
(TDEV) phụ thuộc rất lớn vào nhân lực và các yếu tố về quy mô của dự án.
Với C, D là các hệ số lần lược là C=3.67, D=0.28. Đơn vị tính của TDEV
là tháng.
III. CẤU TRÚC MÔ HÌNH COCOMO II
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 mới phần mềm. Được kế thừa và khắc phục những hạn chế của
mô hình CoCoMo ban đầu ra đời 1981. Mô hình CoCoMo II cung cấp ba
giai đoạn tương ứng với ba mô hình phụ để ước lượng chi phí, nỗ lực trong
phát triển phần mềm như Mô hình Applications Composition, Mô hình
Early Design và Mô hình Post-Architecture.
SEI [Paulk et al. 1993, 1993a]. Thủ tục xác định PMAT là quyết định tỷ lệ
tuân thủ của mỗi KPA. Nếu dự án đã trải qua một đánh giá CMM gần đây
thì tỷ lệ tuân thủ cho KPA tổng thể (dựa trên KPA Key Practice Dữ liệu
đánh giá tuân thủ) được sử dụng. Nếu đánh giá chưa được thực hiện thì
mức độ tuân thủ các mục tiêu của KPA là được sử dụng
%
PMAT = 5 – ∑ ( ∗ ) (1.4)
2. Các nhân tố nỗ lực của trình điều khiển chi phí
Đây là 17 nhân tố nỗ lực được sử dụng trong mô hình COCOMO II
Post Architecture, để điều chỉnh nỗ lực ước lượng người tháng, được phản
ánh trên các sản phẩm phần mềm đang phát triển. Chúng được chia thành
bốn loại: sản phẩm phần mềm, nền tảng, nhân sự và dự án. Bất cứ khi nào
đánh giá của trình điều khiển chi phí là giữa các cấp xếp hạng luôn luôn
đúng với xếp hạng ước lượng.
2.1 Yếu tố sản phẩm phần mềm
2.1.1 Độ tin cậy phần mềm
Yêu cầu độ tin cậy của phần mềm (RELY) đây là thước đo mức độ mà
phần mềm phải thực hiện chức năng dự định trong một khoảng thời gian.
Nếu kết quả thất bại của phần mềm nhỏ thì RELY là thấp và nếu sự thất
bại có nguy cơ cao thì RELY là rất cao.
2.1.2 Kích thước dữ liệu (DATA)
Yếu tố về kích thước dữ liệu (DATA) được xây dựng để nắm bắt các
yêu cầu về số liệu lớn đối với việc phát triển sản phẩm. Bởi vì, kích thước
cơ sở dữ liệu rất quan trọng để xem xét nó và những nỗ lực cần thiết để tạo
ra dữ liệu thử nghiệm sẽ được sử dụng để thực hiện chương trình Xếp hạng
được xác định bởi tính D / P.
ố ượ ( )
= (1.5)
ươ ì ( )
2.1.3 Tính phức tạp của sản phẩm (CPLX)
Tính phức tạp được chia thành năm lĩnh vực: hoạt động kiểm soát, các
hoạt động tính toán, các hoạt động phụ thuộc vào thiết bị, các hoạt động
quản lý dữ liệu và người sử dụng hoạt động quản lý giao diện. Việc chọn
lĩnh vực hoặc kết hợp các lĩnh vực đặc trưng cho sản phẩm hoặc một hệ
thống con của sản phẩm. Xếp hạng phức tạp là tỷ lệ trung bình các trọng số
của hoạt động kiểm soát, tính toán các hoạt động, phụ thuộc vào các hoạt
động của thiết bị, quản lý dữ liệu các hoạt động, giao diện người dùng.
con. Các xếp hạng được xác định dựa trên mức độ kinh nghiệm tương
đương của nhóm dự án với loại ứng dụng này. Đánh giá rất thấp cho trải
nghiệm ứng dụng dưới 2 tháng. Đánh giá rất cao là kinh nghiệm từ 6 năm
trở lên.
2.3.4 Kinh nghiệm về ngôn ngữ và công cụ (LTEX)
LTEX một thước đo mức độ ngôn ngữ lập trình và kinh nghiệm công
cụ phần mềm của nhóm dự án phát triển phần mềm hoặc hệ thống con. Phát
triển phần mềm bao gồm việc sử dụng các công cụ thực hiện các yêu cầu và
thiết kế đại diện và phân tích, quản lý cấu hình, trích xuất tài liệu, quản lý
thư viện, phong cách chương trình và định dạng, kiểm tra tính nhất quán,
..v..v. Ngoài kinh nghiệm trong lập trình với một ngôn ngữ cụ thể công cụ
hỗ trợ thiết lập cũng có hiệu lực thời gian phát triển. Đánh giá thấp cho
LTEX là ít hơn 2 tháng và đánh giá rất cao cho LTEX là từ 6 năm trở lên.
2.3.5 Nhân sự liên tục (PCON)
PCON là doanh thu hàng năm của dự án: từ 3%, rất cao, đến 48%, rất
thấp.
2.4 Yếu tố dự án
2.4.1 Sử dụng công cụ phần mềm (TOOL)
Các công cụ phần mềm đã được đề xuất cho những dự án từ năm
1970 và được sử dụng để hiệu chỉnh mô hình COCOMO. Xếp hạng công
cụ này nằm trong khoảng từ việc đơn giản chỉnh sửa mã ở mức rất thấp đến
việc tích hợp các công cụ quản lý vòng đời ở mức rất cao.
2.4.2 Phát triển đa chiều (SITE)
Với tần suất ngày càng tăng của sự phát triển đa trung tâm, các dấu hiệu
cho thấy hiệu quả phát triển đa quốc gia là rất lớn, yếu tố SITE đã được
thêm vào CoCoMo II để xác định mức đánh giá chi phí bao gồm việc đánh
giá và tính trung bình, có hai yếu tố đó là sự sắp xếp địa điểm và hỗ trợ
truyền thông (từ việc sử dụng Email và điện thoại vào phần mềm một cách
đầy đủ).
2.4.3 Lịch phát triển bắt buộc (SCED)
Yếu tố SCED được xây dựng để ràng buộc lịch biểu đối với nhóm dự
án phát triển phần mềm. Xếp hạng được xác định trong các điều khoản của
tỷ lệ phần trăm của lịch biểu kéo dài ra cho một dự án yêu cầu một cho số
tiền của nỗ lực. Giai đoạn tăng tốc có xu hướng tạo ra nhiều nỗ lực hơn
trong các giai đoạn phát triển sau này bởi vì vấn đề còn lại sẽ được xác định
do thiếu thời gian để giải quyết chúng sớm hơn. Nếu tỉ lệ này giảm xuống
74% thì được đánh giá rất thấp. Việc kéo dài thời gian biểu sẽ tạo ra nhiều
nỗ lực hơn trong các giai đoạn phát triển trước đó, khi đó có nhiều thời gian
để làm việc kỹ lưỡng hơn quy hoạch, đặc điểm kỹ thuật và xác nhận.
Ngược lại tỉ lệ này tăng lên 160% được đánh giá rất cao.
IV. TIỂU KẾT CHƯƠNG I
Tóm lại, trong chương một tôi đã trình bày một cách khái quát và chi
tiết nhấ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 CoCoMo II
và cấu trúc của nó.
Đưa ra phương trình tổng quát về ước lượng nỗ lực phát triển phần
mềm trong mô hình CoCoMo II, nỗ lực (PM) = A * ( ) *∏
đơn vị tính của nỗ lực trong mô hình CoCoMo II này là người-tháng. Và
cách ước tính thời gian phát triển dự án dựa vào nỗ lực PM, các yếu tố quy
mô. TDEV = C * . Đơn vị tính (TDEV) là tháng.
CHƯƠNG 2
THUẬT TOÁN TÌM KIẾM CUCKOO SEARCH (CS)
I. GIỚI THỆU
Các thuật toán tối ưu 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. Ví dụ, thuật toán tối ưu
bầy đàn (PSO) được lấy cảm hứng từ trí thông minh của cá và chim, trong
khi Firefly Algorithm lấy cảm hứng từ mô hình phát sáng của đom đóm
nhiệt đới. Các thuật toán tối ưu lấy cảm hứng tự nhiên này đã được sử dụng
trong một loạt các vấn đề tối ưu hóa, bao gồm các vấn đề như người bán
hàng, đi du lịch...v.v.
Sức mạnh của hầu hết các thuật toán học hiện đại bắt nguồn từ thực tế là
chúng bắt chước tính chất tốt nhất trong tự nhiên, đặc biệt là hệ thống sinh
học phát triển từ sự lựa chọn tự nhiên trong hàng triệu năm. Hai đặc điểm
quan trọng là lựa chọn thích hợp và thích ứng với môi trường. Về phương
diện tối ưu hóa, chúng có thể được tượng trưng cho hai đặc tính quan trọng
của thuật toán hiện đại: tăng cường và đa dạng hóa. Tăng cường sự tìm
kiếm các giải pháp tốt nhất hiện tại và lựa chọn giải pháp tốt nhất, trong khi
đa dạng hóa đảm bảo rằng thuật toán có thể khám phá không gian tìm kiếm
một cách hiệu quả.
Trong chương này nhằm mục đích giới thiệu một thuật toán mới, gọi là
Cuckoo Search (CS) và được phát triển gần đây bởi Xin-She Yang và
Suash Deb vào năm 2009. Thuật toán này dựa trên các nghiên cứu sinh học
thú vị như nghiên cứu ký sinh trùng của một số loài chim Cuckoos. Trước
tiên, tôi sẽ giới thiệu về các loài bò sát và các đặc tính của các chuyến bay
Le'vy của một số loài chim, sau đó xây dựng thuật toán CS và trình bày
một số ứng dụng của nó.
II. HÀNH VI SINH SỐNG CỦA LOÀI CHIM CUCKOO VÀ
CHUYẾN BAY LÉVY
1. Hành vi sinh sống của loài chim cuckoo
Chim Cuckoo là những con chim hấp dẫn, không chỉ có những âm thanh
đẹp mà chúng có thể tạo ra mà còn bởi vì chiến lược sinh sản của chúng.
Có nhiều loài chim Cuckoo, như một trong số đó là chim Cuckoo Guira đẻ
trứng vào tổ yến, chúng có thể loại bỏ trứng của chim chủ nhà để tăng khả
năng nở trứng. Một số loài chim chủ có thể gây xung đột trực tiếp với
những con chim cu xâm nhập. Nếu một con chim chủ nhà khám phá ra rằng
trứng không phải là của chúng, chúng sẽ ném những quả trứng xa lạ này
hoặc chỉ đơn giản là từ bỏ tổ của nó và xây dựng một tổ mới ở nơi khác.
Một số loài chim chủ đã được phát hiện theo cách mà chim Cuckoo ký sinh
trên chúng đó là việc bắt chước màu sắc và mô hình trứng trong tổ. Điều
này làm giảm xác suất trứng của họ bị bỏ rơi và do đó làm tăng khả năng
sinh sản của họ.
Thêm vào đó, thời điểm đẻ trứng của một số loài chim cuckoo cũng rất
đáng kinh ngạc. Các loài chim này thường chọn một cái tổ của chim chủ
nhà để đẻ trứng riêng. Nói chung, trứng chim Cuckoo nở sớm hơn trứng
chủ của chúng. Khi con chim Cuckoo đầu tiên được nở, hành động bản
năng đầu tiên nó cần là loại bỏ trứng chủ bằng cách mù quáng đẩy trứng ra
khỏi tổ, làm tăng lượng thức ăn của chim Cuckoo con trong tổ. Các nghiên
cứu cũng chỉ ra rằng một chú chim cuckoo con có thể bắt chước hành động
và tiếng kiêu của chim chủ để có thể tiếp cận được nhiều cơ hội được ăn.
2. Chuyến bay Lévy
Các chuyến bay Lévy, được đặt tên theo nhà toán học người Pháp Paul
Lévy, là một lớp đi bộ, hay di chuyển một cách ngẫu nhiên, trong đó độ dài
bước được rút ra từ phân bố xác suất với đuôi theo định luật hàm số mũ.
Những phân bố xác suất này được gọi là phân phối Lévy hoặc phân phối ổn
định. Các độ dài s của các bước hoặc bước nhảy của các bước đi được phân
phối như là một luật hàm số mũ. L(s) ~ | | với 0 <β ≤ 2 là một hằng
số. Nhiều kiểu di chuyển ngẫu nhiên khác nhau đã được mô tả và phân tích,
chuyển động của nâu có lẽ là sự nổi tiếng nhất trong tất cả các bước đi ngẫu
nhiên. Đây là trường hợp đặc biệt của một bước đi ngẫu nhiên mà độ dài
bước được phân bố theo sự phân bố xác suất Gaussian, hoặc khi ≥3
(Viswanathan và cộng sự, 1999. Việc tạo ra các số ngẫu nhiên bởi Chuyến
bay của L'evy bao gồm hai bước: lựa chọn hướng ngẫu nhiên và tạo ra các
bước tuân thủ phân phối của L'evy. Việc tạo ra một hướng nên được rút ra
từ một sự phân bố đều đặn, trong khi các bước tạo ra các bước là khá phức
tạp. Có một vài cách để đạt được điều này, nhưng một trong những cách
hiệu quả nhất và đơn giản nhất là sử dụng thuật toán Mantegna để phân
phối ổn định L'evy đối xứng. Ở đây 'đối xứng' có nghĩa là các bước có thể
là tích cực và tiêu cực. Trong thuật toán của Mantegna, độ dài bước của có
thể được tính bằng
S= (2.11)
| |
yến(tổ của chim chủ nhà) tượng trưng cho một giải pháp, và một trứng
chim cuckoo là một giải pháp mới, mục tiêu là sử dụng các giải pháp mới
và có tiềm năng tốt hơn (chim cuckoo) giải pháp tốt trong tổ. Tất nhiên,
thuật toán này có thể được mở rộng đến trường hợp phức tạp hơn, khi mỗi
tổ có nhiều trứng đại diện cho một bộ các giải pháp. Đối với công việc hiện
tại, tôi sẽ sử dụng cách tiếp cận đơn giản nhất mà mỗi tổ chỉ có một quả
trứng duy nhất. Khi tạo ra các giải pháp mới ta nói rằng, một con
chim cuckoo i, và một hành động Lévy được thực hiện.
= + ⊕ levy( ) (2.15)
Trong đó α> 0 là bước kích thước cần liên quan đến quy mô của vấn đề
lợi ích. Trong hầu hết các trường hợp, ta có thể sử dụng α = 1. Phương trình
(2.15) nói trên cơ bản là phương trình ngẫu nhiên để di chuyển ngẫu nhiên.
Nói chung, về mặt toán học một cuộc di chuyển ngẫu nhiên là một chuỗi
Markov có trạng thái mà địa điểm tiếp theo chỉ phụ thuộc vào vị trí hiện tại
và xác suất chuyển tiếp từ vị trí này sang vị trí tiếp theo không phụ thuộc
vào giá trị của thời điểm. Ký hiệu ⊕ tương tự như phần được sử dụng
trong thuật toán PSO, nhưng ở đây việc di chuyển ngẫu nhiên thông qua
phân phối L'evy có hiệu quả hơn trong việc khám phá không gian tìm kiếm
vì chiều dài bước của nó dài hơn nhiều.
2. Thiết kế và cài đặt thuật toán
Dựa trên sự mô tả ba quy tắc trên và các bước cơ bản của tìm kiếm
Cuckoo (CS) có thể được tóm tắt theo thuật toán sau đây.
Objective function f(x), x = ( , … )
Generating initial population of n host nests , (i=1,2,…n)
While (t<MaxGenerations) and (! termin.condit.)
Move a cuckoo randomly via Lévy flights ,Evaluate its fitness Fi
Randomly choose nest among n available nest (for example j)
If(Fi > Fj)
Replace j by the new solution;
Fraction of worse nests are abandoned and new nests are being
built;
Keep the best solutions or nests with quality solutions;
Rank the solutions and find the current best
End while
Post process and visualize results End ;
CHƯƠNG 3
Á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
I. GIỚI THIỆU
Ngày nay, có nhiều mô hình ước lượng nỗ lực, chi phí phát triển phần
mềm, cung cấp cho các nhà quản lý dự án nhiều thông tin hữu ích để đưa ra
các quyết định một cách đúng đắn và hợp lý. Như đã được giới thiệu trong
chương 1 của luận văn này, 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. Được kế thừa và khắc
phục những hạn chế của mô hình CoCoMo ban đầu ra đời 1981 và được sử
rộng rãi cho đến ngày hôm nay. Tuy nhiên hầu hết các mô hình ước lượng
nói chung và mô hình CoCoMo II nói riêng điều là tuyến tính, và các hệ số
trong mô hình này chưa được tối ưu hóa. Nên việc ước lượng nỗ lực, chi
phí cho một dự án phát triển phần mềm hiện đại là không chính xác. Do đó,
mục đích của luận văn trong chương 3 này là để tối ưu hóa hệ số của mô
hình CoCoMoII dựa vào những dữ liệu của các dự án trước đó. Trong việc
tối ưu hóa, thông thường sử dụng thuật toán tối ưu được phổ biến rất nhiều,
đặc biệt hơn nữa là gần đây có nhiều thuật toán lấy cảm hứng từ thiên nhiên
được các nhà khoa học quan tâm như thuật toán đàn ong, đàn kiến,..v..v.
Với thuật toán Cuckoo search(CS) đã được trình bày trong chương 2 của
luận văn này, là một trong những thuật toán tối ưu được lấy từ cảm hứng
thiên nhiên, nó là một phương pháp tối ưu nhằm tạo ra các giải pháp mới
tốt nhất một cách ngẫu nhiên. Đây cũng là phương pháp tối ưu hệ số của
Tập dữ liệu thử nghiệm trong việc tối ưu mô hình CoCoMoII ở luận
văn này đã được tiến hành trên bộ dữ liệu gồm 93 dự án phần mềm của
NASA, được trích dẫn từ
link http://openscience.us/repo/effort/cocomo/nasa93.html, trong file
nasa93-dem.arff. Tập dữ liệu này gồm các giá trị về kích thước dữ
liệu(KLOC – đơn vị ngàn dòng lệnh), các yếu tố quy mô của dự án(SF) và
trình điều khiển chi phí dự án (ME) được trình bày trong bảng 3.3
Bảng 3.3: Dữ liệu dự án phần mềm của NASA
Dự KLOC SF EM Nỗ lực Thời
án (PM) gian(TDEV)
1 25.9 11.56 1.045 117.6 15.3
2 24.6 11.56 1.045 117.6 15
3 7.7 11.56 1.045 31.2 10.1
4 66.6 11.56 1.045 352.8 21
5 7.5 11.56 1.469 72 13.6
6 20 13.12 0.538 72 14.4
7 6 13.12 0.623 24 9.9
8 100 13.12 0.538 360 25.2
9 11.3 13.12 0.848 36 12.8
10 100 13.12 0.702 215 30.1
11 20 13.12 0.623 48 15.1
12 150 13.12 0.786 324 32.5
13 31.5 13.12 0.575 60 17.6
14 15 13.12 0.623 48 13.6
15 100 13.12 0.822 360 28
16 165 11.56 2.743 4178 47.3
17 41 11.56 1.507 599 23
18 29.5 11.56 0.950 120 16
19 15.4 11.56 1.578 70 14.5
20 12.8 11.56 1.578 62 13.6
Trong bảng (3.3) trên, tôi sẽ sử dụng dữ liệu của 15 các dự án đầu tiên
như là một bộ huấn luyện, và 15 dự án còn lại được sử dùng để thử nghiệm
sau khi tối ưu hóa các tham số A, B, C và D trong mô hình CoCoMo II.
2. Phân tích mô hình CoCoMoII
Phương pháp ước lượng dựa trên mô hình thuật toán là phổ biến. Các
nhà khoa học đã nghiên cứu về thuật toán các mô hình và công thức để
trình bày mối quan hệ giữa kích thước mã nguồn, trình điều khiển chi phí
được sử dụng vào việc ước lượng chi phí, nỗ lực và thời gian phát triển dự
án. Kết quả là một mô hình thuật toán có thể được biểu diễn bằng như sau:
Effort= f( , , ……, ) (3.1)
TDEV =f( , ,……. ) (3.2)
Trong đó { , ,….., } tượng trưng cho các yếu tố chi phí và kích
thước mã nguồn và nỗ lực. Trong mô hình COCOMO II, những yếu tố chi
phí được chia thành bốn loại sau: Yếu tố sản phẩm phần mềm, yếu tố nền
tảng, yếu tố nhân sự và yếu tố dự án.
Trong các mô hình thuật toán, mối quan hệ giữa nỗ lực và đầu vào các
yếu tố là một chức năng tuyến tính, có nghĩa là nếu kích thước tăng lên thì
nỗ lực cũng tăng với tốc độ ổn định. Do đó, thời gian phát triển dự án cũng
tăng theo. Các mô hình tuyến tính có dạng:
Effort = + ∑ ∗ (3.3)
TDEV = + ∑ ∗ (3.4)
Trong đó, các hệ số , ,…, , , ,…, được chọn để phù hợp
nhất dữ liệu dự án hoàn thành. Tuy nhiên mô hình tuyến tính không phù
hợp với ước tính các dự án không tầm thường trong môi trường lớn và phức
tạp. Do đó, các mô hình phức tạp hơn đã được phát triển. Những cái này
phản ánh thực tế là chi phí không bình thường tăng tuyến tính với quy mô
dự án.
Trong COCOMO II đã được giới thiệu bởi Boehm là một mô hình ước
tính nỗ lực phần mềm rất nổi tiếng bằng cách sử dụng công thức chung
được trình bày trong phương trình sau đây.
PM = A * ( ) *∏ (3.5)
Trong đó:
PM : ước tính nỗ lực (đơn vị tính là Người-tháng)
A = 2.94 ( A là hằng số)
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.
E: là số mũ, cho phép phân chia quy mô phụ thuộc vào năm trình điều
khiển quy mô dự án.
: Là nhân tố nỗ lực của trình điều khiển chi phí.
Phương trình trên có một yếu tố hàm mũ E để tính toán cho các nền
kinh tế tương đối hoặc phi kinh tế của quy mô gặp phải trong các dự án
phần mềm kích thước khác nhau. Các giá trị của số mũ E thường từ 1 đến
1,5. Công thức được tính như sau:
E = B + 0.01 * ∑ (3.6)
Trong đó :
B = 0,91. (B là hằng số)
: Các yếu tố quy mô dự án
Trong mô hình CoCoMo II, công thức ước lượng thời gian được tính từ nỗ
lực của dự án.
TDEV = C * (3.7)
F = D + 0.2 * 0.01 * ∑ ( 3.8)
Trong đó:
TDEV: Thời gian phát triển dự án (đơn vị là tháng)
C = 3,67. (C là hằng số)
D = 0,28. (D là hằng số)
F : Hệ số mũ
Như đã được trình bày trong chương 1, trong mô hình CoCoMo II, các
công thức (3.5), (3.6), (3.7), (3.8) điều là tuyến tính, dựa trên mô hình toán
học, đầu ra là các ước lượng nỗ lực, chi phí và thời gian điều phụ thuộc vào
các giá trị đầu vào như kích thước mã nguồn, các yếu tố về trình điều khiển
chi phí và quy mô của dự án. Đối với đầu vào là các hệ số A, B, C và D
hiện tại lần lược mang giá trị, A= 2.4, B = 0.91, C=3.67, D=0.28. Tuy
nhiên trong thực tế có nhiều kiểu dự án khác nhau và tùy thuộc vào từng
khu vực phát triển dự án phần mềm nên các hệ số này sẽ thay đổi. Do đó
đầu ra ước lượng của dự án sẽ thay đổi theo. Vì vậy, các hệ số này được
xem như là các tham số.
1 ế ≤
PRED (N) = *∑ (3.11)
0 ượ ạ
Trên đây, tôi đã giới thiệu và sử dụng các mô hình trên để đánh giá độ
chính xác của các mô hình ước lượng nỗ lực phần mềm. Phần tiếp theo tôi
sẽ sử dụng thuật toán Cuckoo search (CS) để tối ưu hóa các tham số của
mô hình CoCoMoII.
III. ÁP DỤNG THUẬT TOÁN CUCKOO SEARCH (CS) ĐỂ TỐI ƯU
CÁC THAM SỐ TRONG MÔ HÌNH COCOMO II
1. Hàm chất lượng ước tính (fitness)
Trong quá trình phát triển phần mềm thực tế, các nhà phát triển thường
ước tính yêu cầu nỗ lực, thời gian cho các dự án. Nếu ước tính đúng sẽ
cung cấp cho một MRE từ 0% cho công sức, thời gian. Thêm vào đó, giá trị
của các tham số cho kết quả ước tính trên các dự án T gần đúng với kết quả
thực tế sẽ như mong muốn. Do đó, giá trị thấp hơn của MMRE trên các dự
án T là kết quả tốt hơn. Tổng nỗ lực MMRE được sử dụng để đánh giá chất
lượng (f) của các trong số các giải pháp theo phương trình sau:
fitness = ( ỗ ự ) + ( ờ ) (3.13)
2. Ứng dụng thuật toán Cuckoo search (CS) tối ưu các tham số
trong mô hình CoCoMo II
Trong luận văn này, tôi đề xuất phương pháp dùng thuật toán Cuckoo
search (CS) để tối ưu hóa các tham số A, B, C và D của COCOMO II bằng
cách dựa vào các dự án phần mềm trong quá khứ. Bài toán tối ưu cần đặt ra
là làm sao cho phương trình (3.13) mang giá trị nhỏ nhất nghĩa là giá trị
MMRE thấp nhất trên các dự án T là tốt nhất. Trong thuật toán CS này, con
chim cuckoo tượng trưng cho nỗ lựcvà thời gian, còn quả trứng tượng trưng
cho các giải pháp. Việc tối ưu được thực hiện qua các bước sau:
Input : Tập dữ liệu dùng để huấn luyện (các dự án trong quá khứ).
Bộ tham số T cần tối ưu T= {A, B, C, D}.
Hàm mục tiêu fitness= ( ỗ ự ) + ( ờ )
| (ướ ượ ) ( ự ế) | (ướ ượ ) ( ự ế) |
f= ∑ + ∑
( ự ế) ( ự ế)
Output : Giá trị tối ưu của bộ tham số T = {A, B, C, D}.
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
1. Kết quả thuật toán
Thuật toán tối ưu CS trên, được cài đặt thông qua các công cụ phần
mềm. Matlab là một môi trường tính toán số và lập trình, được thiết kế bởi
công ty MathWorks. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị
hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người
dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ
lập trình khác. Việc cài đặt thuật toán tối ưu này trên công cụ Matlab cho ra
giá trị tối ưu các tham số A, B, C và D trong mô hình CoCoMo II, sau khi
chạy thuật toán nhiều lần và tìm được giá trị tối ưu tốt nhất. Giá trị cụ thể
của từng tham số như sau: A = 4.4019; B = 0.9332; C = 2.5334; D =
0.3505.
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
Các hệ số của mô hình CoCoMo II sau khi được tối ưu bằng thuật toán
CS cho ra kết quả như đã trình bày ở trên. Trong khi đó các hệ số của mô
hình này được tối ưu bằng nhiều thuật toán khác nhau.Thuật toán dạy và
học (TLBO) là một trong số thuật toán sử dụng để tối ưu hóa các tham số
trong mô hình CoCoMo II được đề xuất gần đây bởi tác giả TS. Lê Thị Mỹ
Hạnh và Khuất Thanh Tùng “Thanh Tung Khuat, My Hanh Le, "Applying
Teaching-Learning to Artificial Bee Colony for Parameter Optimization
of Software Effort Estimation Model," Journal of Engineering Science
and Technology, 2016”. Kết quả tối ưu sử dụng thuật toán này cho ra giá trị
tham số: A = 4.062 B = 0.857; C = 2.938; D = 0.357. Từ giá trị của các
tham số đã được tối ưu trên, dựa vào các công thức (3.5), (3.6), (3.7), (3.8),
bảng dữ liệu được thu thập từ các dự án của NASA và các mô hình đánh
giá MMRE, PRED để tính toán, đánh giá hiệu quả của việc tối ưu dùng
thuật toán CS. Kết quả được trình bày trong bảng 3.4 và bảng 3.5.
Trong bảng 3.5 cho thấy rằng giá trị MMRE của CS rất thấp hơn nhiều
so với CoCoMo II và TLBO. Cụ thể là đối với nỗ lực (PM), giá trị MMRE
của CS so với CoCoMo II thấp hơn 19.46%, so với TLBO thấp hơn
6.46%. Còn đối với thời gian (TDEV), giá trị MMRE của CS so với
CoCoMo II thấp hơn 16,01%, so với TLBO thấp hơn 1.62%
Tương tự trong bảng 3.4 cũng cho thấy rằng giá trị PRED(N) của CS rất
lớn hơn nhiều so với CoCoMo II và TLBO cùng mức dự đoán. Ở đây, N là
mức dự đoán và giá trị N được chọn từ 10 đến 40 để đánh giá. Cụ thể đối
với nỗ lưc, số phần trăm các dự án nằm trong 20% ước lượng không chính
xác của CS so với TLBO cao hơn 13.34%, so với CoCoMo II cao hơn
26.67%. Còn đối với thời gian(TDEV) CS so với TLBO cao hơn 20%, so
với CoCoMo II cao hơn 66.67%, việc phân tích đánh giá các mức dự đoán
tiếp theo cũng tương tự như trên.
Như vậy, với việc sử dụng thuật toán CS để tối ưu các tham số trong
mô hình CoCoMo II thì chính xác và gần với thực tế hơn so với sử dụng
thuật toán TLBO và việc tối ưu các tham số này đã cải thiện rất nhiều về
ước lượng nỗ lực, chi phí và thời gian so với mô hình CoCoMo II ban đầu
Bảng 3.4: Bảng các giá trị PRED sử dụng thuật toán CS, CoCoMo II và
TLBO
PRED Nỗ lực (PM) PRED Thời gian (TDEV)
CoCoMoII TLBO CS % CoCoMo II TLBO CS
% % % % %
PRED(10) 6.66 6.66 13.33 6.66 73.33 66.66
PRED(20) 13.33 26.66 40 33.33 80 100
PRED(30) 13.33 40 66.66 66.66 100 100
PRED(40) 33.33 60 73.33 100 100 100
Bảng 3.4: Bảng các giá trị MRE sử dụng thuật toán CS, CoCoMo II và
TLBO
Dự án MRE Nỗ lực (PM) MRE Thời gian (TDEV)
COCOMO II TLBO CS COCOMO II TLBO CS
16 0.703 0.617 0.388 0.328 0.025 0.004
17 0.727 0.621 0.455 0.252 0.003 0.043
18 0.388 0.134 0.212 0.156 0.071 0.017
19 0.106 0.309 0.747 0.113 0.103 0.052
20 0.165 0.235 0.624 0.108 0.123 0.043
21 0.374 0.078 0.220 0.112 0.088 0.016
22 0.417 0.116 0.121 0.218 0.061 0.135
23 0.501 0.373 0.043 0.288 0.026 0.024
24 0.508 0.339 0.003 0.311 0.046 0.075
25 0.586 0.400 0.186 0.285 0.090 0.148
26 0.315 0.438 0.167 0.320 0.068 0.101
27 0.624 0.577 0.368 0.165 0.246 0.040
28 0.588 0.130 0.424 0.303 0.213 0.202
29 0.687 0.504 0.232 0.312 0.128 0.125
30 0.595 0.463 0.175 0.313 0.054 0.078
MMRE 48.60 % 35.61 29.14 23.94 % 9.01 % 7.39 %
này đã cải thiện rất nhiều về ước lượng nỗ lực, chi phí và thời gian so với
mô hình CoCoMo II ban đầu.
[1]. Abts, C.; Clark, B.; Devnani-Chulani, S.; Horowitz, E.; Madachy, R.;
Reifer, D.; Selby, R.; and Steece, B. (1998). COCOMO II model definition
manual. Center for Software Engineering, University of Southern
California.
[2]. Thanh Tung Khuat, My Hanh Le, "Applying Teaching-Learning to
Artificial Bee Colony for Parameter Optimization of Software Effort
Estimation Model," Journal of Engineering Science and Technology, 2016
[3]. J. Kaur and R. Sindhu, “Parameter estimation of COCOMO II using
tabu search”, Int. J. Comp. Sci. Inform. Technol., vol. 5, no. 3, pp. 4463–
4465, 2014.
[4] B. Boehm, B. Clark, E. Horowitz, C. Westland, R. Madachy, and
R. Selby, “Cost Models for Future Software Life Cycle Processes:
COCOMO 2.0”, Annals of Softw. Engin., vol. 1, no. 1, pp. 57–94, 1995.
[5] Shilane D., Martikainen J., Dudoit S., Ovaska S. J., A general frame-
work for statistical performance comparison of evolutionary computation
algorithms, Information Sciences: an Int. Journal, 178, 2870-2879 (2008).
[6] Shlesinger M. F., Zaslavsky G. M. and Frisch U. (Eds), Le´vy
Flights and Related Topics in Phyics, Springer, (1995).
[7] Shlesinger M. F., Search research, Nature, 443, 281-282 (2006).
[8] Yang X. S., Nature-Inspired Metaheuristic Algorithms, Luniver Press,
(2008).
[9] Yang X. S., Biology-derived algorithms in engineering optimizaton
(Chapter 32), in Handbook of Bioinspired Algorithms and Applications
(eds Olarius & Zomaya), Chapman & Hall / CRC (2005).
[10] Chen, Z.; Menzies, T.; Port, D.; and Boehm, B. (2005). Feature subset
selection can improve Software Cost Estimation Accuracy. Proceedings of
the 2005 workshop on Predictor Models in Software Engineering. New
York, USA, 1-6.
[11] H. Zheng and Y. Zhou, “A Novel Cuckoo Search Optimization
Algorithm Base on Gauss Distribution”, Journal of Computational
Information Systems 8: 10, 4193–4200, 2012.
[12] Tập dữ liệu thử nghiệm gồm 93 dự án phần mềm của NASA, được
trích dẫn từ link http://openscience.us/repo/effort/cocomo/nasa93.html.