Tải bản đầy đủ (.pdf) (26 trang)

Dự đoán nỗ lực phát triển phần mềm theo quy trình agile sử dụng thuật toán tối ưu bày đàn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.13 MB, 26 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

TRẦN THÁI BẢO

DỰ ĐOÁN NỖ LỰC PHÁT TRIỂN
PHẦN MỀM THEO QUY TRÌNH AGILE
SỬ DỤNG THUẬT TOÁN TỐI ƯU BẦY ĐÀN

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01

TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT

Đà Nẵng, Năm 2017


Công trình được hoàn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA

Người hướng dẫn khoa học: TS. LÊ THỊ MỸ HẠNH

Phản biện 1: TS. TRƯƠNG NGỌC CHÂU

Phản biện 2: TS. NGUYỄN THIỆN NGHĨA

Luận văn được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc
sĩ chuyên ngành Khoa học máy tính họp tại Trường Đại học Trà Vinh
vào ngày 16 tháng 9 năm 2017

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 Công nghệ Thông tin, Trường Đại học Bách khoa –
ĐHĐN.


1
MỞ ĐẦU
1. LÝ DO CHỌN ĐỀ TÀI
Ước lượng nỗ lực phần mềm có một vai trò hết sức quan trọng
trong quá trình phát triển phần mềm. Sự thành công hay thất bại của
dự án phụ thuộc rất lớn vào độ chính xác của kết quả ước lượng nỗ
lực và tiến độ. Do đó, đề tài được dự kiến để tìm ra một phương pháp
để ước lượng nỗ lực phát triển phần mềm chính xác. Kỹ thuật ước
lượng được chia làm ba loại dựa trên hàm toán học, kinh nghiệm của
chuyên gia và các phương pháp học máy. Sự đa dạng của các phương
pháp phát triển phần mềm mới đã dẫn đến sự hạn chế của phương
pháp truyền thống.
Trong những năm gần đây, sự xuất hiện của quá trình phát
triển phần mềm linh hoạt (Agile) đã đáp ứng được tiến độ của các
phương pháp công nghệ phần mềm mới. Việc sử dụng các phương
pháp linh hoạt cho phép các tổ chức đáp ứng sự biến động trong chu
trình phát triển phần mềm. Áp dụng một phương pháp ước lượng
trong quá trình phát triển phần mềm là một nhiệm vụ khó khăn mà
chúng ta cần phải lường trước kích thước và độ phức tạp của các sản
phẩm sẽ được xây dựng để xác định những việc cần làm tiếp theo.
Phát triển phần mềm theo quy trình Agile đã trở nên phổ biến trong
ngành công nghiệp và thay thế các phương pháp tiếp cận thông
thường của sự phát triển phần mềm. Phát triển phần mềm linh hoạt là
một nhóm các phương pháp và phương pháp luận phát triển phần
mềm dựa trên các nguyên tắc phát triển phân đoạn lặp (Iterative) và

tăng trưởng (Incremental), theo đó nhu cầu và giải pháp tiến hóa
thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng.
Trí thông minh của bầy đàn đã trở thành một sự quan tâm
nghiên cứu của nhiều nhà khoa học về các lĩnh vực liên quan trong
những năm gần đây. Một loạt các khái niệm mới, kỹ thuật và các ứng


2
dụng tính toán lấy cảm hứng từ thiên nhiên đã được đề xuất, được sử
dụng để giải quyết với một loạt các vấn đề tối ưu hóa trong các lĩnh
vực đa dạng đã được chứng minh là có hiệu quả trong trong việc xử
lý các vấn đề tính toán phức tạp và nhiều thành công đã được công
nhận. Đa số các phương pháp được lấy cảm hứng từ hiện tượng sinh
học hoặc các hành vi xã hội và chủ yếu là động vật, côn trùng.
Dựa trên cơ sở của thuật toán lấy cảm hứng từ tự nhiên và bài
toán ước lượng nỗ lực phát triển phần mềm trong mô hình Agile, tôi
đề xuất chọn đề tài luận văn cao học:
“Dự đoán nỗ lực phát triển phần mềm theo quy trình Agile
sử dụng thuật toán tối ưu bầy đàn”
2. MỤC ĐÍCH VÀ Ý NGHĨA CỦA ĐỀ TÀI
2.1. Mục đích
 Xây dựng ứng dụng hỗ trợ ước lượng thời gian, nỗ lực phát
triển của dự án phần mềm theo quy trình Agile.
 Giảm thiểu được thời gian, chi phí cho quá trình ước lượng nỗ
lực phát triển phần mềm.
 Dựa trên mức dự đoán của phần mềm ước lượng, sẽ đưa ra kế
hoạch hợp lý về mặt nhân sự, cơ sở vật chất, công nghệ, đồng
thởi phải ước tính cần bao nhiêu chuyên gia, kỹ sư lập trình,…
và đầu tư cho những dự án có nhiều tiềm năng. Vì vậy, một
phần mềm có khả năng ước lượng thông minh và chuyên sâu

về nỗ lực cần có cho một dự án phần mềm sẽ cần thiết cho việc
lập kế hoạch và dự toán chi phí của bất kỳ dự án nào.
2.2. Ý nghĩa khoa học
 Nắm vững và vận dụng tốt mô hình phát triển Agile trong việc
quản lý dự án phần mềm.
 Nắm vững các thành phần và phương pháp ước lượng nỗ lực
trong việc quản lý dự án.


3
 Nắm vững và ứng dụng tốt thuật toán tối ưu bầy đàn để tối ưu
các ước lượng nỗ lực cần cho một dự án phần mềm.
 Kết quả của quá trình nghiên cứu có thể làm tài liệu tham khảo
cho việc ước lượng nỗ lực trong dự án phát triển phần mềm
theo quy trình Agile.
2.3. Ý nghĩa thực tiển
Đề xuất giải pháp ước lượng nỗ lực phát triển phần mềm
theo quy trình Agile mang lại những ý nghĩa to lớn trong việc
quản lý dự án phần mềm thực tế:
 Dự toán chi phí hợp lý trong việc sử dụng nhân sự, tài nguyên
cho các dự án phần mềm
 Sự chính xác cao: Sự chính xác được đánh giá trên phương
diện ước tính chi phí và các nguồn lực trong dự án
 Đảm báo tiến độ dự án theo đúng kế hoạch ban đầu
 Kiểm soát dự án tốt hơn: Ước lượng phần mềm mang một cái
nhìn tổng quát về tiến độ, chi phí và khả năng thực thi của dự
án. Dựa trên đó, sẽ đễ dàng phát hiện và khắc phục các sự cố,
rủi ro trong triển khai dự án.
3. MỤC TIÊU VÀ NHIỆM VỤ
3.1. Mục tiêu

Mục tiêu chính của đề tài là ước lượng nỗ lực phát triển phần
mềm. Để thực hiện được mục tiêu này cần đạt được:
 Nắm vững kiến thức về mô hình phát triển phần mềm Agile
 Hiểu biết về ước lượng nỗ lực phát triển phần mềm
 Nắm vững kiến thức về thuật toán tối ưu bầy đàn (PSO)
 Áp dụng được thuật toán PSO để tối ưu hóa các tham số vào
việc ước lượng nỗ lực phát triển phần mềm theo mô hình
Agile.
3.2. Nhiệm vụ


4
 Nghiên cứu về thuật toán PSO
 Nghiên cứu lý thuyết về ước lượng nỗ lực phát triển phần mềm
theo quy trình Agile
 Sử dụng thuật toán PSO để tối ưu các tham số được sử dụng
trong công thức ước lượng nỗ lực phát triển phần mềm theo
quy trình Agile
 Phân tích và cài đặt thuật toán cho bài toán ước lượng nỗ lực
 Đánh giá kết quả theo yêu cầu của đề tài.
4. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
4.1. Đối tượng nghiên cứu
 Nghiên cứu thuật toán tối ưu bầy đàn (PSO)
 Cơ sở lý thuyết về phát triển phần mềm theo quy trình Agile.
4.2. Phạm vi nghiên cứu
 Nghiên cứu thuật toán dựa trên hành vi kiếm mồi của đàn chim
 Nghiên cứu về ước lượng nỗ lực phát triển phần mềm theo mô
hình Agile.
5. PHƯƠNG PHÁP NGHIÊN CỨU
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.
5.1. 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 có liên quan đến đề tài.
5.2. Phương pháp thực nghiệm:
 Cài đặt và áp dụng thuật toán tối ưu bầy đàn để dự đoán nỗ lực
phát triển phần mềm theo quy trình Agile
 So sánh và đánh giá kết quả.
6. PHƯƠNG TIỆN VÀ CÔNG CỤ TRIỂN KHAI
 Máy tính cài đặt hệ điều hành Windows


5
 Môi trường phát triển phần mềm Matlab
7. DỰ KIẾN KẾT QUẢ ĐẠT ĐƯỢC
7.1. Về lý thuyết
 Hiểu được khái niệm, tính chất của thuật toán tối ưu bầy đàn
 Hiểu được cách phát triển phần mềm theo quy trình Agile
 Hiểu và triển khai việc ước lượng nỗ lực phát triển phần mềm
theo quy trình Agile.
7.2. Về thực nghiệm
 Đề xuất giải pháp ước lượng nỗ lực phát triển phần mềm theo
quy trình Agile sử dụng thuật toán tối ưu bầy đàn
 Đánh giá hiệu quả của giải pháp đề xuất.
8. NỘI DUNG NGHIÊN CỨU VÀ DỰ KIẾN CẤU TRÚC
LUẬN VĂN
8.1. Nội dung nghiên cứu
 Thu thập và tổng hợp các tài liệu liên quan đến thuật toán bầy
đàn nói chung và thuật toán đàn chim kiếm mồi nói riêng

 Thu thập, tổng hợp và phân tích kỹ thuật ước lượng nỗ lực phát
triển phần mềm theo mô hình Agile
 Ứng dụng thuật toán đàn chim kiếm mồi để ước lượng nỗ lực
phát triển phần mềm theo mô hình Agile
 Thu thập, phân tích các kết quả; từ đó đánh giá hiệu quả giải
thuật.
8.2. Dự kiến bố cục luận văn
Báo cáo luận văn được thể hiện trong 3 chương.


6
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
Trong các quy trình phát triển phần mềm hiện đại, ước lượng
nỗ lực phát triển phần mềm đóng một vai trò quan trọng. Sự thành
công hay thất bại của dự án phụ thuộc rất lớn vào độ chính xác
của kết quả ước lượng nỗ lực và tiến độ thực hiện. Công việc đầu
tiên của người quản lý dự án là ước lượng - ước lượng về kích cỡ,
về chi phí, về thời gian tiến hành dự án. Việc này thông thường
được tiến hành bằng cách phân rã phần mềm cần phát triển thành
các khối nhỏ và áp dụng các kinh nghiệm (các thông số như kích
cỡ, chi phí, năng lực nhân viên, ...) đối với các phần mềm đã phát
triển trước đó, đánh giá công việc. Ngày nay, nhiều nghiên cứu
tập trung vào việc đề xuất các mô hình mới để nâng cao tính chính
xác của các kết quả dự đoán. Trong chương này, tôi trình bày cơ
sở lý thuyết về ước lượng nỗ lực và mô hình phát triển phần mềm
Agile.
1.1. ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN MỀM
1.1.1. Khái niệm
Ước lượng dự án hiện là một vấn đề khó khăn trong thực tế
sản xuất phần mềm. Không ước lượng được thì dự án rất dễ vỡ kế

hoạch về thời gian và tài chính. Mức ước lượng có thể có nhiều
sai sót trong các giai đoạn khác nhau do đó trong thực tế không dự
án nào có thể ước lượng chính xác. Ước lượng chỉ có thể chính
xác nếu phân rã được vấn đề lớn thành các vấn đề nhỏ hơn, đó là
kỹ thuật chia để trị.
1.1.2. Bốn bước cơ bản trong ước lượng dự án phần mềm
1.1.2.1. Ước lượng kích cỡ, phạm vi
1.1.2.2. Ước lượng nỗ lực
1.1.2.3. Ước lượng lịch trình
1.1.2.4. Ước lượng chi phí


7
1.1.3. Các phương pháp ước lượng nỗ lực
 Ước lượng chuyên gia
 Ước lượng đánh giá bằng kinh nghiệm quá khứ
 Ước lượng đánh giá bằng mô hình ước lượng thực nghiệm.
1.2. MÔ HÌNH PHÁT TRIỂN PHẦN MỀM AGILE
1.2.1. Sự cần thiết của một mô hình phát triển phần mềm mới
1.2.2. Tìm hiểu chung về Agile
1.2.2.1. Tuyên ngôn của Agile
Cá nhân và tương tác hơn là quy trình và công cụ
Phần mềm chạy tốt hơn là tài liệu về sản phẩm
Cộng tác với khách hàng hơn là đàm phán hợp đồng
Phản hồi với sự thay đổi hơn là bám sát kế hoạch
1.2.2.2. Các quy tắc của Agile
 Ưu tiên cao nhất của phát triển phần mềm là thỏa mãn
khách hàng thông qua việc chuyển giao sớm và liên tục
các phần mềm có giá trị.
 Chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong

quá trình phát triển. Các quy trình Agile tận dụng sự
thay đổi cho các lợi thế cạnh tranh của khách hàng.
 Chuyển giao phần mềm chạy tốt tới khách hàng một
cách thường xuyên (từ vài tuần đến vài tháng và ưu tiên
cho các khoảng thời gian ngắn hơn).
 Nhà kinh doanh và nhà phát triển (lập trình, thiết kế, …)
phải làm việc cùng nhau hàng ngày trong suốt dự án.
 Các dự án được xây dựng xung quanh những cá nhân có
động lực. Cung cấp cho họ môi trường, sự hỗ trợ cần
thiết và tin tưởng để hoàn thành công việc.


8
 Phương pháp tốt nhất để truyền đạt thông tin tới các
nhóm phát triển và nội bộ nhóm phát triển là trao đổi trực
tiếp.
 Phần mềm chạy tốt là thước đo chính của tiến độ.
 Các quy trình linh hoạt thúc đẩy phát triển bền vững.
Các nhà tài trợ, nhà phát triển và người dùng có thể duy
trì một nhịp độ liên tục không giới hạn.
 Liên tục quan tâm đến các kỹ thuật và thiết kế tốt để gia
tăng sự linh hoạt.
 Sự đơn giản và nghệ thuật tối đa hóa lượng công việc
chưa xong là cơ bản.
 Các kiến trúc tốt, yêu cầu và thiết kế tốt nhất sẽ được tạo
bởi các nhóm tự tổ chức.
 Nhóm phát triển sẽ thường xuyên suy nghĩ về việc làm
sao để trở nên hiệu quả hơn. Sau đó họ sẽ điều chỉnh và
thay đổi các hành vi của nhóm cho phù hợp.
1.2.2.3. Các đặc trưng của Agile

 Tính lặp
 Tính tăng trưởng và tiến hóa
 Tính thích nghi
 Nhóm tự tố chức và liên chức năng
 Kiểm soát quy trình thực nghiệm
 Giao tiếp trực diện
 Phát triển dựa trên giá trị
 Hội tụ
 Hướng chất lượng
1.2.3. Quy trình vận hành Agile
1.2.3.1. Lập kế hoạch
1.2.3.2. Phân tích


9
1.2.3.3. Thiết kế và lập trình
1.2.3.4. Kiểm thử (Test)
1.2.3.5. Bàn giao sản phẩm
1.3. CÁC PHƯƠNG PHÁP PHÁT TRIỂN PHẦN MỀM LINH
HOẠT
1.3.1. Các khái niệm trong SCRUM
1.3.2. Lập kế hoạch Sprint


10
CHƯƠNG 2. THUẬT TOÁN TỐI ƯU BẦY ĐÀN
PSO (Particle Swarm Optimization) được xây dựng dựa trên
việc mô hình hóa việc đàn chim bay đi tìm kiếm thức ăn, sử dụng
sự tương tác giữa các cá thể trong một quần thể để khám phá
không gian tìm kiếm. Phương pháp tối ưu bầy đàn này, được giới

thiệu vào năm 1995 tại một hội nghị của IEEE bởi James
Kennendy và kỹ sư Russell C. Eberhart [5]. Thuật toán có nhiều
ứng dụng trong các lĩnh vực cần giải quyết các bài toán tối ưu hóa
với không gian tìm kiếm rộng, thuật toán đơn giản, ước lượng
được giá trị tối ưu toàn cục và bền vững.
2.1. GIỚI THIỆU
2.1.1. Bài toán tối ưu tổng quát và phân loại
2.1.1.1. Giới thiệu bài toán tối ưu tổng quát
2.1.1.2. Phân loại các bài toán tối ưu
2.1.2. Trí tuệ bầy đàn
Trí tuệ bầy đàn hay trí thông minh bầy đàn là cách thức liên
lạc giữa một cá thể và tập thể trong một tổ chức khổng lồ. Trí tuệ
bầy đàn thể hiện qua những hành vi tập thể trong một hệ thống (tự
nhiên hoặc nhân tạo) được tổ chức và phân cấp. Nhờ trí tuệ bầy
đàn, mỗi cá thể hành động tuân theo quy tắc chung của cả đàn mà
không cần ra lệnh. Như vậy, mỗi đàn không cần sự lãnh đạo
những hành động phức tạp sẽ hình thành bằng cách phối hợp
nhiều tương tác đơn giản.
Việc sử dụng trí tuệ bầy đàn vào trong các lĩnh vực từ công
nghiệp, khoa học lẫn thương mại đã có nhiều ứng dụng đặc sắc và
đa dạng. Nghiên cứu trí tuệ bầy đàn có thể giúp con người quản lý
những hệ thống phức tạp, từ việc vận hành các chuyến xe cho đến
robot quân sự. Ngoài ra, trí tuệ bầy đàn còn được ứng dụng rộng


11
rãi trong việc lập kế hoạch, tìm đường đi tối ưu, tìm kiếm và bảo
mật thông tin, hỗ trợ ra quyết định, giải trí công nghệ cao, …
2.2. MÔ PHỎNG HÀNH VI KIẾM MỒI CỦA ĐÀN CHIM
Giả sử một đàn chim đang tìm kiếm thức ăn trong một vùng

nào đó. Tất cả các con chim (cá thể) không biết thức ăn ở đâu.
Tuy nhiên, chúng biết là thức ăn cách xa chúng bao nhiêu sau mỗi
lần bay đi bay lại trên bầu trời (lặp n lần).
 Cách tốt nhất để tìm kiếm được thức ăn là theo sau những cá
thể gần chỗ thức ăn nhất. Bằng cách điều chỉnh hướng bay và vận
tốc hướng về nơi có nhiều nguồn thức ăn nhất.
2.3. KIẾN TRÚC THUẬT TOÁN PSO
PSO là kết quả của sự mô hình hóa việc đàn chim bay đi tìm
kiếm thức ăn cho nên nó thường được xếp vào các loại thuật toán
có sử dụng trí tuệ bầy đàn. Thuật toán được giới thiệu vào năm
1995 tại một hội nghị của IEEE bởi James Kennedy và kỹ sư
Russell C. Eberhart [5].
Sự thay đổi những điểm tìm kiếm của thuật giải PSO được
biểu diễn ở hình 2.3.

Hình 2.3. Sự thay đổi điểm tìm kiếm của PSO


12
Trong đó:
 Xik+1: Vị trí cá thể thứ i tại thế hệ thứ k
 Xik+1: Vị trí cá thể thứ i tại thế hệ thứ k+1
 Vik: Vận tốc cá thể thứ i tại thế hệ thứ k
 Vik+1: Vận tốc cá thể thứ i tại thế hệ thứ k+1
 ViPbest: Vận tốc theo Pbest
 ViGbest: Vận tốc theo Gbest
 Pbest: Vị trí tốt nhất của cá thể thứ i
 Gbest: Vị trí tốt nhất của tất cả cá thể trong quần thể
PSO được khởi tạo bởi một nhóm ngẫu nhiên các cá thể, sau
đó tìm kiếm giải pháp tối ưu bằng việc cập nhật các thế hệ (lần lặp).

Trong mỗi thế hệ, mỗi cá thể được cập nhật bởi hai giá trị: giá trị
thứ nhất, gọi là Pbest (là nghiệm tốt nhất đạt được cho tới thời điểm
hiện tại) hay là giá trị thích nghi của cá thể tốt nhất trong thế hệ
hiện thời. Giá trị thứ hai, gọi là Gbest (là nghiệm tốt nhất mà cá thể
lân cận cá thể này đạt được cho tới thời điểm hiện tại) hay là giá trị
thích nghi của cá thể tốt nhất trong tất cả thế hệ từ trước đến hiện
tại. Quá trình cập nhật các cá thể dựa trên hai công thức sau [5]:
𝑉𝑖𝑘+1 = ω*𝑉𝑖𝑘 + c1*r1*(Pbest – 𝑋𝑖𝑘 ) + c2*r2*(Gbest – 𝑋𝑖𝑘 ), ∀𝑖 (2.3)
𝑋𝑖𝑘+1 = 𝑋𝑖𝑘 + 𝑉𝑖𝑘+1 , ∀𝑖

(2.4)

Trong đó:
 k: là thế hệ hiện tại.
 ω: là hệ số quán tính
 c1, c2: là các hệ số gia tốc
 r1, r2: Các số ngẫu nhiên nhận giá trị trong khoảng [0, 1]
 Giá trị của trọng số quán tính ω sẽ giảm tuyến tính từ 1 đến 0
tùy thuộc vào số lần lặp xác định trước


13
2.4. TRIỂN KHAI VÀ CÀI ĐẶT THUẬT TOÁN
2.4.1. Biểu diễn bằng mã giả
2.4.2. Lưu đồ thuật toán

Hình 2.4. Lưu đồ thuật toán


14

2.4.3. Quy trình thực hiện
Bước 1: Thiết lặp các thông số: ω, c1, c2
Bước 2: Khởi tạo quần thể, các cá thể với vị trí và vận tốc ngẫu
nhiên X, V.
Bước 3: Thiết lập giá trị lặp bắt đầu với k=1
Bước 4: Tính toán giá trị thích nghi 𝐹𝑖𝑘 = f(𝑋𝑖𝑘 ), ∀𝑖 và tìm chỉ số
b của cá thể có giá trị thích nghi tốt nhất trong quần thể.
Bước 5: Chọn P𝑏𝑒𝑠𝑡𝑖𝑘 = 𝑋𝑖𝑘 , ∀𝑖 và Gbest = 𝑋𝑏𝑘
Bước 6: Cập nhật vị trí và vận tốc của các cá thể:
Cập nhật vận tốc 𝑉𝑖𝑘+1 sử dụng công thức (2.3)
Cập nhật vị trí 𝑋𝑖𝑘+1 sử dụng công thức (2.4)
Bước 7: Đánh giá giá trị thích nghi: 𝐹𝑖𝑘+1 = 𝑓(𝑋𝑖𝑘+1), ∀𝑖 và và
tìm chỉ số b1 của cá thể có giá trị thích nghi tốt nhất trong quần thể.
Bước 8: Cập nhật Pbest của quần thể ∀𝑖 theo công thức (2.7)
Bước 9: Cập nhật Gbest của quần thể theo công thức (2.8)
Bước 10: Nếu k chưa đủ số lần tìm kiếm thì tăng k lên 1 giá trị và
quay lại bước 6
Bước 11: In kết quả
Trong đó:





Trọng lượng quán tính: 0.25
Hệ số gia tốc (c1 và c2): Từ 2.0 đến 2.5
Kích thước quần thể: 10 đến 100
Số lần lặp: 500 đến 10000



15
CHƯƠNG 3. ỨNG DỤNG THUẬT TOÁN TỐI ƯU BẦY ĐÀN
ƯỚC LƯỢNG NỖ LỰC PHÁT TRIỂN PHẦN MỀM
THEO QUY TRÌNH AGILE

Phần mềm hiện nay được sử dụng rộng rãi trong đời sống,
khoa học và xã hội. Vì vậy, việc đảm bảo rằng phần mềm làm ra
mang lại hiệu quả kinh tế cũng như đáp ứng được những yêu cầu
đặt ra là cần thiết. Để có thể đạt được những hiệu quả đó thì cần
phải có các phương pháp ước lượng để nâng cao tính chính xác
của kết quả dự đoán, bao gồm các phương pháp như: hệ chuyên
gia, dữ liệu lịch sử, mô hình, … và cách tiếp cận của đề tài sử
dụng phương pháp ước lượng theo mô hình. Ngày này, nhiều
nghiên cứu tập trung vào việc đề xuất các mô hình mới để nâng
cao tính chính xác của các kết quả dự đoán; Tuy nhiên, vấn đề
đánh giá chính xác nỗ lực là một vấn đề đầy thách thức đối với
các nhà nghiên cứu, đặc biệt là khi nói đến các dự án sử dụng các
phương pháp linh hoạt (Agile). Nghiên cứu này nhằm mục đích đề
xuất thuật toán tối ưu bầy đàn để tối ưu hóa các thông số của công
thức đã được đề xuất trước đó [9] dựa trên tốc độ nhóm và các
yếu tố về Story Point.
3.1. PHÂN TÍCH BÀI TOÁN ƯỚC LƯỢNG NỖ LỰC PHÁT
TRIỂN PHẦN MỀM THEO QUY TRÌNH AGILE
3.1.1. Mô hình tổng quan của bài toán
Để sử dụng thuật toán PSO vào bài toán ước lượng nỗ lực
phát triển phần mềm theo mô hình Agile cần các yếu tố sau:
 Đầu vào của bài toán là một bộ bao gồm 21 dự án từ 6
công ty phần mềm khác nhau được thu thập từ Zia [7].
 Đầu ra của bài toán là thời gian hoàn thành dự án. Từ đó
tính toán được chi phí phát triển dự án.



16
Các bước đề xuất để tăng độ chính xác của nỗ lực dự đoán
bằng cách sử dụng thuật toán tối ưu bầy đàn như sau:
 Bước 1: Thu thập tổng số Story Point, vận tốc của dự án
và nỗ lực thực tế. Trong nghiên cứu này, các dữ liệu được
thu thập từ Zia [7].
 Bước 2: Chia bộ dữ liệu thành tập dữ liệu huấn luyện và tập
dữ liệu thử nghiệm. Trong nghiên cứu này, 15 dự án đầu
tiên sử dụng để huấn luyện và 6 dự án còn lại để thử
nghiệm.
 Bước 3: Huấn luyện các cá thể: Huấn luyện các cá thể để
xác định các tham số với giá trị tối ưu trong bài toán.
 Bước 4: Thử nghiệm và đánh giá hiệu suất của mô hình.
3.1.2. Ước lượng trong mô hình Agile
3.1.2.1. Các khái niệm cơ bản
3.1.2.2. Xác định nỗ lực (Story point)


3.1.2.3.


Story Size
Độ phức tạp
Xác định vận tốc dự án (Agile Velocity)
Tối ưu hóa vận tốc Agile

 Sự giảm tốc
 Các yếu tố thay đổi

3.2. ÁP DỤNG THUẬT TOÁN BẦY ĐÀN ĐỂ ƯỚC LƯỢNG
NỖ LỰC PHÁT TRIỂN PHẦN MỀM
3.2.1. Đề xuất giải pháp ước lượng nỗ lực phát triển phần mềm
theo quy trình Agile
Dựa vào vận tốc cuối cùng và Story Point, đề tài này sử dụng
công thức được đề xuất trong bài báo [9] “A Novel Hybrid ABCPSO Algorithm for Effort Estimation of Software Projects Using


17
Agile Methodologies” để dự đoán nỗ lực của các dự án phần mềm
linh hoạt như sau:
𝐴∗𝑆
Eff = 𝐵∗𝑉𝑝 + 𝐶 ∗ ln(𝑆𝑝 ) + 𝐷 ∗ ln(𝑉) + 𝐸
(3.6)
Trong đó Eff là nỗ lực dự đoán được đo bằng đơn vị ngày,
SP là giá trị Story Point của dự án và V là vận tốc cuối cùng của
nhóm.
Mục đích của đề tài là xác định các giá trị A, B, C, D và E để
dự đoán cho dự án là chính xác nhất so với giá trị thực tế. Trong
nghiên cứu này, sử dụng thuật toán tối ưu hóa bầy đàn để tìm
kiếm các giá trị của các tham số sử dụng dữ liệu lịch sử từ các dự
án trước đó. Khi chúng ta có một mô hình dự đoán với các tham
số thích hợp, nó có thể được sử dụng để dự đoán nỗ lực của một
dự án mới.

Hình 3.1. Sơ đồ của giải pháp được triển khai trong đề tài.


18
3.2.2. Đo lường chất lượng dự đoán

Để đánh giá hiệu suất của phương pháp sử dụng, các tiêu chi
đánh giá dưới đây được xem xét [7]:
 Tiêu chí Mean Squared Error (MSE – Sai số toàn phương)
được tính bằng công thức (3.7)
1
MSE = 𝑇 ∗ ∑𝑇𝑖=1(𝐴𝑖 − 𝑃𝑖 )2
(3.7)
Trong đó: 𝐴𝑖 và 𝑃𝑖 là những giá trị nỗ lực thực tế và
dự đoán của các dữ liệu thử nghiệm thứ i tương ứng.
 Tiêu chí Mean Magnitude of Relative Error (MMRE) là tỷ
lệ phần trăm của trị tuyệt đối sai số dự đoán trên toàn bộ
tập dữ liệu. Với bộ dữ liệu thử T các MMRE được tính
theo công thức (3.8)
MMRE =

100

𝑇

∑𝑇𝑖=1

|𝑃𝑖 − 𝐴𝑖 |
𝐴𝑖

(3.8)

 PRED(N) cho thấy tỷ lệ phần trăm của ước tính trung
bình trong phạm vi N phần trăm của giá trị thực thông qua
công thức (3.9)
PRED(N) =


1 𝑖𝑓
100 𝑇
∑𝑖=1 {
𝑇

|𝑃𝑖 − 𝐴𝑖 |
𝐴𝑖

<

0 𝑛𝑔ượ𝑐 𝑙ạ𝑖

𝑁
100

(3.9)

 Hệ số tương quan bình phương (R2), còn được gọi là hệ
số xác định được tính như công thức (3.10)
R2 = 1 -

2
∑𝑇
𝑖=1(𝐴𝑖 − 𝑃𝑖 )
𝑇
2
̅
∑𝑖=1(𝐴𝑖 − 𝐴)


(3.10)

Trong đó 𝐴̅ là giá trị trung bình của các nỗ lực thực tế.
Vậy nên giá trị R 2 và PRED(N) càng cao thì kết quả ước
lượng càng tốt hơn. Ngược lại, các giá trị MSE, MMRE càng
thấp thì kết quả ước lượng càng chính xác hơn.
3.2.3. Biểu diễn cá thể của thuật toán PSO và hàm thích nghi
cho bài toán dự đoán


19
Trong nghiên cứu này, mỗi cá thể trong thuật toán tối ưu bầy
đàn được biểu diễn như sau:
𝑋𝑖 = {𝐴𝑖 , 𝐵𝑖 , 𝐶𝑖 , 𝐷𝑖 , 𝐸𝑖 }
Sau khi thuật toán kết thúc sẽ trả về kết quả là cá thể tốt nhất
chứa các tham số cho nỗ lực dự đoán bằng cách sử dụng công
thức (3.6) gần với giá trị nỗ lực thực tế.
Để đánh giá độ thích nghi của mỗi cá thể trong thuật toán
PSO, chúng ta sử dụng hàm thích nghi như trong công thức
(3.11):
𝑓(𝑋𝑖 ) = 𝑀𝑀𝑅𝐸(𝑋𝑖 )
(3.11)
Trong đó: 𝑀𝑀𝑅𝐸(𝑋𝑖 ) là 𝑀𝑀𝑅𝐸 của từng cá thể 𝑋𝑖 trên T
tập dữ liệu huấn luyện.
3.2.4. Bộ dữ liệu thực nghiệm
Phương pháp đề xuất được kiểm tra bằng cách sử dụng bộ dữ
liệu gồm 21 dự án phát triển bởi 6 công ty phần mềm sử dụng của
Zia [7]. Các thành phần của bộ dữ liệu gồm có: Tổng số Story
Point được thực hiện trong một dự án, vận tốc của dự án, những
nỗ lực thực tế cần thiết để hoàn thành dự án.

3.2.5. Thực nghiệm
3.2.5.1. Thiết lập thông số
Để đánh giá hiệu quả của thuật toán, tôi thiết lập kích cỡ
quần thể và số lần lặp, hệ số quán tính như sau:
 Số lần lặp: Iteration = 10000
 Kích thước quần thể: Np = 100
 w = 0.25 và c1 = c2 = 2.0
 Các tham số của mô hình ước tính đề xuất trong
phạm vi từ -20 đến 20.
3.2.5.2. Huấn luyện


20
Sử dụng 15 dự án đầu tiên trong 21 dự án được phát triển bởi
6 công ty phần mềm sử dụng của Zia [7].
Bảng 3.7: Kết quả nỗ lực ước lượng được huấn luyện từ 15 dự án
Stt

Story
Point

Vi

D

V

Sprint
Size


Nỗ lực
thực tế

Nỗ lực ước
lượng

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

156
202
173
331
124
339
97
257

84
211
131
112
101
74
62

4.2
3.7
4
4.5
4.9
4.1
4.2
3.8
3.9
4.6
4.6
3.9
3.9
3.9
3.9

0.687
0.701
0.878
0.886
0.903
0.903

0.859
0.833
0.646
0.758
0.758
0.773
0.773
0.773
0.773

2.7
2.5
3.3
3.8
4.2
3.6
3.4
3
2.4
3.2
3.2
2.9
2.9
2.9
2.9

10
10
10
10

10
10
10
10
10
10
10
10
10
10
10

63
92
56
86
32
91
35
93
36
62
45
37
32
30
21

60.4247
84.7081

55.4812
93.0353
32.0780
100.3813
30.2257
90.6010
35.7536
69.7721
43.1453
40.3119
36.2884
26.4430
22.0877

Sau khi áp dụng thuật toán PSO, các tham số của mô hình
ước lượng đề xuất được tối ưu và có các giá trị cụ thể như sau:
A = - 16.3787; B = - 15.2336; C = -0.5297; D = 4.3219; E = -3.3140
3.2.5.3. Đánh giá kết quả đạt được
Để đánh giá chính xác kết quả dự đoán nỗ lực phát triển
phần mềm, các phương pháp được đề xuất trong bài báo [8] họ đã
sử dụng mạng Nơ-ron nhân tạo (ANN - Artificial Neural
Network) và sự kết hợp của thuật toán Levenberg Marquardt
(LM) với các thuật toán khác bao gồm: Thuật toán tối ưu trong
dạy học (TLBO - Teaching Learning Based Optimization), thuật


21
toán bầy ông nhân tạo rời rạc (DABC - Discrete Artificial Bee
Colony) đây là phiên bản cải tiến của thuật toán bầy ong nhân tạo
(ABC - Artificial Bee Colony), thuật toán dạy học dựa trên bầy

ông nhân tạo (TLBABC - Teaching Learning Based Artificial Bee
Colony) và thuật toán (LM - Levenberg Marquardt) để tối ưu hóa
các thông số của mạng Nơ-ron [8].
Trong nghiên cứu này, tôi sử dụng thuật toán tối ưu bầy đàn
(PSO) để dự đoán nỗ lực phát triển phần mềm. Nhưng để đánh giá
về độ chính xác và kết quả ước lượng thì trong nghiên cứu này tôi
so sánh kết quả thuật toán đề xuất với kết quả của các phương
pháp trong bài báo [8], dựa trên các tiêu chí đánh giá: MSE,
MMRE, PRED(7.19) và R2.
Bảng 3.8. Kết quả thực nghiệm và so sánh các kết quả ước lượng
Nỗ lực dự đoán

Nỗ
Sp

V

lực
thực

PSO

tế

ANN với

ANN với

ANN với


TLBO -

DABC- TLBABC-

LM

LM

LM

ANN với
LM

289 2.8

112

109.1074

88

99.0

98

94.8

113 2.8

39


42.0225

41.9

43.4

43.1

45.9

141 2.8

52

52.6570

52.6

54.3

54.1

55.8

213 2.8

80

80.0858


75.2

80.1

80.3

80.8

137 2.7

56

52.9275

52.5

54.5

54.4

54.3

91

35

34.8265

34.9


36.2

36.1

40.4

2.7
MSE

4.5687

103.3450 32.8917 36.8467

MMRE

2.9476

7.0923

5.5907

5.5710

9.9702

PRED(7.19)

83.3333


66.6667

66.6667 66.6667

33.3333

R2

0.9935

0.8530

0.9532

0.9074

0.9476

65.0967


22
Từ Bảng 3.8, có thể thấy rằng thuật toán PSO cho kết quả
với các giá trị MSE, MMRE, PRED (7.19) và R2 tốt hơn trên tất
cả các tiêu chí đánh giá so với các thuật toán ANN với TLBOLM, ANN với DABC-LM, ANN với TLBABC-LM và ANN với
LM. Thực nghiệm này chỉ ra rằng phương pháp được đề xuất cho
thấy kết quả đánh giá nỗ lực khá chính xác và là một thuật toán
hiệu quả để tối ưu hóa.
3.3. KẾT LUẬN
Phương pháp Story Point là một trong những kỹ thuật ước

tính nỗ lực phần mềm có thể được sử dụng cho các dự án phần
mềm linh hoạt. Trong nghiên cứu này, tổng số Story Point và vận
tốc dự án được sử dụng để đào tạo, để cung cấp cho các nỗ lực
trong việc phát triển một sản phẩm phần mềm linh hoạt. Độ chính
xác của các kết quả ước lượng được tăng cường bằng cách sử
dụng thuật toán PSO để tối ưu hóa các tham số. Các kết quả thực
nghiệm chỉ ra rằng PSO là một thuật toán hiệu quả để nâng cao độ
chính xác của dự đoán nỗ lực phát triển phần mềm theo quy trình
Agile so với các thuật toán khác như ANN với TLBO-LM, ANN
với DABC-LM, ANN với TLBABC-LM và ANN với LM.


23
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1. KẾT QUẢ ĐẠT ĐƯỢC
Qua đề tài này chúng ta có thể ước lượng được chi phí và nỗ
lực để phát triển phần mềm gần chính xác nhất. Giảm thời gian
trong việc ước lượng, đảm bảo thời gian hoàn thành dự án kịp tiến
độ, đảm bảo được chi phí trong quá trình phát triển.
Đề xuất được giải pháp áp dụng thuật toán tối ưu bầy đàn
vào bài toán ước lượng nỗ lực phát triển phần mềm theo quy trình
Agile.
2. HẠN CHẾ
Giải pháp đề xuất đựa trên thuật toán tối ưu bầy đàn, phụ
thuộc nhiều vào thàm số đầu vào, nếu tham số đầu vào không
chính xác dẫn đến kết quả đi xa so với mong muốn. Một hạn chế
khác của cách tiếp cận được đề xuất là độ phức tạp của User Story
được đánh giá trong phạm vi từ 1 đến 5 và nó có thể không bao
gồm tất cả các đặc tính đa dạng của các dự án linh hoạt trong thực
tế.

Chỉ là một giải pháp nhỏ bởi vì trong quá trình phát triển
phần mềm còn có rất nhiều trở ngại, nhiều yếu tố khác nhau ảnh
hưởng tới tốc độ phát triển của các dự án phần mềm.
3. HƯỚNG PHÁT TRIỂN
Làm việc trực tiếp với các dự án phần mềm, đúc kết đưa ra
các tham số đầu vào chính xác, dựa trên thực tế để nắm bắt các
yếu tố ảnh hưởng tới tốc độ dự án và cần làm rõ các phương pháp
để đánh giá mức độ phức tạp của User Story. Áp dụng vào tất cả
các mô hình phát triển phần mềm trong tương lai.
Nghiên cứu thêm một số thuật toán tối ưu để cải thiện hiệu
quả của bài toán.


×