Tải bản đầy đủ (.pdf) (37 trang)

ĐỒ án ỨNG DỤNG hỗ TRỢ QUẢN lý NHÓM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.17 MB, 37 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN HỒNG KHOA – NGUYỄN TIẾN DŨNG

ĐỒ ÁN 2
ỨNG DỤNG HỖ TRỢ QUẢN LÝ NHÓM
Team management support application

GIẢNG VIÊN HƯỚNG DẪN
THS. NGUYỄN THỊ THANH TRÚC

TP. HỒ CHÍ MINH, 2020


LỜI CẢM ƠN
Đầu tiên, nhóm chúng em xin gửi lời cảm ơn chân thành đến tập thể
quý thầy cô Trường Đại học Công nghệ thông tin – Đại học Quốc gia
TP.HCM và quý thầy cô khoa Công Nghệ Phần Mềm đã giúp cho nhóm
chúng em có những kiến thức cơ bản làm nền tảng để thực hiện đề tài này.
Đặc biệt, nhóm chúng em xin gửi lời cảm ơn chân thành nhất tới cơ
Nguyễn Thị Thanh Trúc, đã giúp nhóm chúng em trong suốt quá trình thực
hiện đồ án.
Trong thời gian qua nhóm chúng em đã áp dụng những kiến thức nền
tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến
thức mới. Từ đó, nhóm chúng em vận dụng tối đa những gì đã thu thập được
để hoàn thành đồ án tốt nhất. Tuy nhiên, trong q trình thực hiện, khơng
tránh khỏi những thiếu sót. Chính vì vậy, nhóm chúng em rất mong nhận được
những sự góp ý từ phía các thầy cơ nhằm hồn thiện những gì cịn chưa tốt và


trau dồi kiến thức.


MỤC LỤC
Chương 1.

TỔNG QUAN........................................................................................................ 9

1.1

Tên đề tài ...................................................................................................................... 9

1.2

Từ khóa ......................................................................................................................... 9

1.3

Khảo sát về đề tài .......................................................................................................... 9

1.4

Mục tiêu của đề tài...................................................................................................... 10

1.5

Ý nghĩa của đề tài ....................................................................................................... 10

1.6


Đối tượng, phạm vi và phương pháp nghiên cứu của đề tài ...................................... 10

1.6.1

Đối tượng nghiên cứu .......................................................................................... 10

1.6.2

Phạm vi nghiên cứu............................................................................................. 11

1.7

Những cơng cụ quản lý cơng việc nhóm phổ biến hiện nay ....................................... 11

1.7.1

Open Project ....................................................................................................... 11

1.7.2

Trello ................................................................................................................... 12

1.7.3

Microsoft Team ................................................................................................... 13

Chương 2.
2.1

CƠ SỞ LÝ THUYẾT .......................................................................................... 15


Phương pháp và cơng nghệ trong quản lý nhóm, dự án ............................................ 15

2.1.1

Phương pháp Kanban (Thẻ thị giác) .................................................................. 15

2.1.2

Gantt Chart ......................................................................................................... 16

2.1.3

So sánh giữa Gantt Chart và Kanban ................................................................ 17

2.1.4

Thuật toán xếp lịch cho Gantt Chart.................................................................. 18

2.1.5

Vấn đề giao tiếp giữa các thành viên .................................................................. 28

2.2

Công nghệ phát triển đề tài ........................................................................................ 31

2.2.1

ReactJS ................................................................................................................ 31


2.2.2

ASP.NET Core .................................................................................................... 32

2.2.3

Microsoft SQL Server và MongoDB .................................................................. 33


Chương 3.

CÀI ĐẶT VÀ KẾT LUẬN .................................................................................. 34

3.1

Cài đặt ......................................................................................................................... 34

3.2

Kết luận ....................................................................................................................... 36


DANH MỤC HÌNH


DANH MỤC BẢNG


DANH MỤC TỪ VIẾT TẮT



TÓM TẮT ĐỀ TÀI
Khi thế giới ngày càng hiện đại hóa, cơng nghệ phát triển đến từng lĩnh vực,
ngành nghề, thì việc áp dụng tri thức vào việc giải quyết các nhu cầu thường ngày
nhất của con người trở nên vô cùng phổ biến, đặc biệt là trong các lĩnh vực đòi hỏi
sự kết nối, tương tác và trao đổi giữa con người với nhau như học tập hay làm việc.
Làm việc nhóm ra đời như một phương pháp tất yếu trong học tập cũng như công
việc, khi việc trau dồi kiến thức, phát triển bản thân hay hoàn thành công việc một
cách cá nhân dần trở nên không hiệu quả, chúng ta sẽ có xu hướng kết hợp lại thành
nhóm, để cùng làm việc, phát triển và hồn thiện lẫn nhau.
Những công nghệ giao tiếp ngày nay như Facebook, Email, Messenger,
Zalo,.. tuy rất phổ biến trong việc kết nối con người, nhưng để một nhóm có thể trao
đổi, tương tác, học tập và làm việc cùng lúc thì vơ cùng bất tiện. Với nhu cầu này,
những công cụ, phần mềm, website, ứng dụng,.. với mục tiêu hỗ trợ quản lý nhóm,
quản lý cơng việc,… đã ra đời, một số cơng cụ phổ biến nhất có thể kể đến như:
Microsoft Team, Trello, Redmine, Asana,… đều dùng để quản lý nhóm, giao công
việc và quản lý tiến độ công việc trong làm việc nhóm.
Đề tài được thực hiện để tạo ra thêm một công cụ hỗ trợ cho những bạn học
sinh, sinh viên hay những người đã đi làm, có thêm một môi trường phù hợp hơn, dễ
dàng hơn và tiện dụng hơn khi muốn quản lý một hội nhóm, hay muốn theo dõi tiến
độ cơng việc nhóm hoặc của chính bản thân.


Chương 1.

TỔNG QUAN

1.1 Tên đề tài
Ứng dụng hỗ trợ quản lý nhóm (TeamStudio).

1.2 Từ khóa
Team management, Project management.
1.3 Khảo sát về đề tài
Hiện nay, khi làm việc nhóm trở nên phổ biến trong học tập và làm việc, các
nhu cầu về trao đổi thông tin, tạo và giao các công việc nhóm đến từng thành viên,
quản lý cơng việc được giao, quản lý tiến độ từng cá nhân cũng như tồn bộ
nhóm,… là những nhu cầu thiết yếu khi con người hợp tác lại với nhau. Tuy nhiên,
đa số lại không sử dụng đúng những công cụ để hỗ trợ cho nhu cầu này, những
phương tiện thường được dùng để quản lý nhóm như: Facebook, Zalo,
Messenger,… lại khơng cung cấp đủ các chức năng cũng như không hướng đến nhu
cầu quản lý, giao việc và kiểm tra tiến độ công việc. Gây ra đình trệ, qn cơng việc,
khơng hiệu quả và dẫn đến các kết quả không tốt, đồng thời cũng gây khó khăn cho
người dùng khi làm việc với nhau.
Những công nghệ phổ biến hiện nay, phục vụ tốt cho nhu cầu quản lý, kiểm sát
và phân chia công việc nhóm có thể kể đến như:
• Trello: là cơng cụ quản lý công việc hiệu quả khi làm việc theo nhóm, giúp
chúng ta biết được có những đầu việc nào, ai đang làm gì và tiến độ ra sao.
• Redmine: Một công cụ giúp quản lý công việc, quản lý dự án, theo dõi tiến
độ dự án và từng công việc nhỏ.


• Microsoft Team: là một hệ sinh thái, nơi các thành viên nhóm có thể nhắn tin,
tạo phịng họp, chia sẻ tài nguyên,…

1.4 Mục tiêu của đề tài
Tạo ra một ứng dụng, một cơng cụ có thể giúp cho việc quản lý, làm việc nhóm
trở nên dễ dàng và thuận tiện hơn. Với đối tượng người dùng là những team nhỏ cho
học nhóm hoặc làm việc nhóm, hướng đến nhu cầu học đường cho học sinh, sinh
viên. Kế thừa những ưu điểm và hoàn thiện những khuyết điểm của các công nghệ
nêu trên, với giao diện trực quan, các chức năng dễ truy cập và sử dụng, có kênh

chat để tương tác và thảo luận giữa các thành viên, chúng em mong muốn
TeamStudio không chỉ là một công cụ, mà cịn là một giải pháp tối ưu và nhanh
chóng nhất khi các bạn học sinh, sinh viên, và những người đã đi làm có thể nghĩ tới
khi muốn tìm một ứng dụng quản lý nhóm cho mình.
1.5 Ý nghĩa của đề tài
Với các mục tiêu nêu trên. Đề tài được thực hiện nhằm hỗ trợ cho các bạn học
sinh, sinh viên trong việc học tập, đồng thời hướng đến thay đổi thói quen sử dụng
các nền tảng khơng hợp lý để làm việc nhóm như: Facebook, Zalo, Telegram,…
Giúp giảm thời gian lãng phí trong việc quản lý cũng như tăng tính kiểm sốt cho
các nghiệp vụ, nhu cầu cơ bản phát sinh khi làm việc nhóm.
1.6 Đối tượng, phạm vi và phương pháp nghiên cứu của đề tài
1.6.1 Đối tượng nghiên cứu
• Tìm hiểu, nghiên cứu và xây dựng website dựa trên cơng nghệ Reactjs, SQL
Server, MongoDB , ASP.NET Core.
• Tìm hiểu và áp dụng Phương pháp quản lý thẻ thị giác Kanban để áp dụng
xây dựng giao diện trực quan.


1.6.2 Phạm vi nghiên cứu
• Dữ liệu: Ứng dụng hỗ trợ upload tập tin, các loại file nén, nhưng chỉ giới hạn
dung lượng tập tin dưới 20MB, và video dưới 50MB.
• Ngơn ngữ: Ứng dụng tạm thời chỉ xây dựng ngôn ngữ Tiếng Việt với đối
tượng người dùng hướng đến là học sinh, sinh viên Việt Nam.
• Cơng nghệ: tập trung vào phát triển với các thư viện, gói chức năng miễn phí
hỗ trợ cho xây dựng giao diện ứng dụng.
1.7 Những cơng cụ quản lý cơng việc nhóm phổ biến hiện nay
Những tính năng cần thiết khi quản lý cơng việc, dự án thơng thường gồm:
• Lập lịch: tạo công việc, giao việc và chỉ định thời hạn cho cơng việc.
• Theo dõi tiến độ: kiểm tra tình trạng, trạng thái và tiến độ của cơng việc cũng
như tồn bộ dự án.

• Báo cáo: tạo báo cáo, phân tích và so sánh với tiến độ của dự án theo ngày,
tuần, tháng, năm.
• Lưu trữ: lưu lại dữ liệu cơng việc và dự án cho việc truy xuất trong tương lai.
• Giao tiếp: tham gia thảo luận, đánh giá và nhận xét dự án cũng như từng công
việc.
1.7.1 Open Project
OpenProject là một hệ thống quản lý dự án dựa trên web để cộng tác nhóm
độc lập về vị trí. Ứng dụng nguồn mở miễn phí này được phát hành theo Giấy
phép Cơng cộng GNU Phiên bản 3 và có sẵn dưới dạng phiên bản cộng đồng và
phiên bản Doanh nghiệp có tính phí
1.7.1.1

Ưu điểm

− Ứng dụng có phiên bản miễn phí để sử dụng, rất phù hợp để sử dụng
cho các dự án Scrum, Agile.


− Có Wiki, API docs đầy đủ
1.7.1.2

Hạn chế

− Khó khăn trong việc cài đặt đối với những người không chuyên.
− Để sử dụng cơ sở dữ liệu cho riêng mình cần phải có kinh phí.
− Kanban board chỉ hỗ trợ phiên bản Enterprise.
− Không lưu lại thông báo dẫn đến có thể bị qn nội dung quan trọng.
1.7.1.3

Cơng nghệ sử dụng


Ứng dụng được xây dựng bằng ngôn ngữ Ruby, Framework
Angular(tham khảo từ Wikipedia, Github)
1.7.1.4

Link project

/>
1.7.2 Trello
Trello là công cụ quản lý cơng việc hiệu quả khi làm việc theo nhóm, giúp
mọi người trong cùng một team chỉ cần nhìn qua là biết được có những đầu việc
nào, ai đang làm gì và làm đến giai đoạn nào. Trello là một cơng cụ Freemium,
tức là bạn có thể dùng miễn phí cho đến khi cần những tính năng nâng cao và
đặc biệt chỉ có bản trả tiền mới có thì bạn mới phải trả.
1.7.2.1


Ưu điểm

Cung cấp một giao diện quản lý trực quan, dễ dàng trong việc tiếp cận
và sử dụng.



Hỗ trợ đầy đủ các nền tảng mobile, PC


1.7.2.2

Hạn chế


− Hướng đến quản lý công việc cá nhân, chưa có tính năng chat nhóm,
khơng thể thảo luận, trao đổi trực tiếp giữa các thành viên.
− Chưa có báo cáo tổng quát, lọc dữ liệu của team để tự đưa ra đánh giá
tiến độ công việc cho team.
1.7.2.3

Công nghệ sử dụng

Trello hỗ trợ web, ứng dụng mobille, web sản phẩm được xây dựng bằng
React.(Theo extension React Developer Tools)

1.7.3 Microsoft Team
Microsoft Teams là sản phẩm của Microsoft ra mắt vào năm 2017. Microsoft
Teams hỗ trợ tạo phòng họp hay nhắn tin trực tiếp và cả trò chuyện âm thanh
cũng như video, người dùng cũng có thể gửi kèm tệp với nền tảng này
Nền tảng này tích hợp với bộ Office 365 cho thuê của công ty, bao gồm bộ
Microsoft Office và Skype, và các tính năng mở rộng mà có thể tích hợp với các
sản phẩm khơng phải của Microsoft.
1.7.3.1

Ưu điểm



Microsoft Teams có khả năng tạo phịng họp, tương tác lập tức.



Có thể tích hợp với Azure Devops một cách dễ dàng.




Tích hợp mạnh mẽ với bộ Office 365 của Microsoft.

1.7.3.2

Hạn chế




Phân quyền bị hạn chế, các sắp xếp nội dung tương tác khơng tuần tự,
khó để truy cập và thống kê lại, không thể trả lời một tin nhắn.(đề cập
đến tin nhắn đó).



Việc sử dụng các dịch vụ đi kèm như Azure Devops, Office có tính phí
khá cao.



Khơng có Kanban Board, Gantt Chart trực quan.

1.7.3.3

Công nghệ sử dụng

Ứng dụng đã có mặt ở hầu hết các nền tảng mobile, PC app. Ứng dụng được

xây dựng bởi các công nghệ Angular, TypeScript(theo Wikipedia).


Chương 2.

CƠ SỞ LÝ THUYẾT

2.1 Phương pháp và công nghệ trong quản lý nhóm, dự án
2.1.1 Phương pháp Kanban (Thẻ thị giác)
Ra đời vào những năm 40 bởi công ty Toyota, được áp dụng rất nhiều trogn quản
lý sản xuất và kỹ thuật.
Được áp dụng trong rất nhiều ứng dụng quản lý dự án, quản lý nhóm, quản lý
cơng việc: Trello, Asana, Jira, Redbooth, ProofHub, MeisterTask, Kanban Tool,
Kanban Flow, Pipefy,…
Áp dụng kanban vào quản lý nhóm:
• Dự án sẽ chứa các loại danh sách Tasks, thông thường sẽ là: To-do, Planned,
In progress, Done, Finished, Closed.
• Mỗi task được biểu thị bằng một thẻ kanban trong danh sách, gồm các thông
tin: Tiêu đề, Mơ tả, Điểm quan trọng, Điểm độ khó, Tiến độ, Ngày bắt
đầu/kết thúc, Thành viên đảm nhận, Tags,… và có thể thêm bình luận, nhận
xét và đánh giá cho thẻ cơng việc đó.
Có nhiều loại thẻ kanban, nhưng có 2 loại chính được áp dụng trong quản lý và
phân chia cơng việc nhóm:
• Transport Kanban (Kanban vận chuyển): thẻ công việc sẽ chuyển cho công
đoạn sau (danh sách nào đó) để hồn thành.
• Production Kanban (Kanban sản xuất): thẻ cơng việc cần thực hiện.
• Một thẻ ở từng danh sách khác nhau có thể mang ý nghĩa khác nhau.
Lợi ích khi áp dụng trong quản lý cơng việc nhóm hoặc cá nhân:



• “Phẳng hóa” hệ thống cơng việc, bảng kanban sẽ trở thành một trung tâm
thông tin, nơi các thành viên trong dự án có thể cập nhật và quan sát trạng
thái cơng việc hoặc tồn bộ dự án một cách trực quan nhất.
• Độ chính xác về thời gian.
• Nắm bắt công việc dễ dàng hơn nhờ yếu tố “thị giác” của thẻ kanban (màu
sắc, cách sắp xếp,…).
• Giảm thiểu trường hợp bỏ sót cơng việc và trễ hạn cơng việc đến mức tối đa,
nhờ vào tính trực quan của phương pháp kanban.
Khó khăn khi áp dụng vào quản lý cơng việc:
• Kanban địi hỏi cao về con người: thành viên trong dự án phải có trình độ và
kiến thức, đồng thời kanban u cầu tính kỷ luật cao, vì một thẻ (cơng việc)
khơng được hồn thành đúng hạn hay xảy ra lỗi, thì cả hệ thống có thể ngừng
hoạt động, hoặc ảnh hưởng tới nhiều thẻ khác.
• Tính bảo mật: vì tính chất cơng khai các thẻ (cơng việc) trên bảng kanban,
nên việc truy cập và bảo mật thông tin cơng việc của từng thẻ cũng gây khó
khăn cho việc quản lý.
Có thể dễ dàng chuyển đổi sang các dạng kiến trúc khác như Gantt hay
MindMap.

2.1.2 Gantt Chart
Một công cụ cổ điển nhưng rất phổ biến trong quản lý dự án trên thế giới, được
sáng tạo bởi Henry L. Gantt vào năm 1915. Ý tưởng: trục tung thể hiện cơng
việc, và trục hồnh thể hiện tiến độ về thời gian.
Các ứng dụng phổ biến sử dụng Gantt Chart: ClickUp, RedBooth, GanttProject,
Toggl Plan, TeamGantt, Tom’s Planner, StudioBinder…


Có sự liên kết giữa các cơng việc nhờ vào các Đường găng.
Lợi ích khi áp dụng Gantt Chart:
• Rất trực quan khi quản lý và kiểm sốt cơng việc theo tiến độ thời gian.

• Dễ dàng thiết kế cũng như giải thích cho một thành viên mới về tiến độ dự
án, vì Gantt rất trực quan và biểu diễn rất tổng quan (trong các dự án nhỏ).
Nhược điểm:
• Ở các dự án lớn có nhiều cơng việc, Gantt Chart rất dễ làm cơng việc chồng
chéo lên nhau, gây khó khăn khi kiểm sốt và quản lý.
• Phụ thuộc vào cấu trúc đã xây dựng: nếu một công việc nào đó bị thiếu hoặc
phân chia lỗi trước đó, việc chỉnh sửa có thể rất khó khăn và ảnh hưởng đến
tồn bộ hoạch định thời gian của dự án.
• Khó xác định mức độ ưu tiên nếu có nhiều cơng việc đan xen liên tiếp trên
Gantt.

2.1.3 So sánh giữa Gantt Chart và Kanban
Kanban
Trực quan
Giảm sai sót trong q trình thực hiện
Thể hiện thứ tự công việc
Giải quyết chồng chéo công việc
Kết nối (phụ thuộc) giữa các công việc

Gantt Chart


Trực quan về thời gian
Phù hợp mọi quy mô dự án
Dễ dàng thực hiện

2.1.4 Thuật toán xếp lịch cho Gantt Chart
2.1.4.1

Mục đích


Dựa trên các cơng việc được tạo, tự động xắp xếp thứ tự và độ ưu tiên cho
các công việc trong dự án theo Gantt Chart.
Giảm thời gian tự tay sắp xếp lần lượt các công việc của người tạo danh sách
công việc.
2.1.4.2

Đối tượng áp dụng

Các công việc (tasks) được giao trong quản lý nhóm hoặc dự án.

2.1.4.3

Các thơng tin sử dụng

Thuật tốn áp dụng các thơng tin của task gồm:
• Độ ưu tiên (Priority point):


Được tính bằng số point (1, 2, 3,…), thể hiện độ khẩn cấp, mức

độ cần hồn thành gấp của cơng việc đó.


Cơng việc nào có độ ưu tiên (số point) lớn hơn sẽ được ưu tiên

xếp trước trong Gantt Chart.
• Độ phức tạp (Complexity point):



Được tính bằng đơn vị thời gian (ngày hoặc giờ), thể hiện độ

phức tạp về thời gian và độ khó giải quyết của cơng việc đó.




Những cơng việc nào độ ưu tiên bằng nhau thì sẽ chọn cơng

việc có độ phức tạp thấp hơn để thực hiện trước trong Gantt Chart.
• Ràng buộc (phụ thuộc) giữa các công việc:


Là ràng buộc về công việc tiên quyết (cần hồn thành trước)

của một cơng việc bất kỳ.


Khi thực hiện xếp lịch, một công việc bắt buộc phải được bắt

đầu sau khi những công việc tiên quyết của nó đều đã hồn thành.
• Thời hạn hồn thành cơng việc:
Là deadline của các cơng việc, độ chính xác tới mức: Giờ
2.1.4.4

Cơ sở thuật tốn

• Thuật tốn Multi Level Queue:



Áp dụng ý tưởng các cơng việc có thể được xếp vào các luồng

chạy song song nhau. Các queue không phụ thuộc thứ tự vào nhau.


Khi khởi tạo danh sách công việc của nhóm, mỗi cơng việc sẽ

được gán cho một và chỉ một thành viên bất kỳ để hoàn thành.


Mỗi thành viên trong nhóm được xem như một queue độc lập,

giải quyết các công việc độc lập nhau và song song nhau.
• Thuật tốn Priority Scheduling:


Sắp xếp thứ tự theo độ ưu tiên công việc.



Áp dụng dựa vào độ ưu tiên (Priority point) của các công việc

để xếp thứ tự thực hiện trước hoặc sau của chúng trong Gantt Chart.
• Thuật toán Shortest Job First:


Sắp xếp thứ tự theo độ phức tạp công việc.




Áp dụng dựa vào độ phức tạp (Complexity point) của các công

việc để xếp thứ tự thực hiện trước hoặc sau của chúng trong Gantt Chart.
• Thuật toán DFS (Depth-first search):




Là một dạng thuật tốn duyệt hoặc tìm kiếm trên cây hoặc đồ

thị theo chiều sâu. DFS nằm trong chiến lược tìm kiếm mù (tìm kiếm
khơng có định hướng, khơng chú ý đến thông tin, giá trị được duyệt).


Dùng DFS cho giai đoạn cuối cùng của xếp lịch, khi cần tìm ra

các bộ (tasks) theo thứ tự tối ưu nhất.

2.1.4.5

Xây dựng thuật tốn

1. Kiểm tra tính hợp lệ dữ liệu:
o
Đảm bảo không xảy ra mâu thuẫn về ràng buộc giữa các tasks
o
Thực hiện:

Mơ hình hóa thành đồ thị có hướng : G=(V, A), trong đó:
Tập đỉnh V: là tập các tasks.

Tập cạnh có hướng A: là các cạnh đơn hướng, biểu diễn cho một ràng
buộc thứ tự hoàn thành.

Đồ thị thể hiện mối quan hệ thứ tự thực hiện giữa các tasks
➢ Dùng thuật toán duyệt chiều sâu DFS, kiểm tra tính đúng đắn bằng cách
tìm xem trong đồ thị có chu trình hay khơng.
➢ Nếu xuất hiện chu trình: dữ liệu không hợp lệ để tạo Gantt Chart, thông
báo và kết thúc thuật toán.


Đồ thị có chu trình, mâu thuẫn về thứ tự thực hiện

2.
3.
o
o
o

Sắp xếp tất cả theo ngày kết thúc tăng dần
Đặt các task đã sắp xếp vào Gantt (Hình 1):
Đặt task vào đúng danh sách task của người đảm nhận task đó
Điểm bắt đầu là ngày bắt đầu dự án
Điểm kết thúc chính là Deadline của task đó

Hình 1. Các task được đặt vào Gantt chart thỏa mãn deadline


4.
Thực hiện ràng buộc quan hệ trước sau cho các task bằng cách
duyệt qua tất cả task, tại mỗi task:

o Duyệt qua danh sách các task phải hoàn thành trước của nó,
chọn ra task nào có deadline lớn nhất (trễ nhất): maxDeadline
o Dời start-time của task đang xét về ngay sau maxDeadline đã
tìm được

Hình 2. Các task thỏa ràng buộc thứ tự thực hiện

Hình 3. Ràng buộc thứ tự được biểu diễn bằng đường nối


5.

Chọn ra các bộ thứ tự loại bỏ đi trùng lặp cơng việc tại một thời

điểm:
o Nhận xét:

Hiện tại (hình 3) các Đường Găng trên Gantt Chart đang
biểu diễn cho khoảng ngày liên tiếp (vùng) mà task đó có thể được đặt
vào.
Ví dụ:
Task 7 có đường Găng trải từ ngày 1 đến ngày 5.
Nhưng số ngày cần thiết để hoàn thành task 7 chỉ có 4 ngày,
thì task 7 có thể được đặt vào khoảng {1->2->3->4} hoặc {2->3->4>5}

Vậy mỗi task có đường Găng chính là vùng “an tồn” để
đặt task đó, đảm bảo khơng phá vỡ ngun tắc deadline và ràng buộc
trước sau giữa các task

Hình 4. Các task nằm trong đường găng của chúng


o Nhiệm vụ:
▪ Chọn ra một bộ thứ tự của các task


▪ Đảm bảo mỗi task phải nằm trên đường Găng của nó
▪ Thời gian hồn thành task cuối cùng của bộ đó phải là sớm nhất
o Thực hiện:
▪ Chọn ra các bộ đường găng bị chồng chéo lên nhau (Hình 5)
▪ Sử dụng thuật toán DFS (Depth-first search): Thực hiện DFS cho mỗi
bộ để tìm ra các bộ thứ tự có thời gian hồn thành sớm nhất (Hình 6)

Hình 5. Phân vùng nhóm các tasks bị chồng nhau


Hình 6. Một cách sắp xếp hồn chỉnh sau khi đã thực hiện DFS xong

6.
Chọn bộ thứ tự tối ưu nhất dựa trên Độ ưu tiên và Độ phức tạp
(thời gian) của các bộ:
Chọn ra bộ có Độ ưu tiên tối ưu nhất, nếu có nhiều bộ cùng độ ưu
tiên, ta sẽ tiếp tục chọn dựa trên bộ có Độ phức tạp tối ưu nhất.
o Tính Độ ưu tiên của một bộ thứ tự:
Nhận xét: vì cơng việc có độ ưu tiên lớn hơn nên được thực hiện
trước, nên một bộ có độ ưu tiên tối ưu là bộ có thứ tự các độ ưu tiên giảm
dần theo cách sắp xếp (Hình 7).

Hình 7. Một bộ thứ tự các tasks có Độ ưu tiên tối ưu (giảm dần)



×