Bối cảnh và vấn đề nghiên cứu

Đề tài được thực hiện trong khuôn khổ đồ án học phần "Công cụ và môi trường phát triển phần mềm" tại Khoa Công nghệ Thông tin, Trường Đại học Công nghệ TP. Hồ Chí Minh (HUTECH) vào tháng 12/2022. Đồ án do nhóm sinh viên Nguyễn Văn Huy, Lê Đình Lan và Nguyễn Hảo Tiến (Lớp 19DTHE4) thực hiện dưới sự hướng dẫn của giảng viên ThS. Phạm Thanh Hy.

Về mặt học thuật và tài liệu, báo cáo mang tiêu đề ban đầu là "Xây dựng website quản lý nhân sự", song toàn bộ nội dung phân tích nghiệp vụ, thiết kế hệ thống, kiến trúc cơ sở dữ liệu và triển khai thực nghiệm thực tế tập trung giải quyết bài toán: Xây dựng website hỗ trợ học tập Giáo lý Công giáo và quản lý học tập trực tuyến. Sự kết hợp này hướng đến việc ứng dụng công nghệ thông tin vào công tác số hóa tài liệu giảng dạy, quản lý lớp học và tổ chức các hoạt động học tập, thi đấu kiến thức trực tuyến dành cho học sinh và các giáo phận.

Mục tiêu và nhiệm vụ nghiên cứu được nhóm tác giả xác định cụ thể như sau:

  1. Tìm hiểu và vận dụng các công cụ quản lý tiến độ dự án (Trello), hệ thống quản lý phiên bản phân tán (Git/GitHub) trong làm việc nhóm.
  2. Khảo sát và xác định chi tiết yêu cầu chức năng cho hai đối tượng người dùng: người học (học sinh) và người quản trị (Admin / Giáo lý viên).
  3. Xây dựng các mô hình thiết kế hệ thống bao gồm sơ đồ phân rã chức năng (BFD), sơ đồ ca sử dụng (Use Case Diagrams) và sơ đồ hoạt động (Activity Diagrams).
  4. Thiết kế cấu trúc cơ sở dữ liệu hướng tài liệu (NoSQL Document Store) đảm bảo khả năng lưu trữ, mở rộng và truy vấn linh hoạt.
  5. Lập trình và kiểm nghiệm thực tế hệ thống website hoàn chỉnh với đầy đủ các phân hệ học lý thuyết, kinh đọc, luyện tập trắc nghiệm phân bậc, thi đấu trực tuyến thời gian thực và các trang quản trị nội dung.

Đối tượng nghiên cứu của đề tài là quy trình học tập, ôn luyện, thi đấu kiến thức trực tuyến và hệ thống quản lý thông tin học sinh, lớp học, ngân hàng câu hỏi. Phạm vi nghiên cứu giới hạn trong việc phát triển ứng dụng web trên nền tảng Full-stack JavaScript, triển khai thử nghiệm vào tháng 12/2022 tại TP. Hồ Chí Minh.


Cơ sở lý thuyết và phương pháp

Để xây dựng hệ thống, nhóm tác giả đã tổng hợp và ứng dụng các nền tảng công nghệ, công cụ phát triển phần mềm hiện đại:

Nhóm công cụ / Công nghệ Công nghệ cụ thể Vai trò và đặc tính kỹ thuật trong đồ án
Quản lý dự án & Mã nguồn Trello Quản lý tiến độ theo mô hình Kanban; theo dõi trạng thái công việc (cần làm, đang làm, hoàn thành), phân chia công việc và kiểm soát deadline.
Git & GitHub Hệ thống quản lý phiên bản phân tán (DVCS); lưu trữ lịch sử thay đổi mã nguồn dưới dạng snapshot, hỗ trợ làm việc cộng tác và hợp nhất mã nguồn.
Nền tảng Backend & API Node.js Môi trường runtime JavaScript xây dựng trên V8 JavaScript Engine, thực thi bất đồng bộ, cho hiệu năng cao và khả năng mở rộng tốt.
ExpressJS Framework phía máy chủ cung cấp hệ thống định tuyến (Routing), middleware và phương thức HTTP để xây dựng hệ thống RESTful API an toàn.
Cơ sở dữ liệu MongoDB & Mongoose Hệ quản trị CSDL NoSQL lưu trữ dữ liệu dạng JSON/BSON theo mô hình key-value; thư viện Mongoose hỗ trợ định nghĩa Schema và thao tác dữ liệu trên Node.js.
Nền tảng Frontend ReactJS Thư viện JavaScript của Facebook phục vụ xây dựng giao diện người dùng tương tác theo cơ chế component-based và hỗ trợ render linh hoạt.
Tailwind CSS Utility-first CSS framework cung cấp các class tiện ích dựng sẵn giúp tối ưu hóa việc thiết kế giao diện responsive.
Bảo mật & Dịch vụ ngoài Bcrypt Thuật toán băm mật khẩu đảm bảo an toàn cho dữ liệu tài khoản người dùng trước khi lưu trữ vào CSDL.
Cloudinary Dịch vụ đám mây chuyên dụng để upload và lưu trữ tài nguyên hình ảnh (ảnh đại diện người dùng, banner).
CKEditor 5 & MathType Trình soạn thảo văn bản tích hợp plugin nhập công thức, hỗ trợ ban quản trị biên tập nội dung bài học và câu hỏi.

Phương pháp nghiên cứu chính bao gồm: phương pháp phân tích - tổng hợp tài liệu chuyên ngành về công nghệ web; phương pháp phân tích thiết kế hệ thống theo hướng cấu trúc và hướng đối tượng (UML); phương pháp thực nghiệm phát triển phần mềm theo từng module chức năng và kiểm thử trực tiếp trên môi trường trình duyệt.


Thiết kế và triển khai

1. Kiến trúc phân rã chức năng (Sơ đồ BFD)

Hệ thống được cấu trúc thành ba phân hệ chính:

  • Quản trị hệ thống: Quản lý và phân quyền người dùng; Quản lý bài học theo chương và môn học; Quản lý bài viết blog, thông tin sự kiện; Quản lý bài tập trắc nghiệm vận dụng theo bài học; Quản lý banner và thông tin giới thiệu.
  • Quản trị dữ liệu: Cập nhật thông tin người dùng; Cập nhật và phân loại bài tập theo chương, môn học; Cập nhật thông tin giới thiệu và banner.
  • Phục vụ người dùng: Chỉnh sửa, cập nhật thông tin cá nhân; Xem bài học và làm bài tập vận dụng; Tham gia thi đấu kiến thức; Xem kết quả và tiến độ học tập.

2. Mô hình hóa hành vi hệ thống (Use Case & Activity Diagrams)

  • Use Case: Hệ thống mô hình hóa các Use case tổng quát của Admin và Người dùng (Học sinh), cùng các Use case phân rã chi tiết gồm: Usercase Học Bài, Usercase Thông tin cá nhân, Usercase Thi Đấu.
  • Activity Diagram: Xây dựng quy trình xử lý 5 luồng nghiệp vụ cốt lõi:
    • Hoạt động học tập: Học sinh yêu cầu danh sách -> Chọn bài học -> Hệ thống đưa ra nội dung khóa học -> Lưu thông tin tiến độ đã học.
    • Tạo câu hỏi: Quản trị viên vào trang quản lý -> Lựa chọn lớp, môn học -> Nhập nội dung câu hỏi và đáp án -> Hệ thống kiểm tra ràng buộc và lưu câu hỏi vào CSDL.
    • Thi đấu trực tuyến: Người dùng đăng nhập -> Tạo phòng hoặc tham gia phòng thi -> Chủ phòng bắt đầu thi -> Hệ thống tải bộ câu hỏi -> Làm bài và gửi kết quả -> Hệ thống chấm điểm, cập nhật bảng xếp hạng tức thời.
    • Đổi mật khẩu: Nhập mật khẩu cũ, mật khẩu mới và xác nhận -> Kiểm tra định dạng và tính khớp nối -> Lưu mật khẩu đã mã hóa hoặc báo lỗi.
    • Đổi thông tin cá nhân: Nhập thông tin sửa đổi -> Kiểm tra trường bắt buộc -> Lưu dữ liệu mới.

3. Thiết kế Cơ sở dữ liệu (Database Schema)

Hệ thống thiết kế các bảng dữ liệu (Collections) phục vụ quản lý thông tin nhân sự/người dùng và quản lý nội dung học tập:

STT Tên Bảng (Collection) Khóa chính & Các trường dữ liệu chính Mô tả chức năng
1 NHANVIEN MANV (ObjectID), HOTEN, Email, Password, BirthDay, Phone, Active, Address, MATDHV, MAPB, BACLUONG Lưu trữ hồ sơ người dùng/nhân viên, thông tin tài khoản và phân quyền
2 BlogCategory BcID (ObjectID), Category Danh mục phân loại các thể loại bài viết blog
3 Blog BlogID (ObjectID), Title, Content, CreatedAt, UpdatedAt, UserID, BcID Lưu trữ nội dung bài viết, tác giả và ngày đăng tin tức/sự kiện
4 PHONGBAN MAPB (ObjectID), TENPB, Dia chi, SDTPB Quản lý thông tin các phòng ban trực thuộc
5 TRINHDOHOCVAN MATDHV (ObjectID), TENTDHV, Chuyên Ngành Quản lý các cấp bậc trình độ học vấn của thành viên
6 LUONG BACLUONG (ObjectID), LUONGCB, HSLUONG, HSPC Quản lý bậc lương cơ bản, hệ số lương và hệ số phụ cấp
7 HOPDONGLAODONG MAHD (ObjectID), MANV, MACV, LOAIHD, TUNGAY, DENNGAY Quản lý hợp đồng lao động và thời hạn công tác
8 CHUCVU MACV (ObjectID), TênCV Danh mục chức vụ công tác trong hệ thống
9 Quyen_ChucVu MACV (ObjectID), IDQuyen (ObjectID) Bảng liên kết trung gian gán quyền hạn cho từng chức vụ
10 Quyen IDQuyen (ObjectID), TENQUYEN Danh mục các quyền thao tác trong hệ thống

Nội dung chính theo từng chương

Chương 1: Tổng quan về đề tài

Chương này trình bày cơ sở tổng quan về quản lý nhân lực và phân tích chi tiết các yêu cầu chức năng của hệ thống:

  • Phân hệ người dùng (10 chức năng): Trang chủ hiển thị lớp học và bài viết nổi bật; Trang ôn lý thuyết (chia thành Phần Kinh và Phần Lý thuyết); Trang chi tiết bài học (gắn liền mục lục và liên kết bài tập vận dụng); Trang luyện bài tập (câu hỏi trắc nghiệm chia 4 mức độ: Nhận biết, Thông hiểu, Vận dụng, Vận dụng nâng cao; có bấm giờ và hiển thị lời giải chi tiết); Trang đăng nhập (Email định dạng chuẩn tối đa 100 ký tự, mật khẩu tối thiểu 6 ký tự mã hóa Bcrypt) và Khôi phục mật khẩu qua Email; Trang thông tin tài khoản; Trang bài viết (Blog); Trang danh sách phòng và tạo phòng thi đấu; Trang phòng thi đấu (đếm ngược 10 giây hướng dẫn, cập nhật bảng xếp hạng theo thời gian thực, lưu trữ kết quả top 3); Trang kết quả học tập.
  • Phân hệ quản trị (7 chức năng): Trang chủ quản trị (thống kê tổng số lượng học sinh, môn học, bài học, câu hỏi, bài viết, số người trực tuyến theo thời gian thực và top 5 học sinh xuất sắc); Quản lý thành viên (hỗ trợ nhập dữ liệu thủ công hoặc import từ file Excel, ghi vết lịch sử thao tác); Quản lý bài viết (hỗ trợ soạn thảo và xem trước); Quản lý môn học/lớp học/phần kinh; Quản lý thông tin giới thiệu; Quản lý thi đấu (xuất báo cáo bảng xếp hạng ra Excel); Quản lý báo lỗi từ người dùng.

Chương 2: Cơ sở lý thuyết

Nội dung chương tập trung làm rõ các khái niệm, kiến trúc và ưu thế của từng công cụ trong ngăn xếp công nghệ được lựa chọn:

  • Giới thiệu mô hình làm việc nhóm với Trello và cơ chế snapshot của Git/GitHub.
  • Khái quát về JavaScript runtime Node.js kết hợp framework ExpressJS để xây dựng kiến trúc RESTful Web Services xử lý bất đồng bộ.
  • Trình bày đặc tính của CSDL phi quan hệ MongoDB: mô hình dữ liệu linh hoạt, không yêu cầu ràng buộc khóa ngoại cứng nhắc như RDBMS, tối ưu hóa tốc độ truy vấn thông qua cơ chế lưu trữ bộ nhớ và truy cập qua thư viện Mongoose.
  • Phân tích nguyên lý hoạt động của ReactJS trên nền tảng Single Page Application (SPA) và các đặc tính của Tailwind CSS.

Chương 3: Thiết kế hệ thống

Chương 3 chi tiết hóa toàn bộ các bản vẽ thiết kế kỹ thuật của hệ thống:

  • Sơ đồ phân rã chức năng BFD thể hiện mối quan hệ giữa 3 nhóm module.
  • 4 sơ đồ Use Case bao quát toàn bộ các tương tác của hệ thống.
  • 5 sơ đồ Activity Diagram chuẩn hóa các quy trình nghiệp vụ trọng tâm.
  • Thiết kế chi tiết cấu trúc 10 bảng CSDL kèm kiểu dữ liệu cụ thể (ObjectID, String, Date, Boolean, float, Int).

Chương 4: Kết quả thực nghiệm

Chương này minh chứng kết quả lập trình thông qua 28 giao diện thực tế của website:

  • Giao diện người dùng: Trang chủ hiển thị các lớp học (Sơ cấp 1, Sơ cấp 2); Giao diện bài học chia 2 phần (Phần Lý thuyết gồm 2 chương 5 bài học và Phần Kinh gồm 6 bài kinh căn bản: Kinh Đức Chúa Thánh Thần, Kinh Vì Dấu, Kinh Tin, Kinh Cậy, Kinh Kính Mến, Kinh Sáng Danh); Giao diện làm bài tập trắc nghiệm có đồng hồ bấm giờ; Giao diện trả kết quả chi tiết kèm điểm số và lời giải; Giao diện Blog; Giao diện Đăng nhập/Đổi mật khẩu; Giao diện Tạo phòng thi đấu và Bảng xếp hạng thi đấu trực tuyến.
  • Giao diện quản trị (Admin): Dashboard điều khiển trung tâm với các chỉ số thống kê tổng quan; Giao diện CRUD (Thêm, Sửa, Xóa) quản lý người dùng có tích hợp xuất/nhập Excel; Quản lý lớp học và chuyên đề; Quản lý và biên tập nội dung bài học/bài kinh; Form tạo câu hỏi kiểm tra bằng CKEditor hoặc import file mẫu Excel; Giao diện quản lý danh sách báo lỗi từ người dùng.

Chương 5: Kết luận

Đánh giá tổng kết kết quả đạt được, phân tích ưu điểm, nhược điểm và vạch ra định hướng mở rộng đề tài.


Kết quả và đóng góp

1. Kết quả kỹ thuật đạt được

  • Xây dựng hoàn chỉnh website hoạt động ổn định trên môi trường web, đáp ứng đầy đủ các yêu cầu chức năng đặt ra cho cả hai phân hệ Client và Admin.
  • Tích hợp thành công dịch vụ Cloudinary để quản lý kho lưu trữ hình ảnh đại diện người dùng.
  • Tích hợp công cụ soạn thảo CKEditor 5 và plugin MathType giúp biên tập nội dung bài giảng khoa học và công thức toán học thuận tiện.
  • Hiện thực hóa tính năng xuất bản dữ liệu: hỗ trợ xuất nội dung bài học ra định dạng PDF và xuất dữ liệu thống kê, danh sách người dùng, bảng xếp hạng ra định dạng Excel.
  • Xây dựng mô-đun thi đấu trắc nghiệm trực tuyến nhiều người chơi với cơ chế cập nhật bảng xếp hạng điểm số theo thời gian thực.

2. Đóng góp của đề tài

  • Cung cấp một giải pháp phần mềm cụ thể phục vụ việc tin học hóa giảng dạy Giáo lý Công giáo, tạo nền tảng tương tác học tập và thi đấu trực quan cho học sinh.
  • Đóng vai trò là mô hình mẫu về việc ứng dụng bộ công cụ MERN Stack (MongoDB, ExpressJS, ReactJS, Node.js) kết hợp Tailwind CSS trong phát triển ứng dụng web giáo dục hoàn chỉnh từ khâu thiết kế đến thực nghiệm.

Hạn chế và hướng nghiên cứu tiếp

1. Hạn chế

  • Hệ thống phụ thuộc hoàn toàn vào đường truyền kết nối Internet; người dùng không thể thao tác khi ngoại tuyến.
  • Để triển khai thực tế trên diện rộng, hệ thống đòi hỏi chi phí đầu tư máy chủ có cấu hình mạnh, năng lực xử lý I/O đĩa nhanh và phải bổ sung các lớp bảo mật chuyên sâu.
  • Các dạng câu hỏi kiểm tra hiện tại chủ yếu tập trung vào hình thức trắc nghiệm cơ bản.

2. Hướng nghiên cứu tiếp

  • Nâng cao các giải pháp an toàn thông tin và bảo mật dữ liệu toàn hệ thống.
  • Nghiên cứu và tích hợp các thuật toán đánh giá tự động độ khó của ngân hàng câu hỏi trắc nghiệm và đánh giá năng lực học sinh theo chuẩn khảo thí.
  • Phát triển thêm các định dạng câu hỏi tương tác đa dạng hơn (kéo thả, điền khuyết, tự luận).
  • Mở rộng quy mô thử nghiệm để triển khai ứng dụng vào thực tế tại các giáo xứ, giáo phận.

Giá trị tham khảo

Tài liệu đồ án này mang lại giá trị tham khảo hữu ích cho:

  • Sinh viên chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm đang học các học phần "Công cụ và môi trường phát triển phần mềm", "Phát triển ứng dụng Web" hoặc chuẩn bị làm đồ án tốt nghiệp.
  • Người phát triển muốn tham khảo quy trình phân tích thiết kế hệ thống phần mềm hoàn chỉnh bằng sơ đồ UML (BFD, Use Case, Activity Diagram).
  • Các nhà phát triển đang tìm kiếm cấu trúc triển khai ứng dụng thực tế sử dụng Node.js, ExpressJS, ReactJS, Tailwind CSS và MongoDB, cũng như cách tích hợp các tiện ích như Cloudinary, CKEditor 5, MathType và xuất file Excel/PDF.

Câu hỏi thường gặp

1. Đồ án sử dụng công nghệ gì để phát triển phần mềm?
Hệ thống được phát triển trên nền tảng ngăn xếp Full-stack JavaScript bao gồm: ReactJS và Tailwind CSS ở phía giao diện người dùng (Frontend); Node.js và ExpressJS ở phía máy chủ (Backend); MongoDB kết hợp thư viện Mongoose làm hệ quản trị cơ sở dữ liệu NoSQL; cùng các thư viện bổ trợ như Bcrypt (mã hóa mật khẩu), Cloudinary (lưu trữ ảnh) và CKEditor 5 / MathType (soạn thảo nội dung).

2. Phân hệ thi đấu trực tuyến của học sinh hoạt động như thế nào?
Học sinh có thể tạo phòng mới hoặc tham gia vào phòng có sẵn dựa trên bộ lọc môn học, chương, bài học. Khi chủ phòng bắt đầu, hệ thống dành 10 giây hiển thị hướng dẫn trước khi tải bộ câu hỏi trắc nghiệm (phân cấp theo 4 mức độ). Thời gian làm bài được tính tự động cho từng câu; hệ thống chuyển câu tiếp theo khi hết giờ hoặc khi tất cả thành viên đã chọn đáp án, đồng thời cập nhật bảng xếp hạng liên tục và lưu thành tích cho top 3.

3. Cơ sở dữ liệu của hệ thống quản lý những thực thể nào?
Hệ thống thiết kế 10 bảng dữ liệu bao gồm: NHANVIEN (thông tin người dùng/nhân sự), BlogCategory (thể loại bài viết), Blog (nội dung bài viết), PHONGBAN, TRINHDOHOCVAN, LUONG, HOPDONGLAODONG, CHUCVU, Quyen_ChucVu và Quyen (phân quyền).

4. Ban quản trị có những công cụ nào để hỗ trợ nhập và xuất dữ liệu?
Quản trị viên có thể nhập người dùng và ngân hàng câu hỏi bằng cách điền thủ công hoặc nhập hàng loạt từ file Excel theo mẫu; đồng thời có thể xuất dữ liệu báo cáo thống kê, danh sách người dùng, bảng xếp hạng ra file Excel và xuất nội dung lý thuyết bài học ra file PDF.

5. Nội dung học tập mẫu trong phần thực nghiệm của hệ thống gồm những gì?
Giao diện thực nghiệm hiển thị chương trình học lớp Sơ cấp 1 gồm hai phần chính: Phần Lý thuyết (Chuyên đề 1 có 5 bài học) và Phần Kinh (gồm 6 bài kinh: Kinh Đức Chúa Thánh Thần, Kinh Vì Dấu, Kinh Tin, Kinh Cậy, Kinh Kính Mến, Kinh Sáng Danh).


Kết luận

Đồ án học phần "Công cụ và môi trường phát triển phần mềm" của nhóm sinh viên Trường Đại học Công nghệ TP. HCM (HUTECH) đã hoàn thành trọn vẹn mục tiêu nghiên cứu và xây dựng một hệ thống website hỗ trợ học tập và thi đấu giáo lý trực tuyến. Công trình thể hiện quy trình phát triển phần mềm bài bản từ khâu phân tích yêu cầu, thiết kế kiến trúc hệ thống, xây dựng cơ sở dữ liệu đến hiện thực hóa bằng ngăn xếp công nghệ ReactJS - Node.js - MongoDB. Mặc dù vẫn còn những hạn chế về độ phức tạp của ngân hàng câu hỏi và tính phụ thuộc hạ tầng mạng, hệ thống đã chứng minh được tính khả thi và là tài liệu tham khảo kỹ thuật giá trị cho các đồ án phát triển ứng dụng web giáo dục tương tự.