1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tối ưu hóa lập lịch dự án sử dụng phương pháp cpm và kỹ thuật mạng bayes áp dụng cho các dự án phát triển phần mềm linh hoạt

69 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 1,94 MB

Cấu trúc

  • 1. Lý do chọn đề tài (9)
  • 2. Mục tiêu và nhiệm vụ nghiên cứu (10)
  • 3. Bố cục luận văn (10)
  • CHƯƠNG I. TỔNG QUAN (11)
    • 1.1 Tổng quan về phát triển phần mềm linh hoạt (11)
      • 1.1.1 Tuyên ngôn Agile (11)
      • 1.1.3 Tính lặp (Iterative) (14)
      • 1.1.4 Tính tiệm tiến (Incremental) và tiến hóa (Evolutionary) (15)
      • 1.1.5 Tính thích ứng (hay thích nghi – adaptive) (15)
      • 1.1.6 Nhóm tự tổ chức và liên chức năng (15)
      • 1.1.7 Quản lý tiến trình thực nghiệm (Empirical Process Control) (16)
      • 1.1.8 Giao tiếp trực diện (face-to-face communication) (16)
      • 1.1.9 Phát triển dựa trên giá trị (value based development) (17)
    • 1.2 Các vấn đề rủi ro trong phát triển phần mềm linh hoạt (17)
  • CHƯƠNG II. VẤN ĐỀ LẬP LỊCH BƯỚC LẶP VÀ KỸ THUẬT MẠNG BAYES (20)
    • 2.1 Vấn đề lập lịch bước lặp trong phát triển phần mềm linh hoạt (20)
      • 2.1.1 Khái niệm về lập kế hoạch (21)
      • 2.1.2 Vai trò của lập kế hoạch trong quản lý dự án (21)
    • 2.2 Một số hướng tiếp cận giải quyết vấn đề lập lịch bước lặp (25)
      • 2.2.1 Phương pháp sơ đồ Gantt (26)
      • 2.2.2 Phương pháp sơ đồ PERT (26)
      • 2.2.3 Phương pháp đường Găng (Critical Path Method – CPM) (27)
    • 2.3 Kỹ thuật mạng Bayes (29)
      • 2.3.1 Định nghĩa mạng Bayes (BNs) (30)
      • 2.3.2 Cách xây dựng mạng Bayes (33)
    • 2.4 Mô hình Bayesian Critical Path Method (BCPM) (35)
    • 2.5 Kết hợp giữa CPM và BNs (37)
    • 2.6 Sử dụng BCPM để ƣớc lƣợng thời gian (0)
  • CHƯƠNG III. LẬP LỊCH DỰ ÁN SỬ DỤNG CPM VÀ KỸ THUẬT MẠNG (51)
    • 3.1 Mô hình hóa bài toán lập lịch bước lặp (51)
    • 3.2 Lập lịch bước lặp dự án sử dụng CPM và kỹ thuật mạng Bayes (53)
    • 3.3 Giải quyết vấn đề lập lịch bước lặp trong phát triển phần mềm linh hoạt (54)
      • 3.3.1 Thuật toán giải quyết AISP không sử dụng Bayes[7] (54)
      • 3.3.2 Thuật toán giải quyết AISP sử dụng mạng Bayes (56)
    • 3.4 Đánh giá thuật toán sử dụng Bayes với thuật toán không sử dụng Bayes (59)
  • CHƯƠNG IV. THỬ NGHIỆM VÀ ĐÁNH GIÁ (60)
    • 4.1 Dữ liệu thử nghiệm và sinh dữ liệu (0)
    • 4.2 Cài đặt giải thuật (63)
    • 4.3 Kết quả thử nghiệm và phân tích (63)
    • A. Kết luận (67)
    • B. Kiến nghị (68)
    • C. Hướng phát triển của đề tài (68)

Nội dung

Mục tiêu và nhiệm vụ nghiên cứu

Trong trí tuệ nhân tạo “Bayesian Networks” đã đƣợ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ên kế hoạch thực hiện dự án Việc áp dụng kỹ thuật mạng Bayes trong lập lịch cho dự án và phân bổ nguồn lực đã và đang đƣợc nghiên cứu cải tiến rất nhiều hiện nay.

Luận văn tập trung nghiên cứu các nội dung chính sau đây:

 Nghiên cứu tổng quát về phát triển phần mềm linh hoạt

 Nghiên cứu về kỹ thuật mạng Bayes và sử dụng mạng Bayes vào tối ưu hóa lập lịch cho bước lặp trong phát triển phần mềm linh hoạt.

 Triển khai giải thuật lập lịch theo hướng tiếp cận không sử dụng kỹ thuật mạng Bayes và sử dụng kỹ thuật mạng Bayes.

 Phân tích đánh giá các kết quả của các hướng tiếp cận

Bố cục luận văn

Luận văn được thực hiện thành 4 chương như sau:

Chương 1: Giới thiệu tổng quan về phát triển phần mềm linh hoạt (vấn đề phát triển, vấn đề rủi ro và các vấn đề lập lịch).

Chương 2: Giới thiệu về bài toán lập lịch bước lặp (định nghĩa, một số hướng tiếp cận giải quyết), CPM và kỹ thuật mạng Bayes.

Chương 3: Trình bày thuật toán giải quyết bài toán lập lịch bước lặp sử dụng

CPM và kỹ thuật mạng Bayes trong phát triển dự án phần mềm linh hoạt

Chương 4: Trình bày về dữ liệu thử nghiệm cho bài toán và đánh giá kết quả giữa lập lịch không sử dụng mạng Bayes và lập lịch sử dụng mạng Bayes.

TỔNG QUAN

Tổng quan về phát triển phần mềm linh hoạt

Phát triển phần mềm linh hoạt (agile software development – gọi tắt là agile) là một triết lí cùng với nhóm các phương pháp và phương pháp luận phát triển phần mềm dựa trên các nguyên tắc phát triển phân đoạn lặp (iterative) và tăng trưởng (incremental), theo đó nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng Agile thường sử dụng cách lập kế hoạch thích ứng (adaptive planning), việc phát triển và chuyển giao theo hướng tiến hóa, sử dụng các khung thời gian ngắn và linh hoạt để dễ dàng phản hồi lại với các thay đổi trong quá trình phát triển Ngày nay, triết lí Agile đã vƣợt xa khỏi khu vực truyền thống của mình là phát triển phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở các ngành khác nhƣ sản xuất, dịch vụ, bán hàng, quảng cáo, giáo dục[4]

Vào tháng Hai năm 2001, mười bảy nhà phát triển phần mềm đã gặp gỡ nhau ở Snowbird, Utah Resort để thảo luận về các phương pháp phát triển phần mềm gọn nhẹ và linh hoạt Họ đã cùng nhau công bố “Tuyên ngôn Phát triển phần mềm linh hoạt” (“Manifesto for Agile Software Development” – gọi tắt là “Tuyên ngôn Agile”) để định nghĩa cách hiểu về phát triển phần mềm linh hoạt Đây là cột mốc quan trọng của agile Dù trước đó, các phương pháp agile như XP, Scrum đã đƣợc sử dụng thành công ở rất nhiều nơi, nhƣng phải tới khi có sự xuất hiện của

“Tuyên ngôn Agile”, cùng với sự ra đời của các hiệp hội chuyên ngành agile nhƣ Agile Alliance hay Scrum Alliance, các phương pháp agile mới có một sự phát triển vƣợt bậc Văn bản này rất ngắn, dễ hiểu, và rất quan trọng vì nó đƣa ra các giá trị cốt lõi nhất mà toàn bộ các nhà lý thuyết cũng như những người thực hành agile tuân thủ, mặc dù các phương pháp họ đề xuất hoặc sử dụng trong thực tiễn có thể rất khác nhau Toàn văn tuyên ngôn agile nhƣ sau.[4]

Tuyên ngôn phát triển phần mềm linh hoạt

Chúng tôi đã phát hiện ra cách phát triển phần mềm tốt hơn bằng cách thực hiện nó và giúp đỡ người khác thực hiên Qua công việc này, chúng tôi đã đi đến việc đánh giá cao:

Cá nhân và sự tương tác hơn là quy trình và công cụ Phần mềm chạy tốt hơn là tài liệu đầy đủ

Cộng tác với khách hàng hơn là đàm phán hợp đồng

Phản hồi v ới các thay đổi hơn là bám sát kế hoạch

“Mặc dù các điều bên phải vẫn còn giá trị nhưng chúng tôi đánh giá cao hơn các mục ở bên trái”

Thuật ngữ "Agile" chính thức đƣợc sử dụng rộng rãi một cách thống nhất kể từ khi

“Tuyên ngôn Agile” đƣợc giới thiệu ra công chúng năm 2001 Nhờ tính linh hoạt, đa dạng và hiệu quả cao, các phương pháp agile ngày càng trở thành sự lựa chọn hàng đầu của các khách hàng, nhà phát triển, các công ty phát triển phần mềm Theo khảo sát của hãng nghiên cứu thị trường Forrester, mức độ phổ biến của agile hiện đang ở mức cao nhất, và gấp nhiều lần so với các phương pháp truyền thống như thác nước hay CMMI (xem hình 1).

Hình 1 Mức độ phổ biến các phương pháp

Bên cạnh đó, các nhà phát triển còn nhấn mạnh mười hai nguyên lý phía sau

“Tuyên ngôn Agile” để giúp các nhà phát triển có đƣợc gợi ý trong thực hành và vận dụng các phương pháp agile trong thực tiễn Các nguyên lý được liệt kê sau đây:

 Ƣu tiên cao nhất của chúng tôi là thỏa mãn khách hàng thông qua việc chuyển giao sớm và liên tục các phần mềm có giá trị.

 Chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong quá trình phát triển. Các quy trình linh hoạt tận dụng sự thay đổi cho các lợi thế cạnh tranh của khách hàng.

 Thường xuyên chuyển giao sản phẩm tới khách hàng, từ vài tuần đến vài tháng.

 Nhà kinh doanh và nhà phát triển phải làm việc cùng nhau hàng ngày trong suốt dự án.

 Tạo điều kiện xung quanh những cá nhân có động lực Cung cấp cho họ môi trường và sự hỗ trợ cần thiết, tin tưởng họ để hoàn thành công việc.

 Phương pháp hiệu quả nhất để truyền đạt thông tin tới nhóm phát triển và trong nội bộ nhóm phát triển là hội thoại trực tiếp.

 Phần mềm chạy tốt là thước đo chính của tiến độ.

 Các quy trình linh hoạt thúc đẩy phát triển bền vững Các nhà tài trợ, nhà phát triển, và người dùng có thể duy trì một nhịp độ liên tục không giới hạn.

 Liên tục quan tâm đến các kĩ thuật và thiết kế tốt để gia tăng sự linh hoạt.

 Sự đơn giản là nghệ thuật tối đa hóa lƣợng công việc.

 Các kiến trúc tốt nhất, yêu cầu tốt nhất, và thiết kế tốt nhất sẽ đƣợc làm ra bởi các nhóm tự tổ chức.

 Đội sản xuất sẽ thường xuyên suy nghĩ về việc làm sao để trở nên hiệu quả hơn, sau đó họ sẽ điều chỉnh và thay đổi các hành vi của mình cho phù hợp.

Các nguyên lý này, cùng với năm điểm cốt lõi trong "Tuyên ngôn Agile" sẽ dẫn đường cho các nhà thực hành agile (agile practictioner) vận dụng tốt các phương pháp agile vào thực tiễn Các nguyên lí này đƣợc Jeff Sutherland diễn giải chi tiết.

Có rất nhiều phương pháp agile với các hướng tiếp cận rất khác nhau Bên cạnh các cách thức tổ chức công việc, thiết lập quy trình, các phương pháp agile còn nghiên cứu và đƣa vào sử dụng các công cụ và kĩ thuật đặc thù nhƣ công cụ tích hợp liên tục (continuous integration), kiểm thử đơn vị, mẫu thiết kế, tái cấu trúc, phát triển hướng kiểm thử, phát triển hướng hành vi, hay lập trình theo cặp để đảm bảo và gia tăng tính linh hoạt Tuy vậy các phương pháp này chia sẻ nhiều đặc trưng giống nhau cộng tác nhóm chặt chẽ, tổ chức các nhóm tự quản, liên chức năng, tính đáp ứng cao trong suốt vòng đời của dự án.

Dự án sẽ đƣợc thực hiện trong các phân đoạn lặp đi lặp lại Các phân đoạn (đƣợc gọi là “Iteration” hoặc “Sprint”) này thường có khung thời gian ngắn (từ 1 đến 4 tuần) Trong mỗi phân đoạn này, nhóm phát triển thực hiện đầy đủ các công việc cần thiết nhƣ lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử (với các mức độ khác nhau) để cho ra các phần nhỏ của sản phẩm Các phương pháp agile thường phân rã mục tiêu thành các phần nhỏ với quá trình lập kế hoạch đơn giản và gọn nhẹ nhất có thể và không thực hiện việc lập kế hoạch dài hạn Các phương pháp như Scrum thậm chí sử dụng phương pháp lập kế hoạch “just in time” trong quá trình phát triển Khi đó, thậm chí công việc lập kế hoạch, làm mịn kế hoạch đƣợc thực hiện liên tục trong suốt quá trình làm việc.

1.1.4 Tính tiệm tiến (Incremental) và tiến hóa (Evolutionary)

Cuối các phân đoạn, nhóm phát triển thường cho ra các phần nhỏ của sản phẩm cuối cùng Các phần nhỏ này thường là đầy đủ, có khả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng ngay Theo thời gian, phân đoạn này tiếp nối phân đoạn kia, các phần chạy đƣợc này sẽ đƣợc tích lũy, lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng được thỏa mãn Khác với mô hình phát triển thác nước, vốn chỉ cho phép nhìn thấy toàn bộ các chức năng tại thời điểm kết thúc dự án, sản phẩm trong các dự án agile lớn dần lên theo thời gian, tiến hóa cho tới khi đạt đƣợc trạng thái đủ để phát hành.

1.1.5 Tính thích ứng (hay thích nghi – adaptive)

Do các phân đoạn chỉ kéo dài trong một khoảng thời gian ngắn và việc lập kế hoạch cũng đƣợc điều chỉnh liên tục nên các thay đổi trong quá trình phát triển (yêu cầu thay đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu v.v.) đều có thể được đáp ứng theo cách thích hợp Ví dụ, Scrum là phương pháp phổ biến nhất hiện nay thì trong khi nhóm phát triển sản xuất ra các gói phần mềm, khách hàng có thể đƣa thêm các yêu cầu mới, chủ sản phẩm (Product Owner) có thể đánh giá các yêu cầu này và có thể đƣa vào làm việc trong phân đoạn (đƣợc gọi là Sprint trong Scrum) tiếp theo Theo đó, các quy trình agile thường phải thích ứng rất tốt với các thay đổi.

1.1.6 Nhóm tự tổ chức và liên chức năng

Các vấn đề rủi ro trong phát triển phần mềm linh hoạt

Phát triển phần mềm linh hoạt là việc tăng sản phẩm đầu ra cả chất lƣợng và số lƣợng thông qua các bước lặp tăng trưởng và chỉ thực hiện được với các dự án tầm trung và đội phát triển dự án có thể bao quát đƣợc hết phạm vi của dự án phần mềm Việc không bao quát hết phạm vi dự án trong các mô hình phát triển phần mềm không riêng gì mô hình phát triển phần mềm linh hoạt đều là các rủi ro tiềm ẩn cho dự án Các rủi ro không đƣợc phát hiện để đƣa vào tính toán tính khả thi ban đầu cho dự án luôn là những điểm chính gây ra sự thất bại của các dự án Với các mô hình phát triển phần mềm như mô hình thác nước các rủi ro nếu không được phát hiện từ ban đầu sẽ gây thiệt hại lớn nếu dự án thất bại nghĩa là lúc mà rủi ro không thể xử lý thì ngân sách của dự án đã sử dụng quá nhiều Trong phát triển phần mềm linh hoạt thì các bước lặp tăng trưởng sẽ là bộ khung phát triển cho dự án Như vậy rủi ro của toàn dự án sẽ nằm ngay trong chính các bước lặp tăng trưởng cho dự án Điều này có nghĩa rằng chúng ta sẽ cần phải quản lý tốt rủi ro cho các bước lặp phát triển dự án Ngoài ra chúng ta cũng cần phải có một khung nhìn chặt chẽ cho tổng thể dự án với việc dự án sẽ hoàn thành sau khi các bước lặp dự án hoàn thành Để đảm bảo điều này thì sẽ cần một chiến lược phân định các bước lặp tăng trưởng của dự án bao gồm chi tiết hóa các sản phẩm đầu ra cho mỗi bước lặp (các chức năng, mức độ hoàn thành, các thành phần triển khai,…) Ngay chính chiến lược phân định cho các bước lặp tăng trưởng cũng đã tiềm ẩn những rủi ro không kiểm soát đƣợc mức độ gia tăng của số lƣợng cũng nhƣ chất lượng các yêu cầu cần được đáp ứng của dự án Có nhiều phương án để đảm bảo được chiến lược phân định cho các bước lặp là phù hợp và có thể kiểm soát được các bước lặp tăng trưởng đó là dựa vào các dự án trong lịch sử, đội chuyên gia kỹ thuật cho dự án bao quát đƣợc hết vấn đề công nghệ cho dự án,… Ngoài ra có thể coi một bước lặp tăng trưởng là một dự án và chúng ta sẽ phải quản lý các rủi ro cho bước lặp tăng trưởng một cách chặt chẽ Việc áp dụng mô hình phát triển phần mềm linh hoạt hiện nay có nhiều hướng như khung làm việc scrum,…cũng tiềm ẩn nhiều rủi ro đối với các tổ chức, đội ngũ khác nhau Các rủi ro đến với các đội ngũ chƣa có nhiều kinh nghiệm phát triển với mô hình linh hoạt, việc áp dụng chưa đúng các tư tưởng của phát triển phần mềm linh hoạt Đó là chƣa kể đến việc tổ chức đội ngũ chƣa thống nhất như khung làm việc scrum thì cần một người là scrum master, và trách nhiệm cũng như giới hạn của những người này đến đâu Những điều này đều là rủi ro từ việc tổ chức đội ngũ phát triển dự án chƣa phù hợp nhƣng quan trọng hơn cả là cần kiểm soát tốt rủi ro lập lich cho các nhiệm vụ của dự án Bởi lẽ mô hình phát triển phần mềm linh hoạt sẽ coi dự án là một tập các nhiệm vụ chuyên môn và việc hoàn thành các nhiệm vụ đồng nghĩa với dự án thành công.

Do vậy việc triển khai phát triển phần mềm theo mô hình phát triển phần mềm linh hoạt mang lại những ƣu điểm nhƣng cũng đồng thời có những rủi ro cần đƣợc phải làm rõ và quản lý tốt trước khi bắt tay vào phát triển dự án Các vấn đề rủi ro có thể nhìn nhận qua các phương diện sau:

 Thiếu tầm nhìn trong công nghệ

 Tiến độ dự án bị ảnh hưởng bởi các yếu tố khách quan

 Lịch trình thực hiện dự án cũng như các vòng lặp tăng trưởng mơ hồ

 Các rủi ro tiềm ẩn về tài nguyên con người

 Sự mất cân đối giữa phân bổ chi phí tài chính cho các vòng lặp tăng trưởng trong việc phát triển phần mềm

 Thiếu hiệu quả trong việc tổ chức áp dụng các mô hình phát triển linh hoạt nhƣ scrum.

Trong chương I luận văn đã trình bày tổng quan cơ bản về phát triển phần mềm linh hoạt còn gọi là “Agile Software Development” Những khái niệm đƣợc trình bày trong chương I là những kiến thức nền tảng cơ bản trong phát triển phần mềm linh hoạt Các tính chất đưa ra là đặc trưng cho các bước lặp tăng trưởng mà sau đây sẽ xem xét đến.

VẤN ĐỀ LẬP LỊCH BƯỚC LẶP VÀ KỸ THUẬT MẠNG BAYES

Vấn đề lập lịch bước lặp trong phát triển phần mềm linh hoạt

Trong quản lý dự án vấn đề lập kế hoạch và lập lịch dự án là rất quan trọng Kế hoạch tốt giúp các khâu tiếp theo thực hiện và đóng dự án dễ dàng hơn Việc lập lịch có thể sẽ phải chỉnh sửa lại nhiều lần tại các thời điểm khác nhau của dự án, việc điều chỉnh này do sự thay đổi các nhân tố nhƣ thay đổi về nguồn lực thực hiện dự án (nhân viên ốm, nhân viên nghỉ việc…), do các thay đổi từ phía khách hàng như khách hàng yêu cầu thay đổi tính năng sản phẩm Nếu như áp dụng đươc các thuật toán vào khâu lập kế hoạch, lập lịch nhằm tự động hóa đƣợc việc lập kế hoạch sẽ giảm bớt đƣợc sự sai sót và tăng hiệu quả của việc lập kế hoạch.

Phát triển phần mềm linh hoạt đòi hỏi một lịch trình cụ thể cho các bước lặp tăng trưởng tương ứng với các khối lượng công việc cần hoàn thành để đáp ứng các giai đoạn phát triển Bởi vì chính các bước lặp giai đoạn phải đảm bảo sự tăng trưởng của dự án đến tay người dùng, để càng ngày đầu ra của dự án càng gần những gì người dùng hay khách hàng mong muốn Điều này đòi hỏi nhà quản lý dự án cần có một cái nhìn rõ ràng về lịch trình phát triển dự án và có một sự chi tiết hóa việc lập lịch cho các vòng lặp tăng trưởng trong việc áp dụng mô hình phát triển phần mềm linh hoạt để thực hiện dự án Nhƣ vậy điều quan trọng là nhà quản lý dự án cần phải phân tích và đƣa ra đƣợc cụ thể các nhiệm vụ chuyên môn cần thực hiện để hoàn thành dự án Điều này đòi hỏi nhà quản lý và đội phát triển cần có kinh nghiệm từ những dự án họ đã trải qua để có thể đƣa ra đƣợc hết những nhiệm vụ đó Sau khi có hết những nhiệm vụ cần thực hiện thì nhà quản lý dự án cần phải có một chiến lƣợc để gom nhóm các nhiệm vụ vào các bước lặp tăng trưởng Điều này đối với những dự án nhỏ với đầu việc chỉ tầm dưới 20 thì người quản lý có thể lập lịch bằng tay Nhưng đối với những dự án mà đầu việc lên con số 100 thì mọi chuyện hoàn toàn khác Lúc này đòi hỏi cần có một chương trình trợ giúp lập lịch cho các nhiệm vụ để giúp nhà quản lý có đƣợc lịch trình cho các vòng lặp Nhƣng với các lịch trình đƣa ra sẽ có đảm bảo sau khi hoàn thành thì các sản phẩm cuối của dự án là các sản phẩm thực sự mong muốn Ngoài ra thứ tự thực hiện các nhiệm vụ trong các bước lặp phải đảm bảo một quy trình phát triển, không đƣợc chồng chéo nhau và phải có độ ƣu tiên thứ tự thực hiện từ đầu.

2.1.1 Khái niệm về lập kế hoạch

Kế hoạch là bản dự kiến công việc cần làm (cái gì?), thứ tự thực hiện (tiến trình?), thời gian (khi nào? bao lâu?), phương tiện dùng (cái gì? bao nhiêu?), người làm (ai?), sản phẩm ra (cái gì?) và tiêu chí đánh giá (chất lƣợng?) Kế hoạch là công việc lặp đi lặp lại trong suốt quá trình dự án Có rất nhiều kế hoạch cần lập để quản trị dự án.[14]

Lập kế hoạch là chức năng rất quan trọng đối với mỗi nhà quản lý bởi vì nó gắn liền với việc lựa chọn mục tiêu và chương trình hành động trong tương lai, giúp nhà quản lý xác định đƣợc các chức năng khác còn lại nhằm đảm bảo đạt đƣợc các mục tiêu đề ra.

Như vậy, lập kế hoạch là quá trình xác định các mục tiêu và lựa chọn các phương thức để đạt đƣợc các mục tiêu đó Lập kế hoạch nhằm mục đích xác định mục tiêu cần phải đạt được là cái gì? và phương tiện để đạt được các mục tiêu đó như thế nào? Tức là, lập kế hoạch bao gồm việc xác định rõ các mục tiêu cần đạt đƣợc, xây dựng một chiến lƣợc tổng thể để đạt đƣợc các mục tiêu đã đặt ra, việc triển khai một hệ thống các kế hoạch để thống nhất và phối hợp các hoạt động.[14]

2.1.2 Vai trò của lập kế hoạch trong quản lý dự án

Trong một doanh nghiệp hay một tổ chức thì lập kế hoạch là khâu đầu tiên, là chức năng quan trọng của quá trình quản lý và là cơ sở để thúc đẩy hoạt động sản xuất kinh doanh có hiệu quả cao, đạt đƣợc mục tiêu đề ra.

Các nhà quản lý cần phải lập kế hoạch bởi vì lập kế hoạch cho biết phương hướng hoạt động trong tương lai, làm giảm sự tác động của những thay đổi từ môi trường, tránh đƣợc sự lãng phí và dƣ thừa nguồn lực và thiết lập nên những tiêu chuẩn thuận tiện cho công tác kiểm tra Hiện nay, trong cơ chế thị trường có thể thấy lập kế hoạch có các vai trò to lớn đối với các doanh nghiệp Bao gồm các vấn đề sau:[14]

- Kế hoạch là một trong những công cụ có vai trò quan trọng trong việc phối hợp nỗ lực của các thành viên trong một doanh nghiệp Lập kế hoạch cho biết mục tiêu và cách thức đạt đƣợc mục tiêu của doanh nghiệp Khi tất cả nhân viên trong cùng một doanh nghiệp biết đƣợc doanh nghiệp mình sẽ đi đâu và họ sẽ cần phải đóng góp gì để đạt đƣợc mục tiêu đó thì chắc chắn họ sẽ cùng nhau phối hợp, hợp tác và làm việc một cách có tổ chức.

- Lập kế hoạch có tác dụng làm giảm tính bất ổn định của doanh nghiệp, hay tổ chức Sự bất ổn định và thay đổi của môi trường làm cho công tác lập kế hoạch trở thành tất yếu và rất cần thiết đối với mỗi doanh nghiệp, mỗi nhà quản lý Lập kế hoạch buộc những nhà quản lý phải nhìn về phía trước, dự đoán được những thay đổi trong nội bộ doanh nghiệp cũng như môi trường bên ngoài và cân nhắc các ảnh hưởng của chúng để đưa ra những giải pháp ứng phó thích hợp.

- Lập kế hoạch làm giảm đƣợc sự chồng chéo và những hoạt động làm lãng phí nguồn lực của doanh nghiệp Khi lập kế hoạch thì những mục tiêu đã được xác định, những phương thức tốt nhất để đạt mục tiêu đã đƣợc lựa chọn nên sẽ sử dụng nguồn lực một cách có hiệu quả, cực tiểu hoá chi phí bởi vì nó chủ động vào các hoạt động hiệu quả và phù hợp.

- Lập kế hoạch sẽ thiết lập đƣợc những tiêu chuẩn tạo điều kiện cho công tác kiểm tra đạt hiệu quả cao Một doanh nghiệp hay tổ chức nếu không có kế hoạch thì giống nhƣ là một khúc gỗ trôi nổi trên dòng sông thời gian Một khi doanh nghiệp không xác định đƣợc là mình phải đạt tới cái gì và đạt tới bằng cách nào, thì đương nhiên sẽ không thể xác định đựợc liệu mình có thực hiện đƣợc mục tiêu hay chƣa, và cũng không thể có đƣợc những biện pháp để điều chỉnh kịp thời khi có những lệch lạc xảy ra Do vậy, có thể nói nếu không có kế hoạch thì cũng không có cả kiểm tra.

Nhƣ vậy, lập kế hoạch quả thật là quan trọng đối với mỗi doanh nghiệp, mỗi nhà quản lý Nếu không có kế hoạch thì nhà quản lý có thể không biết tổ chức, khai thác con người và các nguồn lực khác của doanh nghiệp một cách có hiệu quả, thậm chí sẽ không có được một ý tưởng rõ ràng về cái họ cần tổ chức và khai thác Không có kế hoạch, nhà quản lý và các nhân viên của họ sẽ rất khó đạt đƣợc mục tiêu của mình, họ không biết khi nào và ở đâu cần phải làm gì.

Còn đối với mỗi cá nhân chúng ta cũng vậy, nếu chúng ta không biết tự lập kế hoạch cho bản thân mình thì chúng ta không thể xác định đƣợc rõ mục tiêu của chúng ta cần phải đạt tới là gì, với năng lực của mình thì chúng ta cần phải làm gì để đạt đƣợc mục tiêu đó Không có kế hoạch chúng ta sẽ không có những thời gian biểu cho các hoạt động của mình, không có đƣợc sự nỗ lực và cố gắng hết mình để đạt đƣợc mục tiêu Vì thế mà chúng ta cứ để thời gian trôi đi một cách vô ích và hành động một cách thụ động trước sự thay đổi của môi trường xung quanh ta Vì vậy mà việc đạt đƣợc mục tiêu của mỗi cá nhân ta sẽ là không cao, thậm chí còn không thể đạt đƣợc mục tiêu mà mình mong muốn.

Tóm lại, chức năng lập kế hoạch là chức năng đầu tiên, là xuất phát điểm của mọi quá trình quản lý Bất kể là cấp quản lý cao hay thấp, việc lập ra đƣợc những kế hoạch có hiệu quả sẽ là chiếc chìa khoá cho việc thực hiện một cách hiệu quả những mục tiêu đã đề ra của doanh nghiệp.

Khi lập kế hoạch bộ phận chịu trách nhiệm lập kế hoạch cần phải quan tâm đến các nguồn lực phục vụ cho dự án để lập kế hoạch đƣợc chi tiết và bám sát thực tế Các nguồn lực phục vụ dự án bao gồm:

Một số hướng tiếp cận giải quyết vấn đề lập lịch bước lặp

Lập lịch bước lặp hay lập lịch cho dự án thì đều phải đảm bảo các tiêu chí đạt được của lịch trình đề ra như khối lương các công việc phát triển, triển khai cần được hoàn thành ỏ mức độ nào, do vậy các phương pháp tiếp cận để giải quyết vấn đề lập lịch bước lặp hay lập lịch cho dự án có thể điểm qua một số hướng tiếp cận kinh điển sau, trong luận văn này chỉ điểm qua một số tính chất chính của phương pháp và ƣu nhƣợc điểm.

2.2.1 Phương pháp sơ đồ Gantt

Phương pháp sơ đồ Gantt là kỹ thuật quản trị tiến trình và thời gian các hoạt động (công việc) của dự án trên trục tọa độ 2 chiều, trong đó trục hoành biểu diễn thời gian thực hiện hoạt động, trục tung biểu diễn trình tự tiến hành các hoạt động.

Mục đích của sơ đồ Gantt là xác định một tiến độ hợp lý nhất để thực hiện các công việc khác nhau của dự án Tiến độ này tùy thuộc vào độ dài của công việc, những điều kiện ràng buộc và kỳ hạn phải tuân thủ.[1] Ƣu điểm:

 Phương pháp sơ đồ Gantt dễ đọc, dễ xây dựng, do đó nó được sử dụng khá phổ biến.

 Thông qua biểu đồ có thể nắm đƣợc tình hình thực hiện các công việc nhanh hay chậm và tính liên tục của chúng.

 Biểu đồ thường có một số ký hiệu riêng để nhấn mạnh những mốc thời gian quan trọng, những vấn đề liên quan đặc biệt đến các công việc.

 Gantt không phù hợp với các dự án phức tạp, có số lƣợng công việc nhiều.

 Khó nhận biết công việc nào tiếp theo công việc nào, khi biểu đồ phản ánh quá nhiều công việc liên tiếp nhau.

 Điều chỉnh biểu đồ khó khăn, phức tạp.

2.2.2 Phương pháp sơ đồ PERT

Phương pháp sơ đồ PERT (kỹ thuật ước lượng và đánh giá chương trình, hay kỹ thuật ước lượng và kiểm tra dự án): là phương pháp áp dụng kết hợp giữa lý thuyết xác suất thống kê (để ƣớc tính thời lƣợng công việc trong các dự án mà công việc có thời lượng không xác định trước), với dạng sơ đồ mạng đường găng sử dụng lý thuyết đồ thị [1]

Các bước thực hiện để tính thời gian hoàn thành dự án có xét đến các yếu tố ngẫu nhiên sau:

 Tính thời gian thực hiện công việc to.

 Xác định công việc găng và đường găng ứng với thời gian thực hiện công việc là to

 Xác định khả năng hoàn thành dự án trong thời gian mong muốn.

Thời gian kỳ vọng thực hiện công việc t o :

 a: Thời gian lạc quan là thời gian ƣớc lƣợng ít nhất để hoàn thành công việc trong những điều kiện thuận lợi nhất.

 b: Thời gian bi quan là thời gian ƣớc lƣợng lớn nhất để hoàn thành công việc trong điều kiện khó khăn nhất.

 m: Thời gian hiện thực là thời gian ƣớc lƣợng để hoàn thành công việc có nhiều khả năng xảy ra nhất (với xác suất lớn nhất).

Phương sai của thời gian thực hiện công việc t o : Ƣu điểm:

 Ưu điểm lớn nhất là việc sử dụng phương pháp thời gian biến đổi nên phạm vi ứng dụng rộng rãi hơn, linh hoạt hơn.

 Thấy rõ công việc nào là chủ yếu, có tính chất quyết định đối với tổng tiến độ của dự án để tập trung chỉ đạo.

 Đòi hỏi nhiều kỹ thuật để lập và sử dụng.

 Khi khối lƣợng công việc của dự án lớn, việc lập sơ đồ này trở nên khá phức tạp và khó quan sát.

2.2.3 Phương pháp đường Găng (Critical Path Method – CPM)

Phương pháp đường găng là phương pháp mà cốt lõi của nó là dùng lý thuyết đồ thị có hướng để xác định đường đi trong mạng, từ thời điểm khởi công dự án đến thời điểm kết thúc dự án, qua một số các công việc và các mối quan hệ giữa các công việc này, có chiều dài lớn nhất Chiều dài đường găng cũng chính là tổng thời gian thực hiện toàn bộ dự án [1]

CPM bao gồm các bước sau:

 Xác định các công việc (nhiệm vụ) cần thực hiện dự án.

 Xác định mối quan hệ và trình tự thực hiện các công việc.

 Vẽ sơ đồ mạng công việc.

 Tính toán thời gian và chi phí cho từng công việc dự án.

 Xác định thời gian dự trữ của các công việc và sự kiện.

 Xác định đường Găng (tức là chuỗi công việc dài nhất trong các chuỗi công việc nối từ sự kiện đầu đến sự kiện cuối).

Các công việc nằm trên đường Găng gọi là “Công việc Găng” Thời gian của đường Găng cũng là thời gian hoàn thành dự án hoặc là thời gian xây dựng công trình Trong sơ đồ mạng thường có một đường Găng nhưng cũng có thể có nhiều đường Găng, thậm chí tất cả các công việc đều Găng.

Xét một sơ đồ mạng với thông số thời gian của từng công việc đã đƣợc ghi trên đó nhƣ sau:

Hình 3 Sơ đồ mạng công việc

Các đường đi từ (1) đến (8): ADHK = 20, BEHK = 19, BFIK = 21, CGIK = 15. Vậy đường Găng là đường đi có độ dài lớn nhất BFIK = 21 (các công việc B, F, I,

K đƣợc gọi là các công việc găng).

Trên thực tế, đường Găng đóng vai trò hết sức quan trọng trong tiến độ quản lý dự án vì: Trong bất kỳ lĩnh vực hoạt động nào nguyên tắc quan trọng để giải quyết tốt nhiệm vụ phức tạp là phải nắm vững những công việc chủ yếu, quan trọng Đường Găng bao gồm những công việc chủ yếu, quan trọng đó Trong quản lý dự án, xác định đường Găng trên cơ sở tính toán, tức là tìm ra trong số những công việc phải hoàn thành, những công việc nào quan trọng, là then chốt mà nếu hoàn thành đƣợc nó thì toàn bộ kế hoạch dự án cũng đƣợc hoàn thành. Ƣu điểm:

 Sử dụng phương pháp này tốn nhiều công sức hơn sơ đồ Gantt, nhưng lại cung cấp nhiều thông tin chi tiết cần thiết cho việc quản lý dự án một cách có hiệu quả Nó đòi hỏi chia nhỏ dự án ra thành nhiều hoạt động xác định đƣợc và liên hệ các hoạt động này với nhau theo một trật tự logic và chi tiết hơn nhiều so với sơ đồ Gantt.[1]

 Đây là công cụ hữu hiệu để xây dựng lịch thực hiện chung cho toàn bộ dự án, cũng nhƣ cho từng công việc cụ thể, chi tiết.

 Cung cấp mối quan hệ tương hỗ giữa các hoạt động và lịch trình sử dụng kinh phí và các nguồn lực khác.

 Đòi hỏi có những mô tả rõ mối quan hệ giữa các hoạt động.

Trong phương pháp CPM, sử dụng thời gian xác định, điều đó trong thực tế chƣa hẳn đã đúng Bởi trên thực tế có rất nhiều dự án bị chi phối bởi các điều kiện khách quan cũng nhƣ chủ quan, khiến cho thời gian cũng nhƣ nhiều yếu tố khác của dự án không ổn định Ta chỉ có thể ƣớc lƣợng nó trong khoảng nào đó hợp lý Vì vậy, phương pháp CPM được sử dụng nhiều trong giai đoạn đầu của quản lý dự án vì tính hiệu quả, đơn giản [1]Như vậy cả ba phương pháp trên để có thể sử dụng vào lập lịch đều phải thực hiện các tính toán nhất định trong khâu triển khai.

Kỹ thuật mạng Bayes

2.3.1 Định nghĩa mạng Bayes (BNs)

Một mạng Bayes là một đồ thị có hướng không chứa chu trình mà trong đó:

 Các nút biểu diễn các biến

 Các cạnh biểu diễn các quan hệ phụ thuộc giữa các biến và phân phối xác suất cho mỗi giá trị nếu cho trước giá trị của các cha của nó.

Nếu có một cạnh từ nút A tới nút B, thì biến B phụ thuộc trực tiếp vào biến A, và A đƣợc gọi là cha của B Nếu với mỗi biến X i , { tập hợp các biến cha đƣợc ký hiệu bởi parents(X i ), thì phân phối có điều kiện phụ thuộc của các biến là tích của các phân phối địa phương [12]

Nếu Xi không có cha, ta nói rằng phân phối xác suất của nó là không có điều kiện, ngƣợc lại thì gọi là có điều kiện Nếu biến đƣợc biểu diễn bởi một nút đƣợc quan sát, thì ta nói rằng nút đó là một chứng cứ.

Hình 4 Mô hình minh họa mạng Bayes Định lý Bayes điều chỉnh các xác suất khi đƣợc cho bằng chứng mới theo cách sau đây [6]:

| | Định lý Bayes cũng thường được viết dưới dạng:

 đại diện cho một giả thuyết, gọi là một giả thuyết khôn, giả thuyết này được suy luận trước khi có được bằng chứng mới đƣợc gọi là xác suất tiềm nghiệm của

| đƣợc gọi là xác suất điều kiện của việc quan sát thấy bằng chứng nếu biết rằng giả thuyết là đúng Đại lƣợng này còn đƣợc gọi là hàm khả năng khi nó được biểu diễn dưới dạng một hàm của khi cho trước đƣợc gọi là xác suất biên của : xác suất của việc chứng kiến bằng chứng mới dưới tất cả các giả thuyết loại trừ nhau đôi một.

| đƣợc gọi là xác suất hậu nghiệm của nếu biết

Ví dụ về Bayesian Networks:

Một người đi làm về và muốn dự đoán xem ở nhà có người không thông qua một số dấu hiệu có thể quan sát đƣợc Cho biết một số dữ liệu sau:

Nếu cả nhà đi vắng thì thường bật đèn ngoài sân Tuy nhiên, đèn ngoài sân có thể được bật trong một số trường hợp có người ở nhà, ví dụ khi có khách đến chơi.

- Nếu cả nhà đi vắng thì thường buộc chó ở sân sau.

- Tuy nhiên chó có thể được buộc ở sân sau cả khi có người ở nhà nếu như chó bị đau bụng.

- Nếu chó buộc ở ngoài thì có thể nghe tiếng chó sủa, tuy nhiên có thể nghe tiếng sủa của chó hàng xóm kể cả khi chó không buộc ở ngoài.

Trước tiên, cần xây dựng mô hình xác suất Ta sẽ sử dụng 5 biến ngẫu nhiên sau để thực hiện các dữ kiện liên quan đến bài toàn.

O: không ai ở nhàL: đèn sangD: chó ở ngoàiB: chó bị ốmH: nghe thấy tiếng sủaViệc phân tích bài toán cho thấy:

- Nếu biết D thì H không phụ thuộc vào O, L, B.

- Nếu biết B thì D độc lập với O.

- O và B độc lập với nhau.

Tiếp theo, ta xây dựng một đồ thị, trong đó mỗi biến ngẫu nhiên ở trên đƣợc biểu diễn bởi một nút như trên hình vẽ dưới đây Các nút được nối với nhau bằng những cung có hướng sao cho hai nút có quan hệ phụ thuộc được nối bởi một cung và hướng của cung thể hiện chiều tác động của nút gốc tới nút đích.

Hình 5 Ví dụ về Bayes Networks

Sau khi có đồ thị, ta thêm vào bảng xác suất điều kiện Bảng xác suất điều kiện thể hiện xác suất của biến khi biết giá trị cụ thể của các biến ở các nút cha Trong trường hợp nút không có cha, xác suất trở thành xác suất tiền nghiệm Để thuận tiện, bảng xác suất điều kiện đƣợc thể hiện ngay trên hình vẽ cùng với đồ thị. Đồ thị vừa xây dựng cùng với các bảng xác suất điều kiện tạo thành mạng Bayes cho bài toán trong ví dụ trên.

2.3.2 Cách xây dựng mạng Bayes

Quá trình xây dựng mạng Bayes bao gồm việc xác định tất cả các biễn ngẫu nhiên liên quan, xác định cấu trúc đồ thị của mạng và cuối cùng là xác định giá trị cho các bảng xác suất điều kiện Trong phần này coi nhƣ đã có biến ngẫu nhiên, việc xây dựng mạng chỉ bao gồm xác định cấu trúc và bảng xác suất điều kiện Có 2 cách tiếp cận chính để xây dựng mạng Bayes:

- Cách thứ nhất do con người (chuyên gia) thực hiện dựa trên hiểu biết của mình về bài toán đang xét Việc xây dựng mạng được chia thành hai bước: xác định cấu trúc đồ thị và điền giá trị cho bảng xác suất điều kiện.

- Cách thứ hai là tự động xác định cấu trúc và xác suất điều kiện từ dữ liệu Ở đây, dữ liệu có dạng giá trị các biến ghi nhận đƣợc trong quá khứ.

Các bước xây dựng mạng Bayes được thực hiện như sau:

 B1: Xác định các biến ngẫu nhiên cho phép mô tả miền của bài toán.

 B2: Sắp xếp các biến theo một thứ tự nào đó Ví dụ theo thứ tự sau: X1,

 B3: For i = 1 to n do a Thêm một nút mới Xi vào mạng b Xác định tập Cha_me (Xi) là tập nhỏ nhất các nút đã có trước đó sao cho Xi độc lập có điều kiện với tất cả nút còn lại khi biết cha mẹ của

Xi. c Với mỗi nút thuộc tập Cha_me (Xi) Ta thêm một cạnh có hướng từ nút đó tới Xi. d Xác định bảng xác suất điều kiện cho Xi theo các giá trị của Cha mẹ hoặc bằng xác suất tiền nghiệm nếu Xi không có Cha mẹ.

Sau khi đã có cấu trúc mạng, chuyên gia sẽ xác định giá trị cho các bảng xác suất điều kiện Thông thường, việc xác định giá trị xác suất điều kiện khó hơn nhiều so với việc xác định cấu trúc mạng, tức là xác định quan hệ giữa các nút.

Mô hình Bayesian Critical Path Method (BCPM)

Xét một dự án xây dựng X với các hoạt động và thời gian hoàn thành đƣợc trình bày trong bảng 2 sau:

Hoạt động Hoạt động ngay trước Thời gian (tuần)

Bảng 2 Thời gian và hoạt động của dự án

Biểu diễn hoạt động của dự án

Xây dựng các hoạt động trong dự án bằng cách sử dụng cấu trúc phân chia các công việc của dự án thành các công việc nhỏ hơn (WBS: Work Break-down Structure) Và các hoạt động sẽ diễn ra liên tục, có 2 loại kiểu biểu diễn:

- Phương pháp AON (Activity On Node): là phương pháp mô tả mạng công việc bằng kỹ thuật “Đặt công việc trong các nút”.

- Phương pháp AOA (Activity On Arrow): là phương pháp mô tả mạng công việc bằng kỹ thuật “Đặt công việc trên mũi tên”.

Vì thực ra việc phân chia các công việc là để làm rõ các hoạt động, và trên cơ bản 2 cách phân chia trên đều cho kết quả cơ bản là giống nhau Nên trong luận văn này chọn cách tiếp cận AON, vì sự đơn giản của nó và nó cũng xuất hiện trong hầu hết các phần mềm quản lý dự án.

Hình 8 Sơ đồ AON và sơ đồ AOA

Các hoạt động sắp xếp theo thứ tự ƣu tiên và đƣợc mô hình hóa Mỗi hoạt động quy định bởi 5 tham số chính: thời gian, thời gian bắt đầu sớm, thời gian kết thúc sớm, thời gian bắt đầu muộn, thời gian kết thúc muộn.

Kết hợp giữa CPM và BNs

Tương tự, trong BCPM các khối dùng để mô tả và xây dựng quan hệ cũng là các

“hoạt động” Trong hình 9 cho thấy một mô hình sơ đồ của đoạn BNs gắn liền với một hoạt động Mỗi hoạt động trong mạng CPM đƣợc ánh xạ đến 5 nút trong BNs, đại diện cho các thông số thời gian của các hoạt động nhƣ sau:

- D (Duration): Thời gian thực hiện hoạt động.

- ES (Earliest Start): Thời gian sớm nhất để hoạt động có thể bắt đầu.

- EF (Earliest Final): Thời gian sớm nhất để hoạt động có thể kết thúc.

- LF (Latest Final): Thời gian muộn nhất mà hoạt động phải kết thúc.

- LS (Latest Start): Thời gian muộn nhất mà hoạt động phải bắt đầu.

Thời gian thực hiện hoạt động

LF Hoạt động kế thừa

Hình 9 Sơ đồ của đoạn BNs gắn với một hoạt động

Bảng tóm tắt các thuộc tính cho tất cả các nút trên:

Nút Kiểu NPT (bảng xác suất điều kiện)

ES Số Max{EFj}(j: hoạt động đứng trước)

LF Số Min{LSj}(j: hoạt động kế tiếp)

Bảng 3 Tóm tắt các thuộc tính cho mô hình BCPM

Các bước giải quyết bài toán

Bước 1: Giải bài toán theo chiều xuôi dòng với thời gian bắt đầu sớm (ESi) và thời gian kết thúc sớm (EFi) cho mỗi hoạt động:

- Thời gian bắt đầu sớm của hoạt động i: ESi

+Hoạt động đầu tiên: ESi = 0.

+Hoạt động 1 phụ thuộc: ESismall>j (j < i) (j là hoạt động đứng trước).

+Hoạt động nhiều phụ thuộc: ESi = Max{EFj} mọi j < i.

- Thời gian kết thúc sớm của hoạt động i: EFi = ESi + Di

Bước 2: Giải bài toán theo chiều ngƣợc dòng với thời gian kết thúc muộn (LFi) và thời gian bắt đầu muộn (LSi) cho mỗi hoạt động:

- Thời gian kết thúc muộn của hoạt động i: LFi

+Hoạt động cuối cùng: LFi = EFi hoặc LFi = Max{EFi} +Hoạt động có 1 tác động: LFi = LSj (i < j) (j là hoạt động bị tác động) +Hoạt động có nhiều tác động: LFi=Min{LSj} mọi j>i

- Thời gian bắt đầu muộn của hoạt động i: LSi = LFi - Di Áp dụng bước 1 và bước 2, ta có sơ đồ mạng dự án sau:

Hình10 Sơ đồ mạng dự án

Bước 3: Hình thành bảng lịch trình hoạt động

- Thời gian dự trữ chính là thời gian một hoạt động có thể chậm trễ mà không làm tăng thời gian hoàn thành của dự án Thời gian dự trữ của hoạt động i đƣợc tính theo công thức sau: Si = LSi - ESi = LFi - EFi (S: Slack)

- Hoạt động găng là hoạt động có Si = 0

- Đường găng là đường nối các hoạt động găng và là đường liên tục

- Thời gian hoàn thành dự án T = ∑ i(i là hoạt động nằm trên đường găng) Áp dụng bước 3, ta có bảng lịch trình hoạt động của dự án:

Hoạt động ES LS EF LF Slack Đường găng

Bảng 4 Lịch trình hoạt động của dự án X

Vậy thời gian hoàn thành dự án là 20 tuần.

Mô hình tổng quát cho quá trình diễn ra của dự án theo các hoạt động A, B, C, D, Ex:

Ví dụ trên cho thấy cách thức mà một CPM đƣợc ánh xạ vào BNs Mô hình này cung cấp phân phối xác suất cho các thông số thời gian của tất cả các hoạt động của dự án Quan trọng hơn cả là có thể tận dụng đƣợc lợi thế của BNs trong việc hạn chế rủi ro của dự án Cung cấp phương pháp mạnh mẽ cho việc xây dựng kế hoạch cho dự án.

2.6 Sử dụng BCPM để ƣớc lƣợng thời gian

Mô hình tổng quan hoạt động trong dự án

Trong các dự án lớn và phức tạp đội ngũ phát triển dự án sẽ bắt gặp rất nhiều trường hợp các hoạt động tương tự nhau Một hoạt động nguyên mẫu là đại diện của các hoạt động tương tự nhau Nó bao gồm các thuộc tính của một loạt các hoạt động Trong thực tế, sử dụng các hoạt động nguyên mẫu có thể làm giảm chi phí về thời gian, công sức và tiền bạc Các hoạt động dự án thực tế sau đó có thể đƣợc coi là biến thể của các hoạt động thử nghiệm Nó có thể chọn 1 loạt các hoạt động nguyên mẫu với các cấu trúc khác nhau để bao quát mô hình đa dạng và phạm vi rộng lớn trong toàn dự án Một thƣ viện các mô hình nguyên mẫu nhƣ vậy, một khi đã tạo và có cấu trúc, có thể hình thành cơ sở cho việc phân tích các hoạt động trong các dự án tương tự.

Các “Duration Model” trong phần này đƣợc thiết kế để mô hình một hoạt động tổng quát Ý tưởng quan trọng ở đây là xây dựng quá trình phân tích các hoạt động nguyên mẫu và tìm hiểu logic cơ bản của mô hình.

Hình 12 cho thấy mạng lưới tổng thể để mô hình hóa các nguồn khác nhau trong thời gian hoạt động nguyên mẫu Logic và cấu trúc của từng thành phần mô hình đƣợc giải thích trong phần sau.

Mô hình đánh đổi Ước lượng

Các nhân tố bất ngờ

Sự điều chỉnh các nhân tố

Thời gian đã điều chỉnh

Hình 12 Thời gian hoạt động nguyên mẫu của BNs

Sự thay đổi liên quan đến thời gian, chi phí, chất lƣợng là khía cạnh rõ ràng của việc xây dựng kế hoạch cụ thể cho dự án Nói cách khác, sự thay đổi của dự án liên quan với thời gian và chi phí Ví dụ, nếu hỏi để ƣớc tính xác suất của sự chậm trễ trong một hoạt động cụ thể của một dự án, một người quản lý có thể phản ứng bằng cách đấu tranh mà xác suất nhƣ vậy có thể đƣợc giảm xuống gần nhƣ bằng không, nếu không có giới hạn về chi phí của hoạt động Thời gian thực hiện hoạt động có thể đƣợc xem nhƣ là một tài nguyên sẵn có Ví dụ, bằng cách sử dụng thiết bị hiệu quả hơn hay thuê thêm lao động có thể tiết kiệm thời gian, nhƣng chi phí trực tiếp của dự án có thể tăng lên.

Khả năng của BNs trong việc định lƣợng phụ thuộc vào điều kiện giữa các biến,cung cấp một cách đơn giản nhƣng hợp lý cho mô hình hóa sự thay đổi của các thông số hoạt động Ví dụ, hình 13 cho thấy một đại diện của “Mô hình đánh đổi” giữa thời gian thực hiện hoạt động và mức độ yêu cầu / tài nguyên sẵn có Các thuộc tính của các nút đƣợc tóm tắt trong bảng 5.

Tài nguyên Ước lượng ban đầu

Hình 13 Mô hình đánh đổi Điểm đánh giá Kiểu Trạng thái NPT Ƣớc lƣợng Khoảng thời Khoảng Một điểm ban đầu gian liên tục biến thiên (0, ∞) đánh giá đơn

Cực thấp, thấp, Phân phối xác suất Tài nguyên Đã sắp xếp trước cao, cực cao rời rạc

Khoảng Khoảng Biểu thức chia

Thời gian thời gian liên tục biến thiên (0, ∞)

Bảng 5 Các thuộc tính của mô hình đánh đổi Ý tưởng ở đây là giá trị có khả năng nhất của thời gian thực hiện các hoạt động có thể đƣợc ƣớc tính bằng các thông tin tối thiểu (tức là chủ quan hoặc dựa trên dữ liệu sẵn có) Điều này đƣợc mô hình hóa bởi điểm “Ước lượng ban đầu” trong hình 13. Điểm “Tài nguyên” (trong hình 13) đại diện cho mức độ yêu cầu/ tài nguyên cần thiết, trực tiếp ảnh hưởng đến thời gian thực hiện hoạt động. Điểm “Thời gian” kết hợp giữa “Ước lượng ban đầu” và “Tài nguyên” “Thời gian” là một nút thể hiện khoảng thời gian liên tục với một phân bố hình tam giác.

NPT của nó là một "biểu hiện phân chia", nghĩa là hàm phân bố xác suất khác nhau tùy thuộc vào trạng thái của các nút “Tài nguyên” nhƣ trong bảng 6 Các giá trị cao, thấp và trung bình của hàm phân phối có thể đƣợc định nghĩa một cách thích hợp.

Cực thấp Tam giác(1.4×IE,1.8×IE,2.5×IE)

Thấp Tam giác (1×IE,1.3×IE,1.5×IE)

Trung bình Tam giác (0.9×IE,1×IE,1.2×IE)

Cao Tam giác (0.8×IE,0.9×IE,1×IE)

Cực cao Tam giác (0.7×IE,0.75×IE,0.9×IE)

Bảng 6 NPT của “Thời gian”

Ví dụ trong một hiệu suất kinh tế, khi mức độ “Tài nguyên” là “rất thấp” sự phân bố liên quan đến “Thời gian” đƣợc định nghĩa là: tam giác (1,4 × IE, IE 1,8 × 2,5 × IE) (“IE” viết tắt của “Initial Estimate”) Giải thích này là nếu mức độ tài nguyên sẵn có là “rất thấp” trong suốt thời gian hoạt động tăng so với những gì đã đƣợc ƣớc tính ban đầu Ví dụ, nếu hoạt động này đƣợc ƣớc tính ban đầu để mất 10 tuần và mức độ tài nguyên là “rất thấp”, sự phân bố thời gian thực hiện hoạt động là tam giác (14,18,25).

Trong điều kiện bình thường (tức là khi mức độ tài nguyên là “trung bình”), sự phân bố của “Thời gian” đƣợc định nghĩa là tam giác (0,9 × IE, 1 × IE, 1.2 × IE ) trong đó giá trị giống nhƣ “Ước lượng ban đầu”

Các ƣớc lƣợng thời gian sẽ dễ dàng và chính xác hơn nếu tất cả các thông số ảnh hưởng (tức là tài nguyên) được đánh giá rõ ràng “Ước lượng ban đầu” được ước tính với các thông tin tối thiểu giả định rằng mức độ tài nguyên là bình thường so với các dự án Nhƣng trong thực tế, mức độ các tài nguyên liên quan đến sự thay đổi từ hoạt động hoặc thậm chí trong quá trình thực hiện hoạt động.

Ví dụ, đối với các BNs được hiển thị trong hình 15 phân phối trước của “Tài nguyên” đƣợc thiết lập ở mức 0.05; 0.1; 0.55; 0.2; 0.1 cho rất thấp, thấp, trung bình, cao, rất cao tương ứng Được hiểu như sau: mặc dù nó có nhiều khả năng (tức là 55%) có mức độ

Sử dụng BCPM để ƣớc lƣợng thời gian

MẠNG BAYES TRONG PHÁT TRIỂN PHẦN MỀM LINH HOẠT

Nhƣ ở “Phần I Tổng quan” đã trình bày về phát triển phần mềm linh hoạt thì vấn đề các bước lặp tăng trưởng luôn là quan trọng nhất với tất cả các mô hình phát triển phần mềm linh hoạt Phát triển phần mềm linh hoạt luôn luôn gắn liền với các thay đổi liên tục của khách hàng trong suốt dự án Điều này dẫn đến việc các bước lặp tăng trưởng phải kịp thời cập nhật các thay đổi của phía khách hàng Một vấn đề nữa là các bước lặp tăng trưởng là việc đạt được một con số cụ thể về cả chất lượng cũng như là số lượng các nhiệm vụ Bước lặp dự án là một khái niệm trong phát triển phần mềm linh hoạt như trong mô hình Scrum thì các bước lặp phát triển chính là các Sprints Bước lặp dự án bao gồm một tập các nhiệm vụ cần phải thực hiện và tập các nhiệm vụ này là tập con của các nhiệm vụ của toàn bộ dự án Ngoài ra mỗi bước lặp dự án kèm theo là các sản phầm đầu ra cần đạt được cho các bước lặp đó Các sản phẩm đầu ra ở đây có thể là các chức năng hoàn thiện của một phần mềm hay chỉ hoàn thiện ở một mức nào đó (ví dụ hoàn thành 80% khối lƣợng công việc cho một chức năng), Ở trong luận văn này chỉ quan tâm đến các nhiệm vụ chuyên môn trong mỗi bước lặp Nhiệm vụ chuyên môn ở đây là nhiệm vụ phát triển (có thể là nhiệm vụ thiết kế hoặc viết mã) Vì ngoài các nhiệm vụ chuyên môn, trong mỗi bước lặp còn nhiều nhiệm vụ phụ khác như họp hằng ngày (daily meeting), viết báo cáo hằng ngày,…Trong lập lịch cho các dự án phát triển phần mềm linh hoạt thì vấn đề lập lịch cho các nhiệm vụ trong mỗi bước lặp tăng trưởng và đảm bảo các sản phẩm đầu ra sau các bước lặp tăng trưởng là sản phẩm mong muốn là hai vấn đề quan trọng nhất Do vậy, đầu tiên cần xác định đƣợc toàn bộ những nhiệm vụ phát triển cho dự án (các nhiệm vụ này có thể thay đổi trong quá trình phát triển do phía khách hàng) sau khi đã có tập các nhiệm vụ phát triển cho dự án thì sẽ xếp các nhiệm vụ đó vào các bước lặp phát triển và vấn đề xếp các nhiệm vụ vào các bước lặp trong phát triển phần mềm sẽ không đề cập trong luận văn này Trong luận văn này sẽ trình bày vấn đề lập lịch và tối ƣu rủi ro lịch trình cho tập các nhiệm vụ trong mỗi bước lặp Nghĩa là ở mỗi một bước lặp đã có một tập nhiệm vụ cần được lập lịch Ở mỗi bước lặp, để tối ưu rủi ro cho lịch trình dựa trên kỹ thuật CPM và mạng Bayes tác giả đề xuất thêm các thông số (mức độ ảnh hưởng của các nhiệm vụ, trọng số của các nhiệm vụ,…).

3.1 Mô hình hóa bài toán lập lịch bước lặp

Bài toán lập lịch bước lặp trong phát triển phần mềm linh hoạt có đầu vào là các ràng buộc, các tài nguyên cung cấp cho dự án (bao gồm tài nguyên con người, ) và thứ tự ƣu tiên thực hiện của các nhiệm vụ đó Mặc dù phát triển phần mềm linh hoạt

LẬP LỊCH DỰ ÁN SỬ DỤNG CPM VÀ KỸ THUẬT MẠNG

Mô hình hóa bài toán lập lịch bước lặp

Bài toán lập lịch bước lặp trong phát triển phần mềm linh hoạt có đầu vào là các ràng buộc, các tài nguyên cung cấp cho dự án (bao gồm tài nguyên con người, ) và thứ tự ƣu tiên thực hiện của các nhiệm vụ đó Mặc dù phát triển phần mềm linh hoạt đã đưa ra ta một hướng tiếp cận chuyên nghiệp cho việc phân bổ tài nguyên cho bước lặp nhưng thực chất vẫn chưa có được những định nghĩa thật chuẩn Sau đây luận văn sẽ trình bày vấn đề mô hình hóa bài toán lập lịch cho bước lặp trong phát triển phần mềm linh hoạt (dựa theo tài liệu số [7]) nhƣ sau:

Gọi R là tập các các tài nguyên i và cho phép các tính chất đặc trƣng đối với việc sử dụng tài nguyên đó cho các nhiệm vụ chuyên môn đối với việc lập lịch cho bước lặp (tiền phân bổ tài nguyên trước khi lập lịch).[7]

Công sức: - thời gian ƣớc lƣợng (theo giờ) với mỗi nhiệm vụ Giá trị này đƣợc tính toán bởi các chuyên gia dự toán

Tiền phân bổ: - trong một số trường hợp các tiền phân bổ tài nguyên được áp dụng trước khi lập lịch Việc phân bổ này là đã được sử dụng bởi một chương trình lập lịch trong khi phân bổ tài nguyên.

Gọi vector { là thời điểm bắt đầu đối với các nhiệm vụ thực tế thỏa mãn và là tập các nhiệm vụ Vector S đƣợc goi là lịch trình các nhiệm vụ phát triển Trong định nghĩa này sử dụng

0 và n+1 tương ứng là các thời điểm ảo biểu diễn điểm bắt đầu và điểm kết thúc của bước lặp.[7]

Sự phụ thuộc giữa nhiệm vụ j và j’ có thể định nghĩa nhƣ sau:

Với là thời điểm bắt đầu của nhiệm vụ , là thời điểm bắt đầu của nhiệm vụ , là thời gian thực thi của nhiệm vụ và biểu diễn tiền điều kiện giữa các nhiệm vụ.

Gọi là khả năng của tài nguyên i (i ) được phân bổ cho bước lặp dự án Ƣớc lƣợng tài nguyên i cần sử dụng cho nhiệm vụ j là Bây giờ gọi S là lịch trình (khác với vector là tập thời điểm thực thi các nhiệm vụ) Gọi { | là tập các nhiệm vụ thực sự đang thực hiện tại thời điểm t Nhƣ vậy yêu cầu tài nguyên thực hiện đối với mỗi tài nguyên tại thời điểm t là đƣợc tính nhƣ sau:

∑ Để đảm bảo tài nguyên i không vƣợt quá khả năng đã phân bổ cần phải kiểm soát theo thời điểm t nhƣ sau:[7]

Do đó, bài toán tối ưu hóa lập lịch bước lặp có thể mô hình hóa như sau:[7]

Cực tiểu hóa Với ràng buộc

( là độ dài của bước lặp ).

Lập lịch bước lặp dự án sử dụng CPM và kỹ thuật mạng Bayes

Luận văn này trình bày lập lịch bước lặp dự án trong phát triển phần mềm linh hoạt sử dụng CPM và kỹ thuật mạng Bayes vào tối thiểu hóa rủi ro lịch trình Để có thể cho thấy đƣợc sự tối thiểu hóa rủi ro cho lịch trình đƣa ra khi áp dụng Bayes luận văn sẽ so sánh với thuật toán không sử dụng Bayes (đã công bố ở tài liệu số [7]) cho vấn đề lập lịch bước lặp dự án linh hoạt (AISP – Agile Iteration Scheduling Problem) dựa trên các tiêu chí sau đây:

 Độ tương quan kết quả lập lịch của hai thuật toán

 Thời gian xử lý của hai thuật toán

 Rủi ro dựa trên kết quả lập lịch của hai thuật toán Ởcác phần trên đã mô hình hóa bài toán lập lịch bước lặp trong các dự án phần mềm linh hoạt Do đó ở đây sẽ triển khai hai thuật toán lập lịch sử dụng mạng Bayes và không sử dụng mạng Bayes (tối ƣu dựa trên thuật toán không sử dụng mạng Bayes) nhƣ sau: Đặt vector là vector tài nguyên được phân bổ cho bước lặp dự án (ở đây xem xét tài nguyên là nhân lực cho dự án) Đặt là thời gian thực hiện đã đƣợc lên kế hoạch cho nhiệm vụ kỹ thuật (bao gồm cả thời gian phát triển và thời gian sửa lỗi) Mỗi thành phần của vector chứa một liên kết tới một chỉ số tài nguyên (

{ | | tương ứng với tài nguyên đã được phân bổ trước đó với nhiệm vụ j, nghĩa là nhiệm vụ j trước đó chưa được phân bổ tài nguyên.[7]

Nhƣ vậy giải thuật sẽ tìm tài nguyên tốt nhất cho mỗi nhiệm vụ Độ ƣu tiên thực hiện giữa các nhiệm vụ đƣợc biểu diễn bởi một ma trận ƣu tiên với nghĩa là nhiệm vụ được thực hiện trước nhiệm vụ ngược lại Thời gian thực hiện hết toàn bộ nhiệm vụ của một bước lặp dự án là , điều này nhằm đảm bảo các tài nguyên sẽ không bị quá tải thời gian.[7] Đầu ra của giải thuật là ma trận với hàng biểu diễn tài nguyên và cột biểu diễn nhiệm vụ đƣợc thực hiện Nhƣ vậy nghĩa là nhiệm vụ đƣợc phân bổ tài nguyên tại thời điểm

Giải quyết vấn đề lập lịch bước lặp trong phát triển phần mềm linh hoạt

Sau khi đã thực hiện mô hình hóa toán học vấn đề lập lịch bước lặp, tác giả tiến hành triển khai thuật toán để thực hiện lập lịch cho bước lặp tăng trưởng với tập các nhiệm vụ chuyên môn, thời gian cho phép để thực hiện các nhiệm vụ, ràng buộc ưu tiên thứ tự thực hiện các nhiệm vụ đó Hai thuật toán dưới đây sẽ giải quyết vấn đề lập lịch bước lặp dự án với hướng tiếp cận sử dụng Bayes và không sử dụng Bayes Để đƣa ra đƣợc dữ liệu đầu vào nhƣ ma trận P thể hiện độ ƣu tiên thứ tự thực hiện giữa các nhiệm vụ và tiền phân bổ ban đầu cho các nhiệm vụ thì cần đến phương pháp CPM Bởi lẽ các tiền phân bổ ban đầu này được thực hiện bởi chính các chuyên gia trong việc phân tích nhiệm vụ và tài nguyên phân bổ cho dự án.

3.3.1 Thuật toán giải quyết AISP không sử dụng Bayes[7]

Thuật toán dưới đây sẽ thực hiện lập lịch cho bước lặp dự án với chiến lược chọn nhiệm vụ tại mỗi bước lặp (trong thuật toán) là chọn tập nhiệm vụ mà không có ràng buộc ƣu tiên (nghĩa là nhiệm vụ đƣợc chọn sẽ không có bất kỳ một nhiệm vụ nào tiên quyết trước đó với nó mà chưa được thực hiện) sau đó sẽ kiểm tra với tập các nhiệm vụ đã đƣợc lập lịch để đƣa ra đƣợc một tập các nhiệm vụ sẵn sàng thực hiện (vì tập các nhiệm vụ không có ràng buộc ưu tiên có thể có nhiệm vụ đã được lập lịch trước đó rồi) Thuật toán sẽ chọn nhiệm vụ đầu tiên trong tập các nhiệm vụ sẵn sàng thực hiện và lựa chọn tài nguyên với tải nhỏ nhất cho mỗi nhiệm vụ.

Giải thuật cho AISP không sử dụng Bayes như sau:[7] Đầu vào:

/* Danh sách tài nguyên và độ dài bước lặp*/

{ | | /* Tiền phân bổ tài nguyên và thời gian cho các nhiệm vụ*/

∧ ∧ /* Ma trân tiền điều kiện thực hiệ n */ Điều kiện tiên quyết:

⇐ ℎ ⇐ ℎ /* Số tài nguyên và nhiệm vụ */

⇐ /* Khởi tạo tập nhiệm vụ */

⇐ ỉ ⇐ ỉ /* Khởi tạo danh sỏch cỏc nhiệm vụ cú thể lập lịch và đó lập lịch */

⇐ \ /* Xây dựng danh sách nhiệm vụ có thể lập lịch

⇐ m x /* Lựa chọn nhiệm vụ lập lịch */

⇐ /* Lựa chọn tài nguyên có tải bé nhất

⇐ { ) /* Tính toán tải với tài nguyên i */

) > /* Kiểm tra quá thời gian */ ỉ

/* Thời điểm phân bổ tiếp theo */

⇐ /* Phân b ổ tài nguyên i cho nhiệm vụ j ở thời điểm p */

⇐ ⋃{ /* Thêm nhiệm vụ j vào danh sách đã lập lịch */

{ /* Xóa các ràng buộc của nhiệm vụ j khi đã lập lịch */

Giải thuật 1 Không sử dụng mạng Bayes Có thể xem thuật toán trên như sau:[7]

Nghĩa là thuật toán nhƣ một ánh xạ với đầu vào là tập các nhiệm vụ cần thực hiện, ràng buộc thứ tự thực hiện giữa các nhiệm vụ, thời gian hoàn thành, độ dài bước lặp,…

Kết quả giải thuật là lịch trình S bao gồm các nhiệm vụ đƣợc phân bổ tài nguyên và một khoảng thời gian thực hiện cho S là ⇐ ∑

Một phân tích nhanh giải thuật không sử dụng mạng Bayes như sau:

Một loạt các phép lựa chọn cục bộ là tư tưởng chính của thuật toán mà không có truy vết hay chỉ định tối ưu ở các bước sau Điều này là thiếu kết quả tối ưu nhưng lại đảm bảo thuật toán chạy nhanh với phép tính và thực tế các kết quả này đã đảm bảo cho dự án.

3.3.2 Thuật toán giải quyết AISP sử dụng mạng Bayes a) Sự cần thiết của một mô hình xác suất đánh giá rủi ro lịch trình dự án Đầu vào của thuật toán lập lịch bước lặp dự án là danh sách tài nguyên được phân bổ cho các nhiệm vụ, ma trận biểu diễn độ ƣu tiên giữa các nhiệm vụ và thời gian thực hiện kế hoạch của các nhiệm vụ Theo các hướng tiếp cận giải quyết bài toán lập lịch truyền thống thì các nhiệm vụ sẽ hoàn thành trong thời gian kế hoạch khi phân bổ tài nguyên Nhƣng trong các dự án thực tế thì không nhƣ vậy, vấn đề về con người luôn tiềm ẩn các rủi ro và dẫn đến lịch trình bước lặp dự án luôn luôn tiềm ẩn các rủi ro Do vậy, để có thể nắm đƣợc xác suất thành công của một lịch trình bước lặp dự án thì một mô hình đánh giá rủi ro sử dụng mạng Bayes được đề xuất và đã đƣợc chứng minh là có hiệu quả Khi có lịch trình và xác suất lịch trình thành công thì các nhà quản lý dự án sẽ quản lý dự án tốt hơn. b) Sử dụng mạng Bayes trong lập lịch bước lặp như thế nào?

Trong mỗi bước lặp bước lặp dự án là tập các nhiệm vụ cần phải thực hiện và tài nguyên phân bổ cho các nhiệm vụ đó Ở đây xem xét tài nguyên là con người. Mỗi một nhiệm vụ có thể đƣợc phân bổ cho nhiều tài nguyên và với mỗi tài nguyên phân bổ thì nhiệm vụ đó có thể đƣợc hoàn thành hoặc là không hoàn thành đƣợc hoặc cũng có thể hoàn thành ở xác suất nào đấy, ví dụ nhƣ sau: Một nhiệm vụ phát triển một ứng dụng di động trên hệ điều hành IOS trong một dự án phần mềm có thể giao cho 2 lập trình viên A và B Lập trình viên A đã có

4 năm lập trình ứng dụng trên hệ điều hành IOS với việc đã có những ứng dụng tương tự ứng dụng cần làm, lập trình viên B mới có 1 năm kinh nghiệm lập trình ứng dụng trên hệ điều hành IOS và chưa làm một ứng dụng tương tự ứng dụng cần làm Nhƣ vậy nếu giao nhiệm vụ cho lập trình viên A sẽ có xác suất thành công hơn là giao cho lập trình viên B Nhà quản lý dự án có thể ƣớc lƣợng xác suất thành công đó thông qua dữ liệu các dự án trong quá khứ, cũng nhƣ là dự vào đối thoại trực tiếp với các lập trình viên Ở đây nhà quản lý dự án sử dụng kỹ thuật mạng Bayes đã trình bày trong chương trên để ước lượng các xác suất này, việc ƣớc lƣợng này là thủ công dựa vào số liệu tính toán và sử dụng định lý Bayes.

Ngoài ra trong mỗi bước lặp sẽ có những nhiệm vụ là trọng tâm hơn các nhiệm vụ khác, cũng như có một mức độ ảnh hưởng đối với bước lặp dự án Trong luận văn này đề xuất đánh trọng số cho mức độ ảnh hưởng, trọng số của mỗi nhiệm vụ trong bước lặp dự án Và việc đánh trọng số này là của nhà quản lý dự án, nhà lập lịch cho dự án dựa vào kinh nghiệm và đội ngũ phát triển cho dự án.

Một ma trận biểu diễn mỗi quan hệ giữa nhiệm vụ và tài nguyên nhƣ sau:

Nghĩa là xác suất để nhiệm vụ đƣợc hoàn thành trong thời gian khi đƣợc phân bổ tài nguyên là

Một mảng biểu diễn trọng số của các nhiệm vụ trong dự án

Một mảng biểu diễn mức độ ảnh hưởng của các nhiệm vụ trong dự án

{ | Ở trong luận văn này đề xuất tính toán nhƣ sau:

Gọi là tập các tài nguyên được phân bổ cho nhiệm vụ trong bước lặp m |

Nhƣ vậy, xác suất để lịch trình đƣa ra thực hiện thành công là

∑ ∑ c) Giải thuật lập lịch bước lặp sử dụng mạng Bayes

55 Đầu tiên để có thể lập lịch cho bước lặp sử dụng kỹ thuật mạng Bayes thì cần tiến hành triển khai thuật toán tính toán mảng T nhƣ các công thức đã đƣa ra ở phần b

Giải thuật tính toán mảng T như sau:

∃ ! ∧ < /* Kiểm tra nếu có phân bổ */

Sau khi có đầy đủ dữ liệu để có thể lập lịch bước lặp sử dụng kỹ thuật mạng Bayes thì triển khai lập lịch với chiến lƣợc giống nhƣ thuật toán không sử dụng mạng Bayes đã đƣa ra ở phần 3.3.1 nhƣng ở trong thuật toán sử dụng Bayes này thì chiến lƣợc để lựa chọn tài nguyên phân bổ cho nhiệm vụ sẽ vừa đảm bảo tải nhỏ và thực hiện nhiệm vụ thành công với xác suất cao nhất Sau khi thuật toán thực hiện phân bổ tài nguyên cho các nhiệm vụ thì sẽ tiến hành tính ma trận T và sau đó là xác suất thực hiện thành công của lịch trình.

Giải thuật cho AISP sử dụng Bayes như sau: Đầu vào:

/* Danh sách tài nguyên và độ dài bước lặp */

{ | | /* Tiền phân bổ và thời gian cho các nhiệm vụ */

| | /* Ma trận xác suất hoàn thành */

{ | /* Trọng số của các nhiệm vụ trong bước lặp */

{ | /* Ảnh hưởng của các nhiệm vụ trong bước lặp */ Điều kiện tiên quyết:

⇐ ℎ ⇐ ℎ /* Số tài nguyên và nhiệm vụ */

⇐ /* Khởi tạo tập tài nguyên */

⇐ ỉ ⇐ ỉ ′ ⇐ ỉ /* Khởi tạo cỏc tập ban đầu */

⇐ \ /* Khởi tạo danh sách nhiệm vụ có thể lập lịch */ ỉ ỉ /* Khụng thể lập lịch */

/* Lựa chọn tài nguyên có tích tải và xác suất thành công lớn nhất */

⇐ ⇐ { ) /* Tính toán tải của tài nguyên */

⇐ /* Tìm thời điểm lập lịch */

⇐ /* Phân bổ tài nguyên i cho nhiệm vụ j tại thời điểm p */

⇐ ⋃{ /* Thêm nhiệm vụ j vào danh sách đã lập lịch */

/* Xóa các ràng buộc liên quan đến nhiệm vụ j khi đã được lập lịch */

/* Tính toán ma trận T từ B */

/* Tính toán xác suất x từ S,T,M */

Giải thuật 2: Sử dụng mạng Bayes Ở đây:

: Tìm các nhiệm vụ mà không có ràng buộc độ ƣu tiên với các nhiệm vụ khác dựa trên ma trận ƣu tiên s Tìm tài nguyên đang có tải nhỏ nhất và xác suất hoàn thành tốt nhất (dựa trên tiêu chí tích của tải và xác suất hoàn thành là lớn nhất).

Kết quả: Tập lịch trình S, tập thời điểm bắt đầu của các nhiệm vụ và xác suất thành công của lịch trình S.

Đánh giá thuật toán sử dụng Bayes với thuật toán không sử dụng Bayes

Sau khi đưa ra thuật toán lập lịch cho cả 2 hướng là sử dụng kỹ thuật mạng Bayes và không sử dụng kỹ thuật mạng Bayes thì có thể thấy nhƣ sau:

 Cấu trúc thuật toán của hai hướng tiếp cận khá giống nhau

 Độ phức tạp tương đương

 Đầu vào cho thuật toán sử dụng mạng Bayes cần thêm dữ liệu đánh giá rủi ro phân bổ tài nguyên cho các nhiệm vụ

 Thuật toán sử dụng mạng Bayes thực hiện tính toán các giá trị nhƣ mức độ ảnh hưởng của các nhiệm vụ,… sau khi lập lịch để thực hiện tính toán xác suất khả thi của lịch trình

 Ở bước lựa chọn tài nguyên phân bổ cho các nhiệm vụ thì tối đa hóa xác suất hoàn thành và tải của tài nguyên.

THỬ NGHIỆM VÀ ĐÁNH GIÁ

Cài đặt giải thuật

Giải thuật là đƣợc triển khai trong Windows 7 OS với Visual studio 2013,

2 Gigabyte of RAM, ngôn ngữ cài đặt C++

Kết quả thử nghiệm và phân tích

Tiến hành lập trình hai chương trình tương ứng với giải thuật sử dụng kỹ thuật mạng BNs và không sử dụng kỹ thuật mạng BNs để tiến hành so sánh các kết quả.Giải thuật không sử dụng kỹ thuật mạng BNs là một hướng tiếp cận cổ điển và kết quả đầu ra của giải thuật là lịch trình phát triển dự án mà không có dự báo về xác suất thành công của lịch trình đƣa ra Trong khi đó giải thuật sử dụng kỹ thuật mạng

BNs là một hướng tiếp cận mới đưa ra thêm xác suất thành công của lịch trình bước lặp, việc tối ưu giá trị này là cần thiết Điều này sẽ giúp cho nhà quản lý dự án có thể đƣa ra các quyết định trong suốt dự án.

Kết quả của giải thuật mà không dùng BNs

Hình 25 Kết quả lập lịch không sử dụng BNs Kết quả của giải thuật dùng BNs

Hình 26 Kết quả lập lịch sử dụng BNs

Xác suất thành công của lịch trình trong phát triển xấp xỉ 24% Ngoài ra, khoảng thực hiện của lịch trình dự án cũng đƣợc đƣa ra

Trong cả hai giải thuật, thông tin của bước lặp dự án, các giá trị chính như số tài nguyên phân bổ cho bước lặp dự án, số nhiệm vụ mà bước lặp dự án cần được thực hiện đều đƣợc đƣa ra màn hình kết quả Đầu ra của cả hai giải thuật cung cấp tài nguyên phân bổ cho các nhiệm vụ Ví dụ nhƣ tài nguyên 8 là đƣợc phân bổ cho các nhiệm vụ sau: 7, 26, 30 nghĩa là nhiệm vụ 7, 26, 30 sẽ đƣợc phân bổ tài nguyên 8 để thực hiện Thời gian bắt đầu của mỗi nhiệm vụ là ngay sau khi nhiệm vụ trước đó hoàn thành Bởi vì các tài nguyên là độc lập nên các nhiệm vụ với đã đƣợc phân bổ tài nguyên khác nhau sẽ đƣợc tiến hành một cách độc lập Vì vậy, khoảng thời gian thực hiện bước lặp dự án là giá trị lớn nhất của tổng các thời gian thực hiện của các nhiệm vụ Giá trị này sẽ đƣợc sử dụng để kiểm tra vƣợt quá thời gian thực hiện trong mỗi bước lặp dự án.

Bảng 10 So sánh kết quả giữa hai hướng lập lịch

Kết quả giữa 2 giải thuật sử dụng BNs và không sử dụng BNs

Chú ý: Trong cột “ Not applied Bayesian Networks” thì xác suất thành công của lịch trình đưa ra là đã được tính toán dựa vào cùng dữ liệu với hướng tiếp cận “ Applied Bayesian Networks” Nghĩa là sử dụng cùng một tập dữ liệu đầu vào ma trận xác suất đối với cả 2 hướng tiếp cận.

Biểu đồ sau sẽ so sánh giữa hai hướng tiếp cận trên khoảng thời gian thực hiện và xác suất thành công của lịch trình đƣa ra.

Thời gian lịch trình( không dùng BNs)

Xác suất thành công lịch trình( không dùng BNs)

Xác suất thành công của lịch trình(BNs)

Thời gian lịch trình(BNs)

Hình 27 So sánh kết quả sử dụng BNs và không sử dụng BNs

Từ biểu đồ có thể thấy xác suất thành công của giải thuật mà không sử dụng BNs là nhỏ hơn giải thuật sử dụng BNs (cả hai giải thuật sử dụng cùng dữ liệu xác suất của tài nguyên đã đƣợc phân bổ cho các nhiệm vụ) Xem xét khoảng thời gian thực hiện lịch trình trong hai hướng tiếp cận có thể thấy rằng giải thuật sử dụng BNs là tốt hơn giải thuật không sử dụng BNs Ngoài ra trước khi lập lịch có thể tiền phân bổ tài nguyên cho các nhiệm vụ khi xác suất thành công là bé khi sắp xếp để tăng xác suất thành công và từ đó có thể dự đoán tính khả thi của dự án để có các hành động thích hợp.

Trong chương IV đã trình bày các nội dung sau:

 Dữ liệu thử nghiệm và sinh dữ liệu

 Kết quả thử nghiệm và phân tích.

KẾT LUẬN VÀ KIẾN NGHỊ

Kết luận

Luận văn tốt nghiệp của tác giả với đề tài: "Tối ƣu hóa lập lịch dự án sử dụng phương pháp CPM và kỹ thuật mạng Bayes áp dụng cho các dự án phát triển phần mềm linh hoạt" đã cơ bản hoàn thành Đề tài đã giải quyết đƣợc các vấn đề sau:

1 Tìm hiểu những khái niệm, những yếu tố cơ bản của phương pháp phát triển phần mềm linh hoạt

2 Đƣa ra đƣợc những vấn đề rủi ro trong phát triển phần mềm linh hoạt, các vấn đề về lập lịch bước lặp trong phát triển phần mềm linh hoạt

3 Trình bày về các hướng tiếp cận giải quyết bài toán lập lịch dự án nói chung và lập lịch cho bước lặp dự án trong phát triển phần mềm linh hoạt nói riêng

4 Trình bày về CPM, kỹ thuật mạng Bayes, các phương pháp để xây dựng mạng Bayes trong quản lý rủi ro và ƣớc lƣợng thời gian.

5 Xây dựng thuật toán lập lịch bước lặp dự án trong phát triển phần mềm linh hoạt theo hướng sử dụng kỹ thuật mạng Bayes và không sử dụng kỹ thuật mạng

1 Đề tài đã trình bày đƣợc về căn bản phát triển phần mềm linh hoạt (khái niệm, tính chất chính,…), trình bày về các rủi ro trong phát triển phần mềm linh hoạt, các vấn đề trong lập lịch cho bước lặp dự án cũng như các phương pháp tiếp cận giải quyết vấn đề lập lịch dự án.

2 Đề tài đã trình bày được về phương pháp CPM, kỹ thuật mạng Bayes (cơ sở toán học, ), cách để xây dựng một mạng Bayes trong tính toán rủi ro và ƣớc lương các chỉ số dự án thông qua mạng Bayes.

3 Đề tài đã trình bày bài toán lập lịch bước lặp trong phát triển phần mềm linh hoat (mô hình hóa toán học bài toán, phân tích, ) và xây dựng giải thuật lập lịch cho bước lặp dự án theo hương tiếp cận sử dụng kỹ thuật mạng Bayes và không sử dụng kỹ thuật mạng Bayes)

Những khó khăn và hướng giải quyết

Những khó khăn gặp phải trong quá trình thực hiện đề tài:

 Chƣa có bộ dữ liệu dự án thực tế để chạy giải thuật mặc dù việc sinh dữ liệu đã hoàn toàn ngẫu nhiên

 Tìm kiếm dữ liệu thực tế để làm đầu vào cho các giải thuật

Các kết quả nghiên cứu lí luận và thực tiễn đã cho thấy việc "Tối ƣu hóa lập lịch dự án sử dụng phương pháp CPM và kỹ thuật mạng Bayes áp dụng cho các dự án phát triển phần mềm linh hoạt" thực sự đem lại cho nhà quản lý dự án và đội phát triển dự án một lịch trình tối thiểu hóa rủi ro trong phát triển dự án.

Kiến nghị

Trong quá trình nghiên cứu và hoàn thành luận văn, tác giả nhận thấy rằng để việc

"Tối ưu hóa lập lịch dự án sử dụng phương pháp CPM và kỹ thuật mạng Bayes áp dụng cho các dự án phát triển phần mềm linh hoạt" đạt hiệu quả cần phải chú trọng những vấn đề sau:

- Đánh giá đúng mức độ ảnh hưởng hay tầm quan trọng của các nhiệm vụ trong việc phát triển dự án.

- Ƣớc lƣợng một cách khách quan về thời gian thực hiện các nhiệm vụ dựa trên kinh nghiệm các dự án trong quá khứ và tình hình hiện tại của đội phát triển dự án cũng nhƣ độ phức tạp của các nhiệm vụ.

Hướng phát triển của đề tài

Do điều kiện cá nhân còn những hạn chế, nên vấn đề nghiên cứu về "Tối ƣu hóa lập lịch dự án sử dụng phương pháp CPM và kỹ thuật mạng Bayes áp dụng cho các dự án phát triển phần mềm linh hoạt" trong khuôn khổ của luận văn này chỉ dừng lại ởnhững nghiên cứu ban đầu Vì vậy, những nghiên cứu tiếp theo về vấn đề này có thể tập trung triển khai theo các hướng như sau:

- Nghiên cứu triển khai thuật toán trên nền web, mobile

- Tích hợp thuật toán vào các hệ thống quản lý dự án

Ngày đăng: 04/06/2023, 11:33

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Giáo trình quản lý dự án.Viện Công nghệ thông tin – ĐHQG.Tiếng Anh Sách, tạp chí
Tiêu đề: ĐHQG
3. Robert C Martin. (2002), Agile software development, Principles, Patterns and Practices, pp. 166-180 Sách, tạp chí
Tiêu đề: Agile software development, Principles, Patterns andPractices
Tác giả: Robert C Martin
Năm: 2002
5. Akos Szoke. (2004), Models and Algorithms for Integrated AgileSoftware Planning and Scheduling, pp. 102-129 Sách, tạp chí
Tiêu đề: ), Models and Algorithms for Integrated AgileSoftware Planning and Scheduling
Tác giả: Akos Szoke
Năm: 2004
6. Vahid Khorakadami, Norman Fenton and Martin Neil. ( 2009), Improved Approach to Incorporate Uncertainty Using Bayesian Networks, pp. 102-290 Sách, tạp chí
Tiêu đề: Improved Approach to Incorporate Uncertainty Using Bayesian Networks
7. P. Brucker and S. Knust. (2006).Complex Scheduling, pp. 125-256 Sách, tạp chí
Tiêu đề: Complex Scheduling
Tác giả: P. Brucker and S. Knust
Năm: 2006
8. Ken Schwaber, Mike Beedle(2001), Agile Software Development with Scrum, pp. 1-20 Sách, tạp chí
Tiêu đề: (2001), Agile Software Development with Scrum
Tác giả: Ken Schwaber, Mike Beedle
Năm: 2001
9. Robert C.Martin. (2002), Agile Software Development, Principles, Patterns and Practices, pp. 153-178 Sách, tạp chí
Tiêu đề: Agile Software Development, Principles, Patterns and Practices
Tác giả: Robert C.Martin
Năm: 2002
10. Mario F.Triola. (2014),Bayesian Theorem , pp. 135-150 Sách, tạp chí
Tiêu đề: Bayesian Theorem
Tác giả: Mario F.Triola
Năm: 2014
11. Van Slyke R. M(1963), Monte Carlo methods and the PERT problems, pp.120-169 Sách, tạp chí
Tiêu đề: Monte Carlo methods and the PERT problems
Tác giả: Van Slyke R. M
Năm: 1963
12. PMI. (2004), A guide to project management body of know ledge, pp. 162- 180 Sách, tạp chí
Tiêu đề: A guide to project management body of know ledge
Tác giả: PMI
Năm: 2004
13. Goldstein.M. (2006), Subjective Bayesian analysis: Principle and Practices2, pp. 1-57 Sách, tạp chí
Tiêu đề: Subjective Bayesian analysis: Principle and Practices2
Tác giả: Goldstein.M
Năm: 2006
14. Ade Miller. (2008), Distributed Agile Development at Microsoft patterns and practices, pp. 24-86 Sách, tạp chí
Tiêu đề: Distributed Agile Development at Microsoft patterns and practices
Tác giả: Ade Miller
Năm: 2008
4. Vahid Khodakarami. (2009), Applying Bayesian Networks to model Uncertainty in Project Scheduling Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w