Ước lượng nỗ lực phát triển phần mềm là một vấn đề quan trọng đối với hầu hết mọi người trong ngành công nghiệp 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 độ thực hiện Để nâng cao tính chính xác của dự đoán phương pháp ước lượng dựa trên các mô hình thuật toán đã được sử dụng rộng rãi 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 và việc khó khăn nhất là hiệu chuẩn các tham số Nghiên cứu này nhằm mục đích đề xuất thuật toán tối ưu dựa trên hành vi săn mồi của bầy sói GWO – Grey Wolf Optimizer để tối ưu hóa các thông số của công thức đã được đề xuất trước đó dựa trên nỗ lực thực tế trong quá khứ Các kết quả chỉ ra rằng phương pháp tiếp cận của tôi đã vượt trội hơn các phương pháp trong các nghiên cứu khác về tính chính xác của các kết quả ước lượng
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
NGUYỄN THỊ NGỌC NGÂN
Ư C Ư NG N C PHÁT TRI N PH N
SỬ DỤNG THUẬT TOÁN TỐI ƯU
D A TRÊN HÀNH VI SĂN ỒI CỦA B Y SÓI
UẬN VĂN THẠC SĨ KHOA HỌC CHUYÊN NGÀNH KHOA HỌC ÁY TÍNH
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
NGUYỄN THỊ NGỌC NGÂN
Ư C Ư NG NỖ C PHÁT TRIỂN PH N MỀM
SỬ DỤNG THUẬT TOÁN TỐI ƯU
D A TRÊN HÀNH VI SĂN MỒI CỦA B Y SÓI
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.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 2018
Trang 3LỜI CAM ĐOAN
Tôi cam đoan đây 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
Tác giả
Nguyễn Thị Ngọc Ngân
Trang 4MỤC ỤC
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ Ư C LƯ NG NỖ L C PHÁT TRIỂN PHẦN MỀM THEO M H NH SHETA 4
1.1 Tổng quan về ước lượng nỗ lực phát triển phần mềm 4
1.1.1 Khái niệm 4
1.1.2 Bốn bước cơ bản trong ước lượng dự án phần mềm 5
1.3 Mô hình ước lượng nỗ lực phát triển phần mềm 10
1.3.1 Mô hình COCOMO 11
1.3.2 Mô hình Sheta 12
CHƯƠNG 2 THUẬT TOÁN TỐI ƯU D A TRÊN HÀNH VI SĂN MỒI CỦA BẦY SÓI 13
2.1 Giới thiệu 13
2.1.1 Bài toán tối ưu tổng quát và phân loại 13
2.1.2 Trí tuệ bầy đàn 15
2.2 Mô tả hành vi săn mồi của bầy sói 15
2.3 Chi tiết thuật toán 16
2.3.1 Hệ thống phân cấp xã hội 16
2.3.2 Bao vây con mồi 17
2.3.3 Săn bắt con mồi 18
2.3.4 Tấn công con mồi 19
2.3.5 Tìm kiếm con mồi (thăm dò) 20
2.4 Cài đặt thuật toán 21
2.4.1 Biểu diễn bằng mã giả 21
2.4.2 Lưu đồ thuật toán 22
CHƯƠNG 3 ỨNG DỤNG THUẬT TOÁN VÀO Ư C LƯ NG NỖ L C PHÁT TRIỂN PHẦN MỀM 24
3.1 Giới thiệu 24
3.1.1 iểu diễn c thể của thuật to n GWO và hàm th ch nghi cho bài to n dự đo n 25
3.1.2 Đo lường chất lượng dự đo n 26
3.2 Kết quả và thực nghiệm 27
3.2.1 Tập dữ liệu thực nghiệm 27
3.2.2 Thiết lập thực nghiệm 28
Trang 53.2.3 Đ nh gi kết quả 28 3.3 Đ nh gi hiệu quả ƣớc lƣợng của mô hình Sheta sử dụng thuật toán tối ƣu dựa trên hành vi săn mồi của bầy sói 33 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO 35
Trang 6Ư C Ư NG NỖ C PHÁT TRIỂN PH N MỀM SỬ DỤNG THUẬT TOÁN
TỐI ƯU D A TRÊN HÀNH VI SĂN MỒI CỦA B Y SÓI
Học viên: Nguyễn Thị Ngọc Ngân Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01 Khóa: 31 Trường Đại học Bách khoa - ĐHĐN
Tóm tắt – Ước lượng nỗ lực phát triển phần mềm là một vấn đề quan trọng đối với hầu hết
mọi người trong ngành công nghiệp 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 độ thực hiện Để nâng cao tính chính xác của dự đo n, phương ph p ước lượng dựa trên các mô hình thuật toán
đã được sử dụng rộng rãi 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 và việc khó khăn nhất là hiệu chuẩn các tham số Nghiên cứu này nhằm mục đ ch đề xuất thuật toán tối ưu dựa trên hành vi săn mồi của bầy sói (GWO – Grey Wolf Optimizer) để tối ưu hóa c c thông số của công thức đã được đề xuất trước đó dựa trên nỗ lực thực tế trong quá khứ Các kết quả chỉ ra rằng phương ph p tiếp cận của tôi đã vượt trội hơn c c phương ph p trong c c nghiên cứu khác về tính chính xác của các kết quả ước lượng
Từ khóa - Ước lượng nỗ lực phát triển phần mềm; tối ưu ho bầy đàn; thuật to n hành vi săn
mồi của bầy sói; thuật toán tối ưu hóa; mô hình ước lượng
OPTIMIZING PARAMETERS OF SOFTWARE EFFORT ESTIMATION
USING GREY WOLF OPTIMIZER Abstract – Software effort estimation has been an important issue for almost everyone in
software industry The success or failure of projects depends greatly on the accuracy of effort
estimation and schedule results To enhance the accuracy of predictions, estimation approaches based on algorithmic models have been widely used However, the question of accurate estimation of effort has been a challenging issue with regards to researchers, and the
most difficult is to calibrate the parameters This study aims to use a Grey Wolf Optimizer
(GWO) to optimize the parameters of the previously proposed estimation formula based on past actual effort The results indicated that our proposal outperformed methods in other
studies in terms of the accuracy of estimated results
Key words - Software effort estimation; particle swarm optimization; Grey Wolf Optimizer
algorithm; swarm optimization algorithm; estimation models
Trang 7DANH MỤC CÁC TỪ VIẾT TẮT
LOC Line Of Code: Ứớc lượng kích cỡ của phần mềm được phát
triển theo số dòng lệnh
EP Function Point: Ước lượng kích cỡ của phần mềm được phát
triển theo chức năng, độ phức tạp
COCOMO Constructive Cost Model: Mô hình giá cấu thành
ME Methodology: Phương ph p luận để nâng cao chất lượng của
mô hình COCOMO
GWO Grey Wolf Optimizer: thuật to n hành vi săn mồi của bầy sói
MMRE Độ đo Mean Magnitude of Relative Error
MdMRE Độ đo Median Magnitude of Relative Error
PRED (N) Độ đo Prediction at level N
Trang 8DANH MỤC CÁC BẢNG BIỂU
Số hiệu
bảng
3.2 Phạm vi các tham số của mô hình đề xuất 28
3.3 Gi trị nỗ lực ƣớc lƣợng và gi trị MRE của mô hình Sheta
Trang 92.3 Các vị tr vectơ trong 2D, 3D và vị trí tiếp theo có thể có
3.1 Sự hội tụ của GWO khi sử dụng hàm kiểm tra ngẫu nhiên
3.2 So sánh nỗ lực thực tế với nỗ lực ƣớc lƣợng mô hình
3.3 So sánh MRE của mô hình Sheta 1 và mô hình GWO 1 30
3.4 So sánh nỗ lực thực tế với nỗ lực ƣớc lƣợng mô hình
3.5 So sánh MRE của mô hình Sheta 2 và mô hình GWO 2 32
Trang 10MỞ Đ U
1 Lý do chọn đề tài
Ước lượng nỗ lực phát triển phần mềm hiệu quả là một trong những hoạt động quan trọng của ước lượng dự án phần mềm, đồng thời cũng là th ch thức trong công nghệ phần mềm Ước lượng nỗ lực có thể được sử dụng như là dữ liệu đầu vào cho các
kế hoạch dự án, phân t ch đầu tư, nguồn ngân sách, quy trình định giá dự án nên nó trở nên rất quan trọng để có được ước lượng chính xác Nhiều tổ chức phải chịu các tác động tài chính lên công việc của họ, bị mất lợi thế cạnh tranh, và chậm trễ trong việc hưởng lợi từ kế hoạch và các sáng kiến do c c ước lượng xấu Ở giai đoạn phát triển ban đầu, những hạn chế trong c c mô hình ước lượng nỗ lực của các dự án phát triển phần mềm là độ ch nh x c và độ chắc chắn chưa cao
Một số kỹ thuật ước lượng sử dụng dữ liệu thu thập từ các dự n đã hoàn thành
từ nhiều tổ chức khác nhau cùng với công thức toán học để ước lượng chi phí dự án được giới thiệu như COCOMO của Barry Boehm, SLIM của Putnam, mô hình điểm chức năng của Albrecht…
Trong những năm gần đây, c c mô hình thuật toán và xử lý những khó khăn trong việc điều chỉnh các tham số nhằm cải tiến độ chính xác của ước lượng nỗ lực phát triển phần mềm được phát triển rộng rãi Các mô hình Sheta hay Uysal sử dụng thuật toán tối ưu của bầy đàn đã đ p ứng được tiến độ của c c phương ph p công nghệ phần mềm mới Á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 mô hình Sheta sử dụng thuật to n đã 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 phát triển phần mềm
Trí thông minh của bầy đàn là quy luật được tích góp từ c c hành vi tương t c độc lập của c c c nhân và môi trường sống của chúng Gần đây, c c nhà ph t triển phần mềm đã nghiên cứu về trí tuệ của bầy đàn để tối ưu hóa c c bài toán về ước lượng nỗ lực phát triển phần mềm Đ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 Trong đó, hành vi săn mồi của bầy sói cho thấy được kỹ năng và chiến lược tuyệt vời của chúng Ngoài sự phát triển của các thuật toán tối ưu về bầy đàn như: đàn c , đàn ong nhân tạo, thuật to n đom đóm… thuật toán về bầy sói cũng được đề xuất để nâng cao hiệu quả cho ước lượng nỗ lực của phát triển phần mềm
Chính vì vậy, tôi quyết định chọn đề tài:
Trang 11“ Ước lượng nỗ lực phát triển phần mềm sử dụng thuật toán tối ưu dựa trên hành vi săn mồi của bầy sói”
2 Mục đích nghiên cứu
- Nghiên cứu thuật to n tối ưu hành vi săn mồi của bầy sói
- Nghiên cứu lý thuyết về ước lượng nỗ lực ph t triển phần mềm theo mô hình Sheta
- Áp dụng vào ước lượng nỗ lực phần mềm theo mô hình Sheta nhằm tối ưu c c gi trị trong ước lượng phần mềm
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Nghiên cứu thuật toán tối ưu bầy đàn
- Cơ sở lý thuyết về ước lượng nỗ lực phát triển phần mềm
3.2 Phạm vi nghiên cứu
- Nghiên cứu thuật toán tối ưu hành vi săn mồi của bầy sói
- Nghiên cứu ước lượng nỗ lực phát triển phần mềm theo mô hình Sheta
4 Phương pháp nghiên cứu
4.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
4.2 Phương pháp thực nghiệm, mô phỏng
- Đề xuất áp dụng thuật toán tối ưu dựa trên hành vi săn mồi của bầy sói
- Cài đặt thực nghiệm và đ nh gi kết quả
5 Dự kiến kết quả đạt được
5.1 Về mặt lý luận
- Hiểu được đặc điểm, tính chất của thuật toán tối ưu bầy đàn
- Hiểu được mô hình Sheta trong ước lượng nỗ lực phát triển phần mềm
- Áp dụng thuật toán tối ưu dựa trên hành vi săn mồi vào bài to n ước lượng nỗ lực
sử dụng tập dữ liệu trên NASA để được các tham số cần ước lượng
Trang 126 Nội dung nghiên cứu và dự kiến cấu trúc luận văn
6.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 tối ưu về hành vi săn mồi của bầy sói
- 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 Sheta
- Áp dụng thuật to n tối ưu dựa trên hành vi săn mồi của bầy sói để ước lượng nỗ lực ph t triển phần mềm theo mô hình Sheta
- Thử nghiệm, phân tích các kết quả; từ đó đ nh gi hiệu quả của giải ph p đề xuất
6.2 Bố cục luận văn
Mở đầu
- Tính cấp thiết của đề tài
- Mục tiêu của luận văn
- Mô tả hành vi săn mồi của bầy sói
- Chi tiết thuật toán
- Cài đặt thuật toán
Tiếu kết chương 2
Chương 3: Ứng dụng thuật toán vào dự đoán nỗ lực phát triển ph n mềm
- Giới thiệu
- Thu thập dữ liệu, phân tích mô hình
- Đ nh gi hiệu quả ước lượng của mô hình Sheta sử dụng thuật toán tối ưu dựa trên hành vi săn mồi của bầy sói
Tiểu kết chương 3
Kết luận và hư ng phát triển
Trang 13CHƯƠNG 1 - TỔNG QUAN VỀ Ư C Ư NG NỖ C PHÁT TRIỂN
PH N MỀM THEO M H NH SHETA
Khi nói đến vấn đề ph t triển phần mềm thì không thể không đề cập đến qu trình quản lý phần mềm, được bắt đầu và tiếp diễn bằng một chuỗi c c hoạt động ước lượng phần mềm Trong thực tế, để lấy được dự n phần mềm, c c công ty tham gia đấu thầu phải nộp hồ sơ dự thầu bao gồm cả chi ph , nhân lực và thời gian ph t triển phần mềm
C c công ty tham gia dự thầu rất cần phải đưa ra một ước lượng hợp lý phản nh đúng
Hình 1.1 (được tr ch từ tài liệu tham khảo [4]) thể hiện độ hội tụ của ước lượng trong vòng đời ph t triển của c c dự n thực tế, ước lượng chỉ được ch nh x c hóa dần trong qu trình làm mịn dần dự n Từ hình 1.1 có thế nhận thấy rằng để đưa ra được
c c ước lượng đ ng tin cậy và sớm trong vòng đời ph t triển của dự n là rất khó do đó chúng ta cần tập trung nhiều nỗ lực để giải quyết vấn đề này
Ước lượng thiếu nỗ lực cho một dự n dẫn đến việc bố tr thiếu nhân sự cho dự n (điều mà thường dẫn đến việc vượt qu khả năng làm việc), quản lý thiếu c c nỗ lực đảm bảo chất lượng (bỏ sót c c nguy cơ rủi ro của sản phẩm kém chất lượng) và tạo ra một lịch trình làm việc qu ngắn (dẫn đến sự mất uy t n do thời hạn thỏa thuận với
kh ch hàng không được tôn trọng)
Còn thêm nhiều yếu tố thừa vào ước lượng thì ước lượng thừa một dự n có thể chỉ làm tồi tệ thêm cho tổ chức Nếu như đưa cho một dự n với nhiều tài nguyên hơn mức
nó thực sự cần mà không có những sự quản lý thì tài nguyên đó sẽ bị dùng hết
Dự n khi đó có khả năng phải chi ph nhiều hơn mức cần thiết (một t c động tiêu cực đến tài ch nh và có thể làm giảm lợi thế cạnh tranh), mất nhiều thời gian hơn để hoàn thành (dẫn đến đ nh mất c c cơ hội) và trì hoãn việc sử dụng tài nguyên ở c c dự
n tiếp theo
Trang 14Hình 1.1 Đồ thị hội tụ ước lượng Nguồn tài liệu tham khảo[4]
Ướ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 đó 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
Bốn bước ch nh trong ước lượng dự án phần mềm là:
1) Ước lượng phạm vi của sản phẩm cần ph t triển Thông thường, điều này luôn yêu cầu một ước lượng k ch cỡ của phần mềm được ph t triển theo số dòng lệnh (LOC – line of code) hoặc điểm chức năng (FP – Function Point) Trong khi k ch cỡ theo LOC là đơn vị k ch cỡ cơ sở được dùng bởi nhiều mô hình t nh to n ước lượng hàng đầu, nhiều đội ph t triển lại không th ch những phép đo này và dùng những đơn vị t
ch nh quy hơn (số đặc t nh, số yêu cầu thay đổi, số ca sử dụng/số kịch bản, số tường thuật người dùng, số ph t biểu yêu cầu, …)
Trang 152) Ước lượng nỗ lực theo đơn vị [người – th ng] hoặc [người – giờ] dùng một mô hình t nh to n liên hệ nỗ lực với k ch cỡ của phần mềm và năng suất của nhóm ph t triển
3) Ước lượng lịch trình theo lịch thời gian (th ng/tuần) Điều này có thể được t nh
to n từ nỗ lực được ước lượng và là một hàm số của k ch cỡ nhóm ph t triển Điều quan trọng là phải nhận thức rõ rằng đây không phải là một quan hệ tuyến t nh và ở một số điểm trong lịch trình dự n không thể rút ngắn lịch trình bằng c ch thêm tài nguyên cho việc ph t triển
4) Ước lượng chi ph dự n theo đơn vị tiền tệ Điều này là một kết hợp của gi nhân công (có thể được t nh to n từ ước lượng nỗ lực) và gi phi nhân công (v dụ, gi khấu hao của c c phần cứng và phần mềm cần thiết được cung cấp cho dự n)
1.1.2.1 Ước lượng kích cỡ, phạm vi
Một ước lượng ch nh x c k ch cỡ của phần mềm được xây dựng là bước đầu tiên cho một ước lượng có hiệu quả C c tài nguyên thông tin về phạm vi của dự n nên được thu thập bất cứ nơi nào có thể, bắt đầu với những mô tả ch nh x c của c c yêu cầu V dụ, một đặc tả c c yêu cầu của kh ch hàng hoặc một đặc tả về hệ thống Không nên để cho sự thiếu sót về đặc tả phạm vi làm cản trở việc thực hiện ước lượng Tài liệu ước lượng cũng không nên chốt cứng Trong mọi trường hợp, chúng ta phải xem xét c c mức độ rủi ro và không chắc chắn trong một ước lượng cho mọi kh a cạnh và phải thực hiện lại ước lượng cho dự n ngay khi có thêm thông tin phạm vi được x c định Nếu chúng ta thực hiện ước lượng lại một dự n ở những pha sau của vòng đời
dự n, c c tài liệu thiết kế có thể được sử dụng để cung cấp thêm thông tin chi tiết Hai c ch để có thể ước lượng k ch cỡ sản phẩm là:
1) Cách thứ nhất: ằng phép tương tự
Nếu chúng ta đã hoàn thành một dự n tương tự trong qu khứ và biết thông tin
k ch cỡ sản phẩm đã được ph t triển, chúng ta có thể ước lượng mỗi phần ch nh của dự
n mới như là một phép t nh phần trăm về k ch cỡ phần tương tự với dự n trước Ước lượng k ch cỡ tổng thể dự n mới bằng c ch cộng lại c c k ch cỡ được ước lượng của mỗi phần hoặc chia sản phẩm thành những phần cấu thành (c c đặc t nh, c c ca sử dụng/kịch bản, c c yêu cầu người dùng) và đếm chúng Một số người dùng những phép đếm thô như là một ước lượng trực tiếp của k ch cỡ phần mềm hoặc chúng ta có thể chuyển chúng thành một đơn vị đo k ch cỡ ch nh thức mà ta biết, theo một phép
t nh trung bình, bao nhiêu LOC hoặc FP mà mỗi phần này yêu cầu trong những dự n trước
Một người có kinh nghiệm có thể đưa ra những ước lượng k ch cỡ tốt, hợp lý bằng phép tương tự nếu sẵn có c c gi trị k ch cỡ chuẩn x c cho dự n trước và dự n mới là
Trang 16c c thông điệp,…
1.1.2.2 Ước lượng nỗ lực
Một khi chúng ta có một ước lượng k ch cỡ của sản phẩm, chúng ta có thể t nh to n ước lượng nỗ lực từ nó Việc chuyển đổi từ k ch cỡ phần mềm sang tổng nỗ lực dự n chỉ có thể làm được nếu chúng ta có một vòng đời ph t triển phần mềm x c định và tiến trình ph t triển mà ta sử dụng ổn định trên dự n để phân t ch, thiết kế, ph t triển
và kiểm thử phần mềm
Một dự n ph t triển phần mềm đòi hỏi nhiều yêu cầu hơn công việc viết mã nguồn đơn thuần Trên thực tế, việc mã hóa chỉ chiếm chưa đến ¼ tổng thể nỗ lực dự n Việc viết và thẩm định tài liệu, thi hành c c bản mẫu, thiết kế c c phiên bản có thể phân phối và thẩm định, kiểm thử mã chiếm phần lớn thời gian của nỗ lực dự n tổng thể Ước lượng nỗ lực dự n yêu cầu ta x c định và ước lượng về thời gian, về nhân lực,… Sau đó tổng hợp lại tất cả c c hoạt động ta phải thực hiện để xây dựng sản phẩm từ
k ch cỡ được ước lượng
1.1.2.3 Ước lượng lịch trình
ước thứ ba trong ước lượng một dự n ph t triển phần mềm là ước lượng lịch trình dự n Điều này thường đòi hỏi ước lượng số lượng người sẽ làm việc trên dự n,
c i gì họ sẽ làm (cấu trúc phân cấp chia nhỏ công việc), khi nào họ sẽ bắt đầu làm việc trên dự n và khi nào họ sẽ kết thúc Một khi chúng ta có những thông tin này, chúng
ta cần t nh to n để đưa nó vào một lịch trình theo lịch thời gian Ngoài ra, dữ liệu lịch
sử từ c c dự n trong qu khứ của tổ chức hoặc c c mô hình dữ liệu công nghiệp có thể được sử dụng để dự đo n số lượng người mà chúng ta cần cho một dự n với k ch
cỡ cho trước và làm thế nào công việc có thể chia nhỏ vào lịch trình
Nếu chúng ta không có gì, một quy tắc ước lượng lịch trình có thể được dùng để lấy c c ý tưởng thô của lịch thời gian tổng cổng cần thiết:
Lịch trình theo tháng = 3.0 * (nỗ lực [người – tháng])*1/3
V dụ, nếu chúng ta đã ước lượng một dự n cần nỗ lực là 65 [người – tháng], biểu thức trên cho thấy rằng cần lịch trình 12 th ng, từ đó suy ra nhóm dự n có 5 hoặc 6
thành viên (65/12)
Trang 17Trong [4], t c giả có nêu vấn đề nhiều đề xuất dùng 2.0, 2.5 hay ngay cả 4.0 để thay thế cho gi trị 3.0 – chỉ bằng thực nghiệm thì chúng ta mới có thể chọn được gi trị phù hợp
Ước lượng lịch trình dự n là một chủ đề rắc rối bởi vì hầu hết c c dự n thường
bị chậm trễ và sự chậm trễ do nhiều nguyên nhân C c yêu cầu được ph t hiện dần dần không được quản lý chủ động Việc điều khiển chất lượng sản phẩm từ sớm thường không được chú trọng, dẫn đến dự n sẽ bị chậm trễ khi pha kiểm thử bắt đầu Ở những tổ chức chưa có quy trình làm việc chuẩn thì những dự thảo lịch trình thường bị
bỏ qua ngay cả với những người điều hành cấp cao
Xem xét công việc quản trị dự n và công việc ước lượng lịch trình, chúng ta thấy rằng công việc ước lượng lịch trình sẽ quan tâm đến việc lên lịch trình ở mức độ cao của toàn dự n, còn những t nh to n chi tiết hơn đòi hỏi c c yếu tố phụ thuộc, đội ngũ nhân viên sẵn có, mức độ tài nguyên, phân công cho từng người sẽ được thực hiện bởi công việc quản trị dự n
Nếu ước lượng theo biểu thức t nh lịch trình ở trên, ta ước lượng thời gian lịch trình trước sau đó mới chỉ định số nhân viên Nhưng nếu được chỉ định một đội/nhóm
ph t triển trước, một biểu thức cơ bản cho việc ước lượng lịch trình của bất kỳ hoạt động quản lý là:
Nỗ lực / Số nhân viên = Lượng thời gian
Dùng biểu thức tổng qu t này, một hoạt động mà yêu cầu 8 [người – th ng] của nỗ lực và có 4 người được chỉ định tham gia có thể được hoàn thành trong thời gian 2 tháng
8 [người – tháng] / 4 [người] = 2 [tháng]
Thực tế thì việc ước lượng lịch trình sẽ khó hơn rất nhiều Nó liên quan đến nhiều yếu tố như:
C c phụ thuộc của một hoạt động với c c hoạt động trước
C c hoạt động đan xen hay đồng thời
Đường găng xuyên suốt chuỗi công việc
Số ca làm việc mỗi ngày, số giờ làm việc hiệu quả trong mỗi ca
Những gi n đoạn như là du lịch, hội nghị, đào tạo hay nghỉ ốm, …
Số lượng vùng thời gian cho c c dự n đối với c c công ty đa quốc gia
Như vậy công việc quản trị dự n, công việc ước lượng lịch trình có nhiều mối liên hệ và được thực hiện theo sự tinh tế của từng người quản lý
Trang 181.1.2.4 Ước lượng chi phí
Có nhiều yếu tố cần quan tâm khi ước lượng chi ph tổng cộng của một dự n Những yếu tố đó bao gồm gi nhân công, gi mua hay gi thuê phần cứng, phần mềm, chi ph đi lại cho mục đ ch gặp gỡ hay kiểm thử, c c giao tiếp (v dụ, c c cuộc gọi điện thoại đường dài, hội thảo video từ xa, …), c c khóa đào tạo, không gian văn phòng, …
Gi nhân công thì có thể được x c định một c ch đơn giản nhất bằng phép nhân giữa nỗ lực ước lượng của dự n (t nh theo giờ) với lương nhân công t nh trung bình tổng qu t Một chi ph nhân công chuẩn x c hơn lấy kết quả từ việc sử dụng lương nhân công rõ ràng cho mỗi vị tr (v dụ: vị tr kĩ thuật, quản lý chất lượng, quản lý dự
n, người lập tài liệu, cộng t c viên, …) Chúng ra sẽ phải x c định xem bao nhiêu phần trăm của nỗ lực dự n tổng cộng cần được cấp ph t cho mỗi vị tr Khi đó dữ liệu lịch sử hoặc c c mô hình dữ liệu công nghiệp lại có thể trợ giúp
Qua việc nghiên cứu 4 bước trong phép ước lượng như trên, đề xuất một tiến trình
cơ sở cho việc ước lượng như được mô tả trong sơ đồ ở hình 1.2
Hình 1.2 Tiến trình cơ sở ước lượng dự án
Trang 19- Ước lượng dựa vào mô hình to n học: còn được gọi là c c mô hình tham số nhằm
cố gắng thể hiện mối quan hệ giữa nỗ lực và đặc điểm của dự n Chương trình điều khiển chi ph ch nh của c c mô hình này là k ch thước phần mềm, thường được đo bằng c c dòng lệnh (Kilo Line of Code - KLOC) hoặc điểm chức năng Đây vẫn là kỹ thuật phổ biến nhất trong lược khảo tài liệu [5] C c mô hình này bao gồm COCOMO
I [6], COCOMO II [7], mô hình SLIM [8], và điểm chức năng [9]
Tuy nhiên, không có phương ph p nào được đề cập ở trên là hoàn chỉnh và có thể phù hợp trong mọi tình huống Nghiên cứu này tập trung vào c c mô hình thuật to n
và giải quyết những khó khăn của chúng trong việc định chuẩn và điều chỉnh c c thông số để nâng cao t nh ch nh x c của ước lượng nỗ lực phần mềm
1.3 M h nh ư c ượng nỗ lực phát triển ph n mềm
Phương ph p ước lượng dựa trên mô hình to n học là phổ biến C c nhà nghiên cứu đã cố gắng tìm ra c c mô hình và công thức to n học để trình bày mối quan hệ giữa k ch thước, chương trình điều khiển chi ph , phương ph p luận được sử dụng trong dự n và nỗ lực Kết quả là một mô hình thuật to n có thể được biểu diễn như sau:
Effort = f(x 1 , x 2 ,…, x n ) (1.1)
Trong đó{x1, x2,…, xn} biểu thị c c yếu tố chi ph Ngoài k ch thước phần mềm, có rất nhiều yếu tố chi ph kh c được đề xuất và được sử dụng bởi oehm và cộng sự trong Mô hình Chi ph Xây dựng COCOMO II (Constructive Cost Model) [7] Những yếu tố chi ph này có thể được chia thành bốn loại:
- C c yếu tố sản phẩm: yêu cầu độ tin cậy phần mềm, k ch thước cơ sở dữ liệu, độ phức tạp của sản phẩm
- C c yếu tố m y t nh: ràng buộc thời gian thực thi, bộ nhớ lưu trữ, độ không ổn định của m y ảo và c c ràng buộc vòng quay m y t nh
- C c yếu tố nhân sự: khả năng phân t ch, kinh nghiệm ứng dụng, khả năng lập trình, kinh nghiệm về m y ảo và kinh nghiệm về ngôn ngữ
- C c yếu tố dự n: ph t triển đa trang web, công cụ phần mềm được sử dụng và tiến độ ph t triển cần thiết
C c mô hình thuật to n hiện nay kh c nhau giữa c c yếu tố chi ph được lựa chọn
và hàm f được sử dụng
Công thức đơn giản nhất của mối quan hệ giữa nỗ lực và c c yếu tố đầu vào là một hàm 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 C c mô hình tuyến t nh có dạng:
Trang 20∑ (1.2) Trong đó, c c hệ số a0, a1, , an được chọn để phù hợp nhất với dữ liệu toàn bộ dự
án
Tuy nhiên, mô hình tuyến t nh không phù hợp với ước lượng c c dự n có gi trị trong c c môi trường lớn Do đó, c c mô hình phức tạp hơn đã được ph t triển Những điều này phản nh thực tế là chi ph thường không tăng tuyến t nh với quy mô dự n Một c ch tổng qu t nhất, ước lượng thuật to n cho chi ph phần mềm có thể được biểu diễn như sau:
E = A * (KLOC) B (1.4) Trong đó:
+ E là nỗ lực ph t triển phần mềm t nh theo đơn vị người - tháng
+ KLOC là số dòng lệnh (đơn vị = 1000) ước t nh của sản phẩm dự n phần mềm
+ C c gi trị của c c tham số A và phụ thuộc chủ yếu vào loại dự n phần mềm
Dựa trên sự phức tạp của dự n có thể phân ra làm ba lớp:
- Lớp đơn (Organic): dành cho một đội nhỏ c c nhà ph t triển có kinh nghiệm và môi trường quen thuộc Đối với c c ứng dụng đơn giản này: A = 2.4, B = 1.05
Trang 21- Nửa gắn kết (Semi – detached): trung gian giữa lớp đơn và lớp nhúng Đối với hệ thống phức tạp hơn: A = 3.0, = 1.15
- Nhúng (Embedded): dành cho dự n có nhiều ràng buộc chặt chẽ, thường là dự n mới và duy nhất, khó tìm người thực hiện Đối với hệ thống nhúng: A = 3.6, = 1.15
Mô hình COCOMO bỏ qua c c yêu cầu về kinh nghiệm, khả năng chuyên nghiệp của con người, c c vấn đề về phần cứng Do đó, đối với c c dự n phức tạp, c c kết quả ước t nh sử dụng mô hình COCOMO không ch nh x c
1.3.2 Mô hình Sheta
Một phương ph p kh c để nâng cao chất lượng của mô hình COCOMO là bổ sung phương ph p luận (Methodology: ME) được sử dụng vào phương trình để ước t nh nỗ lực trong dự n phần mềm Việc bổ sung yếu tố ME tương tự như c c mô hình hồi qui giúp ổn định mô hình và giảm nhiễu trong c c phép đo Mô hình nỗ lực ph t triển phần mềm được thay đổi thành:
E = f(KLOC, ME) (1.5)
Trong đó, f là một hàm không tuyến t nh theo KLOC và ME
Sheta [3] đã đưa ra hai phiên bản kh c nhau cho hàm f như sau:
Để tối ưu hóa c c thông số của mô hình Sheta nhằm nâng cao t nh ch nh x c của
c c ước t nh ta sẽ sử dụng thuật to n Grey Wolf Optimizer
Trang 22CHƯƠNG 2 - THUẬT TOÁN TỐI ƯU D A TRÊN HÀNH VI SĂN MỒI
CỦA B Y SÓI
Tối ưu hóa là một trong những lĩnh vực quan trọng của toán học có ảnh hưởng đến hầu hết c c lĩnh vực khoa học, công nghệ, kinh tế và xã hội Việc tìm giải pháp tối ưu cho một bài toán thực tế nào đó chiếm một vai trò hết sức quan trọng như việc tiến hành lập kế hoạch sản xuất hay thiết kế hệ thống điều khiển c c qu trình… Nếu sử dụng các kiến thức trên nền tảng của toán học để giải quyết các bài toán cực trị thì chúng ta sẽ đạt được hiệu quả kinh tế cao Điều này phù hợp với mục đ ch của các vấn
đề đặt ra trong thực tế hiện nay Một phương n tối ưu là một phương n khả thi và tốt nhất, tức là phương n làm cho hàm mục tiêu đạt kết quả cực tiểu hoặc cực đại và phải thỏa mãn c c điều kiện yêu cầu của bài toán (thỏa mãn c c điều kiện ràng buộc) Tối
ưu hóa có thể trở nên khó khăn hơn khi không gian tìm kiếm ngày càng rộng lớn Đối với các bài toán cỡ nhỏ có thể tìm lời giải bằng cách tìm kiếm vét cạn Đối với các bài toán cỡ lớn không có phương ph p giải đúng, đến nay người ta vẫn dùng các cách tiếp cận sau:
1) Tìm kiếm heuristic để tìm lời giải đủ tốt;
2) Tìm kiếm cục bộ để tìm lời giải tối ưu địa phương;
3) Tìm lời giải gần đúng nhờ các thuật toán mô phỏng tự nhiên như: mô phỏng luyện kim, giải thuật di truyền, tối ưu bầy đàn,…Phương pháp này còn gọi là
“metaheuristics” là nền tảng của các thuật toán có thể được sửa đổi và mở rộng cho phù hợp với các vấn đề tối ưu hóa
Hai cách tiếp cận đầu thường cho lời giải nhanh nhưng không thể cải thiện thêm lời giải tìm được, nên cách tiếp cận thứ ba đang được sử dụng rộng rãi cho các bài toán cỡ lớn
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
Trong mô hình to n học, mục tiêu của bài to n được biểu diễn bởi hàm:
f (x) min/max; với x là một biến hoặc vector biến x = (x1 ,x2 , ,xn )
iến x hoặc vector biến x = (x1 , x2, , xn )thường có yêu cầu phải thỏa mãn một số điều kiện nào đó Tập hợp c c điều kiện của c c biến được gọi là điều kiện ràng buộc
và được biểu diễn bởi miền D (miền ràng buộc)
Dạng tổng qu t của bài to n tối ưu:
Tìm cực tiểu/cực đại một hàm mục tiêu:
Trang 23f (x) min/max (2.1) Thỏa mãn c c điều kiện ràng buộc:
Yêu cầu: Tìm x để thỏa mãn (2.2) và làm cực tiểu/cực đại hàm mục tiêu (2.1), x*
(một bộ c c gi trị cụ thể của (x1 ,x2 , ,xn ), thỏa mãn điều kiện (2.1) & (2.2) gọi là
phương n tối ưu Nếu x chỉ thỏa mãn điều kiện (2.2) gọi x là phương n hay phương
n chấp nhận được
2.1.1.2 Phân loại các bài toán tối ưu
C c bài to n tối ưu ch nh là c c bài to n qui hoạch to n học (Mathematics – Programming)
ài to n tối ưu tuyến t nh: Hàm mục tiêu và tất cả c c ràng buộc đều có dạng tuyến t nh
ài to n tối ưu phi tuyến: Trong đó hàm mục tiêu hoặc t nhất một điều kiện ràng buộc là phi tuyến (có chứa t nhất một yếu tố phi tuyến t nh – bậc lơn hơn
ài to n quy hoạch động (những kết quả của bài to n ở bước sau thì phụ thuộc vào kết quả của bước trước) Quy hoạch động là một phương ph p rất hiệu quả
để giải c c bài to n tối ưu tổ hợp Ý tưởng cơ bản của phương ph p này là: để có lời giải của bài to n tối ưu k ch thước n, ta giải c c bài to n tương tự có k ch thước nhỏ hơn và phối hợp lời giải của chúng để được lời giải của bài to n ban đầu Đó ch nh là ý tưởng chia để trị một c ch rất nghiêm ngặt
ài to n tối ưu đa mục tiêu: Là bài to n trong đó có nhiều hàm mục tiêu cần phải tối ưu trên cùng một miền ràng buộc
fi (x) → min (max); i = 1, 2, …, n x D
Trong đó có nhiều hàm mục tiêu có thể đối lập nhau Khi giải bài toán này phải kết hợp hài hòa các lợi ích (giá trị) đạt được của hàm mục tiêu
Trang 242.1.2 Trí tuệ bầy đàn
Thế giới tự nhiên thúc đẩy giới sinh vật tiến hóa theo hai c ch để thực hiện những hành động thông minh:
Một là ph t triển những bộ não lớn và tinh vi như bộ não con người
Hai là hàng triệu những bộ não nhỏ có khả năng liên lạc với nhau trong những bầy đàn khổng lồ
Có thể nói, tuy một con kiến hoặc một con ong không có tr thông minh nhưng cả đàn thì có
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ự
Tr tuệ bầy đàn được ứng dụng rộng 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, … Nhiều nhà nghiên cứu đã lấy cảm hứng từ sự chuyển động của động vật và côn trùng (v dụ: đom đóm, dơi, đàn kiến và đàn ong…) với những ưu điểm của việc t nh
to n hiệu quả và dễ thực hiện Trong đó Grey Wolf Optimizer (GWO) mô phỏng theo
c ch mà sói tìm kiếm thức ăn và sống sót bằng c ch tr nh kẻ thù của chúng
2.2 Mô tả hành vi săn mồi của b y sói
Chó sói xám hay Sói xám là thành viên lớn nhất trong họ Chó và cũng là loài chó sói nổi tiếng nhất Sói x m săn mồi theo bầy đàn nên hiệu quả săn mồi của chúng rất cao Nhóm của chúng có thể từ 5 đến 12 con Đặc biệt, chúng có hệ thống phân cấp
xã hội chặt chẽ như hình 2.1
Hình 2.1 Hệ thống phân cấp của sói xám
Trang 25Con đầu đàn có thể là con đực hoặc con c i được gọi là alpha Alpha nghĩa là con dẫn đầu có nhiệm vụ quyết định về việc săn bắt, nơi ở, thời gian để đ nh thức… Các quyết định của alpha là quyết định của cả bầy Tuy nhiên, cũng có lúc alpha theo quyết định của các con khác trong bầy Khi tụ họp với nhau, toàn bộ sói thừa nhận alpha bằng cách giữ đuôi của chúng xuống Sói alpha cũng được gọi là con sói có sức ảnh hưởng lớn vì những con trong bầy luôn làm theo lệnh của nó
Alpha không nhất thiết là con mạnh nhất của bầy nhưng có c ch quản lý tốt nhất Điều này cho thấy tổ chức và kỷ luật của một bầy quan trọng hơn sức mạnh của nó Cấp thứ hai trong phân cấp của những con sói xám là beta Các betas là những con sói thường trong đàn dưới quyền alpha nhưng cũng chỉ huy các con sói cấp thấp khác Sói beta có thể là ứng cử viên tốt nhất để trở thành alpha trong trường hợp một trong những con sói alpha biến mất hoặc trở nên già Nó đóng vai trò của một cố vấn cho alpha và thiết lập nguyên tắc cho bầy Beta củng cố các lệnh của alpha trong bầy và đưa ra phản hồi về alpha
Bậc thấp nhất trong bầy sói x m là Omega Đó là những con sói yếu ớt và phải dựa dẫm vào các con sói khác trong đàn Chúng là những con sói cuối cùng được phép
ăn
Nếu một con sói không phải là alpha, beta, hoặc omega, Sói đó được gọi là delta Các con sói Delta phụ thuộc vào alphas và betas, nhưng chúng trội hơn omega Chúng làm nhiệm vụ theo dõi ranh giới lãnh thổ và cảnh b o trong trường hợp có nguy hiểm, bảo vệ và đảm bảo an toàn cho bầy, chăm sóc những con sói yếu, bị thương trong đàn
Ngoài hệ thống cấp bậc xã hội của sói, săn mồi theo bầy còn là một hành vi xã hội đ ng chú ý của sói Theo Muro và cộng sự [10] c c giai đoạn chính của việc săn bắt như sau: rượt đuổi, bao vây và tấn công con mồi cho đến khi nó ngừng di chuyển (hình 2.2)
2.3 Chi tiết thuật toán
2.3.1 Hệ thống phân cấp xã hội
Để mô phỏng toán học theo thứ bậc xã hội của sói khi thiết kế GWO, nghiên cứu này xem xét giải pháp thích hợp là alpha (α) Do đó, c c giải pháp tốt thứ hai và thứ ba được đặt tên là beta (β) và delta () Phần còn lại của các giải ph p được chọn (candidate solutions) giả định là omega () Trong thuật toán GWO việc săn bắt (tối
ưu hóa) được điều khiển bởi α, β, và và sau cùng là
Trang 26Hình 2.2 Hành vi săn bắt của sói: (A) quan sát, tiếp cận và theo dõi; (B-D) đuổi bắt,
tấn công và bao vây; (E) trạng th i tĩnh và tấn công [18]
2.3.2 Bao vây con mồi
Như đã đề cập ở trên, sói xám bao quanh con mồi trong cuộc săn Để mô phỏng theo toán học hành động bao vây, c c phương trình sau được Mirjalili và cộng sự [2]
→ là vectơ vị trí của con mồi, và → là vector vị trí của sói
→ và → được t nh như sau:
→ → → →
→ →
Trong đó, → là thành phần tuyến tính giảm từ 2 xuống 0 trong quá trình lặp và →, → là
c c vectơ ngẫu nhiên trong [0, 1]
(2.3)
(2.4)
(2.5)
(2.6)