26
ĐẠ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

D ĐOÁN NỖ LC PHÁT TRIỂN PHN MỀM THEO QUY TRÌNH AGILE …tainguyenso.dut.udn.vn/bitstream/DUT/113/1/TranThaiBao.TT.pdf.pdf · diện ước tính chi phí và các nguồn

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

ĐẠ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ử

ly 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 trinh Agile

sư dung thuât toán tối ưu bây đàn”

2. MỤC ĐÍCH VÀ Ý NGHĨA CỦA ĐỀ TÀI

2.1. Muc đí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 ly 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 ly 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 ly 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 y nghĩa to lớn trong việc

quản ly dự án phần mềm thực tế:

Dự toán chi phí hợp ly 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. Muc 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 vu

4

Nghiên cứu về thuật toán PSO

Nghiên cứu ly 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ở ly thuyết về phát triển phần mềm theo quy trình Agile.

4.2. Pham 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 ly 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ố cuc 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 ly 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ở ly 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ô hinh phát triên phân mêm mới

1.2.2. Tim 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 trinh 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ế hoach 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 loai

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 ly

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 trinh 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ô hinh 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ô hinh 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)

Story Size

Độ phức tạp

3.1.2.3. 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 ABC-

PSO 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)

MSE = 1𝑇 ∗ ∑ (𝐴𝑖 − 𝑃𝑖)2𝑇

𝑖=1 (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) = 100

𝑇∑ {

1 𝑖𝑓 |𝑃𝑖− 𝐴𝑖|

𝐴𝑖<

𝑁

100

0 𝑛𝑔ượ𝑐 𝑙ạ𝑖

𝑇𝑖=1 (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ị R2 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 156 4.2 0.687 2.7 10 63 60.4247

2 202 3.7 0.701 2.5 10 92 84.7081

3 173 4 0.878 3.3 10 56 55.4812

4 331 4.5 0.886 3.8 10 86 93.0353

5 124 4.9 0.903 4.2 10 32 32.0780

6 339 4.1 0.903 3.6 10 91 100.3813

7 97 4.2 0.859 3.4 10 35 30.2257

8 257 3.8 0.833 3 10 93 90.6010

9 84 3.9 0.646 2.4 10 36 35.7536

10 211 4.6 0.758 3.2 10 62 69.7721

11 131 4.6 0.758 3.2 10 45 43.1453

12 112 3.9 0.773 2.9 10 37 40.3119

13 101 3.9 0.773 2.9 10 32 36.2884

14 74 3.9 0.773 2.9 10 30 26.4430

15 62 3.9 0.773 2.9 10 21 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

Sp V

lực

thực

tế

Nô lực dự đoán

PSO

ANN với

TLBO -

LM

ANN với

DABC-

LM

ANN với

TLBABC-

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 2.7 35 34.8265 34.9 36.2 36.1 40.4

MSE 4.5687 103.3450 32.8917 36.8467 65.0967

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.9476 0.9074

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 TLBO-

LM, 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.

24

Nghiên cứu, đề xuất các giải pháp để việc ước lượng mang

lại kết quả chính xác nhất cho mô hình phát triển phần mềm nói

chung và mô hình Agile nói riêng.

Trong tương lai, tôi dự định áp dụng thuật toán đề xuất cho

các dự án công nghiệp và đánh giá nó một cách toàn diện. Áp

dụng các kỹ thuật máy học như hỗ trợ máy vector, rừng ngẫu

nhiên và độ dốc ngẫu nhiên thúc đẩy cho vấn đề ước lượng nỗ lực

của dự án phần mềm linh hoạt.