1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN HỮU HUY
GIẢI THUẬT DI TRUYỀN VÀ ỨNG DỤNG TRONG
QUẢN LÝ DỰ ÁN PHẦN MỀM
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội-2014
2
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN HỮU HUY
GIẢI THUẬT DI TRUYỀN VÀ ỨNG DỤNG TRONG
QUẢN LÝ DỰ ÁN PHẦN MỀM
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyên ngành: KỸ THUẬT PHẦN MỀM
Mã số:60480103
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS. BÙI THU LÂM
Hà Nội-2014
3
LỜI CAM ĐOAN
Tôi xin cam đoan, toàn bộ nội dung liên quan tới đề tài được trình bày trong luận văn
là bản thân tôi tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn của PGS, TS.Bùi Thu
Lâm.
Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc. Tôi xin chịu trách
nhiệm trước pháp luật lời cam đoan của mình.
Học viên thực hiện
Nguyễn Hữu Huy
4
LỜI CẢM ƠN
Tôi xin chân thành cám ơn tới Khoa Công nghệ thông tinTrường Đại học Công nghệ Đại học Quốc gia Hà Nội, các thầy, cô đã giúp đỡ và tận tình truyền đạt các kiến thức
cho tôi trong suốt quá trình học tập và nghiên cứu. Tôi xin cảm ơn ban chủ nhiệm khoa
và các cán bộ đã tạo điều kiện tốt nhất cho chúng tôi trong quá trình học tập và hoàn
thành luận văn của mình.
Đặc biệt, tôi xin gửi tới PGS, TS. Bùi Thu Lâm, thầy đã tận tình chỉ bảo tôi trong suốt
quá trình làm luận văn lời cám ơn và biết ơn sâu sắc nhất. Bên cạnh những kiến thức
tôi còn học hỏi được ở thầy tinh thần làm việc khoa học và nghiêm túc.
Tôi xin cảm ơn tới học viên Phạm Minh Hải vàNguyễn Thanh Hưng đã đóng góp
những ý kiến và động viên tôi trong quá trình học tập và làm luận văn.
Tôi xin bày tỏ lòng biết ơn tới gia đình, bạn bè, và các đồng nghiệp ngân hàng Dầu khí
toàn cầu GP.Bank, các chị em trong nhóm Ngân hàng điện tử và nhất là trưởng phòng
Ngân hàng điện tử Trần Trung Kiên đã động viên khích lệ tinh thần và giúp đỡ tôi
hoàn thành luận văn này.
5
MỤC LỤC
Trang phụ bìa Trang .................................................................................................... 2
Lời cam đoan ............................................................................................................... 3
Lời cảm ơn .................................................................................................................. 4
Mục lục ........................................................................................................................ 5
Danh mục các ký hiệu và chữ viết tắt ......................................................................... 7
Danh mục các hình vẽ, đồ thị ...................................................................................... 9
Danh mục các bảng ................................................................................................... 11
MỞ ĐẦU ....................................................................................................................... 12
Chương 1. Tổng quan về quản lý dự án phần mềm ....................................................... 14
1.1. Định nghĩa dự án, quản lý dự án phần mềm ....................................................14
1.1.1. Dự án là gì ....................................................................................................14
1.1.2. Thế nào là quản trị dự án ..............................................................................17
1.2. Vấn đề lập kế hoạch, lập lịch trong quản trị dự án phần mềm ........................21
1.2.1. Khái niệm về lập kế hoạch ...........................................................................21
1.2.2. Tự động hóa việc lập lịch .............................................................................21
Chương 2. Giải thuật di truyền và các ứng dụng ........................................................... 24
2.1. Tổng quan về giải thuật di truyền ....................................................................24
2.2. Lịch sử phát triển .............................................................................................25
2.3. Các bước áp dụng giải thuật di truyền .............................................................26
2.3.1. Mã hóa dữ liệu ..............................................................................................26
2.3.2. Khởi tạo quần thể..........................................................................................27
2.3.3. Xác định hàm thích nghi ...............................................................................27
2.3.4. Quá trình lai ghép .........................................................................................28
2.3.5. Quá trình đột biến .........................................................................................29
2.3.6. Quá trình chọn lọc ........................................................................................30
2.4. Các tham số của giải thuật di truyền ................................................................31
2.5. Thuật toán giải thuật di truyền .........................................................................32
Chương 3. Ứng dụng giải thuật di truyền để giải quyết bài toán lập lịch trong quản lý
dự án phần mềm ............................................................................................................ 34
3.1. Phát biểu bài toán .............................................................................................34
3.2. Thuật toán ........................................................................................................38
3.2.1. Thuật toán khởi tạo cá thể ............................................................................38
3.2.2. Thuật toán đột biến cá thể.............................................................................40
3.2.3. Thuật toán lai tạo giữa hai cá thể ..................................................................41
3.2.4. Thuật toán xác định chuỗi thực hiện công việc có phù hợp với sơ đồ phân rã
công việc hay không ..................................................................................................45
3.2.5. Thuật toán gán tài nguyên thực hiện công việc theo thứ tự .........................46
6
3.2.6. Xây dựng hàm fitness ...................................................................................48
Chương 4. Xây dựng ứng dụng ...................................................................................... 49
4.1. Mô hình ứng dụng ............................................................................................49
4.2. Tìm hiểu về nền tảng AForge.NET và ứng dụng vào chương trình demo ......54
4.3. Viết Add-in cho Microsoft Project ..................................................................58
4.3.1. Tạo button trong menu Add-ins ...................................................................59
4.3.2. Các bước cơ bản tạo Add-in trên Visual studio 2010 ..................................59
4.3.3. Viết code chức năng ExportData. .................................................................61
4.3.4. Chức năng import dữ liệu task từ database ..................................................61
4.3.5. Chức năng xem biểu đồ gantt chart ..............................................................62
4.4. Dữ liệu demo ....................................................................................................62
4.4.1. Bảng công việc .............................................................................................62
4.4.2. Bảng loại tài nguyên .....................................................................................66
4.4.3. Bảng tài nguyên ............................................................................................66
4.5. Chương trình demo ..........................................................................................67
4.5.1. Tạo mới database lưu trữ dữ liệu. .................................................................67
4.5.2. Mở database có sẵn .......................................................................................68
4.5.3. Quản lý dự án................................................................................................69
4.5.4. Quản lý loại tài nguyên dự án .......................................................................70
4.5.5. Quản lý tài nguyên dự án ..............................................................................71
4.5.6. Quản lý công việc .........................................................................................71
4.5.7. Thực hiện việc estimate các công việc dự án ...............................................74
4.5.8. Chức năng lập lịch dự án bằng giải thuật di truyền:.....................................75
4.5.9. Các chức năng bổ trợ khác ...........................................................................77
4.6. Kết quả chạy chương trình ...............................................................................82
KẾT LUẬN ................................................................................................................... 90
TÀI LIỆU THAM KHẢO ............................................................................................. 91
PHỤ LỤC ...................................................................................................................... 92
7
THUẬT NGỮ VIẾT TẮT
Số thứ tự
1
2
3
4
5
Thuật ngữ
GP
EA
EP
WBS
AForge.NET
Tên đầy đủ
Genetic programming
Evolutionary algorithm
Evolutionary programming
Work breakdown structure
Nền tảng thư viện phục vụ cho lĩnh vực thị
giác máy tính và trí tuệ nhân tạo.
8
Ý NGHĨA CÁC KÝ HIỆU
Số thứ tự
1
Ký hiệu
Predj
2
Cpr
3
TaskLine
4
5
DoingTask
NeedToDo
6
WorkingResource
Ý nghĩa
Tập hợp các công việc trực tiếp phía
trước của công việc j. Công việc j là
một công việc trong tập các công việc
được định nghĩa trong bảng phân rã
công việc.
Bảng phân rã công việc. Ở bảng này đã
chỉ định rõ công việc nào là công việc
trực tiếp phía trước, công việc nào là
công việc sau.
Đường biểu diễn chuỗi công việc. Đây
là tập hợp các công việc đã chỉ định rõ
thứ tự thực hiện. Giả sử công việc e có
công việc trực tiếp phía trước là d, trước
công việc d có công việc trực tiếp phía
trước c. Công việc e lại có công việc
trực tiếp phía sau là f, công việc f lại có
công việc trực tiếp phía sau là g. Thì ta
có đường biểu diễn công việc e là tập
hợp các công việc theo thứ tự như sau:
c, d, e, f, g.
Danh sách các task đang làm việc.
Danh sách các task cần phải làm, các
công việc này được đươc vào hàng đọi,
đang đợi đủ tài nguyên để thực hiện.
Các tài nguyên đang làm việc, các tài
nguyên này đang bận thực hiện một
task nào đấy.
9
DANH MỤC HÌNH VẼ
Hình 1.1 Vòng đời chuẩn của quản lý dự án .................................................................18
Hình 2.1 Ví dụ về mã hóa nhiễm sắc thể .......................................................................26
Hình 2.2 Ví dụ về mã hóa nhị phân ...............................................................................26
Hình 2.3 Ví dụ về mã hóa hoán vị .................................................................................27
Hình 2.4 Ví dụ về mã hóa giá trị ...................................................................................27
Hình 2.5 Ví dụ về mã hóa cây .......................................................................................27
Hình 2.6 Lai ghép giữa hai cá thể ..................................................................................28
Hình 2.7 Lai ghép giữa hai cá thể ..................................................................................28
Hình 2.8 Đột biến một nhiễm sắc thể ............................................................................29
Hình 2.9 Đột biến một nhiễm sắc thể tại một điểm và hai điểm ...................................30
Hình 2.10 Sơ đồ quá trình tính toán của thuật toán di truyền .......................................32
Hình 3.1 Ví dụ bảng phân rã gồm 8 công việc được đánh chỉ số từ 0 tới 7 ..................36
Hình 3.2 Biểu diễn thứ tự công việc bằng mảng một chiều nguyên không âm ............37
Hình 4.1 Mô hình các thành phần trong chương trình demo luận văn ..........................49
Hình 4.2 Mô hình quan hệ cơ sở dữ liệu .......................................................................51
Hình 4.3 Mô hình thực thể liên kết................................................................................52
Hình 4.4 Màn hình các chức năng Add-in ....................................................................59
Hình 4.5 Tạo project từ trình đơn Visual studio............................................................59
Hình 4.6 Chọn loại dự án là Project 2010 Add-in .........................................................60
Hình 4.7 Solution explorer của dự án ............................................................................60
Hình 4.8 class ThisAddIn ..............................................................................................61
Hình 4.9 Đồ thị thứ tự công việc được vẽ lại bằng phần mềm demo luận văn .............66
Hình 4.10 Truy cập tính năng tạo mới database từ menu ............................................67
Hình 4.11 Chọn tên database và lưu lại ........................................................................68
Hình 4.12 Chọn mở database từ menu .........................................................................68
Hình 4.13 Mở danh sách dự án từ menu ......................................................................69
Hình 4.14 Danh sách dự án ...........................................................................................69
Hình 4.15 Màn hình edit dự án ......................................................................................70
Hình 4.16 Màn hình tạo mới dự án ...............................................................................70
Hình 4.17 Vào chức năng quản trị Resource type từ menu...........................................70
Hình 4.18 Vào chức năng quản trị Resource từ menu ..................................................71
Hình 4.19 Màn hình quản trị tài nguyên.......................................................................71
Hình 4.20 Truy xuất màn hình đồ họa quản lý task từ menu ........................................72
Hình 4.21 Màn hình quản lý task ..................................................................................73
Hình 4.22 Xem danh sách tasks ....................................................................................73
Hình 4.23 Danh sách tasks trong dự án .........................................................................74
Hình 4.24 Màn hình estimate task .................................................................................75
Hình 4.25 Combobox công việc ....................................................................................75
10
Hình 4.26 Màn hình tùy chọn các tham số giải thuật di truyền ....................................76
Hình 4.27 Đồ thị hàm fitness qua các thế hệ .................................................................76
Hình 4.28 Xem giá cá thể tốt nhất của thế hệ................................................................77
Hình 4.29 Xem chi tiết cách chỉ định tài nguyên thực hiện công việc ..........................77
Hình 4.30 Thực hiện chức năng lưu dữ liệu từ menu ....................................................78
Hình 4.31 Thực hiện chức năng nạp dữ liệu từ menu ...................................................78
Hình 4.32 Chỉ định vị trí file dữ liệu cần lưu. ...............................................................79
Hình 4.33 Các chức năng dùng lập kế hoạch bằng giải thuật di truyền ........................79
Hình 4.34 Lựa chọn Line mode trên màn hình đồ họa công việc .................................80
Hình 4.35 Show tooltip – hiển thị thông tin chi tiết về một task...................................80
Hình 4.36 Màn hình đồ họa công việc được vẽ thêm lưới mờ ......................................81
Hình 4.37 Hiển thị điểm bắt đầu đồ thị công việc .........................................................81
Hình 4.38 Hiển thị điểm kết thúc công việc ..................................................................82
Hình 4.39 Hiển thị tên và chỉ mục công việc trên màn hình đồ họa .............................82
Hình 4.40 Đồ thị finess kiểu chọn lọc Elite...................................................................83
Hình 4.41 Đồ thị finess kiểu chọn lọc Elite và giữ lại cá thể tốt nhất ...........................83
Hình 4.42 Đồ thị finess kiểu chọn lọc Elite và local search ..........................................84
Hình 4.43 Đồ thị finess kiểu chọn lọc Elite và thực hiện đồng thời lưu lại phần tử tốt
nhất của thế hệ trước và thực hiện local seach ..............................................................85
Hình 4.44 Biểu đồ gantt chart........................................................................................88
Hình 4.45 Biểu đồ sử dụng tài nguyên trong công việc ................................................89
11
DANH MỤC BẢNG BIỂU
Bảng 1.1 Các hoạt động của quản lý dự án ...................................................................19
Bảng 1.2 Các kế hoạch của dự án..................................................................................22
Bảng 4.1 Bảng phân rã công việc dự án và kế hoạch tài nguyên ..................................62
Bảng 4.2 Bảng loại tài nguyên ......................................................................................66
Bảng 4.3 Bảng tài nguyên phân loại theo loại tài nguyên .............................................66
Bảng 4.4 Bảng kết quả chạy thuật toán .........................................................................85
Bảng 4.5 Bảng lập lịch thực hiện công việc ..................................................................85
12
MỞ ĐẦU
Hiện nay quản trị dự án ngày càng được ứng dụng rộng rãi trong các ngành nghề xã
hội, trong đó có hoạt động quản lý dự án phần mềm. Cùng với sự phức tạp và đa dạng
của phần mềm, hoạt động quản lý dự án phần mềm ngày càng tinh vi và phức tạp hơn.
Trong đó nổi bật lên là vấn đề lập kế hoạch và phân bổ nguồn lực trong dự án. Với
những dự án ít đầu việc và ít người tham gia thì vấn đề lập kế hoạch và lập lịch dự án
một cách thủ công sẽ không đáng ngại. Nhưng với những dự án lớn, có nhiều đầu việc
phức tạp, số lượng nhân công (nguồn lực, tài nguyên) tham gia vào dự án lớn và
cónhiều biến động,khi đó vấn đề lập kế hoạch, lập lịch dự án sẽ gặp khó khăn. Người
làm kế hoạch sẽ phải tốn nhiều thời gian để tiến hành sửa đổi kế hoạch, lập lịch lại mỗi
khi có sự biến động về nhân sự (hay rộng hơn là thay đổi về nguồn lực thực hiện dự
án). Như vậy, vấn đề cấp thiết phải làm sao tự động được khâu này, để giảm thiểu sức
người cũng như nâng cao chất lượng khâu này.
Trong trí tuệ nhân tạo “Giải thuật di truyền” đã được ứng dụng rộng rãi đề giải quyết
nhiều bài toán phức tạp. Trong đó có các bài toán về lập lịch, lập kế hoạch.Việc áp
dụng giải thuật di truyền nhằm làm tối ưu hóa vấn đề lập kế hoạch và phân bổ nguồn
lực trong dự án phần mềm đã và đang được nghiên cứu cải tiến rất nhiều trên thế giới.
Trong luận văn này tôi đặt trọng tâm tìm hiểu giải thuật di truyền và áp dụng vào lập
lịch thực hiện các công việc trong dự án phần mềm với sự giới hạn về tài nguyên thực
hiện các công việc trong dự án.
Các kiến thức về lập lịch trong quản lý dự án phần mềm, kiến thức về giải thuật di
truyền, cách áp dụng giải thuật di truyền để tự động lập lịch dự án cũng như các kỹ
năng lập trình xây dựng ứng dụng hoàn chỉnh bước đầu có thể quản lý dự án và tự
động chọn lựa phương án tối ưu để lập lịch dự án được học viên trình bày chi tiết trong
luận văn vàđược chia thành 4 chương sau đây:
Chƣơng 1. TỔNG QUAN VỀ QUẢN LÝ DỰ ÁN PHẦN MỀM
Chương này giới thiệu về dự án phần mềm và quản lý dự án phần mềm. Qua chương
này ta thấy được phần mềm cũng như các tiến trình, công cụ quản lý phần mềm ngày
càng phức tạp. Do vậy cần phải tìm cách tự động hóa càng nhiều khâu trong quản lý
dự án càng tốt. Trong chương này cũng chỉ ra là có thể áp dụng giải thuật di truyền vào
quản lý dự án phần mềm ở bước lập lịch biểu, gán nguồn lực thực hiện dự án.
Chƣơng 2. GIẢI THUẬT DI TRUYỀN VÀ CÁC ỨNG DỤNG
Chương này sẽ cho người đọc một cái nhìn tổng quan về giải thuật di truyền và các
ứng dụng của nó trong thực tế, qua đó người đọc có thêm hiểu biết về các vấn đề mã
hóa giải thuật di truyền. Giúp người đọc có thể vận dụng những kiến thức ở chương
này để giải quyết các vấn đề của mình.
13
Chƣơng 3. ỨNG DỤNG GIẢI THUẬT DI TRUYỀN ĐỂ GIẢI QUYẾT BÀI
TOÁN LẬP LỊCH TRONG QUẢN LÝ DỰ ÁN PHẦN MỀM
Chương này đưa ra các bước cụ thể cách dùng giải thuật đi truyền vào bài toán lập lịch
trong quản trị dự án phần mềm và phát triển các thuật toán di truyền: mã hóa, lai tạo,
độ biến, chọn lọc để vận dụng giải quyết bài toán lập lịch với ràng buộc hạn chế về
nguồn lực thực hiện dự án.
Chƣơng 4. XÂY DỰNG ỨNG DỤNG
Dựa vào các kiến thức tìm hiểu ở các chương trên, chương này giới thiệu về cách tạo
ứng dụng demo, hướng dẫn sử dụng ứng dụng này trong việc lâp lịch tự động. Giới
thiệu tới người đọc framework giải thuật di truyền AForge.NET, cách sử dụng
framework này trong việc viết chương trình demo. Giới thiệu sơ lược về cách lập trình
Add-ins cho phần mềm Microsoft Project và kết hợp giữa công cụ lập lịch tự động với
phần mềm này.
14
Chương 1. TổNG QUAN Về QUảN LÝ Dự ÁN PHầN MềM
1.1. Định nghĩa dự án,quản lý dự án phần mềm
1.1.1.
Dự án là gì
Có rất nhiều cách định nghĩa một dự án, chung quy lại dự án là quá trình tạo ra sản
phẩm hay dịch vụ. Do vậy các định nghĩa dự án như sau đều được chấp nhận:Dự án là
một quá trình gồm các công việc, nhiệm vụ có liên quan với nhau, được thực hiện
nhằm đạt được mục tiêu đã đề ra trong điều kiện ràng buộc về thời gian, nguồn lực và
ngân sách. Hoặc định nghĩa dự án là một nhiệm vụ cần hoàn thành để có được một sản
phẩm, dịch vụ duy nhất trong một thời hạn đã cho với kinh phí dự kiến. Hoặc dự án là
một sự cố gắng nhất thời để tạo sản phẩm dịch vụ[5].
Cũng giống như các dự án thông thường, dự án phần mềmmang những đặc điểm cơ
bản như sau:
- Mỗi dự ánphải có một hoặc một số mục tiêu rõ ràng do dự ánlà một quá trình
tạo ra kết quả cụ thể.
- Mỗi dự án đều có một thời hạn nhất định, toàn bộ thời gian của dự án được chia
thành các giai đoạn: Giai đoạnkhởi đầu, giai đoạn triển khai và giai đoạn kết
thúc. Thời gian thực hiện dự án được chỉ định không được vượt quá một
khoảng thời gian nhất định (ví dụ không quá một tháng, một năm, hai năm…).
Thời gian thự hiện dự án được ước lượng thông qua các tính năng của sản phẩm
(kết quả của dự án) mà khách hàng yêu cầu và được sự đồng ý của khách hàng.
Để đảm bảo dự án hoàn thành theo đúng thời gian cho phép, bộ phận quản trị
dự án cần áp dụng các công cụ, phương pháp quản lý dự án phù hợp cho từng
loại hình dự án nhằm đảm bảo dự án hoàn thành đúng tiến độ đã đề ra.
- Mỗi dự án đều có sử dụng nguồn lực và nguồnlực này bị hạn chế. Các nguồn
lực đó bao gồm nhân lực, nguyên vậtliệu, ngân sách. Do các nguồn lực này là
hạn chế nên phải có phương pháp quản trị và sử dụng các nguồn lực này trong
dự án một cách hợp lý.
- Giữa các dự án, không có sự lặp lại hoàn toàn giữa các dự án. Ví dụ như giữa
hai dự án hoàn toàn giống nhau về sản phẩm đầu ra, quy trình phát triển nhưng
có yếu tố nhân lực vật lực hoặc thời gian triển khai dự án khác nhau, do vậy
giữa hai dự án không có sự trùng lặp hoàn toàn.
Với các dự án phần mềm thì có nhiều điểm thuận lợi hơn các dự án khác. Những điểm
thuận lợi mà dự án phần mềm có được như:
- Sản phầm của dự án dễ sửa đổi hơn sản phẩm vật chất khác. Với dự án phần
mềm khi có yêu cầu sửa đổi sản phẩm thì đội phát triển sẽ sửa đổi mã nguồn và
biên dịch thành chương trình chạy và gửi lại khách hàng. Nhưng với các sản
15
-
-
-
-
phẩm thông thường ví dụ như chiếc tivi, nếu khách muốn đổi các thông số trên
chiếc tivi này, muốn có một số tính năng mới thì rất khó có thể làm được điều
này.
Các pha của vòng đời dự án rõ ràng. Vòng đời chuẩn của quản lý dự án gồm 4
pha : Xác định dự án, Lập kế hoạch, Thực hiện và cuối cùng là Đóng dự án.
Có thể có nhiều giải pháp cho một yêu cầu. Ví dụ cùng một yêu cầu xây dựng
phần mềm kế toán có thể có hai giải pháp thực hiện vấn đề này, giải pháp thứ
nhất là xây dựng phần mềm sử dụng online qua internet, giải pháp thứ hai là
xây dựng phần mềm offline, không nhất thiết phải làm sao để có nhiều người
dùng truy xuất một lúc với giải pháp offline.Tùy vào giải pháp cụ thể mà đội
phát triển dự án sẽ có những phương án nguồn lực cụ thể để hoàn thành dự án,
như với giải pháp xây dựng phần mêm có thể sử dụng online qua internet thì
cần phải chọn nhân lực có các kỹ năng về lập trình web, ngược lại giải pháp
offline thì cần các nhân lực có kỹ năng về lập trình ứng dụng window.
Định hình sản phẩm của dự án phần mềm không cứng nhắc miễn là đáp ứng
được yêu cầu. Như ở ví dụ trên đã đưa ra về việc xây dựng phần mềm kế toán,
đội phát triển có thể định hình sản phẩm theo hai hướng là phần mềm được sử
dụng qua internet hoặc không cần kết nối qua internet miễn là phần mềm sao
đáp ứng được các tính năng cần có của một phần mềm kế toán mà khách hàng
yêu cầu.
Có nhiều công cụ trợ giúp và các công cụ này ngày càng tốt hơn mạnh hơn. Đối
với các dự án phần mềm các công cụ trợ giúp ngày càng mạnh, có thể kế đến
các công cụ quản lý mã nguồn, công cụ hỗ trợ quản lý yêu cầu, công cụ quản lý
lỗi, các công cụ hỗ trợ lập trình như Microsoft visual studio 2001, các công cụ
quản lý cơ sở dữ liệu…Nhờ có các công cụ này mà các dự án phần mềm ngày
càng được rút ngắn thời gian phát triển mà vẫn đảm bảo chất lượng phần mềm
và làm hài lòng khách hàng.
Dự án phần mềm còn có đăc điểm nữa là cho phép bộ phận triển khai dự án vận
dụng nhiều giải pháp: công nghệ, quản lý vào quản lý dự án.
Sản phẩm của dự án phần mềm là phần mềm bao gồm chương trình (mã máy) và dữ
liệu và tài liệu hướng dẫn, sản phẩm phần mềm mang các đặc trưng khác so với các
sản phẩm của dự án thông thường:
- Sản phẩm phần mềm là vô hình, không cầm nắm được như các sản phẩm thông
thường. Sản phẩm phần mềm được lưu trữ trên máy tính bao gồm chương trình,
cơ sở dữ liệu và các tài liệu hướng dẫn sử dụng. Khi sử dụng sản phẩm phần
mềm cần phải có máy tính, người sử dụng sản phẩm phần mềm cũng cần phải
có một số kiến thức nhất định về công nghệ thông tin, cần phải biết cách sử
dụng máy tính.
16
-
Cùng một yêu cầu nhưng không xác định duy nhất sản phẩm đầu ra. Khi mà
khách hàng yêu cầu xây dựng phần mềm thì mỗi đội phát triển sẽ cho ra một
sản phẩm khác nhau, có thể có những khác nhau về giao diện, quy trình nghiệp
vụ, tính năng sản phẩm. Những sự khác nhau này vẫn cần phải đảm bảo sản
phẩm làm ra phải thỏa mãn yêu cầu và làm hài lòng khách hàng.
- Các nguyên tắc kỹ nghệ để làm ra phần mềm hoàn toán khác với các nguyên tắc
tạo ra sản phẩm thông thường(như cơ, điện...).
- Sản phẩm phần mềm chịu nhiều yếu tố biến động hơn các sản phẩm khác, các
yếu tố biến động như công nghệ, môi trường, nghiệp vụ và nguồn lực ảnh
hưởng trực tiếp tới chất lượng phần mềm.
- Nguyên liệu đầu vào để sản xuất phần mềm cũng rất đặc trưng, nguyên liệu đầu
vào có thể là các sản phẩm phần mềm khác, các gói thư viện phần mềm, còn
một nguyên liệu rất trừu tượng đó là chất sám.
Dự án phần mềm cũng giống như các loại dự án khác về các nguyên nhân gây nên sự
thất bại của dự án. Các nguyên nhân thất bại như:
- Dự án không có tính thực tế và sản phẩm không khớp với yêu cầu khách hàng
- Dự án không hoàn thành đúng hạn dẫn đến sự không hài lòng của khách hàng
làm cho khách hàng có thể kết thúc dự án
- Chi phí dự án bị vượt quá dự toán
- Khi lập kế hoạch người có thẩm quyền đã ước tính không chính xác nguồn lực
cần thiết cho dự án
- Xác định yêu cầu hệ thống không đúng
- Báo cáo tình trạng dự án sơ sài
- Dự án không thực hiện quản lý độ rủi ro
- Việc giao tiếp khách hàng, người sử dụng và người phát triển dự án không tốt
dẫn tới hiểu sai yêu cầu khách hàng
- Dự án sử dụng công nghệ lạc hậu
- Không có khả năng xử lý độ phức tạp của dự án
- Phát triển thực hành không có hệ thống
- Thiếu kinh nghiệm trong việc quản lý dự án
- Các bên liên quan mang tính chính trị
- Các áp lực mang tính thương mại
Nhìn lại lịch sử về các dự án phần mềm, trong giai đoạn từ những năm 1970 và những
năm 1980 ngành công nghiệp phần mềm phát triển như vũ bão,do sản xuất phần mềm
giai đoạn này dễ hơn và giá thành rẻ hơn so với sản xuất phần cứng vì vậy ngành công
nghiệp sản xuất phần mềm nhanh chóng phát triển trong giai đoạn từ thập niên 1970
đến thập niên 1980. Các công ty cũng đã ứng dụng các phương thức quản lý phần
mềm, trong giai đoạn này các phương pháp quản lý phần mềm được đưa ra sử dụng
luôn, chưa qua quá trình kiểm thử thực tế nên hiệu quả không được tốt, đặc biệt là sự
không khớp giữa đặc tả người dùng và phần mềm được chuyển giao cho khách hàng,
17
dẫn đến một loạt các nguyên nhân thất bại của dự án phần mêm kể trên. Để tránh các
vấn đề trên, các phương thức quản lý dự án phần mềm tập trung vào làm rõ các yêu
cầu người dùng theo mô hình hình thác nước.
Hiện này phần mềm máy tính đã được ứng dụng rộng khắp vào hầu như tất cả các hoạt
động sản xuất, trong mọi ngành kinh tế, xã hội. Do vậy các phần mềm hiện đại ngày
nay nảy sinh nhiều vấn đề mới mà các nhà quản lý cần phải quan tâm, hoạch định để
giải quyết các vấn đề này. Các vấn đề của phần mềm bao gồm:
- Chi phí liên quan đến phần mềm ngày càng tăng.Do phần mềm ngày càng phức
tạp và khó, với những phần mềm phức tạp và khó đòi hỏi người quản trị phải có
kỹ năng nhất định để đảm bảo dự án phần mềm, và những người trong đội phát
triển cũng phải có kỹ năng ở mức độ cho phép để tham gia dự án. Đó là một
trong những nguyên nhân dẫn đến chi phí liên quan ngày càng tăng.
- Các yêu cầu của khách hàng thì càng ngày càng nhiều. Do phần mềm càng ngày
càng phức tạp, dẫn đến tính năng phần mềm nhiều và phức tạp
- Quy mô, độ phức tạp ngày càng lớn.
- Yêu cầu hiệu năng phần mềm ngày càng tăng theo sự tăng trưởng của phần
cứng và nhu cầu người dùng.
- Phần mềm ngày càng lớn, nhiều người tham gia thực hiện, vấn đề truyền thông,
quản lý ngày càng quan trọng (một ví dụ là hệ điều hành Window2000 cần đến
5.000 người tham gia).
Với những vấn đề nổi cộm ở trên ta thấy việc cấp thiết phải có những phương pháp để
quản lý các dự án phần mềm hiệu quả. Ngày nay trên thế giới các nhà hoạch định
chiến lược, các công ty lớn, các nhà nghiên cứu trong các viện, các trường đại học đã
tập chung nghiên cứu tìm tòi, cải tiến các phương pháp, quy trình, cải tiến công cụ
quản lý dự án phần mềm. Nhờ áp dùng các kết quả nghiên cứu, công cụ mới mà đã
từng bước giải quyết được các vấn đề khó khăn trên của dự án phần mềm.
1.1.2.
Thế nào là quản trị dự án
Quản lý dự án là việc áp dụng kiến thức, phương pháp, kỹ thuật, công cụ và tổ chức
các hoạt động nhằm tạo ra sản phẩm đáp ứng yêu cầu đã cho. Hoạt động quản lý dự án
phần mềm bao gồm: lập kế hoạch, triển khai, theo dõi, giám sát, đánh giá và điều
chỉnh. Vòng đời chuẩn của quản lý dự án gồm 4 pha sau:
Xác định
dự án
Lập kế
hoạch
Khởi tạo dự án
Thực
hiện
Đóng
dự án
18
Hình 1.1 Vòng đời chuẩn của quản lý dự án
-
-
-
Giai đoạn xác định dự án: Giai đoạn này bắt đầu với công bố dự án cho đến
khi các tài liệu dự án được các bên tham gia thông qua. Kết quả của giai đoạn
này là một hoặc nhiều dự án được chọn, các tài liệu thông tin dự án được hoàn
thành và làm cơ sở để triển khai hoặc mời thầu dự án (với các dự án lớn).
Lập kế hoạch: Tạo các kế hoạch dự án, trong giai đoạn này có thể thay đổi tài
liệu dự án ở bước xác định dự án nếu như phù hợp và được các bên thông qua.
Thực hiện: Triển khai các kế hoạch dự án đã thông qua. Giai đoạn này dựa vào
kết quả ở bước Lập kế hoạch, bộ phận quản trị tiến hành lập lịch biểu chi tiết
các kế hoạch và tiến hành thực hiện các công việc, giám sát các công việc thực
hiện đúng tiến độ đã đề ra. Việc lập lịch biểu có thể làm tự động bằng chương
trình máy tính, có thể dùng giải thuật di truyền để tìm ra phương án lập lịch tối
ưu.
Đóng dự án: Công việc tiến hành bao gồm: chuyển dự án sang khâu bảo trì,
tiến hành các thủ tục kết thúc với khách hàng, đánh giá, rút kinh nghiệm về dự
án, tiền hành lưu trữ tài liệu phục vụ cho dự án tiếp theo.
Quản lý dự án tập chung vào các nội dung: Quản lý công việc, quản lý tiến độ, quản lý
tài chính, quản lý nhân lực, quản lý nguồn lực, quản lý chất lượng. Việc quản lý dự án
sẽ gặp phải nhiều thách thức như thách thức nhân lực, công việc, ước lượng, tổ chức,
quản lý và kiểm soát.
- Nhân lực:Thách thức từ khâutuyển chọn(từ đâu? kỹ năng cần có là gì?), đến
khâu sử dụng (vào đâu? công việc gì?). Vàkhi dự án kết thúc, không cần dùng
tới thì phải sắp xếp nhân lực hợp lý.
- Công việc và ước lượng: Khi ước lượng công việc người quản trị cần phải xác
định đủ việc, ước lượng đúng khối lượng, chi phí nguồn lực, thời gian cần thiết
để hoàn thành công việc.
- Tổ chức và quản lý: Tùy theo tổ chức hiện có và mục tiêu cần đạt được của dự
án phần mềm mà tiến hành tổ chức bộ phận quản lý dự án phần mềm hợp lý.
Các cách tổ chức này là tạm thời, tồn tại cho đến khi dự án kết thúc. Ứng với
một dự án mà thành viên tham gia sẽ được xác lập một thẩm quyền nhất định,
và mối quan hệ giữa các thành viên cũng thay đổi theo từng dự án.
- Kiểm soát: Do công việc có nhiều thay đổi, ví dụ như thay đổi về nhân lực, thay
đổi do yêu cầu khách hàng,nên kế hoạch công việc và việc thực hiện kế hoạch
này không ổn định, luôn thay đổi. Người quản trị cần nắm thông tin kịp thời và
điều chỉnh cho phù hợp với yêu cầu thực tế, cần phải ra quyết định chính xác,
phù hợp và đạt đồng thuận cao trong nhóm.
19
-
Việc quản lý qua các thể hiện, không nhìn thấy trực tiếp:Các thể hiện ở đây là
tài liệu và chương trình, chúng rất đa dạng và thiếu thước đo, các dự án phần
mềm khác nhau lại dùng các chuẩn khác nhau, việc áp dụng chuẩn tài liệu rất
vất vả và mất nhiều công sức.
- Thách thức chất lượng: Chất lượng phần mềm phụ thuộc vào rất nhiều yếu tố
như: quy trình có phù hợp với thực tế hay không và có mang lại hiệu quả
không. Công nghệ và công cụ có phù hợp với sản phẩm và môi trường hay
không. Kiểm soát thay đổi, các thay đổi có được kiểm soát thường xuyên hay
không và phải đảm bảo rằng các thay đổi phải được thực thi nghiêm túc tránh
việc bỏ sót.
- Khống chế rủi ro:Rủi ro là các sự kiện khiến dự án thất bại, ví dụ: chi phí quá
cao, thời gian quá dài, tính năng quá kém. Rủi ro trong phần mềm có rất nhiều
và hay xảy ra, do vậy việc khống chế rủi ro phải được quan tâm, đảm bảo được
rằng phải biết được các rủi ro và lập kế hoạch phòng chống cụ thể. Nhiệm vụ
của người quản lý dự án trong việc khống chế rủi ro bao gồm: phải xác định, dự
đoán được rủi ro, phân tích rủi ro (khả năng và thiệt hại), đưa ra giải pháp để
khống chế rủi ro (quản lý rủi ro), giám sát (theo dõi sự xuất hiện, tác động của
rủi ro) và thực hiện các biện pháp quản lý.
Quản lý dự án phần mềm là việc quản lý toàn diện các mặt của hoạt động trên dự án
phần mềm để đảm bảo sản xuất ra phần mềm đúng chất lượng và yêu cầu của khách
hàng. Các hoạt động quản lý gồm mục tiêu thực hiện và chi tiết nội dung được liệt kê
trong bảng dưới đây:
Bảng 1.1 Các hoạt động của quản lý dự án
STT Hoạt động
Mục tiêu
1
Quản lý phạm vi Đảm bảo thực hiện đúng công
(thay đổi)
việc đã định
2
Quản lý thời gian
Đảm bảo hoàn thành hạng mục
công việc trong thời hạn dự kiến
3
Quản lý chi phí
Đảm bảo huy động, sử dụng
ngân sách đáp ứng yêu cầu
4
Quản
lượng
lý
chất Đảm bảo sản phẩm đạt yêu cầu
chất lượng đề ra
Nội dung
-Xác định giai đoạn
- Xác định công việc
- Xác định sản phẩm giao
- Kiểm soát thay đổi
-Xác định thời gian hoàn thành
công việc
- Xác định trình tự thực hiện
- Lập lịch thực hiện
-Kiểm soát thực hiện theo lịch
- Lập kế hoạch huy động ngân
sách
-Ước tính chi phí
- Phân phối ngân sách
- Kiểm soát chi tiêu
- Xác định các chuẩn chất
lượng, độ đo, quy trình kiểm
định
20
Tìm và sử dụng người tham gia
một cách có hiệu quả
5
Quản lý nhân lực
6
Quản lý mua sắm Đảm bảo phục vụ, trợ giúp tốt
thuê
nhất mọi hoạt động dự án
7
Quản lý thông tin Đảm bảo thu thập, lưu trữ đủ
và truyền thông
thông tin và cung cấp kịp thời
8
Quản lý rủi ro
9
Quản lý cấu hình Đảm bảo kiểm soát mọi thay đổi,
(và thay đổi)
đồng bộ sản phẩm
Đảm bảo ngăn ngừa và hạn chế
thiệt hại do sự cố xảy ra
- Kiểm định chuẩn cho mỗi sản
phẩm
- Quản lý thay đổi chất lượng
- Xây dựng đội dự án
- Lựa chọn, phân công công
việc
- Phát triển bồi dưỡng nguồn
lực
- Thúc đẩy, động viên, phối
hợp
- Xác định nhu cầu trợ giúp
- Lập kế hoạch mua sắm, trang
bị
-Tìm nhà cung cấp và đặt hàng
- Quản lý hợp đồng mua sắm
- Tổ chức việc cung cấp trợ
giúp
- Xác định nhu cầu thông tin
thành viên
- Xác định hình thức trao đổi
- Xác định dữ liệu thông tin lưu
trữ
- Quy định hình thức báo cáo,
lưu trữ, cung cấp thông tin
- Nhận diện các rủi ro
- Xác định khả năng xuất hiện,
phân tích tác động đến dự án
- Lập kế hoạch phòng chống
- Kiểm soát, xử lý
- Xác định khoản mục cấu hình
- Xây dựng triển khai quy trình
- Giám sát thực hiện quy trình
và lưu trữ cấu hình, phiên bản
Ngoài các hoạt động từng mặt người quản trị dự án cần quản lý chung để phối hợp các
quản lý cụ thể để đảm bảo dự án được thực hiện tốt nhất. Trong các hoạt động trên thì
hai hoạt động: Quản lý rủi ro và quản lý cấu hình là đặc thù riêng biệt của quản lý dự
án phần mềm. Cònquản lý thời gian, quản lý chi phí, quản lý chất lượng là đặc biệt
quan trọng của quản lý dự án phần mềm.
Trong phạm vi đề tài này học viên quan tâm tìm hiểu kỹ về hoạt động Quản lý thời
gian của dự án để tìm cách áp dụng kiến thức về giải thuật di truyền áp dụng vào các
bước lập lịch dự án đảm bảo thời gian thực hiện toàn bộ dự án là tối ưu nhất. Hoạt
động quản lý thời gian nhằm mục đích đảm bảo hoàn thành các hạng mục công việc
- Xem thêm -