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

Trong bối cảnh giáo dục hiện đại, ứng dụng hệ thống kiểm tra trực tuyến trở thành một phương thức phổ biến và cấp thiết. Mặc dù hình thức này không còn mới, tính linh hoạt và tiện lợi của nó vẫn đem lại nhiều giá trị thực tiễn cho cả người học và người quản trị. Hệ thống kiểm tra trực tuyến cho phép người học tham gia các kỳ thi từ bất kỳ đâu và bất kỳ thời điểm nào thông qua kết nối Internet, đồng thời hỗ trợ người quản trị theo dõi, đánh giá quá trình học tập một cách thuận tiện. Bên cạnh việc xóa bỏ rào cản về mặt địa lý, giải pháp này giúp tiết kiệm tài nguyên vật lý như giấy mực so với hình thức thi truyền thống, cung cấp khả năng phản hồi kết quả nhanh chóng giúp thí sinh biết điểm ngay sau khi nộp bài, và đơn giản hóa quy trình tạo lập, chỉnh sửa cũng như lên lịch bài kiểm tra. Qua khảo sát thực tế, tác giả ghi nhận nhiều trường tiểu học, trung học cơ sở và trung học phổ thông hiện nay vẫn chưa trang bị nền tảng kiểm tra trực tuyến riêng biệt, dẫn đến nhu cầu cấp thiết về việc phát triển một hệ thống chuyên dụng.

Nhiệm vụ nghiên cứu của đồ án được xác định rõ qua 4 nội dung trọng tâm:

  1. Tìm hiểu công nghệ Java – Spring Boot và ReactJS.
  2. Tìm hiểu các website kiểm tra trực tuyến hiện hành.
  3. Xây dựng website kiểm tra online hoàn chỉnh.
  4. Nắm vững quy trình, phương thức hoạt động và cơ chế xử lý của sản phẩm.

Về đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Ứng dụng web phục vụ việc tổ chức, thực hiện bài kiểm tra trực tuyến cho học sinh và công cụ quản trị dành cho giáo viên, quản trị viên; các thành phần kỹ thuật cấu thành hệ thống bao gồm cơ sở dữ liệu, giao diện người dùng, phân hệ kiểm tra và phân hệ đánh giá.
  • Phạm vi nghiên cứu:
    • Về công nghệ: Ứng dụng ReactJS và Tailwind CSS để thiết kế giao diện người dùng; sử dụng Java và Spring Boot để xây dựng các giao diện lập trình ứng dụng (API) xử lý nghiệp vụ; tích hợp hệ quản trị cơ sở dữ liệu quan hệ MySQL kết hợp cơ sở dữ liệu phi quan hệ MongoDB; ứng dụng kiến trúc Microservices và giao thức WebSocket.
    • Về thời gian và địa điểm: Đồ án thực hiện từ ngày 28/08/2024 đến ngày 09/12/2024 tại 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 Hữu Trung.

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

Đồ án tổng hợp và ứng dụng hệ thống lý thuyết kỹ thuật phần mềm cùng các công nghệ hiện đại nhằm giải quyết bài toán đặt ra:

  • Khung công nghệ Frontend:
    • ReactJS: Thư viện JavaScript mã nguồn mở do Facebook phát triển, vận hành dựa trên cơ chế Virtual DOM giúp tối ưu hóa việc cập nhật giao diện, mô hình thành phần (Component) độc lập có khả năng tái sử dụng cao, luồng dữ liệu một chiều (Unidirectional Data Flow) gia tăng tính ổn định, cú pháp JSX, hệ thống React Hooks (từ phiên bản 16.8) và Context API hỗ trợ quản trị trạng thái tập trung.
    • Tailwind CSS: Khung CSS theo phương tiếp cận Utility-first, cho phép định kiểu trực tiếp thông qua các lớp định sẵn trong HTML, giúp thu gọn kích thước tệp mã nguồn CSS và hạn chế xung đột giao diện so với CSS truyền thống.
  • Khung công nghệ Backend và Giao thức:
    • NodeJS: Môi trường thực thi JavaScript đa nền tảng dựa trên V8 engine của Google Chrome, xử lý I/O không đồng bộ và không chặn (Asynchronous and Non-Blocking), vận hành qua vòng lặp sự kiện đơn luồng (Event Loop) kết hợp mô-đun cụm (Cluster) hỗ trợ cân bằng tải.
    • Java và Spring Boot: Ngôn ngữ Java hướng đối tượng, đa luồng và độc lập nền tảng máy ảo (JVM). Spring Boot hỗ trợ xây dựng kiến trúc Microservices, cung cấp cơ chế tự động cấu hình (@SpringBootApplication), máy chủ nhúng (Tomcat, Jetty, Undertow), hệ thống quản lý thuộc tính (application.properties) và khả năng tích hợp Spring Cloud.
    • WebSocket: Giao thức truyền thông hai chiều toàn công đoạn (Full-Duplex), duy trì trạng thái kết nối thông qua cơ chế bắt tay 3 bước TCP (định dạng URL ws:// hoặc wss://), giải quyết bài toán phản hồi tức thời cho các chức năng nhắn tin và thông báo.
  • Khung lưu trữ dữ liệu:
    • MySQL: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, bảo mật cao, hỗ trợ giao dịch ACID, cơ chế khôi phục (Roll-back) và quản trị trực quan qua MySQL Workbench.
    • MongoDB: Cơ sở dữ liệu NoSQL hướng tài liệu (Document-oriented), lưu trữ dữ liệu dạng BSON/JSON phi cấu trúc, hỗ trợ mở rộng theo chiều ngang (Sharding), cơ chế nhân bản (Replica Set) và phân tích dữ liệu chuyên sâu qua Aggregation Pipeline.
  • Phương pháp nghiên cứu:
    • Phương pháp khảo sát hiện trạng: Phân tích hệ thống thực tế tại địa chỉ https://fhqx.vn/login/index để nhận diện các tính năng tiêu biểu: quản lý môn học, sắp xếp tiến độ, theo dõi bài thi sắp tới, lưu trữ tệp cá nhân và nhận diện trạng thái trực tuyến của tài khoản.
    • Phương pháp phân tích và mô hình hóa hệ thống: Ứng dụng kỹ thuật phân tích hướng đối tượng (OOAD), mô hình hóa 21 ca sử dụng (Use Case) cụ thể và 40 biểu đồ tuần tự (Sequence Diagram) để đặc tả chi tiết các tương tác giữa tác nhân và hệ thống.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc Microservices phân tán, chia nhỏ ứng dụng thành các dịch vụ độc lập nhằm gia tăng tính mô-đun, khả năng chịu lỗi và khả năng mở rộng từng phần.

Phân rã kiến trúc Microservices và cơ sở dữ liệu

Cơ sở dữ liệu của hệ thống được tách biệt tương ứng với từng dịch vụ đảm nhiệm các phân hệ chức năng riêng:

Microservice Bảng dữ liệu chính trong Database Chức năng nghiệp vụ đảm nhiệm
identity_service refresh_token, user_roles, invalidated_token Xác thực người dùng, phân quyền truy cập (Admin, Giáo viên, Học sinh), quản lý phiên làm việc và thu hồi mã token
exam_service subject_registration, mutiple_choice_test, question_type, submmited_question, test_question, test_tracking, answer_question Quản lý đăng ký môn học, ngân hàng câu hỏi, cấu trúc đề thi trắc nghiệm, theo dõi quá trình làm bài và lưu trữ đáp án bài thi
notify_service notification_message Tiếp nhận và phân phối các thông báo hệ thống đến người dùng
chat_service chat_message, chat_room Điều phối phòng hội thoại và lưu trữ tin nhắn trao đổi theo thời gian thực
file_service file_relationship, track_event Quản lý việc lưu trữ, liên kết tệp tin đính kèm và theo dõi nhật ký sự kiện

Thiết kế giao diện và phân hệ chức năng

Giao diện hệ thống được phân quyền trực quan theo 4 nhóm đối tượng người dùng:

  • Phân hệ Khách (Guest): Trang đăng nhập, đăng ký tài khoản (học sinh/giáo viên), quy trình xác thực mã gửi qua email, chức năng yêu cầu cấp lại mật khẩu qua mã xác nhận email.
  • Phân hệ Học sinh: Giao diện xem danh sách môn học tham gia; trang chi tiết môn học; giao diện xem thông tin bài kiểm tra; màn hình làm bài thi trắc nghiệm trực tuyến có đếm ngược thời gian; trang nộp bài và xem chi tiết điểm số, kết quả thi; trang cập nhật hồ sơ cá nhân; cửa sổ nhận thông báo và khung nhắn tin tương tác.
  • Phân hệ Giáo viên: Trang quản lý môn học phụ trách; trang quản lý bộ câu hỏi và danh sách câu hỏi; trang thiết lập đề thi; phân hệ theo dõi kết quả, xuất bảng điểm học sinh; duyệt danh sách học sinh theo môn.
  • Phân hệ Quản trị viên (Admin): Quản lý toàn bộ danh mục môn học (thêm, sửa, kích hoạt, vô hiệu hóa, xóa môn); quản lý danh sách học sinh và giáo viên trong hệ thống; điều phối học sinh vào môn học (hỗ trợ nhập danh sách qua tệp Excel/CSV); quản trị nhóm câu hỏi (thêm câu hỏi thủ công hoặc import hàng loạt); quản lý đề thi (tạo đề ngẫu nhiên từ ngân hàng câu hỏi hoặc chọn lọc từng câu); quản lý điểm số và xuất nhật ký hành động trên kết quả thi.

Tiến độ thực hiện và kiểm thử

Quá trình triển khai đồ án diễn ra qua 9 giai đoạn theo kế hoạch:

Giai đoạn Thời gian Nội dung công việc thực hiện
1 28/08/2024 – 31/08/2024 Nghiên cứu công nghệ, khảo sát các trang web kiểm tra khác, lập danh mục yêu cầu chức năng
2 01/09/2024 – 03/09/2024 Phân tích chức năng và thiết lập kiến trúc Microservices cho dự án
3 04/09/2024 – 07/09/2024 Thiết kế đặc tả yêu cầu, xây dựng các lược đồ Use Case
4 08/09/2024 – 10/09/2024 Thiết kế cơ sở dữ liệu quan hệ và phi quan hệ, xây dựng mô hình thực thể ERD
5 11/09/2024 – 01/10/2024 Thiết kế giao diện người dùng bằng ReactJS và Tailwind CSS (đăng nhập, đăng ký, trang quản lý)
6 02/10/2024 – 25/10/2024 Lập trình Backend (API, kết nối cơ sở dữ liệu) và Frontend; tích hợp các phân hệ chính
7 26/10/2024 – 31/10/2024 Kiểm thử hoạt động của các chức năng trên giao diện, tạo lập tập dữ liệu thử nghiệm
8 01/11/2024 – 09/12/2024 Hoàn thiện các chức năng nâng cao ở cả hai phía Frontend và Backend
9 26/11/2024 – 09/12/2024 Kiểm thử bổ sung các chức năng phát triển mới và hoàn thiện báo cáo luận văn

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

Chương 1: Mở đầu

Chương này thiết lập cơ sở ban đầu cho đề tài. Tác giả trình bày tính cấp thiết của việc áp dụng hình thức thi trực tuyến trong giáo dục nhằm tiết kiệm tài nguyên in ấn, nâng cao tính linh hoạt và cung cấp kết quả tức thời. Chương xác định mục tiêu trang bị kiến thức thực tiễn về công nghệ Full-stack (ReactJS, Java - Spring Boot), đặt ra yêu cầu xây dựng hệ thống website có giao diện thân thiện, dễ vận hành, phục vụ đầy đủ quyền hạn cho học sinh, giáo viên và quản trị viên. Đồng thời, chương tóm tắt các đặc tính của từng công nghệ lựa chọn: ReactJS, Tailwind CSS, NodeJS, Java, Spring Boot, MySQL, MongoDB, kiến trúc Microservices và WebSocket.

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

Nội dung chương tập trung làm rõ các nguyên lý nền tảng kỹ thuật. Trọng tâm của chương là giao thức WebSocket, phân tích cơ chế giao tiếp hai chiều toàn công đoạn (Full-Duplex), đặc tính kết nối có trạng thái và quy trình bắt tay 3 bước TCP qua cổng mạng Internet. Phần lý thuyết làm rõ sự khác biệt giữa WebSocket và giao thức HTTP truyền thống, giải thích cơ sở áp dụng WebSocket vào việc truyền tải thông điệp tức thời cho phân hệ trò chuyện và phát thông báo trong ứng dụng kiểm tra trực tuyến.

Chương 3: Khảo sát hiện trạng và mô hình hóa yêu cầu

Chương 3 tiến hành khảo sát thực tiễn hệ thống đào tạo và kiểm tra tại địa chỉ https://fhqx.vn/login/index, chỉ ra các tính năng hữu ích như bố trí danh sách môn học theo tiến độ, hiển thị bài kiểm tra sắp tới và danh sách người dùng đang truy cập. Từ khảo sát thực tế, tác giả xây dựng bảng yêu cầu chức năng (gồm 20 chức năng chính từ đăng nhập, thi online, quản lý câu hỏi đến trích xuất kết quả) và các yêu cầu phi chức năng (hiệu năng chịu tải khi có nhiều thí sinh làm bài đồng thời, bảo mật mã hóa thông tin người dùng, tính sẵn sàng và khả năng phục hồi khi xảy ra lỗi). Chương cung cấp 21 bảng đặc tả Use Case chi tiết, quy định chặt chẽ tiền điều kiện, hậu điều kiện, luồng sự kiện chính, luồng thay thế và luồng ngoại lệ cho từng nghiệp vụ.

Chương 4: Thiết kế phần mềm

Đây là chương có dung lượng kỹ thuật lớn nhất của báo cáo. Tác giả xây dựng 40 biểu đồ tuần tự (Sequence Diagram) mô tả toàn bộ tương tác giữa đối tượng giao diện, tầng điều khiển dịch vụ và cơ sở dữ liệu (từ quy trình đăng nhập, đổi mật khẩu, làm bài, nộp bài, quản lý câu hỏi đến xuất báo cáo điểm số). Phần thiết kế cơ sở dữ liệu trình bày cấu trúc các bảng cho 5 dịch vụ phân tán (exam_service, identity_service, notify_service, chat_service, file_service). Phần thiết kế giao diện lập bảng danh mục thành phần chi tiết (từ Bảng 3.24 đến Bảng 3.66) cho toàn bộ các trang màn hình và hộp thoại thao tác (popup) của 4 phân hệ người dùng.

Chương 5: Cài đặt và kiểm thử

Chương này hướng dẫn chi tiết các bước thiết lập môi trường, cách thức cài đặt các gói phụ thuộc và quy trình khởi động dự án ở cả phía Backend và Frontend. Tác giả thực hiện kiểm thử các trường hợp sử dụng trên giao diện người dùng, kiểm tra khả năng nhập/xuất dữ liệu câu hỏi, dữ liệu học sinh và thẩm định tính chính xác của tiến trình tính toán điểm thi tự động.

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

Chương tổng kết toàn bộ kết quả triển khai đề tài, đánh giá mức độ hoàn thành dựa trên các mục tiêu ban đầu, phân tích những ưu điểm và hạn chế trong quá trình xây dựng hệ thống, đồng thời vạch ra các hướng mở rộng kỹ thuật cho sản phẩm trong tương lai.


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

Đồ án ghi nhận những kết quả cụ thể trong quá trình nghiên cứu và phát triển phần mềm:

  • Kết quả chức năng hoàn thành:
    • Hoàn thiện hệ thống xác thực người dùng phân cấp với các cơ chế kiểm soát phiên thông qua JWT token, cấp lại mã xác thực qua email và thu hồi phiên với bảng invalidated_token.
    • Xây dựng thành công phân hệ thi trắc nghiệm trực tuyến: cho phép giáo viên/quản trị viên tạo lập đề thi linh hoạt (chọn ngẫu nhiên hoặc chỉ định từng câu hỏi từ ngân hàng câu hỏi), học sinh làm bài thi có đồng hồ đếm ngược và hệ thống tự động ghi nhận, chấm điểm, lưu trữ đáp án vào bảng submmited_question.
    • Tích hợp thành công kênh giao tiếp thời gian thực gồm tính năng gửi/nhận thông báo (notification_message) và phòng trò chuyện trao đổi trực tiếp (chat_message, chat_room) dựa trên giao thức WebSocket.
    • Hỗ trợ công cụ quản trị dữ liệu học tập: nhập và xuất danh sách học sinh theo môn học, xuất ngân hàng câu hỏi, xuất bảng điểm chi tiết và nhật ký thao tác điểm số phục vụ công tác thanh tra đánh giá.
  • Giải pháp kỹ thuật:
    • Ứng dụng thành công kiến trúc Microservices, tách biệt 5 dịch vụ cơ sở dữ liệu độc lập giúp nâng cao khả năng bảo trì và giảm thiểu rủi ro lỗi dây chuyền.
    • Kết hợp linh hoạt hai mô hình cơ sở dữ liệu: MySQL cho các dữ liệu quan hệ có tính toàn vẹn cao (người dùng, điểm số, kỳ thi) và MongoDB cho việc lưu trữ các cấu trúc dữ liệu mở rộng.
  • Đóng góp của đồ án:
    • Cung cấp tài liệu phân tích nghiệp vụ, đặc tả Use Case, thiết kế biểu đồ tuần tự và cấu trúc cơ sở dữ liệu hoàn chỉnh cho một nền tảng kiểm tra trực tuyến.
    • Xây dựng một sản phẩm phần mềm có tính ứng dụng thực tế, giải quyết được bài toán thiếu hụt nền tảng thi trực tuyến cho các đơn vị giáo dục cơ sở và phổ thông theo khảo sát thực tế của tác giả.

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

Căn cứ vào phạm vi nghiên cứu và nội dung tổng kết trong văn bản:

  • Hạn chế:
    • Đề tài được triển khai trong thời gian ngắn (từ cuối tháng 8/2024 đến đầu tháng 12/2024) bởi một sinh viên duy nhất, do đó phạm vi kiểm thử thực tế chủ yếu tập trung vào kiểm thử giao diện và kiểm thử luồng chức năng, chưa trình bày các số liệu đo lường kiểm thử tải lớn (Stress testing/Load testing) trong môi trường phân tán quy mô lớn.
    • Hình thức kiểm tra mới chỉ tập trung chuyên sâu vào dạng đề thi trắc nghiệm khách quan, chưa mở rộng sang các dạng thức đánh giá phức tạp hơn như tự luận có chấm điểm thủ công hay bài thi thực hành lập trình trực tiếp.
  • Hướng phát triển:
    • Tiếp tục hoàn thiện và tối ưu hóa các phân hệ chức năng hiện có trên cả Frontend và Backend.
    • Tích hợp thêm các thuật toán tạo đề thi thông minh, tự động cân bằng độ khó của câu hỏi theo chuẩn ma trận đề thi.
    • Bổ sung các giải pháp giám sát thi trực tuyến (nhận diện khuôn mặt, cảnh báo chuyển đổi tab màn hình) nhằm nâng cao tính minh bạch và chống gian lận trong quá trình kiểm tra.

Giá trị tham khảo

Đồ án là tài liệu tham khảo thực nghiệm phù hợp cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Tài liệu minh họa chi tiết về quy trình hoàn thiện một đồ án tốt nghiệp kỹ thuật, từ bước khảo sát hiện trạng, mô hình hóa Use Case, xây dựng biểu đồ tuần tự (Sequence Diagram) đến thiết kế lược đồ cơ sở dữ liệu.
  • Lập trình viên và người nghiên cứu hệ thống Web Full-stack: Tham khảo kiến trúc kết hợp giữa ReactJS, Tailwind CSS ở phía client và Java Spring Boot, kiến trúc Microservices ở phía server.
  • Các nhóm phát triển đề tài cùng lĩnh vực (E-learning, Online Assessment): Kế thừa hệ thống 21 bảng đặc tả Use Case nghiệp vụ thi trực tuyến và mô hình phân tách cơ sở dữ liệu cho 5 dịch vụ cốt lõi (identity, exam, notify, chat, file).

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

1. Kiến trúc tổng thể và các công nghệ chính được tác giả lựa chọn trong đồ án là gì?
Hệ thống được thiết kế theo kiến trúc Microservices phân tán. Phía giao diện (Frontend) sử dụng ReactJS kết hợp Tailwind CSS. Phía máy chủ (Backend) ứng dụng Java kết hợp Spring Boot để xây dựng các API xử lý nghiệp vụ, có tham chiếu thêm NodeJS. Hệ thống lưu trữ tích hợp đồng thời cơ sở dữ liệu quan hệ MySQL và cơ sở dữ liệu phi quan hệ MongoDB. Giao thức WebSocket được dùng cho giao tiếp hai chiều thời gian thực.

2. Cơ sở dữ liệu của hệ thống được tổ chức thành những dịch vụ (services) nào?
Hệ thống được phân rã thành 5 dịch vụ cơ sở dữ liệu độc lập, bao gồm:

  • identity_service: Quản lý tài khoản, vai trò và token đăng nhập.
  • exam_service: Quản lý môn học, câu hỏi, đề thi và dữ liệu bài nộp.
  • notify_service: Lưu trữ và chuyển tiếp thông báo.
  • chat_service: Quản lý phòng trò chuyện và tin nhắn.
  • file_service: Quản lý quan hệ tệp tin và nhật ký sự kiện.

3. Cơ chế xác thực tài khoản và đổi mật khẩu trong hệ thống có yêu cầu điều kiện gì?
Để thực hiện xác thực hoặc đổi mật khẩu khi quên, tài khoản phải tồn tại trong cơ sở dữ liệu và địa chỉ email bắt buộc phải ở trạng thái đã xác thực. Hệ thống gửi mã xác nhận (code) về email của người dùng; người dùng nhập chính xác mã này cùng mật khẩu mới thì thông tin mới được cập nhật vào cơ sở dữ liệu.

4. Tác giả đã khảo sát hệ thống thực tế nào để phục vụ việc xác định yêu cầu phần mềm?
Tác giả đã trực tiếp khảo sát và phân tích giao diện, chức năng của trang web thực tế tại địa chỉ liên kết: https://fhqx.vn/login/index. Các yếu tố học hỏi từ hệ thống này gồm: bố cục môn học, cơ chế lọc và sắp xếp theo tiến độ/thời gian truy cập, hiển thị danh mục bài kiểm tra sắp tới và trạng thái trực tuyến của người dùng.

5. Giáo viên và quản trị viên có thể tạo đề thi bằng những phương thức nào theo thiết kế của đồ án?
Theo các biểu đồ Use Case, Sequence Diagram và thiết kế giao diện popup, hệ thống cung cấp 2 phương thức tạo đề thi: thêm ngẫu nhiên số lượng câu hỏi từ ngân hàng câu hỏi có sẵn của môn học, hoặc trực tiếp chọn lọc thủ công từng câu hỏi cụ thể đưa vào bài kiểm tra.


Kết luận

Đồ án tốt nghiệp "Xây dựng website kiểm tra online" do sinh viên Nguyễn Tiến Tài thực hiện tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành trọn vẹn mục tiêu nghiên cứu và phát triển một nền tảng thi trắc nghiệm trực tuyến hoàn chỉnh. Đề tài áp dụng thành công các công nghệ lập trình hiện đại gồm ReactJS, Java Spring Boot, WebSocket cùng kiến trúc phân tán Microservices trên hai hệ quản trị cơ sở dữ liệu MySQL và MongoDB. Hệ sinh thái chức năng được phân tích, thiết kế mạch lạc qua hệ thống biểu đồ UML và các ca sử dụng cụ thể, đáp ứng nhu cầu tổ chức thi và quản lý học tập cho học sinh, giáo viên và nhà quản trị.