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

Trong môi trường giáo dục đại học, quy trình quản lý, tổ chức và đăng ký đề tài đồ án môn học, đồ án liên ngành thường gặp nhiều trở ngại nếu áp dụng các phương thức thủ công bằng văn bản giấy tờ hoặc các biểu mẫu rời rạc. Tác giả đề tài chỉ ra năm lý do thực tiễn cần thiết phải xây dựng một hệ thống trực tuyến chuyên dụng:

  • Tăng cường tính hiệu quả: Tự động hóa các khâu xử lý thủ công, giúp tiết kiệm thời gian, nhân lực của nhà trường và người học.
  • Thuận tiện và tiết kiệm thời gian: Cho phép sinh viên truy cập đăng ký từ mọi nơi qua internet mà không cần trực tiếp đến văn phòng quản lý.
  • Minh bạch và công bằng: Công khai danh sách đề tài và số lượng đăng ký, hạn chế tối đa tình trạng thiên vị hoặc ưu tiên không đồng đều.
  • Tính linh hoạt: Có khả năng tùy biến để đáp ứng các yêu cầu đặc thù của từng khoa chuyên ngành, bổ sung các chức năng theo dõi tiến độ và trao đổi trực tuyến.
  • Cải thiện trải nghiệm sinh viên: Cung cấp giao diện tương tác trực quan, khuyến khích sự chủ động học tập và làm việc nhóm.

Khảo sát thực trạng tại cơ sở đào tạo cho thấy hai hệ thống đang vận hành bộc lộ một số hạn chế cụ thể:

  • Hệ thống Canvas: Quản lý tốt tài nguyên học liệu, hỗ trợ giao tiếp và kiểm tra trực tuyến, nhưng chưa tích hợp chức năng đăng ký môn học gắn liền với đề tài nghiên cứu.
  • Hệ thống Quản lý đào tạo beta: Cho phép đăng ký môn học và đóng học phí trực tuyến, nhưng giao diện chưa tối ưu, khả năng tùy biến thấp, thường xảy ra hiện tượng quá tải khi lưu lượng truy cập tăng cao và chưa hỗ trợ tải tài liệu hay đề tài chi tiết.

Từ bối cảnh đó, nhóm nghiên cứu đề xuất xây dựng giải pháp trang web tích hợp nhằm kết hợp quản lý đăng ký đề tài, theo dõi nội dung học tập và tương tác trực tiếp giữa người dạy và người học.

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

  1. Xây dựng website hỗ trợ cải thiện và tối ưu hóa quy trình đăng ký lớp đồ án cho sinh viên và nhà trường bằng việc ứng dụng công nghệ thông tin.
  2. Thiết lập nền tảng quản lý đề tài trực tuyến minh bạch, công bằng, hỗ trợ phân nhóm sinh viên tự động khi hết hạn đăng ký.
  3. Tạo kênh tương tác hai chiều thông qua hệ thống thông báo, bình luận trao đổi và gửi email xác nhận tự động.

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

  • Đối tượng nghiên cứu: Quy trình quản lý đăng ký đề tài, phân công nhóm và tương tác giữa sinh viên, giảng viên và quản trị viên.
  • Phạm vi công nghệ: Ứng dụng phát triển trên nền tảng ngôn ngữ JavaScript, hệ quản trị cơ sở dữ liệu MySQL, áp dụng các thuật toán mã hóa Bcrypt và AES-128 bit.
  • Phạm vi ứng dụng: Triển khai thực nghiệm tại Khoa Công nghệ Thông tin – Trường Đại học Phenikaa (báo cáo hoàn thành vào tháng 3/2024).

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

Phương pháp nghiên cứu và phát triển hệ thống

  • Phương pháp phân tích và so sánh: Đánh giá ưu điểm, nhược điểm của các hệ thống quản lý học tập hiện có (Canvas và Quản lý đào tạo beta) để xác định danh mục yêu cầu hệ thống.
  • Phương pháp phân tích thiết kế hướng đối tượng: Xây dựng mô hình nghiệp vụ, biểu đồ ca sử dụng (Use Case Diagram), biểu đồ tuần tự (Sequence Diagram) cho từng nhóm tác nhân.
  • Phương pháp thiết kế cơ sở dữ liệu quan hệ (RDBMS): Thiết lập lược đồ quan hệ và chuẩn hóa các bảng dữ liệu bằng công cụ ánh xạ đối tượng - quan hệ (Sequelize ORM) trên nền tảng MySQL.
  • Phương pháp kiểm thử thực nghiệm: Xây dựng các ca kiểm thử chức năng (Test Case) và kiểm thử an toàn thông tin, đặc biệt là kiểm thử lỗ hổng SQL Injection trên module xác thực người dùng.

Cơ sở lý thuyết về an toàn thông tin

Nhằm ngăn chặn các cuộc tấn công đánh cắp dữ liệu và xâm nhập cơ sở dữ liệu, đề tài áp dụng hai kỹ thuật bảo mật cốt lõi:

  • Thuật toán băm Bcrypt: Do Niels Provos và David Mazières phát triển năm 1999, sử dụng cơ chế tạo muối ngẫu nhiên (salt) trước khi băm nhằm vô hiệu hóa kỹ thuật tấn công bảng tra cứu cầu vồng (Rainbow Table). Tham số hệ số chi phí (cost factor) được sử dụng để kiểm soát độ trễ tính toán, làm tăng độ phức tạp của các cuộc tấn công vét cạn (brute-force). Triển khai trên hệ thống thông qua thư viện BcryptJS.
  • Chuẩn mã hóa nâng cao AES (Advanced Encryption Standard): Chuẩn mã hóa khối đối xứng được NIST ban hành năm 2001. Hệ thống sử dụng khóa có độ dài 128 bit để mã hóa các thông tin nhạy cảm (họ tên, mã định danh, email...) ngay tại tầng giao diện (Client) trước khi gửi yêu cầu lưu trữ đến máy chủ (Server). Khi hiển thị, Client tiến hành giải mã dữ liệu về dạng ban đầu, giúp tối ưu hóa dung lượng lưu trữ CSDL và tiết kiệm chi phí máy chủ so với việc mã hóa toàn bộ cơ sở dữ liệu.

Thiết kế và triển khai hệ thống

Kiến trúc công nghệ phần mềm

Hệ thống được phát triển theo mô hình ứng dụng web hướng thành phần (Component-based Architecture) kết hợp kiến trúc dịch vụ RESTful API:

Tầng kiến trúc Công nghệ sử dụng Vai trò và đặc tính kỹ thuật
Môi trường phát triển Microsoft Visual Studio IDE hỗ trợ đa nền tảng (Windows, macOS, Linux) để thiết kế, chạy thử và kiểm thử mã nguồn.
Phía máy khách (Client) React.js Thư viện giao diện theo triết lý điều khiển theo dữ liệu (data-driven), sử dụng Virtual DOM, cú pháp JSX và luồng dữ liệu một chiều.
Tailwind CSS Framework áp dụng phương pháp CSS nguyên tử (atomic CSS), hỗ trợ thiết kế giao diện đáp ứng (responsive).
Redux Thư viện quản lý tập trung và dự đoán trạng thái ứng dụng theo mô hình kiến trúc Flux.
Syncfusion DataGrid Thành phần hiển thị dữ liệu dạng bảng hỗ trợ lọc, sắp xếp và phân trang trực quan.
SweetAlert2 Thư viện hiển thị hộp thoại, thông báo tương tác tùy biến trên giao diện người dùng.
Phía máy chủ (Server) Node.js / Express Nền tảng thực thi JavaScript và framework xử lý định tuyến (routing), middleware và quản lý phiên làm việc.
Sequelize ORM Thư viện ánh xạ đối tượng - quan hệ giúp thao tác CSDL qua đối tượng JavaScript mà không dùng trực tiếp câu lệnh SQL thuần.
Nodemailer Thư viện xử lý và gửi email tự động qua các giao thức mạng SMTP/SMTPS phục vụ xác thực và cấp lại mật khẩu.
Cơ sở dữ liệu MySQL Hệ quản trị cơ sở dữ liệu quan hệ lưu trữ dữ liệu có cấu trúc của toàn hệ thống.

Cấu trúc cơ sở dữ liệu

Cơ sở dữ liệu của hệ thống bao gồm 9 bảng chức năng chính:

  1. students: Lưu trữ thông tin sinh viên (mã định danh, họ tên đã mã hóa, lớp, ngành, trạng thái).
  2. lecturers: Lưu trữ thông tin giảng viên (mã giảng viên, trạng thái công tác đã mã hóa).
  3. adAccounts: Lưu trữ tài khoản và mật khẩu đã băm của nhóm Quản trị viên (Admin).
  4. svAccounts & gvAccounts: Lưu trữ tài khoản người dùng của sinh viên và giảng viên gắn với mã định danh duy nhất.
  5. topics: Lưu trữ danh mục đề tài do giảng viên tạo (mã đề tài, tên, mô tả, số lượng giới hạn, năm học).
  6. groups: Lưu trữ danh sách sinh viên đăng ký vào đề tài cùng trạng thái phê duyệt (isadded).
  7. posts: Lưu trữ các thông báo chung của toàn hệ thống do Quản trị viên khởi tạo.
  8. announcements: Lưu trữ thông báo nội bộ trong từng nhóm đề tài do Giảng viên quản lý.
  9. comments: Lưu trữ phản hồi và trao đổi hai chiều giữa sinh viên và giảng viên dưới các thông báo.

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

CHƯƠNG I: GIỚI THIỆU CHUNG

  • Phân tích 5 nguyên nhân thực tiễn dẫn đến nhu cầu xây dựng nền tảng đăng ký đề tài trực tuyến.
  • Đặt ra mục tiêu tổng thể về việc tối ưu hóa quản lý giáo dục đại học và nâng cao tính minh bạch trong việc phân công đồ án.
  • Đánh giá phân tích ma trận ưu điểm và hạn chế của hai phần mềm Canvas và Quản lý đào tạo beta.
  • Xác định giải pháp kỹ thuật là xây dựng ứng dụng web tích hợp dựa trên JavaScript và CSDL MySQL.

CHƯƠNG II: THIẾT KẾ VÀ TRIỂN KHAI HỆ THỐNG

  • Trình bày chi tiết ngăn xếp công nghệ phía Client (React.js, Tailwind CSS, Redux, Syncfusion DataGrid, SweetAlert2) và phía Server (Node.js Express, Sequelize, Nodemailer, MySQL).
  • Đặc tả yêu cầu chức năng hệ thống:
    • Đăng ký và phân nhóm: Hỗ trợ sinh viên/giảng viên đăng ký và quản lý; tự động gom nhóm sinh viên chưa đăng ký khi hết hạn dựa trên tiêu chí chuyên ngành, kỹ năng và sở thích.
    • Tra cứu và lọc đề tài: Cho phép tìm kiếm theo từ khóa tên đề tài, tên giảng viên hoặc lọc theo ngôn ngữ lập trình, yêu cầu phụ.
    • Thông báo tự động qua email: Nodemailer tự động gửi email thông báo kết quả đăng ký hoặc phê duyệt cho sinh viên.
    • Giám sát tiến độ: Giảng viên theo dõi danh sách, phương thức liên hệ và số lượng thành viên nhóm.
  • Quy định các ràng buộc hệ thống về tính ổn định, hiệu năng truy vấn, bảo vệ dữ liệu cá nhân, chống gian lận và tính tương thích trên nhiều thiết bị.
  • Trình bày giải pháp bảo mật với Bcrypt (kèm salt, cost factor) và chuẩn mã hóa AES-128 bit.
  • Báo cáo kết quả kiểm thử phòng chống lỗ hổng SQL Injection trên module đăng nhập.

CHƯƠNG III: MÔ HÌNH HỆ THỐNG

  • Xây dựng kịch bản vận hành chi tiết cho ba tác nhân: Quản trị viên, Giảng viên và Sinh viên.
  • Thiết kế sơ đồ Use Case tổng quát và 4 sơ đồ Use Case phân rã: Use case đăng nhập, Use case Teacher, Use case Admin, Use case Students.
  • Lập bảng đặc tả chi tiết cho 5 ca sử dụng chính:
    • Bảng 3.3a: Use Case Đăng nhập (ràng buộc mật khẩu > 6 ký tự).
    • Bảng 3.3b: Use Case Quản lý thông báo (thao tác trên bảng ANNOUNCEMENT/POSTS).
    • Bảng 3.3c: Use Case Quản lý đề tài (thao tác trên bảng TOPICS).
    • Bảng 3.3d: Use Case Quản lý người dùng (thao tác trên bảng STUDENTS, LECTURERS).
    • Bảng 3.3e: Use Case Tra cứu (thao tác kiểm tra và hủy đăng ký trên bảng GROUPS).
  • Xây dựng 5 biểu đồ tuần tự (Sequence Diagram) mô tả luồng thông điệp qua các lớp đối tượng: Đăng nhập, Quản lý thông báo, Quản lý đề tài, Quản lý người dùng, Tra cứu.
  • Trình bày lược đồ quan hệ thực thể (ERD Diagram) và thiết kế chi tiết 9 bảng cơ sở dữ liệu.

CHƯƠNG IV: KIỂM THỬ VÀ TRIỂN KHAI

  • Phân quyền khởi tạo tài khoản: Không cho phép tự đăng ký tự do trên trang web mà tài khoản được cấp phát tập trung gắn liền với mã số nhằm kiểm soát danh tính và bảo vệ hệ thống.
  • Kiểm thử các giao diện chức năng:
    • Module xác thực: Giao diện đăng nhập theo vai trò và chức năng khôi phục mật khẩu (tự động tạo mật khẩu mới và gửi email qua Nodemailer khi kiểm tra email tồn tại trong CSDL).
    • Module quản trị và người dùng: Giao diện quản lý tài khoản, quản lý người dùng, quản lý thông báo chung, quản lý thành viên nhóm đề tài, chi tiết trao đổi bình luận (comment) và trang thông tin cá nhân.
    • Kiểm thử tương thích: Đánh giá khả năng hiển thị đáp ứng trên các kích thước màn hình máy tính để bàn và thiết bị di động.

CHƯƠNG V: MỘT SỐ THÀNH PHẦN KHÁC CỦA ĐỒ ÁN

  • Lập kế hoạch dự án và phân chia nhiệm vụ công việc cho 3 thành viên trong nhóm.
  • Quy định các nguyên tắc duy trì kỷ luật làm việc nhóm.
  • Xem xét các vấn đề về đạo đức nghề nghiệp và trách nhiệm chuyên môn trong phát triển phần mềm.
  • Xây dựng chiến lược tiếp cận công nghệ mới và phương pháp học tập liên tục trong quá trình thực hiện đồ án.

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

Kết quả kiểm thử an toàn hệ thống

Nhóm nghiên cứu đã thực hiện kiểm thử thực nghiệm khả năng chống tấn công SQL Injection trên form đăng nhập với 4 ca kiểm thử:

ID Kiểm thử Kịch bản kiểm thử Dữ liệu đầu vào (User / Pass) Kết quả mong đợi Kết quả thực tế Trạng thái (Pass/Fail)
TU01 Kiểm thử đăng nhập với dữ liệu hợp lệ admin@gmail.com / doan2024 Đăng nhập thành công, chuyển đến trang chính Đúng như mong đợi Pass
TU02 Kiểm thử đăng nhập với dữ liệu tấn công cơ bản 1' or '1' = '1 / 1' or '1' = '1 Hệ thống báo lỗi, từ chối đăng nhập Đúng như mong đợi Pass
TU03 Kiểm thử injection dạng chuỗi đóng và chú thích 1' or '1' = '1'))/* / foo Hệ thống báo lỗi, từ chối đăng nhập Đúng như mong đợi Pass
TU04 Kiểm thử injection nâng cao 1' or '1' = '1'))/* / foo Hệ thống báo lỗi, từ chối đăng nhập Đúng như mong đợi Pass

Đóng góp thực tiễn của công trình

  • Xây dựng hoàn chỉnh một ứng dụng web phục vụ riêng cho công tác đăng ký và quản lý đồ án, tích hợp được chức năng chia sẻ tài liệu và trao đổi chuyên môn mà các hệ thống Canvas hay Cổng đào tạo beta tại trường chưa đáp ứng trọn vẹn.
  • Đề xuất giải pháp phân nhóm tự động cho sinh viên dựa trên chuyên ngành, kỹ năng và sở thích khi kết thúc thời hạn đăng ký, nâng cao tính công bằng và giải tỏa áp lực xử lý thủ công cho ban quản lý đào tạo.
  • Triển khai thành công kiến trúc bảo mật kết hợp: băm mật khẩu bằng Bcrypt có Salt và mã hóa dữ liệu nhạy cảm AES-128 bit tại phía Client, đảm bảo dữ liệu không bị lộ ngay cả khi cơ sở dữ liệu gặp sự cố rò rỉ.

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

  • Hạn chế:
    • Ứng dụng phụ thuộc hoàn toàn vào kết nối internet ổn định để đồng bộ hóa và xử lý dữ liệu trực tuyến.
    • Phạm vi thực nghiệm và dữ liệu thử nghiệm mới dừng lại ở quy mô nội bộ Khoa Công nghệ Thông tin - Trường Đại học Phenikaa.
  • Hướng phát triển:
    • Tiếp tục tối ưu hóa hiệu năng truy vấn cơ sở dữ liệu khi hệ thống phải xử lý lượng dữ liệu lớn và số lượng phiên truy cập đồng thời cao trong các đợt đăng ký cao điểm.
    • Nâng cấp và mở rộng các tính năng phụ trợ dựa trên phản hồi của sinh viên và giảng viên sau thời gian vận hành thực tế.

Giá trị tham khảo

Tài liệu là nguồn tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Tham khảo cấu trúc hoàn chỉnh của một báo cáo đồ án liên ngành/khóa luận xây dựng phần mềm, từ phân tích yêu cầu, thiết kế UML, mô hình dữ liệu đến kiểm thử.
  • Người phát triển ứng dụng web React - Node.js: Học hỏi mô hình kết hợp React.js, Tailwind CSS, Redux ở client với Node.js Express, Sequelize ORM và MySQL ở server.
  • Tham khảo giải pháp an toàn thông tin cơ bản: Ứng dụng thực tế của thuật toán Bcrypt trong xác thực mật khẩu và thuật toán AES-128 mã hóa dữ liệu đầu cuối tại Client trước khi gửi về Database.

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

1. Hệ thống xử lý tình huống sinh viên chưa có nhóm sau khi hết hạn đăng ký như thế nào?
Hệ thống được thiết kế chức năng tự động phân chia những sinh viên chưa có nhóm vào các nhóm đề tài còn chỗ trống dựa trên các tiêu chí cụ thể như chuyên ngành, kỹ năng và sở thích cá nhân, đảm bảo tiến độ học tập và tính công bằng.

2. Vì sao nhóm nghiên cứu chọn khóa AES 128 bit và không mã hóa toàn bộ cơ sở dữ liệu?
Nhóm lựa chọn độ dài khóa 128 bit nhằm tối ưu hóa tốc độ mã hóa và giải mã nhanh hơn so với khóa 192 bit và 256 bit. Đồng thời, hệ thống chỉ mã hóa các thông tin nhạy cảm (họ tên, mã định danh, email...) từ Client trước khi lưu vào CSDL; việc không mã hóa toàn bộ CSDL giúp tránh gia tăng dung lượng lưu trữ không cần thiết và tiết kiệm chi phí duy trì máy chủ.

3. Cơ chế cấp phát tài khoản trong hệ thống được quy định ra sao?
Để ngăn chặn số lượng lớn tài khoản rác không xác thực có thể làm phá vỡ hệ thống, sinh viên và giảng viên không được phép tự do đăng ký tài khoản trên trang web mà sẽ được Quản trị viên cấp phát một tài khoản duy nhất gắn liền với mã số định danh của mình.

4. Chức năng khôi phục mật khẩu hoạt động như thế nào khi người dùng quên mật khẩu?
Người dùng nhập địa chỉ email đã đăng ký trên hệ thống. Nếu email tồn tại trong CSDL, hệ thống sẽ tự động tạo mật khẩu mới và sử dụng thư viện Nodemailer gửi email thông báo mật khẩu trực tiếp về hộp thư của người dùng; nếu email không tồn tại, giao diện sẽ xuất thông báo lỗi cảnh báo.

5. Thư viện Syncfusion DataGrid đóng vai trò gì trong giao diện người dùng?
Syncfusion DataGrid được tích hợp vào phía giao diện máy khách (Client) nhằm hiển thị dữ liệu có cấu trúc dưới dạng bảng, hỗ trợ người dùng thực hiện các thao tác phân trang, lọc dữ liệu và sắp xếp thông tin theo các cột một cách trực quan.


Kết luận

Đồ án liên ngành của nhóm sinh viên Khoa Công nghệ Thông tin – Trường Đại học Phenikaa đã hoàn thành việc thiết kế và xây dựng website hỗ trợ đăng ký đề tài đồ án theo đúng mục tiêu đặt ra. Hệ thống giải quyết các điểm nghẽn của quy trình đăng ký truyền thống nhờ tích hợp luồng nghiệp vụ phân nhóm tự động, công khai minh bạch thông tin đề tài và thiết lập kênh trao đổi trực tiếp giữa giảng viên và sinh viên. Công trình thể hiện quy trình phát triển phần mềm chuẩn mực từ phân tích yêu cầu, mô hình hóa hướng đối tượng UML, triển khai ngăn xếp công nghệ React - Node.js đến thực nghiệm bảo mật với Bcrypt và AES-128 bit.