‒ Phương pháp sơ đồ mạng PERT Program Evalution and Review Technique [Davi&06] Lập các kế hoạch khác nhau Ước lượng gói công việc Bảng công việc Phạm vi & xuất phẩm Lịch biểu đã cân đối
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 3LỜI CẢM ƠN Trước tiên tôi xin được bày tỏ sự trân trọng và lòng biết ơn đối với PGS.TS Nguyễn Văn Vỵ, Giảng viên Khoa Công nghệ thông tin - Trường Đại học Công nghệ - ĐHQGHN Trong thời gian học tập và làm luận văn tốt nghiệp, thầy đã dành nhiều thời gian quý báu, tận tình chỉ bảo và hướng dẫn tôi trong việc nghiên cứu, thực hiện luận văn
Tôi xin được cảm ơn các GS, TS, các thầy cô giáo đã giảng dạy tôi trong quá trình học tập và làm luận văn Các thầy cô đã giúp tôi hiểu sâu sắc và thấu đáo hơn lĩnh vực mà mình nghiên cứu để có thể vận dụng các kiến thức đó một cách hiệu quả nhất vào trong công tác của mình
Xin cảm ơn các bạn bè, đồng nghiệp và nhất là các thành viên trong gia đình đã tạo mọi điều kiện tốt nhất, giúp đỡ, động viên, ủng hộ và cổ vũ tôi trong suốt quá trình học tập và nghiên cứu để hoàn thành tốt bản luận văn tốt nghiệp này
Tác giả
Đàm Thanh Tuấn
Trang 4LỜI CAM ĐOAN Tôi xin cam đoan rằng, đây là công trình nghiên cứu của tôi trong đó có sự giúp
đỡ rất lớn của thầy hướng dẫn và các đồng nghiệp ở cơ quan Các nội dung nghiên cứu
và kết quả trong đề tài này là hoàn toàn trung thực
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả đã được liệt kê tại phần Tài liệu tham khảo ở cuối luận văn
Hà Nội, ngày……tháng……năm 2015
Tác giả
Đàm Thanh Tuấn
Trang 5MỤC LỤC
LỜI CẢM ƠN 3
LỜI CAM ĐOAN 4
MỤC LỤC 5
BẢNG DANH MỤC CÁC HÌNH VÀ BẢNG BIỂU 7
MỞ ĐẦU 10
Chương I: QUẢN LÝ DỰ ÁN VÀ BÀI TOÁN LẬP LỊCH 12
1.1 Khái quát về quản lý dự án 12
a Định nghĩa quản lý dự án 12
b Nhiệm vụ cơ bản của quản lý dự án 12
1.2 Lập kế hoạch dự án và bài toán lập lịch 13
a Sơ đồ tổng quát của lập kế hoạch dự án 13
b Các khó khăn của việc lập kế hoạch dự án và bài toán lập lịch 15
Chương II: LẬP KẾ HOẠCH DỰ ÁN VÀ VẤN ĐỀ TỰ ĐỘNG HÓA 17
2.1 Thuật toán lập mạng dạng AOA 17
2.1.1 Nội dung thuật toán 17
2.1.2 Ví dụ minh họa thuật toán 19
2.1.3 Sơ đồ khái niệm của thuật toán 23
2.2 Lập lịch biểu của dự án dựa trên mạng AOA 25
2.2.1 Sơ đồ khái niệm của tiến trình lập lịch 25
2.2.2 Tự động hóa tiến trình lập mạng AOA 26
2.2.3 Tự động hóa các bước còn lại 39
2.2.3 Ví dụ minh họa cho thuật toán 42
2.2.4 Phát biểu bài toán cân đối nguồn lực 47
Chương III : CÀI ĐẶT CHƯƠNG TRÌNH VÀ THỬ NGHIỆM 50
3.1 Giới thiệu chương trình 50
3.2 Một số kết quả đưa ra từ các bước thực hiện của ví dụ trong chương trình 51
a.Ví dụ 1 51
b.Ví dụ 2 54
c Ví dụ 3 57
d Ví dụ 4 60
e Ví dụ 5 64
3.3 Nhận xét về chương trình 68
Trang 6KẾT LUẬN 69
Những kết quả đạt được 69
Những hạn chế và tồn tại 69
Hướng tiếp tục nghiên cứu 70
TÀI LIỆU THAM KHẢO 71
Trang 7BẢNG DANH MỤC CÁC HÌNH VÀ BẢNG BIỂU
Hinh 1.1 Sơ đồ tổng quát lập kế hoạch dự án 13
Bảng 2.1: Bảng phân rã công việc 19
Bảng 2.2: Thực hiện các bước của giai đoạn 1 20
Bảng 2.3: Kết quả thực hiện các bước của giai đoạn 1 20
Bảng 2.4: Bảng công việc còn lại sau 4 lần lặp lại bước 4 của giai đoạn 2 21
Hình 2.1: Mạng công việc AOA sau khi kết thúc bước 4d 22
Hình 2.2: Mạng công việc AOA sau khi kết thúc bước 4 22
Hình 2.3: Mạng công việc AOA sau khi kết thúc bước 6 23
Hình 2.4: Sơ đồ khái niệm xác định các đỉnh trung gian 23
Hình 2.5: Sơ đồ khái niệm vẽ mạng ban đầu 24
Hình 2.6: Sơ đồ khái niệm thêm công việc giả vào mạng ban đầu 25
Hình 2.7: Sơ đồ khái niệm tiến trình lập lịch 26
Bảng 2.5 : Bảng cấu trúc dữ liệu cho bài toán lập mạng 26
Hình 2.8 : Tìm số công việc nhỏ nhất của các dòng chưa xét 28
Hình 2.9 : Đánh dấu các bộ công việc có CVDT là nhỏ nhất 29
Hình 2.10 : Giữ lại chỉ công việc được đánh dấu trong bước là khác nhau 30
Hình 2.11 : Xóa bộ công việc đã đánh dấu có mặt trong các bộ khác ở cột CVDT 31
Hình 2.12 : Vẽ các công việc đi ra từ đỉnh 0 32
Hình 2.13 : Thêm các đỉnh trung gian vào sau công việc được vẽ 33
Hình 2.14 : Tìm đỉnh đầu của công việc 34
Hình 2.15 : Vẽ các công việc đi ra từ đỉnh trung gian 35
Hình 2.16 : Vẽ thêm đỉnh cuối cùng 36
Hình 2.17 : Thêm các đỉnh giả 37
Hình 2.18 : Thêm các công việc giả 37
Hình 2.19 : Đánh số lại các đỉnh 38
Hình 2.20 : Thời gian bắt đầu sớm nhất 40
Hình 2.21 : Thời gian kết thúc muộn nhất 40
Hình 2.22 : Thời gian dự phòng 40
Hình 2.23 : Vẽ sơ đồ Gantt 41
Hình 2.24 : Vẽ sơ đồ biểu đồ nguồn lực 41
Bảng 2.6: Bảng phân rã công việc cho trước 42
Trang 8Bảng 2.7: Bảng xác định các công việc chọn 42
Bảng 2.8: Bảng xác định các công việc loại 43
Bảng 2.9: Bảng đỉnh đầu và đỉnh cuối của công việc (chưa đánh các đỉnh thoản mản đỉnh đầu của CV(i) nhỏ hơn đỉnh cuối CV(i)) 43
Bảng 2.10: Bảng đỉnh đầu và đỉnh cuối của công việc (đã đánh các đỉnh thoản mản đỉnh đầu của CV(i) nhỏ hơn đỉnh cuối CV(i)) 43
Bảng 2.11: Bảng tính tham số thời gian và các đỉnh găng 44
Bảng 2.12: Bảng tính thời gian dự phòng và công việc găng 44
Bảng 2.13 : Kết quả sau khi áp dụng thuật toán 45
Bảng 2.14 : Biểu đồ GANTT 45
Bảng 2.15 : Biểu đồ nhân lực sử dụng 46
Bảng 2.16 : Biểu đồ đã cân đối nguồn lực <= 3 47
Bảng 3.1 : Bảng dữ liệu đầu vào 51
Bảng 3.2 : Bảng trung gian (ví dụ 1) 52
Bảng 3.3 : Bảng thời gian bắt đầu sớm nhất, kết thúc muộn nhất (ví dụ 1) 52
Bảng 3.4 : Bảng kết quả tổng hợp (ví dụ 1) 52
Bảng 3.5: Biểu đồ Gantt (ví dụ 1) 53
Bảng 3.6 : Biểu đồ nguồn nhân lực chưa cân đối nhân lực 53
Bảng 3.7: Biểu đồ nguồn nhân lực đã cân đối nhân lực 54
Bảng 3.8: Bảng dữ liệu đầu vào (ví dụ 2) 55
Bảng 3.9: Bảng trung gian (ví dụ 2) 55
Bảng 3.10: Bảng thời gian bắt đầu sớm nhất, kết thúc muộn nhất (ví dụ 2) 56
Bảng 3.11 : Bảng kết quả tổng hợp (ví dụ 2) 56
Bảng 3.12: Biểu đồ Gantt (ví dụ 2) 57
Bảng 3.13: Bảng dữ liệu đầu vào (ví dụ 3) 57
Bảng 3.14 :Đỉnh trung gian (ví dụ 3) 58
Bảng 3.15 : Thời gian bắt đầu sớm nhất, kết thúc muộn nhất (ví dụ 3) 58
Bảng 3.16 : Bảng kết quả tổng hợp (ví dụ 3) 59
Bảng 3.17: Biểu đồ Gantt (ví dụ 3) 59
Bảng 3.18 Bảng dữ liệu đầu vào (ví dụ 4) 60
Bảng 3.19 : Đỉnh trung gian (ví dụ 4) 61
Bảng 3.20 : Thời gian bắt đầu sớm nhất, kết thúc muộn nhất (ví dụ 4) 62
Bảng 3.21: Bảng kết quả tổng hợp (ví dụ 4) 62
Trang 9Bảng 3.22: Biểu đồ Gantt (ví dụ 4) 63
Bảng 3.23 Bảng dữ liệu đầu vào (ví dụ 5) 64
Bảng 3.24 Bảng trung gian (ví dụ 5) 65
Bảng 3.25 : Thời gian bắt đầu sớm nhất, kết thúc muộn nhất (ví dụ 5) 66
Bảng 3.26: Bảng kết quả tổng hợp (ví dụ 5) 66
Bảng 3.27: Biểu đồ Gantt (ví dụ 5) 67
Bảng 3.28 Tổng kết kết quả thử nghiệm chương trình với các bài toán 67
Trang 10MỞ ĐẦUHiện nay việc quản lý các dự án phần mềm còn gặp nhiều khó khăn, dẫn đến phần mềm chuyển giao trễ hạn, chi phí vượt trội dự toán, các sản phẩm không được như dự định Một trong những vấn đề chủ yếu dẫn đến thất bại của các sản phẩm phần mềm là do việc sử dụng các nguồn lực trong dự án không hiệu quả Một dự án thường phải cần đến nhiều loại nguồn lực khác nhau: những nhóm người với kỹ năng khác nhau, những trang thiết bị, phần mềm khác nhau và yêu cầu ở những thời điểm khác nhau là khác nhau Việc phân bổ các nguồn lực sẵn có vốn hạn chế cho các công việc yêu cầu vào các thời điểm thích hợp là một bài toán khó thuộc loại bài toán đã biết
“phân công máy” Nhiều bài toán phân công máy đã được mô hình hóa để có thể áp
dụng các thuật toán khác nhau dùng để giải các bài toán đã biết như bài toán quy hoạch
nguyên, bài toán nhánh cận, hay giải thuật di chuyền Khó khăn đối với bài toán cân
đối nguồn lực bị hạn chế là các công việc được tiến hành theo một trình tự xác định Khi tiến hành phân bổ các nguồn lực có hạn cho nhu cầu các công việc trước hết phải tuân thủ ràng buộc này Một mạng công việc thường được xây dựng cho mỗi dự án để biểu diễn mỗi quan hệ trước sau của các công việc Nó chính là một mô hình biểu diễn các ràng buộc giữa các công việc được nói ở trên
Hiện nay có hai cách biểu diễn mạng các công viêc: Cách thứ nhất biểu diễn mạng công việc mà mỗi công việc là một nút () Cách thứ hai biểu diễn mạng công
việc mà mỗi công việc là một cung () Cách thứ nhất vẽ mạng rất đơn giản Tuy nhiên mạng có được không cho phép mô hình hóa bài toán phân bổ tài nguyên tối ưu Phương pháp thứ hai xây dựng mạng rất phức tạp, nhưng khi có mạng công việc, ta có thể sử dụng để mô hình hóa mô hình bài toán phân bổ tối ưu để áp dung các thuật giải
đã có Để hướng đến bài toán phân bổ tối ưu nguồn lực trong bài toán lập lịch dự án, đề
tài ”Bài toán cân đối nguồn lực trên mạng cho hoạt động lập lịch của quản lý dự án”
đã được chọn làm đề tài luận văn cao học của tôi
Trong luận văn tiến hành tự động hóa toàn bộ quá trình lập lịch của dự án sử dụng mạng có công việc là các cung (mạng AOA) Từ trước đến nay việc vẽ mạng này được thực hiện bằng tay với một số hướng dẫn có tính gợi ý Nhờ có thuật toán [] vẽ mạng nên có thể tự động hóa việc lập mạng và do đó có thể tự động hóa toàn bộ quá trình lập lịch cho dự án Việc tự động lập mạng có công việc là cung cũng tạo cơ sở cho việc mô
Trang 11hình hóa bài toán cân đối nguồn lực cho lập lịch dự án Mặc dù đã có những chương trình lập lịch cho dự án, nhưng đều dựa trên cơ sở mang AON nên chưa giải quyết được bài toán cân đối nguồn lực trong việc lập lịch cho dự án
Nội dung chính của luận văn gồm 3 chương:
Chương 1: Quản lý dự án và bài toán lập lịch
Chương 2: Lập kế hoạch dự án và vấn đề tự động hóa
Chương 3: Cài đặt chương trình và kết quả
Cuối cùng là kết luận và hướng phát triển tiếp theo của đề tài trong tương lai
Trang 12Chương I: QUẢN LÝ DỰ ÁN VÀ BÀI TOÁN LẬP LỊCH
1.1 Khái quát về quản lý dự án
a Định nghĩa quản lý dự án
Quản lý dự án là ngành khoa học nghiên cứu về việc lập kế hoạch, quản lý và giám sát quá trình phát triển của dự án nhằm đảm bảo cho dự án hoàn thành đúng thời gian, trong phạm vi ngân sách đã được duyệt, đảm bảo chất lượng, đạt được mục tiêu
cụ thể của dự án và các mục đích đề ra [Vy&2008]
b Nhiệm vụ cơ bản của quản lý dự án
Nhiệm vụ cơ bản của quản lý dự án nói chung là hoàn thành các công việc dự án theo đúng yêu cầu kỹ thuật và chất lượng, trong phạm vi ngân sách được duyệt và theo đúng tiến độ thời gian cho phép
Ba yếu tố: thời gian, nguồn lực (cụ thể là chi phí, nguồn nhân lực … ) và chất lượng có quan hệ chặt chẽ với nhau Tầm quan trọng của từng mục tiêu có thể khác nhau giữa các dự án Tuy nhiên để đạt được tốt đối với một mục tiêu này thì thông thường phải chấp nhận một trong các mục tiêu khác kém hơn Cho nên, trong quá trình quản lý dự án thường diễn ra việc tính toán nhằm đánh đổi mục tiêu Đánh đổi mục tiêu
dự án là việc hy sinh một mục tiêu nào đó để thực hiện tốt hơn các mục tiêu kia trong điều kiện các ràng buộc đã cho trong không gian và thời gian Nếu công việc dự án diễn ra đúng theo kế hoạch thì không phải đánh đổi mục tiêu Tuy nhiên do nhiều nguyên nhân khách quan cũng như chủ quan, công việc dự án thường có nhiều thay đổi nên việc tính toán để đánh đổi giữa các mục tiêu hợp lý nhất là một kỹ năng quan trọng của nhà quản lý dự án Trong điều kiện các nguồn lực bị hạn chế, nhiều công việc sử dụng cùng một loại nguồn lực trong một khoảng thời gian có thể vượt quá số nguồn lực cho phép Khi đó cần dãn các ông việc này sao cho số nguồn lực sử dụng tại mọi thời điểm không vượt quá tổng số cho phép Bài toán này gọi là cân đối nguồn lực khi lập
kế hoạch lịch của dự án Việc dãn các công việc khi cân đối nguồn lực thường dẫn đến kéo dài thời gian thực hiện dự án Do yêu cầu của quản lý dự án, việc cân đối nguồn lực cần làm sao để thời gian thực hiện dự án bị kéo dài ít nhất có thể Đó là một bài toán tối ưu hóa về cân đối nguồn lực được đặt ra cho hầu hết các dự án khi lập kế hoạch để thực hiện dự án
Trang 131.2 Lập kế hoạch dự án và bài toán lập lịch
a Sơ đồ tổng quát của lập kế hoạch dự án
Hinh 1.1 Sơ đồ tổng quát lập kế hoạch dự án Trong sơ đồ trên, các công đoạn 2, 4, 5 là quan trọng nhất, vì nó tạo ra kế hoạch lịch biểu của dự án Các kế hoạch khác của dự án được thiết lập dựa trên kế hoạch lịch
Để thực hiện việc lập kế hoạch trên, người ta đã sử dụng hai phương pháp:
‒ Phương pháp đường găng (Critical Path Method – CPM) [Kell&59]
‒ Phương pháp sơ đồ mạng PERT (Program Evalution and Review Technique)
[Davi&06]
Lập các
kế hoạch khác nhau
Ước lượng gói công việc
Bảng công việc
Phạm vi &
xuất phẩm
Lịch biểu
đã cân đối nguồn lực
sử dung
2 Lập sơ đồ mạng
Xác định dự án
Ước lượng thời gian
0
Sơ đồ mạng
chi phí lao động
Kế hoạch dự án cơ sở Chiến lược rủi ro Bảng phân rã công việc Lịch biểu chi tiết
Kế hoạch ngân sách Trách nhiệm/tr.thông
Kế hoạch nguồn lực Các KH khác
Gán nguồn lực và cân đối
5 Đường
găng, cột mốc
Lập lịch biểu ban đầu
Ràng buộc nguồn lực
4
Trang 14Từ đó đến nay hai phương pháp này được ứng dụng rộng rãi trong các tổ chức, đặc biệt trong lĩnh vực quản lý dự án ([Hirs&94], [Howe2001], [Hugh&2002], [PMI.2004], [Than2006], [Phuo2010],…)
Trong quy trình lập kế hoạch, lập sơ đồ mạng (2) là khâu mô hình hóa quan trọng, làm cơ sở cho việc tính toán và thực hiện các bước tiếp theo, mà nội dung
về cơ bản là như nhau Ở bước này, mỗi phương pháp lại sử dụng một dạng sơ
đồ mạng khác nhau
CPM sử dụng sơ đồ mạng AON (Activities On Nodes), mà mỗi đỉnh biểu diễn một công việc, mỗi cung nối hai công việc với nhau biểu diễn mỗi quan hệ trình tự giữa chúng Cách lập sơ đồ này rất đơn giản, ai cũng có thể lập được một cách dễ dàng Nhưng việc ứng dụng mạng AON có một phạm vi hạn chế
Phương pháp PERT sử dụng sơ đồ mạng AOA (Activities On Arcs), trong
đó mỗi cung biểu diễn một công việc, mỗi đỉnh biểu diễn sự kết thúc của một số công việc và là điểm bắt đầu cho một số công việc khác Việc lập mạng AOA thường không đơn giản vì phải sử dụng đến các công việc giả Số lượng các công việc giả sẽ đặc biệt nhiều nếu dự án có quy mô lớn Khi đó, với cùng một bảng công việc đã cho, người ta có thể đưa ra một vài mạng AOA khác nhau
Trong nhiều tài liệu trình bày về phương pháp PERT ([Thai&69], [Than78], [Will85], [Cohe&2007], [Kiem&2008]) cũng như trong các tài liệu ứng dụng nó, để lập mạng AOA các tác giả chỉ đưa ra những quy tắc hướng dẫn mang tính kinh nghiệm
và chỉ ra một số trường hợp cụ thể vẽ mạng AOA, để giải thích cách vẽ như thế nào là đúng, là sai
Mạng AOA có nhiều lợi thế: vì là một đồ thị có hướng, nó có thể được chuyển sang dạng ma trận để tính toán như trên một bảng Nó cũng rất thích hợp cho các kỹ
thuật phân tích và mô hình hóa nhiều bài toán tối ưu ([Thai&69], [Cohe&2007],
[Than2006]) như bài toán luồng cực đại, tối ưu hóa phân phối nguồn lực của dự án,…
Vì vai trò quan trọng của mạng AOA, nên có nhiều phương pháp lập mạng AOA
đã được nghiên cứu Một loạt các phương pháp trực cảm để lập mạng AOA hướng đến việc tối thiểu hóa các công việc giả ([Dims63], [Spin80], [Sylo81], [Kamb&92], [Mich&93], [Kamb&2000]) đã được đề xuất Các phương pháp đi theo hướng này gặp nhiều khó khăn, vì theo Krishnamoorty và Deon [Kris&79] bài toán lập mạng AOA tối thiểu hóa các cung giả là bài toán NP khó
Trang 15Mouhoub và Benhocine đã trình bày một thuật toán để xây dựng mạng AOA bằng cách chuyển một mạng AON sang mạng AOA [Mouh&2011] Thuật toán là khá phức tạp, và theo các tác giả độ phức tạp tính toán của thuật toán là O(n4) Một thuật toán khác xây dựng mạng AOA được Yuval Cohen, Arik Sadeh [Cohe&07] đề xuất, cho phép xác định duy nhất mạng AOA từ một WBS (Work Breakdown Structure) đã cho Tuy nhiên thuật toán chỉ được xem xét và thẩm định qua ví dụ mà không được chứng minh
Một thuật toán mới cho phép lập một mạng AOA duy nhất, đơn giản và dễ dàng
từ một WBS cho trước Thuật toán này đã được giới thiệu trong tài liệu [Vy&2008] của các tác giả trước đây, nhưng gần đây mới đưa ra các chứng minh đầy đủ về tính đúng đắn, tính hữu hạn và tính duy nhất nghiệm của thuật toán [Vy&2012]
b Các khó khăn của việc lập kế hoạch dự án và bài toán lập lịch
Việc lập kế hoạch dự án thường diễn ra nhiều lần trong quá trình quản lý dự án
Nó không chi cần đến khi bắt đầu một giai đoạn mới của quá trình quản lý dự án, mà còn phải thực hiện khi có những thay đổi xảy ra đối với sản phẩm, đối với tiến độ bàn giao và đối với tính chất của một số công việc; mà những sự kiện này lại rất thường hay xảy ra trong quản lý dự án Vì thế, để đáp ứng yêu cầu cấp bách của quản lý dự án, nhiều chương trình phần mềm được xây dựng giúp tự động hóa hoạt động này Đối với những chương trình dựa trên việc lập mạng AON không có khó khăn gì đặt ra Tuy nhiên, những chương trình loại này đã không cho phép giải quyết triệt để bài toán lập lịch cho trường hợp nguồn lực hạn chế (giai đoạn 5 trong sơ đồ hình 1.1.)
Nhưng với những chương trình dựa trên mạng AOA, người ta phải lập mạng bằng tay, sau đó nhập mạng này vào chương trình để thực hiện các bước tiếp Điều đó có nghĩa là chương trình chỉ ở mức bán tự động, mà không tự động hóa hoàn toàn Nhờ có thuật toán mới, mặc dù được mô tả cho việc vẽ tay, nhưng do tính lôgic chặt chẽ của thuật toán, nên có thể chuyển nó sang chương trình để tự động hóa việc lập mạng Và nhờ vậy có thể tự động hóa hòa toàn bài toán lập lịch Hơn nữa, việc sử dụng AOA sẽ
hỗ trợ giải quyết triệt để bài toán lập lịch có tính đến các ràng buộc về nguồn lực như một số tài liệu đã đề cập đến ([Thai&69], [Cohe&2007], [Than2010])
Trang 16c Một số phần mềm đã sử dụng mạng lập lịch
Do những khó khăn của quản lý dự án nói chung và bài toán lập lịch nói riêng thì
đã có nhiều các phương pháp xây dựng lên với mục đích có thể xử lý hiệu quả và dễ sử dụng đối với bài toán lịch lịch biểu này
Một trong số đó là phần mềm quản lý MS (Microsoft) Project, là một phần mềm quản
lý dự án dự án được phát triển bởi Microsoft Chương trình này được thiết kế quản lý
hỗ trợ dự án, theo dõi tiến độ, quản lý ngân sách và phân tích khối lượng công việc Phần mềm này được thiết kế dựa trên thuật toán của phương pháp lập tiến độ theo sơ
đồ mạng CMP và sơ đồ Gantt
Ưu điểm của MS Project : là một phần mềm linh hoạt, người sử dungj không bị
gò bó theo trình tự các bước cứng nhắc trong việc lập và xác định các quá trình thực hiện dự án Người sử dụng có thể bắt đầu từ việc thao tac vài ý tưởng về công tác cần thiết nhất cho dự án Ngoài ra người sử dụng còn có thể điều chỉnh lịch trình về sau, cập nhật liên tục thông tin của dự án, rá soát việc tính toán và tùy chọn hiển thị Việc
sử dụng MS Project sẽ giúp cho người quản lý dự án trong các công việc sau :
‒ Tổ chức lập kế hoạch và quản lý tổng thể
‒ Lên lịch thực hiện các công tác
‒ Điều chỉnh lại các kế hoạch thực hiện dự án cho phù hợp với các điều kiện ràng buộc
Nhược điểm của MS Project : Mặc dù có rất nhiều các ưu điểm và tính hữu dụng của MS Project tuy nhiên MS Project cũng có một số nhược điểm Là một phần mềm được xấy dựng dựa trên mạng CMP (mỗi công việc sẽ là một nút của mạng) nên việc cân đối nguồn lực trong các công việc có các ràng buộc gặp nhiều khó khăn Quá trình cân đối nguồn lực chủ yếu dựa vào tay và dựa trên kinh nghiệm của các nhà quản lý trong việc di chuyển các công việc có thời gian dự phòng Như vậy sẽ không thể cân đối nguồn lực đối với trường hợp dữ liệu lớn và các ràng buộc phức tạp và không thể
tự động hóa hoàn toàn quá trình cân đối nguồn lực
Đối với việc xây dựng bài toán lập lịch dưới đây sẽ giúp cho việc thực hiện quản
lý dự án, lập lịch biểu, cân đối nguồn lực đối với các công việc có ràng buộc sẽ được tự động hóa hoàn toàn
Trang 17Chương II: LẬP KẾ HOẠCH DỰ ÁN VÀ VẤN ĐỀ TỰ ĐỘNG
HÓA Như trên đã trình bày, khâu khó khăn nhất trong quy trình lập kế hoạch dự án là khâu lập mạng công việc (2) khi sử dụng mạng AOA, mà các phần mềm vẫn phải sử dụng kết quả vẽ thủ công Dưới đây sẽ trình bày thuật toán về lập mạng AOA đã được giới thiệu trong tài liệu [Vy&2008] đồng thời làm cơ sở cho việc tự động hóa công đoạn này
2.1 Thuật toán lập mạng dạng AOA
2.1.1 Nội dung thuật toán
Đầu vào cho thuật toán là bảng phân rã công việc (WBS) (Work Breakdown
Structure) có các cột: mã công việc, tên công việc và công việc đi trước
Thuật toán được chia làm hai giai đoạn:
a Giai đoạn 1: Đánh dấu xác định các đỉnh trung gian
Bước 1: Duyệt cột “Công việc đi trước” của WBS Nếu mọi bộ công việc đều đã
được đánh dấu (đưa vào trong ngoặc) hoặc bị xóa thì chuyển đến bước 3 (giai đoạn 2) Ngược lại, mỗi lần duyệt cột này từ trên xuống chỉ đánh dấu các bộ công việc (gồm một hay một số công việc) còn tự do (chưa đánh dấu hoặc chưa xóa) ở trên một dòng công việc, có cùng số lượng công việc và có số lượng công việc là ít nhất (lần lượt bằng 1, hoặc 2, hoặc 3, ) Như vậy, có ít nhất một bộ công việc ở một dòng được đánh dấu trong bước này và số dòng công việc còn tự do của WBS giảm đi ít nhất một dòng
Mỗi bộ công việc được đánh dấu sẽ xác định một đỉnh trung gian của sơ đồ mạng công việc AOA và là sự kiện kết thúc của các công việc thuộc bộ này, cũng là điểm bắt đầu của tất cả các công việc có bộ công việc này ở cột “Công việc đi trước” cùng dòng với nó
Bước 2: Duyệt tất cả các bộ công việc ở mỗi dòng thuộc cột “Công việc đi trước” của WBS còn tự do (chưa đánh dấu hoặc chưa bị xóa) Nếu chúng có chứa bộ công việc vừa được đánh dấu ở bước 1 thì xóa đi và quay lại bước 1
Trang 18Giai đoạn 1 kết thúc khi cột “Công việc đi trước” của WBS không còn bộ công việc tự do nào
b Giai đoạn 2: Vẽ sơ đồ mạng
Bước 3: Trước hết vẽ đỉnh 0 Vẽ tất cả các công việc của WBS không đi sau một công việc nào đi ra từ đỉnh này Loại các công việc vừa được vẽ khỏi bảng WBS Bước 4: Vẽ đỉnh thứ n và các công việc đi ra từ nó
Giả sử ta đã vẽ được đỉnh thứ (n-1) (đỉnh n-1 đầu tiên là đỉnh 0) và tất cả các cung công việc đi ra khỏi nó
Xét các công việc còn lại trong bảng WBS, có thể xảy ba trường hợp:
Trường hợp 1: Các công việc của WBS đã bị loại hết Khi đó, ta cho tất cả các
công việc chưa có đỉnh kết thúc kết thúc tại đỉnh thứ n, là đỉnh cuối cùng của mạng AOA Quá trình vẽ mạng kết thúc
Trường hợp 2: Tìm một bộ công việc được đánh dấu trong cột “Công việc đi
trước” ở một dòng của WBS có chứa các công việc đã vẽ Vẽ đỉnh thứ n là sự kiện kết thúc cho các công việc thuộc bộ này Tìm tất cả các công việc của WBS mà ở cột
“Công việc đi trước” chứa bộ công việc vừa được xác định, vẽ chúng đi ra từ đỉnh n
Trường hợp 3: Tìm một bộ công việc trong cột “Công việc đi trước” ở một dòng
của WBS có chứa các công việc đã vẽ trong sơ đồ, nhưng các công việc trong bộ này
đã bị xóa hết Khi đó cần thêm một đỉnh giả và vẽ tất cả các công việc, mà ở cột “Công việc đi trước” tương ứng có cùng các công việc đã bị xóa hết như của bộ vừa xác định được, và đi ra khỏi đỉnh giả này (đỉnh giả không có công việc đi vào)
Lặp lại bước 4 cho đến khi các bộ công việc ở cột “Công việc đi trước” của WBS
đã bị loại hết
Bước 5: Xác định các công việc giả
Các công việc giả chỉ liên quan đến các bộ công việc bị xóa ở các dòng thuộc cột
“Công việc đi trước” của WBS
Nếu một dòng nào đó thuộc cột “Công việc đi trước” của WBS có một bộ công việc bị xóa thì ta thêm một công việc giả từ đỉnh tương ứng với bộ công việc bị xóa đến đỉnh mà công việc ở dòng này đi ra
Trang 19Chú ý: ở một dòng có thể có một số bộ công việc bị xóa, khi đó sẽ có một số công việc giả đi đến đỉnh mà công việc dòng này đi ra
Bước 6: Đánh số các đỉnh của sơ đồ mạng
Đánh số 0 cho đỉnh khởi đầu và đánh số 1, 2, … cho các đỉnh tiếp theo (đỉnh trung gian) nhưng đảm bảo nguyên tắc: Số của đỉnh cuối công việc phải lớn hơn số đỉnh đầu công việc Việc đánh số này là cơ sở cho việc tính toán các tham số thời gian của mạng sau này (bằng cách tính tham số thời gian cho các đỉnh theo thứ tự tăng hay giảm dần)
Việc đánh số các đỉnh của mạng AOA là không duy nhất, trừ đỉnh đầu và đỉnh cuối cùng
2.1.2 Ví dụ minh họa thuật toán
Giả sử cho một bảng phân rã công việc WBS có nội dung ở bảng 1
Bảng 2.1: Bảng phân rã công việc
a Giai đoạn 1: Đánh dấu xác định các đỉnh trung gian của mạng
Bước 1: Trong cột “Công việc đi trước” của bảng công việc (bảng 2.2) có 4 dòng
4, 5, 7, 10 có các bộ công việc chỉ gồm 1 công việc là a, b, c và g nên ta đánh dấu chúng (bằng cách đưa vào trong ngoặc) Kết quả cho ở cột “Bước 1“ của bảng 2.2
Bước 2: Trong cột “Công việc đi trước” của bảng công việc, có dòng 6 chứa hai
bộ công việc đã được đánh dấu ở bước 1 là (b) và (c); dòng 8 và 9 chứa bộ (a) đánh
Trang 20dấu ở bước 1, ta xóa đi những bộ này (xem kết quả ở cột “Bước 2” bảng 2) Loại các
bộ công việc đi trước đã đánh dấu và bị xóa khỏi bảng, chuyển sang bước 1’
Bước 1’: Trong cột “Công việc đi trước” của bảng bây giờ chỉ còn 3 dòng (8, 9,
11): trong đó ở dòng 8 và 9 chỉ có một công việc là d, ta đánh dấu hai bộ một công việc này (xem cột “Bước 1’“ bảng 2.2)
Bước 2’: Trong bảng công việc sau đánh dấu, không có dòng nào chứa bộ công
việc vừa đánh dấu ở bước 1’, nên không cần thực hiện thao tác xóa (xem cột “Bước 2’” trong bảng 2.2) Chuyển sang bước 1”
Bước 1”: Trong cột “Công việc đi trước” của bảng công việc bây giờ chỉ còn duy
nhất một dòng 11 với 2 công việc {h,k}, ta đánh dấu chúng Giai đoạn 1 kết thúc vì
trong cột “Công việc đi trước” không còn dòng nào (xem cột “ Bước 2” ” trong bảng
Trang 215 e (c) 11 l (h, k)
Như vậy, kết quả việc đánh dấu các bộ công việc và xóa chúng trong giai đoạn 1 được cho ở bảng 2.3 Trong đó có 6 bộ công việc: (a), (b), (c), (d), (g) và (h,k) được đánh dấu Chúng xác định 6 đỉnh trung gian của mạng AOA tương ứng với bảng 2.1
b Giai đoạn 2: Vẽ sơ đồ
Bước 3: Vẽ đỉnh đầu tiên đánh số 0 Từ đỉnh 0, vẽ 3 công việc đi ra là a, b, c là
những công việc không đi sau một công việc nào Loại các công việc a, b, c đã được vẽ
ra khỏi bảng
Bước 4a: Vì a được đánh dấu nên sau a ta vẽ đỉnh 1 Có duy nhất công việc g đi
sau a, ta vẽ g từ đỉnh 1 (là kết thúc của a) Loại g khỏi bảng
Bước 4b: Vì b được đánh dấu nên sau b ta vẽ đỉnh 2 Có duy nhất công việc d đi
sau b, ta vẽ d từ đỉnh 2 (kết thúc của b) Loại d khỏi bảng
Bước 4c: Vì c được đánh dấu nên sau c ta vẽ đỉnh 3 Có duy nhất công việc e đi
sau c, ta vẽ e từ đỉnh 3 (là kết thúc của c) Loại e khỏi bảng
Bước 4d: Công việc f đi sau công việc b và c đã được vẽ trong sơ đồ, và cả hai
công việc b và c này đều đã bị xóa, vậy cần thêm một đỉnh giả 4, và vẽ f đi ra từ đỉnh giả này Loại f khỏi bảng Kết quả nhận được đến bước này cho ở bảng 2.4 và hình 2.1
Bảng 2.4: Bảng công việc còn lại sau 4 lần lặp lại bước 4 của giai đoạn 2
Trang 22Hình 2.1: Mạng công việc AOA sau khi kết thúc bước 4d Tiếp tục, vì d và g được đánh dấu nên ta vẽ đỉnh 5 sau d và đỉnh 6 sau g Từ đỉnh
5 ta vẽ hai công việc h và i đi ra (vì chúng đi sau d) Từ đỉnh 6 sau g ta vẽ công việc k (vì k đi sau g) Công việc l chưa vẽ có chứa bộ {h, k} mà công việc h và k đã được vẽ, nên ta vẽ đỉnh 7 là kết thúc của hai công việc h và k Đến đây tất cả các công đã được
vẽ, ta thêm đỉnh 8 vào cho các công việc chưa có đỉnh kết thúc là e, f, i, l kết thúc tại đây (xem hình 2.2)
Hình 2.2: Mạng công việc AOA sau khi kết thúc bước 4
Bước 5: Dòng 8 ở cột “Công việc đi trước” có bộ (d) xác định đỉnh 5 và bộ (a) bị
xóa, nên cần thêm công việc giả từ đỉnh 1 sau (a) đến đỉnh 5 Cũng tương tự, ở dòng 6
có bộ (b) và (c) tất cả bị xóa, đã phải thêm đỉnh giả 4 (ở bước 4), nên cần thêm hai công việc giả từ đỉnh 2 (sau b) và đỉnh 3 (sau c) đến đỉnh giả 4 Bước 5 kết thúc, vì cột
“Công việc đi trước” của bảng không còn dòng nào có bộ công việc bị xóa Mạng công
việc AOA kết quả cho ở hình 2.3 Mạng có 3 công việc giả và một đỉnh giả
Bước 6: Việc đánh số các đỉnh của mạng thỏa mãn yêu cầu đặt ra nên không cần
Trang 23Hình 2.3: Mạng công việc AOA sau khi kết thúc bước 6 2.1.3 Sơ đồ khái niệm của thuật toán
a Giai đoạn 1: xác định đỉnh trung gian
Hình 2.4: Sơ đồ khái niệm xác định các đỉnh trung gian
b Giai đoạn 2: vẽ sơ đồ mạng
b1 Vẽ sơ đồ mạng ban đầu
Duyệt lần lượt các công việc
Bước 2
Bước 3
1
0 WBS
Trang 24Hình 2.5: Sơ đồ khái niệm vẽ mạng ban đầu
Vẽ đỉnh 0 là đỉnh bắt đầu của mạng
Từ đỉnh 0 vẽ các CV đi ra là các công việc không có CV đi trước nó
Thêm các đỉnh trung gian vào sau công việc được vẽ và nó được đánh dấu Bảng xác định đỉnh trung gian
Từ đỉnh trung gian vừa vẽ thêm vào
vẽ các công việc đi ra khỏi nó
Thêm các đỉnh trung gian vào sau công việc vừa vẽ và chúng được đánh dấu
Chụm các công việc chưa có đỉnh cuối vào đỉnh cuối cùng được thêm vào
Còn công việc chưa
vẽ
1
0
Trang 25b2 Thêm các công việc giả
Mạng ban đầu được vẽ không thỏa mãn ràng buộc ban đầu về công việc đi trước
Vì trong số các công việc đi trước một công việc ở cột các công việc đi trước đã bị xóa
Vì vậy cần thêm các công việc giả để đảm bảo ràng buộc liên quan đến công việc đi trước nó đã bị xóa đi
Hình 2.6: Sơ đồ khái niệm thêm công việc giả vào mạng ban đầu
2.2 Lập lịch biểu của dự án dựa trên mạng AOA
2.2.1 Sơ đồ khái niệm của tiến trình lập lịch
Chọn một công việc X mà ở cột công việc
đi trước có công việc Y bị xóa
Từ đỉnh cuối công việc Y vẽ công việc giả đến đỉnh
có công việc X đi ra (như vậy X thỏa mãn có công việc đi trước nó là Y)
Còn công việc có công việc đi trước
bị xóa
1
0
Trang 26Hình 2.7: Sơ đồ khái niệm tiến trình lập lịch 2.2.2 Tự động hóa tiến trình lập mạng AOA
a Đặc tả cấu trúc dữ liệu cho bài toán lập mạng
Bảng 2.5 : Bảng cấu trúc dữ liệu cho bài toán lập mạng
TT Tên công
việc
CV đi trước
CV chọn
CV Loại
Đỉnh đầu
Đỉnh cuối
Thời gian
Nhân lực TT(i) CV(i) CVtr(i) CVch(i) CVlo(i) ddCV(i) dcCV(i) tgCV(i) nlCV(i)
Trang 27Mô tả bảng cấu trúc dữ liệu trên
Mỗi một dòng (i) tương ứng với một công việc và các các cột của bảng tương ứng được ký hiệu như sau:
‒ Cột 1: Số thứ tự của công việc ( TT(i) số thứ tự hay mã công việc thứ i)
‒ Cột 2: Tên các công việc (tên công việc thứ i: CV(i)) Trong trường hợp tên công
việc đơn giản ta có thể dùng cột này để xem xét lần lượt các công việc khi thao tác các thủ tục
‒ Cột 3: Cột các công việc đi trước: bao gồm các công việc đi trước công việc
(CV(i)) ở dòng này được biểu diễn bằng vect tơ CVtr(i) Mỗi thành phần của véc
tơ này là một mã (hay tên) của công việc đi trước Các thao tác chính của thuật toán sẽ thao tác trên các phần tử của cột này
‒ Cột 4 : Cột các bộ công việc (hay mã công việc) được chọn (hay đánh dấu) ở dòng i (ở bước 2 của giai đoạn 1 xác định các đỉnh trung gian) khi xét cột công
việc đi trước và được ký hiệu là CVch(i) sẽ lưu ở cột này khi chúng bị loại khỏi
véc tơ CVtr(i) ở cột các công việc đi trước tương ứng
‒ Cột 5 : Cột các công việc loại (CVlo), là cột lưu lại các công việc bị xóa CVlo(i)
khỏi bộ công việc đi trước CVtr(i) (ở bước 3 của giai đoạn 1 xác định các đỉnh trung gian)
Như vậy trong quá trình xét để xác định đỉnh trung gian, các công việc đi trước của công việc i sẽ bị đánh dấu hoặc xóa hết, tức là CVtr(i) = Vì thế cột này sẽ dùng
để kiểm tra một công việc đã được xem xét ( CVtr(i) = ) hay chưa ( CVtr(i) ≠ ) Bước xác đinh các đỉnh trung gian sẽ kết thúc khi mọi công việc được xem xét, tức là CVtr(i) = với mọi i
‒ Cột 6 : Cột đỉnh đầu của công việc (ddCV) Véc tơ ddCV(i) lưu đỉnh bắt đầu của
công việc i: CV(i)
‒ Cột 7 : Cột đỉnh cuối (dcCV) Véc tơ ddCV(i) lưu đỉnh cuối của mỗi công việc i :
CV(i)
‒ Cột 8 : Cột thời gian (tgCV), là cột dữ liệu về thời gian thực hiện tương ứng đối
với mỗi công việc i: Cột dữ liệu này sẽ được sử dụng để tính ở bước tính các tham số về thời gian
Trang 28‒ Cột 9 : Là cột dữ liệu về nguồn lực cần để thực hiện công việc i: Cột dữ liệu này
sẽ được sử dụng để tính toán ở bước lập sơ đồ nguồn lực và cân đối nguồn lực
b Sơ đồ logic xác định đỉnh trung gian
Sơ đồ logic trong giai đoạn xác định các đỉnh trung gian gồm 3 bước như sau : Bước 1 : Tìm số công việc đi trước it nhất của các dòng chưa xét (Smin)
Hình 2.8 : Tìm số công việc nhỏ nhất của các dòng chưa xét
Smin= 1
Trang 29Bước 2: Đánh dấu các bộ công việc ở cột công việc đi trước có số công việc bằng
số công việc ít nhất (bằng Smin) và ghi lại tất cả
a Đánh dấu các bộ công việc
0 J= j
Trang 30b Giữ lại chỉ những bộ bị xóa là khác nhau
Hình 2.10 : Giữ lại chỉ công việc được đánh dấu trong bước là khác nhau
Bước 3 : Xóa bộ công việc đã đánh dấu có mặt trong các bộ khác ở cột công việc
0
Trang 31Hình 2.11 : Xóa bộ công việc đã đánh dấu có mặt trong các bộ khác ở cột CVDT
j=0
j=j+1
CVxoa(j) ϵ CVtr(i)
j < J
CVtr(i) = CVtr(i) – CVxoa(j) CVlo(i) = CVlo(i) + CVxoa(j) 1
Trang 32c Sơ đô logic vẽ sơ đồ mạng
Để thực hiện công việc vẽ sơ đồ mạng chúng ta cần phải có dữ liệu :
‒ Cột dữ liệu công việc CV (cột 2 trong bảng 2.5)
‒ Dữ liệu nhận được sau khi thực hiện các bước trên bao gồm: cột dữ liệu công việc chọn (CVch) là cơ sở để xác định đỉnh trung gian và công việc loại (CVlo) là cơ
sở để xác định các đỉnh giả
Trong giai đoạn này chúng ta sẽ xác đỉnh các cột dữ liệu đỉnh đầu vào (ddCV) lưu
dữ liệu tất cả các đỉnh đầu vào của mỗi công việc và đỉnh cuối (dcCV) lưu dữ liệu chứa tất cả các đỉnh đầu ra của mỗi công việc
Sơ đồ logic trong giai đoạn vẽ sơ đồ mạng bao gồm :
Bước 1 : Từ đỉnh 0 vẽ các công việc đi ra là các công việc không có công việc đi trước nó
Hình 2.12 : Vẽ các công việc đi ra từ đỉnh 0
Trang 33Bước 2 : Thêm các đỉnh trung gian vào sau công việc được vẽ và nó được đánh dấu
Hình 2.13 : Thêm các đỉnh trung gian vào sau công việc được vẽ
Trong đó hàm getDd() là hàm tính đỉnh đầu của một công việc với tham số truyền vào là cột đỉnh đầu (ddCV) và công việc j được tính như sau :
‒ Nếu đã có một công việc mà có công việc chọn bằng j rồi thì đỉnh đầu của j bằng chính đỉnh đầu của công việc đó
‒ Nếu không ta sẽ thêm một đỉnh mới tuần tự bằng cách cộng thêm 1
Trang 34Hình 2.14 : Tìm đỉnh đầu của công việc
Trang 35Bước 3 : Từ đỉnh trung gian vừa vẽ thêm vào, vẽ các công việc đi ra khỏi nó
Hình 2.15 : Vẽ các công việc đi ra từ đỉnh trung gian Bước 4 : Chụm các công việc chưa có đỉnh cuối vào đỉnh cuối cùng thêm vào
Trang 36Hình 2.16 : Vẽ thêm đỉnh cuối cùng Bước 5 : Thêm các đỉnh giả đối với công việc chưa vẽ mà có tất cả các công việc
đi trước nó bị xóa Khi đó thêm đỉnh giả và vễ nó đi ra từ đỉnh giả này
Trường hợp 1 : tất cả các công việc đều bị gạch trên một dòng ta phải thêm đỉnh giả (dg)