Bối cảnh và vấn đề nghiên cứu
Khóa luận tốt nghiệp "Xây dựng website quản lý công việc trực tuyến sử dụng Golang và ReactJS" (mã số lưu trữ: SKL013815) được thực hiện bởi sinh viên Trần Phúc Khánh (MSSV: 20110221) và Trần Quang Khánh (MSSV: 20110660), chuyên ngành Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh dưới sự hướng dẫn của ThS. Nguyễn Minh Đạo (bảo vệ tháng 8 năm 2024).
Bối cảnh thực tiễn được nhóm tác giả xác định xuất phát từ sự phát triển nhanh chóng của công nghệ thông tin cùng xu hướng làm việc trực tuyến và làm việc từ xa. Thực tế này dẫn đến nhu cầu cấp thiết về các công cụ quản lý công việc có tính linh hoạt, hỗ trợ cộng tác nhóm hiệu quả mà không bị rào cản bởi khoảng cách địa lý. Trong bối cảnh đó, phương pháp quản lý Agile Scrum được đánh giá là mô hình phù hợp giúp các nhóm gia tăng sự tương tác, cải tiến liên tục và phản hồi nhanh chóng trước những thay đổi. Do đó, việc xây dựng một hệ thống website quản lý công việc trực tuyến mang tên iTask theo phương pháp luận Agile Scrum là cần thiết nhằm đáp ứng nhu cầu thực tế của các cá nhân và doanh nghiệp quy mô nhỏ.
Mục tiêu nghiên cứu tổng quát của đề tài là xây dựng hoàn chỉnh ứng dụng web iTask chuyên nghiệp nhằm hỗ trợ người dùng theo dõi tiến độ công việc của dự án và kiểm soát khối lượng công việc cá nhân. Nhóm tác giả cụ thể hóa thành 4 mục tiêu kỹ thuật:
- Tạo giao diện người dùng trực quan, thân thiện, tạo điều kiện thuận lợi cho việc tương tác và khởi tạo dự án trên môi trường web.
- Xây dựng hệ thống bảo mật và cơ chế quyền riêng tư đáng tin cậy nhằm bảo vệ thông tin tài khoản và dữ liệu dự án của người dùng.
- Tối ưu hóa hiệu suất vận hành và khả năng mở rộng của hệ thống để sẵn sàng đáp ứng lượng người dùng gia tăng trong tương lai.
- Đáp ứng đầy đủ các nghiệp vụ cơ bản của một hệ thống quản lý công việc: truy cập danh mục dự án, tham gia dự án, phân công và quản lý công việc, quản lý danh sách thành viên.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình nghiệp vụ quản lý dự án trực tuyến theo mô hình Agile Scrum; các công cụ hỗ trợ hiện hữu (Jira, Trello, Notion, Hive); công nghệ backend với ngôn ngữ Golang và Gin framework; công nghệ frontend với ReactJS và thư viện Redux; cơ chế bảo mật JWT (JSON Web Tokens); hệ quản trị cơ sở dữ liệu MySQL và Redis.
- Phạm vi nghiên cứu: Về mặt không gian và ứng dụng, hệ thống tập trung phục vụ đối tượng người dùng cá nhân và các nhóm làm việc, doanh nghiệp quy mô nhỏ; về mặt kỹ thuật, phạm vi giới hạn trong việc nghiên cứu, áp dụng kiến thức chuyên ngành công nghệ phần mềm tại trường đại học để xây dựng sản phẩm phần mềm hoàn chỉnh từ khâu khảo sát, phân tích, thiết kế đến cài đặt và kiểm thử chức năng.
Cơ sở lý thuyết và công nghệ áp dụng
Hệ thống iTask được phát triển dựa trên nền tảng lý thuyết phát triển phần mềm hiện đại và phương pháp luận Agile Scrum, kết hợp bộ công nghệ chuyên biệt cho hệ thống web phân tầng:
- Mô hình phát triển Agile Scrum: Hệ thống áp dụng các khái niệm và thành phần cốt lõi của Scrum bao gồm Sprint, Sprint Backlog, Kanban Board và phân định vai trò quản lý dự án (Project Owner) cùng thành viên nhóm (Member) nhằm tối ưu quy trình làm việc lặp (iterations).
- Ngôn ngữ Golang và Gin Gonic Framework: Golang (Go) do Google phát triển từ năm 2009 được lựa chọn cho tầng xử lý phía máy chủ nhờ hiệu năng tương đương ngôn ngữ C, cơ chế xử lý đồng thời (concurrency) hiệu quả dựa trên goroutines và channels. Gin Gonic là web framework viết bằng Go, đóng vai trò xây dựng hệ thống RESTful API với các phương thức GET, POST, PUT, DELETE. Gin sở hữu bộ định tuyến (router) tốc độ cao, khả năng quản lý goroutines thông qua cơ chế pooling, xử lý định dạng JSON và tích hợp các middleware xác thực, phân quyền và xử lý ngoại lệ.
- Thư viện ReactJS và TypeScript: ReactJS (Meta phát triển) được sử dụng để xây dựng giao diện người dùng đơn trang (SPA) dựa trên kiến trúc thành phần (components) và cơ chế Virtual DOM giúp tối ưu hóa việc cập nhật giao diện. Ngôn ngữ TypeScript (Microsoft phát triển) được tích hợp để bổ sung cơ chế kiểm tra kiểu tĩnh (static typing), định nghĩa kiểu giao diện (interfaces) và hỗ trợ lập trình hướng đối tượng, giúp kiểm soát lỗi cú pháp và kiểu dữ liệu ngay trong quá trình biên dịch.
- Quản lý trạng thái Redux: Để kiểm soát trạng thái phức tạp của các thành phần giao diện, thư viện Redux được tích hợp theo luồng dữ liệu một chiều khép kín: Action (hành động người dùng) $\rightarrow$ Reducer (hàm tính toán trạng thái mới) $\rightarrow$ Central Store (kho lưu trữ tập trung) $\rightarrow$ View (giao diện được cập nhật phản ánh dữ liệu mới).
- Cơ sở dữ liệu MySQL và bộ nhớ đệm Redis: MySQL là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở đảm nhiệm lưu trữ dữ liệu bền vững của hệ thống. Redis là hệ thống lưu trữ cấu trúc dữ liệu trên bộ nhớ (in-memory data structure store), được triển khai với hai vai trò chính: tầng lưu trữ bộ đệm (caching) nhằm giảm tải cho cơ sở dữ liệu quan hệ và làm Message Broker (hàng đợi queue, pub/sub) hỗ trợ điều phối thông báo trong hệ thống.
- Ảo hóa và đóng gói Docker: Nền tảng container hóa Docker (viết bằng Golang, tận dụng Linux namespaces) được sử dụng để đóng gói toàn bộ mã nguồn, thư viện và môi trường thực thi vào các container tiêu chuẩn hóa, đảm bảo tính đồng nhất giữa môi trường phát triển và môi trường vận hành thực tế.
- Cơ chế bảo mật JWT: JSON Web Tokens được tích hợp để tạo lập chuỗi mã hóa phiên làm việc của người dùng, xác thực danh tính stateless thông qua HTTP Header trong mỗi yêu cầu gửi tới máy chủ backend.
| Thành phần kỹ thuật |
Công nghệ / Thư viện sử dụng |
Vai trò trong hệ thống iTask |
| Ngôn ngữ & Framework Backend |
Golang, Gin Gonic |
Xây dựng RESTful API, xử lý nghiệp vụ, điều phối đa luồng |
| Ngôn ngữ & Thư viện Frontend |
ReactJS, TypeScript, Redux |
Xây dựng giao diện đơn trang, kiểm tra kiểu dữ liệu, quản lý trạng thái tập trung |
| Cơ sở dữ liệu chính |
MySQL |
Lưu trữ dữ liệu quan hệ có cấu trúc bền vững |
| Bộ đệm & Xử lý thông điệp |
Redis |
Lưu trữ cache tạm thời trong bộ nhớ, đóng vai trò Message Broker |
| Container hóa |
Docker |
Đóng gói môi trường thực thi và triển khai ứng dụng |
| Cơ chế xác thực |
JWT (JSON Web Tokens) |
Xác thực danh tính người dùng qua mã hóa phiên |
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc phân tầng khách - chủ (Client - Server) tách biệt giữa giao diện người dùng và máy chủ xử lý dữ liệu:
- Kiến trúc tổng thể: Tầng máy khách (Frontend) phát triển bằng ReactJS/TypeScript gửi các yêu cầu HTTP/HTTPS đến tầng máy chủ (Backend) thông qua API Gateway do Gin Gonic phụ trách. Tầng dịch vụ backend xử lý logic nghiệp vụ, giao tiếp với Redis để truy xuất cache hoặc điều phối tin nhắn qua cơ chế pub/sub, và tương tác với MySQL để thực hiện các thao tác truy vấn dữ liệu có cấu trúc.
- Tác nhân hệ thống: Hệ thống xác định 2 nhóm tác nhân (actors) chính:
- Thành viên (Member): Người dùng đã đăng ký tài khoản, có quyền tra cứu danh sách dự án, xem chi tiết dự án, quản lý dự án yêu thích, xem danh sách thành viên và tập tin, theo dõi Sprint Backlog, thao tác công việc trên giao diện List Task và bảng Kanban (kéo thả trạng thái, đổi vị trí, gán công việc, bình luận).
- Người quản lý dự án (Project Owner): Sở hữu toàn bộ quyền hạn của Member, đồng thời giữ quyền quản trị dự án bao gồm chỉnh sửa thông tin dự án, xóa dự án, mời hoặc loại bỏ thành viên khỏi dự án, chuyển quyền sở hữu dự án cho người khác, khởi tạo, cập nhật, xóa Sprint, cũng như kích hoạt bắt đầu (Start) hoặc kết thúc (Complete) một Sprint.
- Phân tích yêu cầu chức năng: Tài liệu xác định 17 yêu cầu nghiệp vụ của Member (Bảng 1 trong văn bản), 7 yêu cầu nghiệp vụ của Project Owner (Bảng 2) và 4 yêu cầu chức năng hệ thống (Bảng 3 gồm: phân quyền Guest/Member/Owner; xác thực người dùng qua email; khôi phục mật khẩu qua liên kết email; phân phối thông báo qua Message Broker).
- Yêu cầu phi chức năng: Được chuẩn hóa thành 4 tiêu chí (Bảng 4 trong văn bản): tính tiện dụng (giao diện thân thiện), tính hiệu quả (tốc độ xử lý và tìm kiếm nhanh chóng, chính xác), tính bảo mật (dữ liệu cá nhân được mã hóa và bảo vệ), và tính tiến hóa (hệ thống dễ dàng mở rộng quy mô).
- Thiết kế cơ sở dữ liệu: Cơ sở dữ liệu quan hệ của hệ thống iTask gồm 14 bảng dữ liệu liên kết:
users: Lưu trữ thông tin tài khoản người dùng (mã người dùng, họ tên, email, mật khẩu mã hóa...).
verify emails: Quản lý các mã xác thực và trạng thái kích hoạt tài khoản qua email.
sprints: Quản lý chu kỳ làm việc theo mô hình Scrum (tên sprint, thời gian bắt đầu, kết thúc, trạng thái).
tasks: Lưu trữ chi tiết công việc (tiêu đề, mô tả, mức độ ưu tiên, trạng thái, sprint liên kết).
project_members: Quản lý danh sách thành viên thuộc từng dự án và vai trò tương ứng.
task_assigned: Quản lý quan hệ phân công công việc cho từng thành viên cụ thể.
favourites: Lưu trữ danh mục các dự án được người dùng đánh dấu yêu thích.
comments: Lưu trữ nội dung bình luận, phản hồi và trạng thái ghim (pin) trên công việc.
attachments: Quản lý đường dẫn và thông tin tệp tin đính kèm trong các nhiệm vụ.
tags: Danh mục thẻ phân loại công việc và dự án.
project_tags: Bảng liên kết thẻ phân loại với từng dự án.
task_tags: Bảng liên kết thẻ phân loại với từng công việc cụ thể.
notifications: Lưu trữ nội dung các thông báo hệ thống phát sinh từ hoạt động dự án.
notification_notified: Quản lý trạng thái đã đọc hoặc chưa đọc của người dùng nhận thông báo.
- Quy trình và kết quả kiểm thử: Báo cáo xây dựng quy trình kiểm thử chức năng hoàn chỉnh cho cả hai phân hệ Member và Project Owner. Các kịch bản kiểm thử bao gồm: quy trình xác thực (đăng ký, đăng nhập hệ thống, đăng nhập qua tài khoản Google, đổi mật khẩu, quên mật khẩu); quy trình tương tác dự án (tạo, sửa, phân quyền, thêm/loại bỏ dự án yêu thích); quy trình thao tác công việc (thêm, sửa, xóa, kéo thả trạng thái trên Kanban Board, gán thành viên); quy trình quản trị Sprint (khởi tạo, chỉnh sửa, bắt đầu và kết thúc Sprint); quy trình đính kèm tệp tin và thông báo. Kết quả kiểm thử chức năng thành viên và người quản lý dự án đều ghi nhận hệ thống hoạt động ổn định và chính xác theo đặc tả.
Nội dung chính theo từng chương
Phần mở đầu
Trình bày tính cấp thiết của đề tài trong xu thế làm việc trực tuyến; xác định mục tiêu nghiên cứu tổng quát và 4 mục tiêu cụ thể; giới thiệu đối tượng nghiên cứu (nghiệp vụ quản lý dự án Agile Scrum, công nghệ Golang, Gin, ReactJS, Redux, MySQL, Redis, Docker); xác định phạm vi nghiên cứu thực nghiệm tại trường đại học và ý nghĩa thực tiễn của đề tài trong việc tiếp cận các quy trình kỹ nghệ phần mềm chuyên nghiệp.
Chương 1: Cơ sở lý thuyết
Cung cấp tổng quan lý thuyết kỹ thuật về các công nghệ nền tảng cấu thành hệ thống. Nội dung bao gồm lịch sử phát triển, cú pháp, cơ chế goroutines/channels của ngôn ngữ Golang; các ưu điểm về routing, pooling, middleware của Gin Gonic framework; cơ chế render Virtual DOM của ReactJS; tính năng kiểm tra kiểu tĩnh của ngôn ngữ TypeScript; mô hình quản lý trạng thái tập trung Action-Reducer-Store của Redux; kiến trúc container hóa dựa trên namespaces của Docker; cùng cơ chế lưu trữ dữ liệu in-memory và phân phối bản tin pub/sub của hệ thống Redis.
Chương 2: Khảo sát hiện trạng và đặc tả yêu cầu phần mềm
Khảo sát và đối sánh 3 hệ thống quản lý công việc và dự án phổ biến trên thị trường: Jira, Trello và Notion nhằm rút ra các ưu điểm cần kế thừa và hạn chế cần khắc phục khi xây dựng iTask.
| Hệ thống khảo sát |
Ưu điểm chính ghi nhận |
Nhược điểm và hạn chế |
| Jira |
Hỗ trợ chuyên sâu cho Agile Scrum và Kanban; quản lý backlog, lập kế hoạch sprint mạnh mẽ; khả năng tùy biến trường dữ liệu cao; tích hợp hệ sinh thái Atlassian lớn. |
Cấu hình phức tạp đối với người dùng không chuyên; chi phí bản quyền cao đối với tổ chức lớn; hiệu suất đôi khi suy giảm khi xử lý khối lượng dữ liệu lớn. |
| Trello |
Giao diện trực quan, dễ làm quen; quản lý dạng thẻ (cards) và bảng (boards) linh hoạt; hỗ trợ tính năng tự động hóa và tiện ích mở rộng (Power-Ups); đa nền tảng. |
Thiếu tính năng quản lý Sprint và Backlog chuyên biệt theo chuẩn Scrum; thiếu biểu đồ burndown và công cụ báo cáo tiến độ tự động; khó kiểm soát khi dự án mở rộng. |
| Notion |
Tính năng đa năng (ghi chép, lập bảng biểu, cơ sở dữ liệu linh hoạt); giao diện tùy biến tự do theo nhu cầu cá nhân/nhóm; hỗ trợ cộng tác tài liệu thời gian thực. |
Không có sẵn các công cụ chuẩn hóa cho Scrum (như Sprint, Product Backlog, Burn-down Chart); đòi hỏi nhiều thời gian cấu hình ban đầu; thiếu quy trình workflow chuyên biệt. |
Bên cạnh khảo sát hiện trạng, chương 2 công bố sơ đồ kiến trúc chung của hệ thống iTask; lập bảng đặc tả yêu cầu chức năng nghiệp vụ thành viên (17 chức năng), yêu cầu chức năng người quản lý dự án (7 chức năng), 4 yêu cầu chức năng hệ thống và 4 yêu cầu phi chức năng (tính tiện dụng, tính hiệu quả, tính bảo mật, tính tiến hóa).
Chương 3: Phân tích và thiết kế hệ thống
Xác định 2 tác nhân chính (Member, Project Owner); xây dựng lược đồ Use Case tổng thể; chi tiết hóa các bảng đặc tả Use Case bao gồm thông tin tóm tắt, điều kiện tiên quyết (Pre-conditions), điều kiện kết thúc (Post-conditions), luồng sự kiện chính (Main Flow), luồng rẽ nhánh (Alternate Flow) và luồng xử lý ngoại lệ (Exception Flow) cho các chức năng then chốt: Đăng ký, Đăng nhập, Đăng xuất, Xem/Chỉnh sửa thông tin cá nhân, Thay đổi mật khẩu, Quên mật khẩu. Xây dựng lược đồ Class Diagram và hơn 40 lược đồ tuần tự (Sequence Diagram) mô tả chi tiết tương tác thông điệp giữa các đối tượng trong toàn bộ quy trình nghiệp vụ hệ thống.
Chương 4: Thiết kế cơ sở dữ liệu
Thiết kế lược đồ quan hệ thực thể (ERD) và lược đồ cơ sở dữ liệu chi tiết cho 14 bảng dữ liệu: users, verify emails, sprints, tasks, project_members, task_assigned, favourites, comments, attachments, tags, project_tags, task_tags, notifications, notification_notified. Mỗi bảng đều được định nghĩa rõ ràng về tên trường, kiểu dữ liệu, khóa chính, khóa ngoại và các ràng buộc toàn vẹn dữ liệu.
Chương 5: Thiết kế giao diện
Trình bày thiết kế giao diện đồ họa thực tế của hệ thống iTask theo từng phân hệ người dùng:
- Giao diện phân hệ thành viên: Trang đăng nhập, đăng nhập qua tài khoản Google, đăng ký tài khoản, trang Dashboard tổng quan, trang danh sách dự án, trang chi tiết dự án, trang thông tin cá nhân (My Profile), trang tệp tin đính kèm (Attachments), trang danh sách công việc dạng bảng (List Task), trang chi tiết/tạo mới/chỉnh sửa công việc, bảng Kanban Board kéo thả, màn hình Sprint Backlog của thành viên, các trang đổi/quên mật khẩu và màn hình danh sách thông báo.
- Giao diện phân hệ người quản lý dự án: Màn hình chi tiết dự án với các chức năng mở rộng, giao diện mời thành viên qua email, giao diện bàn giao quyền sở hữu dự án, trang quản lý Sprint Backlog, giao diện khởi tạo Sprint, giao diện bắt đầu Sprint và giao diện xác nhận kết thúc Sprint.
Chương 6: Cài đặt và kiểm thử
Đặc tả cấu hình môi trường phần cứng, phần mềm phục vụ việc cài đặt và vận hành hệ thống. Mô tả chi tiết các bước cài đặt hệ thống backend (Golang/Gin), frontend (ReactJS/Redux), thiết lập cơ sở dữ liệu MySQL và cấu hình Redis/Docker. Trình bày phương pháp kiểm thử hộp đen (Black-box testing) theo kịch bản chức năng; công bố bảng tổng hợp kết quả kiểm thử chức năng cho phân hệ Thành viên và phân hệ Người quản lý dự án với kết quả kiểm thử đạt yêu cầu thiết kế.
Phần kết luận
Đánh giá tổng kết các kết quả kỹ thuật đã hoàn thành của đồ án; chỉ ra các mặt hạn chế còn tồn tại của hệ thống và đề xuất các định hướng nâng cấp, phát triển tiếp theo.
Kết quả và đóng góp
Khóa luận ghi nhận các kết quả thực tế cụ thể:
- Đã phân tích, thiết kế và xây dựng thành công ứng dụng web quản lý công việc iTask hoàn chỉnh, ứng dụng đầy đủ mô hình phát triển phần mềm Agile Scrum.
- Triển khai thành công kiến trúc backend hiệu năng cao bằng Golang kết hợp Gin Gonic, xây dựng hệ thống RESTful API hoàn chỉnh phục vụ hơn 40 luồng nghiệp vụ tương ứng với các biểu đồ tuần tự được thiết kế.
- Hoàn thiện giao diện frontend bằng ReactJS kết hợp TypeScript và Redux, cung cấp trải nghiệm mượt mà với tính năng kéo thả trực quan trên bảng Kanban, quản lý công việc trên List Task, hệ thống bình luận đa cấp có tính năng ghim bài viết, và quản lý tệp tin đính kèm.
- Ứng dụng thành công Redis trong việc tối ưu tốc độ truy xuất thông qua lưu trữ bộ đệm và điều phối thông báo hệ thống theo mô hình Message Broker; tích hợp Docker hỗ trợ đóng gói và triển khai ứng dụng độc lập trên các môi trường.
- Thiết kế chuẩn hóa cơ sở dữ liệu gồm 14 bảng quan hệ, bảo đảm tính toàn vẹn dữ liệu và hỗ trợ đầy đủ các quan hệ phân quyền phức tạp giữa Member và Project Owner.
Giải pháp và đề xuất kỹ thuật của nhóm tác giả:
- Đề xuất mô hình tích hợp Gin Gonic và ReactJS/TypeScript/Redux nhằm tối ưu hóa tốc độ phản hồi của hệ thống và tăng cường độ tin cậy trong kiểm soát kiểu dữ liệu cho các ứng dụng web quản lý dự án.
- Tinh giản quy trình quản lý dự án phức tạp của các công cụ thương mại quy mô lớn (như Jira) thành một nền tảng gọn nhẹ, tập trung vào nhu cầu cốt lõi của các nhóm nhỏ: quản lý Sprint vòng đời ngắn, theo dõi trạng thái công việc qua Kanban trực quan và trao đổi thông tin nội bộ.
Đóng góp so với các nghiên cứu trước:
- Tác giả tự nêu việc làm chủ và tích hợp thành công các công nghệ mới nổi (Golang, Gin, TypeScript) vào bài toán quản trị công việc thực tiễn, thay thế cho các ngăn xếp công nghệ truyền thống.
- Cung cấp tài liệu phân tích thiết kế hệ thống chi tiết từ khảo sát thực tế, lược đồ ca sử dụng, đặc tả kịch bản kiểm thử cho đến thiết kế cơ sở dữ liệu hoàn chỉnh, có giá trị ứng dụng cao cho việc nghiên cứu phát triển các hệ thống cộng tác nhóm.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của hệ thống:
- Do điều kiện thời gian và kinh nghiệm thực tế của nhóm sinh viên còn hạn chế, hệ thống mới chỉ đáp ứng các quy trình nghiệp vụ cốt lõi của Scrum cho nhóm nhỏ, chưa tích hợp các công cụ phân tích và báo cáo nâng cao (như biểu đồ Burndown Chart, biểu đồ Velocity hoặc các báo cáo thống kê hiệu suất thành viên tự động như trên các hệ thống thương mại).
- Hệ thống chưa hỗ trợ đa ngôn ngữ và chưa phát triển ứng dụng di động tương thích hoàn chỉnh trên các nền tảng khác nhau mà chủ yếu tối ưu hóa trên nền tảng trình duyệt web.
Hướng nghiên cứu và phát triển tiếp theo:
- Hoàn thiện các công cụ thống kê, báo cáo tiến độ tự động, bổ sung các biểu đồ trực quan hóa dữ liệu theo dõi dự án (Burndown Chart, biểu đồ khối lượng công việc).
- Mở rộng khả năng tích hợp của iTask với các dịch vụ bên thứ ba (như lưu trữ đám mây Google Drive, các nền tảng chat như Slack hoặc các công cụ quản lý mã nguồn Git).
- Tối ưu hóa hơn nữa hiệu năng xử lý, nâng cao tính sẵn sàng cao (High Availability) của cơ sở dữ liệu và triển khai hệ thống trên nền tảng điện toán đám mây.
Giá trị tham khảo
Tài liệu khóa luận là nguồn tư liệu tham khảo hữu ích cho:
- Sinh viên chuyên ngành Công nghệ thông tin, Công nghệ phần mềm, Kỹ thuật phần mềm đang chuẩn bị thực hiện đồ án tốt nghiệp hoặc các đề tài phát triển ứng dụng web full-stack.
- Các lập trình viên và nhóm nghiên cứu mong muốn tìm hiểu phương thức xây dựng kiến trúc RESTful API bằng ngôn ngữ Go (Golang) kết hợp Gin framework, cũng như cách tổ chức mã nguồn phía client với ReactJS, TypeScript và Redux.
- Các nhà phát triển hệ thống cần tài liệu tham khảo thực tế về quy trình thiết kế cơ sở dữ liệu quản lý công việc (14 bảng chuẩn hóa), quy trình đặc tả Use Case chi tiết có phân tích luồng chính, luồng phụ và luồng ngoại lệ, cùng phương pháp lập kịch bản kiểm thử hộp đen cho phần mềm quản lý dự án.
Các phần đáng tham khảo nhất trong tài liệu gồm: Chương 2 với bảng phân tích ưu - nhược điểm đối sánh Jira, Trello, Notion; Chương 3 với hệ thống ca sử dụng và các kịch bản luồng sự kiện chi tiết; Chương 4 với cấu trúc lược đồ dữ liệu 14 bảng quan hệ cho bài toán Agile Scrum.
Câu hỏi thường gặp
1. Hệ thống iTask phân định những nhóm người dùng nào và quyền hạn giữa các nhóm khác nhau như thế nào?
Hệ thống phân định 2 nhóm tác nhân người dùng chính là Member (Thành viên) và Project Owner (Người quản lý dự án), bên cạnh trạng thái Guest (người dùng chưa xác thực). Member có quyền tra cứu dự án, quản lý dự án yêu thích, quản lý công việc trên List Task và bảng Kanban, gán công việc, bình luận và đính kèm tập tin. Project Owner sở hữu toàn bộ quyền của Member, đồng thời giữ các quyền quản trị độc quyền: chỉnh sửa hoặc xóa dự án, mời hoặc loại bỏ thành viên, chuyển quyền sở hữu dự án cho thành viên khác, và toàn quyền quản lý Sprint (tạo, sửa, xóa, bắt đầu hoặc kết thúc Sprint).
2. Điểm hạn chế chính của Jira, Trello và Notion mà tác giả chỉ ra khi khảo sát hiện trạng là gì?
Trong Chương 2, tác giả nêu rõ: Jira có độ phức tạp cao, chi phí đắt đỏ và đôi khi suy giảm hiệu suất khi dữ liệu lớn; Trello thiếu công cụ quản lý Sprint và Backlog theo chuẩn Scrum, thiếu báo cáo tiến độ tự động (như biểu đồ burndown); Notion không hỗ trợ sẵn các tính năng chuyên biệt cho Scrum (như Sprint, Product Backlog), khả năng cấu hình quy trình Scrum hạn chế và đòi hỏi nhiều thời gian thiết lập ban đầu.
3. Cơ sở dữ liệu của iTask được thiết kế gồm những bảng nào để quản lý các tính năng Scrum và cộng tác?
Cơ sở dữ liệu gồm 14 bảng, trong đó các bảng phục vụ tính năng Scrum và cộng tác gồm: sprints (quản lý chu kỳ sprint), tasks (quản lý công việc), task_assigned (phân công nhiệm vụ), project_members (thành viên dự án), comments (bình luận, phản hồi, ghim bình luận), attachments (tệp tin đính kèm), tags, project_tags, task_tags (hệ thống thẻ phân loại), cùng notifications và notification_notified (hệ thống thông báo).
4. Quy trình xác thực và khôi phục tài khoản trong hệ thống iTask được thực hiện như thế nào?
Quy trình xác thực tài khoản được thực hiện thông qua email (lưu trữ và đối soát qua bảng verify emails). Đối với chức năng quên mật khẩu, người dùng nhập email tại giao diện đăng nhập; hệ thống kiểm tra và gửi thư chứa đường dẫn xác thực (reset link); người dùng nhấp vào liên kết xác thực được gửi đến hòm thư để tiến hành tạo lập mật khẩu mới và lưu vào cơ sở dữ liệu.
5. Redis và Docker đóng vai trò kỹ thuật gì trong kiến trúc của hệ thống iTask?
Redis được sử dụng với hai mục đích: làm lớp lưu trữ bộ đệm (caching) dữ liệu tạm thời trong bộ nhớ giúp tăng tốc độ phản hồi của hệ thống, và làm Message Broker (vận hành qua cơ chế hàng đợi queue và kênh pub/sub) để phân phối các thông báo thời gian thực đến người dùng. Docker được ứng dụng để đóng gói mã nguồn và các phụ thuộc hệ điều hành vào các container tiêu chuẩn hóa, đảm bảo hệ thống có thể triển khai nhất quán và dễ dàng mở rộng quy mô.
Kết luận
Khóa luận tốt nghiệp của sinh viên Trần Phúc Khánh và Trần Quang Khánh đã hoàn thành mục tiêu xây dựng website quản lý công việc trực tuyến iTask dựa trên mô hình Agile Scrum với ngăn xếp công nghệ Golang (Gin Gonic) và ReactJS (Redux, TypeScript). Hệ thống giải quyết hiệu quả các bài toán nghiệp vụ từ quản lý dự án, Sprint Backlog, bảng Kanban tương tác đến phân quyền người dùng và trao đổi thông tin nội bộ. Đồ án được triển khai bài bản từ khâu khảo sát thực tế, phân tích thiết kế, mô hình hóa cơ sở dữ liệu cho đến kiểm thử chức năng, đóng vai trò là một tài liệu kỹ thuật có giá trị tham khảo thiết thực cho sinh viên và kỹ sư phần mềm trong lĩnh vực phát triển ứng dụng web hiện đại.