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

Trong bối cảnh kỷ nguyên công nghệ số và sự phát triển của các thiết bị di động thông minh, điện thoại thông minh đã trở thành phương tiện phổ biến và gắn liền với đời sống của sinh viên. Tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, công tác quản lý hoạt động phong trào và hỗ trợ đoàn viên của Đoàn Thanh niên Cộng sản Hồ Chí Minh gặp phải một số khó khăn nhất định, đặc biệt là việc truyền tải thông tin hoạt động từ cấp Đoàn trường và Đoàn khoa đến từng chi đoàn và đoàn viên còn chậm, việc quản lý danh sách đăng ký tham gia hoạt động, theo dõi điểm rèn luyện và hoạt động công tác xã hội còn thiếu tính đồng bộ và tập trung.

Nhằm giải quyết các bất cập trên, đề tài "Xây dựng ứng dụng hỗ trợ đoàn viên" được thực hiện bởi hai sinh viên Võ Hồng Phúc (MSSV: 16110423) và Đặng Thị Duyên (MSSV: 16110299) dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn thuộc Bộ môn 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 TP. Hồ Chí Minh.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:

  1. Về mặt lý thuyết: Nghiên cứu và tìm hiểu các công nghệ phần mềm hiện đại bao gồm Spring Framework (Spring Boot, Spring MVC), ReactJS, React Native, chuẩn xác thực bảo mật JSON Web Token (JWT), Hibernate ORM, hệ quản trị cơ sở dữ liệu MongoDB và nền tảng Google Firebase.
  2. Về mặt thực hành và xây dựng sản phẩm:
    • Sử dụng Spring Framework để xây dựng hệ thống RESTful APIs phục vụ toàn bộ các module quản lý dữ liệu trong hệ thống.
    • Sử dụng Hibernate để kết nối, truy xuất và thao tác với hệ quản trị cơ sở dữ liệu NoSQL MongoDB.
    • Ứng dụng JSON Web Token làm cơ chế bảo mật (Security Interceptor) cho toàn bộ hệ thống trao đổi dữ liệu.
    • Sử dụng ReactJS để thiết kế và xây dựng giao diện web quản trị (Web Admin) dành cho cấp quản lý.
    • Sử dụng React Native để phát triển ứng dụng di động đa nền tảng (Mobile App) dành cho người dùng là đoàn viên và sinh viên.
    • Sử dụng dịch vụ Google Firebase (Cloud Messaging và Notification) để gửi thông báo tức thời về các hoạt động phong trào đến thiết bị di động.

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

  • Đối tượng nghiên cứu: Nghiệp vụ quản lý công tác đoàn vụ, hoạt động rèn luyện đoàn viên tại trường đại học; các công nghệ phần mềm ứng dụng xây dựng hệ thống web và di động.
  • Phạm vi không gian: Triển khai thử nghiệm cho Đoàn TNCS Hồ Chí Minh Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.
  • Phạm vi thời gian: Đồ án được thực hiện trong thời gian 15 tuần, từ ngày 30/03/2020 đến ngày 19/07/2020.
  • Phạm vi chức năng: Tập trung vào các nghiệp vụ tạo và quản lý hoạt động rèn luyện (cấp trường, cấp khoa); phát thông báo đến ứng dụng di động; đăng ký tham gia hoạt động; tạo danh sách sinh viên phục vụ điểm danh; đánh giá hoạt động theo thang điểm sao; quản lý phân quyền, tài khoản, năm học, học kỳ, khoa và lớp học.

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

Đồ án tổng hợp và áp dụng các nền tảng công nghệ phần mềm để giải quyết bài toán đặt ra:

Công nghệ / Nền tảng Vai trò trong hệ thống Đặc tính kỹ thuật chính áp dụng
Spring Framework / Spring Boot Backend RESTful API Server Xây dựng theo nguyên lý Dependency Injection (DI) và Aspect Oriented Programming (AOP); cung cấp khả năng phát triển nhanh (RAD), cấu hình độc lập không phụ thuộc XML.
Hibernate Framework Tầng truy xuất dữ liệu (Persistence Layer) Đóng vai trò ORM Framework, thực hiện ánh xạ đối tượng và giao tiếp giữa tầng logic ứng dụng với hệ quản trị cơ sở dữ liệu.
MongoDB Cơ sở dữ liệu (Database) Hệ quản trị CSDL NoSQL hướng tài liệu (Document JSON/BSON), cấu trúc phi quan hệ, hỗ trợ mở rộng ngang (Horizontal Scalability) theo cụm cluster, tốc độ truy vấn cao.
JSON Web Token (JWT) Cơ chế xác thực và bảo mật Chuẩn mở RFC 7519 gồm 3 phần (Header, Payload, Signature); xác thực không trạng thái qua HTTP Header và hệ thống Interceptor để kiểm soát mọi luồng dữ liệu.
ReactJS Giao diện Web Quản trị (Web Admin) Thư viện giao diện người dùng dựa trên cơ chế Virtual DOM tối ưu hóa việc render và luồng dữ liệu một chiều (One-way Data Binding).
React Native Ứng dụng di động (Mobile App) Framework đa nền tảng cho phép biên dịch mã nguồn thành ứng dụng native chạy đồng thời trên hệ điều hành Android và iOS.
Google Firebase Dịch vụ thông báo đẩy (Push Notification) Sử dụng dịch vụ Firebase Cloud Messaging và Notification để đẩy thông tin hoạt động tức thời đến thiết bị người dùng.

Phương pháp nghiên cứu thực tế được nhóm tác giả sử dụng gồm:

  • Phương pháp khảo sát hiện trạng: Khảo sát thực tế nhu cầu quản lý đoàn viên và tổ chức hoạt động phong trào tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.
  • Phương pháp phân tích và mô hình hóa hệ thống: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng sơ đồ Use Case tổng quan, sơ đồ Use Case phân rã chức năng, đặc tả 19 Use Case nghiệp vụ và xây dựng các sơ đồ tuần tự (Sequence Diagram).
  • Phương pháp thiết kế kiến trúc phần mềm: Thiết kế hệ thống theo mô hình kiến trúc phân tán Client - Server tách biệt thông qua giao tiếp RESTful API; thiết kế 16 bảng dữ liệu (collection) trên MongoDB.
  • Phương pháp kiểm thử phần mềm: Xây dựng kế hoạch kiểm thử chức năng (Functional Testing) với mẫu Test Case Cover, Test Case chi tiết và bộ dữ liệu kiểm thử (Test Data) cho các luồng nghiệp vụ chính.

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

Kiến trúc hệ thống

Hệ thống được tổ chức theo mô hình phân tầng Client - Server. Phía máy chủ trung tâm (Backend API Server) được xây dựng trên nền tảng Spring Boot, tiếp nhận và xử lý các yêu cầu nghiệp vụ thông qua các điểm cuối RESTful API. Toàn bộ các yêu cầu từ phía máy khách đều phải đi qua bộ lọc xác thực (Interceptor) sử dụng mã JWT nằm trong HTTP Header. Phía máy khách bao gồm hai giao diện độc lập: Web Admin phát triển bằng ReactJS dành cho cán bộ quản lý và Mobile App phát triển bằng React Native dành cho sinh viên/đoàn viên.

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu MongoDB được thiết kế gồm 16 bảng (collection) lưu trữ dữ liệu dưới dạng Document:

  • users: Quản lý tài khoản đăng nhập, mật khẩu được mã hóa băm (hash), cấp độ tài khoản (userlevel), trạng thái hệ thống (isSystem), trạng thái hoạt động (status), thông tin quản lý (DBRef(users)).
  • user_role, roles, privileges, user_privilege, roles_privilege: Hệ thống bảng phục vụ cơ chế phân quyền đa cấp, liên kết người dùng với các vai trò và quyền hạn tương ứng.
  • students, managers, people_contact: Lưu trữ thông tin chi tiết của sinh viên (mã số sinh viên code, họ tên Firstname, Lastname), thông tin người quản lý và thông tin liên hệ.
  • scholastics, semesters, faculities, classes: Quản lý danh mục cấu trúc năm học (tên tiếng Việt vnTitle, tên tiếng Anh enTitle), học kỳ (ký hiệu Signal, ngày bắt đầu startDate, ngày kết thúc endDate), khoa và lớp học.
  • activities, activities_description, activity_level: Quản lý danh sách hoạt động, nội dung chi tiết của chương trình và phân cấp tổ chức hoạt động (cấp trường, cấp khoa).

Luồng xử lý tuần tự của các tính năng chính

Nhóm tác giả đã mô hình hóa 4 luồng xử lý tuần tự trọng yếu:

  1. Đăng nhập hệ thống: Người dùng gửi thông tin xác thực -> Spring Boot Controller tiếp nhận và xác thực -> Hệ thống sinh mã JWT -> Trả mã Token về Client để lưu trữ và gửi kèm trong các request tiếp theo.
  2. Đăng ký tài khoản: Người dùng nhập thông tin cá nhân và lớp -> Hệ thống kiểm tra dữ liệu -> Lưu trữ vào CSDL MongoDB -> Gửi email xác nhận mật khẩu đến địa chỉ email sinh viên.
  3. Thêm hoạt động mới: Cán bộ quản lý nhập thông tin hoạt động trên Web Admin -> Hệ thống ghi nhận vào CSDL -> Kích hoạt Google Firebase gửi thông báo đẩy đến ứng dụng di động của đoàn viên.
  4. Đăng ký tham gia hoạt động: Sinh viên chọn hoạt động trên Mobile App -> Gửi yêu cầu đăng ký kèm JWT Token -> Hệ thống xác thực quyền, kiểm tra số lượng và ghi nhận danh sách đăng ký.

Triển khai và môi trường vận hành

  • Máy chủ Backend và Web Admin: Triển khai ứng dụng API Server và Website quản lý trên máy chủ ảo VPS, thực hiện trỏ tên miền (hostname) về địa chỉ IP của VPS.
  • Ứng dụng di động: Xuất bản gói cài đặt Android dưới dạng file Android App Bundle (.aab) có đầy đủ chữ ký số (Signager) để đưa lên kho ứng dụng Google Play Store.
  • Môi trường cài đặt: Java JDK 1.8, NodeJS, ReactJS CLI, React Native CLI, MongoDB DBMS và các công cụ phát triển phần mềm liên quan.

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

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

Chương này tập trung trình bày nền tảng lý thuyết của các công nghệ được sử dụng trong đề tài:

  • Trình bày kiến trúc Spring Framework và Spring Boot, đi sâu vào hai nguyên tắc thiết kế cốt lõi: cơ chế tiêm phụ thuộc (Dependency Injection với 3 dạng: Constructor, Setter, Interface Injection) và lập trình hướng khía cạnh (Aspect Oriented Programming - AOP).
  • Giới thiệu kiến trúc Hibernate Framework trong vai trò tầng persistence layer giao tiếp giữa ứng dụng và cơ sở dữ liệu.
  • Phân tích cơ chế hoạt động của ReactJS với Virtual DOM và luồng dữ liệu một chiều (One-way binding), đồng thời so sánh sự khác biệt khi áp dụng React Native trong phát triển ứng dụng di động đa nền tảng.
  • Trình bày cấu trúc ba phần của JSON Web Token (Header, Payload, Signature), các loại claim (reserved, public, private claims) và quy trình xác thực không trạng thái.
  • Trình bày đặc trưng của CSDL NoSQL MongoDB với mô hình lưu trữ Document JSON/BSON, khả năng mở rộng cụm cluster và hiệu năng truy vấn so với RDBMS.
  • Giới thiệu các dịch vụ của nền tảng Google Firebase, trọng tâm là Cloud Messaging và Notification.

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

Chương 2 mô tả quá trình phân tích thực trạng và xác định các yêu cầu của hệ thống:

  • Phân tích nhu cầu thực tế của Đoàn trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh trong công tác quản lý hoạt động và hỗ trợ đoàn viên.
  • Phân loại yêu cầu hệ thống thành hai nhóm đối tượng:
    • Cấp quản lý: Tạo, chỉnh sửa, xóa hoạt động cấp trường/khoa; gửi thông báo; tìm kiếm thông tin; xuất danh sách sinh viên đăng ký ra file CSV/Excel; thống kê hoạt động; quản lý tài khoản và phân quyền người dùng.
    • Cấp người dùng (sinh viên): Xem chi tiết hoạt động; đăng ký tham gia; đánh giá hoạt động theo thang điểm sao; quản lý thông tin cá nhân, đổi mật khẩu và khôi phục mật khẩu qua email.
  • Xác định các yêu cầu chức năng (lưu trữ, tra cứu, thống kê, cấp phát mật khẩu, xuất file) và yêu cầu phi chức năng (tốc độ tìm kiếm, tính bảo mật, tối ưu thời gian truyền tải, trải nghiệm người dùng).
  • Xây dựng sơ đồ Use Case tổng quan và 4 sơ đồ Use Case phân rã chi tiết: Quản lý năm học, Quản lý học kỳ, Quản lý tài khoản, Quản lý hoạt động.
  • Đặc tả chi tiết 19 Use Case nghiệp vụ (từ Bảng 1 đến Bảng 19 trong tài liệu) kèm theo các bản thiết kế mẫu giao diện sơ bộ (Prototype).

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

Chương 3 trình bày chi tiết các giải pháp kỹ thuật và thiết kế thành phần của hệ thống:

  • Thiết kế cấu trúc cơ sở dữ liệu MongoDB với 16 bảng dữ liệu chi tiết (từ Bảng 20 đến Bảng 35), định nghĩa rõ ràng các trường thuộc tính, kiểu dữ liệu, ràng buộc và ý nghĩa nghiệp vụ.
  • Thiết kế giao diện và đặc tả các bảng xử lý giao diện:
    • Giao diện Web Admin: Trang Đăng nhập, Dashboard thống kê, Quản lý Khoa (Thêm/Sửa/Xóa), Quản lý Học kỳ (Thêm/Sửa/Xóa), Quản lý Lớp (Thêm/Sửa/Xóa), Quản lý Người dùng, Quản lý Hoạt động cấp trường và cấp khoa (Bảng 36 đến Bảng 53).
    • Giao diện Mobile App: Trang Đăng nhập, Đăng ký tài khoản, Trang chủ danh sách hoạt động, Chi tiết nội dung hoạt động, Tài khoản cá nhân, Đánh giá sao, Thay đổi mật khẩu và Danh sách hoạt động đã đăng ký (Bảng 54 đến Bảng 61).
  • Xây dựng 4 sơ đồ tuần tự (Sequence Diagram) mô tả chi tiết tương tác giữa Actor, Giao diện Client, Spring Boot Controller, Service, MongoDB và Firebase.

Chương 4: Cài đặt và kiểm thử phần mềm

Chương 4 mô tả quy trình hiện thực hóa và kiểm định chất lượng phần mềm:

  • Trình bày các bước thiết lập môi trường phát triển (Java JDK, NodeJS, ReactJS, React Native, MongoDB) và cấu hình máy chủ VPS, trỏ tên miền.
  • Hướng dẫn quy trình đóng gói và phát hành ứng dụng Android lên Google Play Store bằng file Android App Bundle (.aab) kèm chữ ký số Signager.
  • Xây dựng kế hoạch và biểu mẫu kiểm thử phần mềm (Mẫu Testcase Cover và Testcase chi tiết).
  • Tiến hành thực thi kiểm thử chức năng trên 5 màn hình chính:
    • Màn hình trang chủ.
    • Màn hình đăng nhập (kèm bộ dữ liệu Test Data).
    • Màn hình đăng ký tài khoản (kèm bộ dữ liệu Test Data).
    • Màn hình tạo hoạt động.
    • Màn hình đăng ký tham gia hoạt động.

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

Kết quả chính đạt được

  • Xây dựng hoàn chỉnh hệ thống RESTful API bằng Spring Boot kết nối cơ sở dữ liệu MongoDB qua Hibernate, đáp ứng đầy đủ các nghiệp vụ quản trị đoàn vụ.
  • Xây dựng hoàn chỉnh ứng dụng Web Admin bằng ReactJS phục vụ cán bộ Đoàn trường và Đoàn khoa trong việc quản lý năm học, học kỳ, khoa, lớp, hoạt động phong trào và xuất danh sách sinh viên đăng ký ra định dạng file bảng tính (CSV/Excel).
  • Xây dựng hoàn chỉnh ứng dụng di động đa nền tảng bằng React Native cho phép đoàn viên/sinh viên đăng ký tài khoản, tra cứu hoạt động phân cấp, đăng ký tham gia và đánh giá chất lượng hoạt động (thang điểm 1 đến 5 sao).
  • Tích hợp thành công cơ chế xác thực an toàn bằng JSON Web Token và dịch vụ Google Firebase Cloud Messaging để gửi thông báo tức thời đến thiết bị di động của sinh viên khi có hoạt động mới.

Giải pháp và kiến nghị của tác giả

  • Đưa ứng dụng vào áp dụng thử nghiệm trong công tác quản lý đoàn viên tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh nhằm giảm tải thủ tục giấy tờ thủ công, hỗ trợ tổng hợp điểm rèn luyện và công tác xã hội chính xác, nhanh chóng.
  • Hoàn tất quy trình xuất bản ứng dụng lên Google Play Store để tạo thuận lợi cho sinh viên cài đặt và sử dụng.

Đóng góp tự nêu của đề tài

  • Nghiên cứu và áp dụng thành công mô hình kết hợp giữa kiến trúc backend Spring Boot với cơ sở dữ liệu NoSQL MongoDB và hai nền tảng frontend độc lập (ReactJS trên Web, React Native trên Mobile).
  • Giải quyết được các nhược điểm của một số ứng dụng hỗ trợ đoàn viên trước đó (về tính trực quan của giao diện, sự hạn chế tính năng và khó khăn trong xử lý API).

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

Hạn chế của đề tài

  • Thời gian thực hiện đồ án giới hạn trong 15 tuần nên tính năng tạo bài kiểm tra và điểm danh sinh viên bằng hình thức nhận diện khuôn mặt mới chỉ dừng lại ở mức khảo sát và định hướng trong phạm vi ban đầu, chưa được cài đặt hoàn thiện trong sản phẩm cuối cùng.
  • Công tác kiểm thử mới tập trung chủ yếu vào kiểm thử chức năng (Functional Testing) trên các màn hình chính, chưa thực hiện kiểm thử tự động toàn diện và kiểm thử hiệu năng chịu tải với số lượng lớn người dùng đồng thời.

Hướng phát triển tiếp

  • Nghiên cứu và tích hợp hoàn chỉnh tính năng nhận diện khuôn mặt để tự động hóa công tác điểm danh sinh viên tham gia các hoạt động phong trào.
  • Tiếp tục tối ưu hóa hiệu năng truy vấn dữ liệu của hệ thống API Server và nâng cao trải nghiệm giao diện người dùng trên nhiều kích cỡ màn hình thiết bị di động khác nhau.
  • Đóng gói và phát hành ứng dụng trên nền tảng iOS của Apple và nghiên cứu tích hợp liên thông dữ liệu với hệ thống quản lý đào tạo chung của nhà trường.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Có thể tham khảo phương pháp thiết kế hệ thống phần mềm hoàn chỉnh kết hợp giữa Web Admin (ReactJS) và Mobile App (React Native) giao tiếp qua RESTful API (Spring Boot).
  • Người nghiên cứu các đề tài quản lý đoàn thể, trường học: Tham khảo quy trình khảo sát nghiệp vụ, mô hình hóa Use Case, thiết kế cơ sở dữ liệu NoSQL MongoDB cho bài toán quản lý sinh viên, hoạt động ngoại khóa và phân quyền đa cấp.
  • Lập trình viên: Tham khảo cấu trúc triển khai bảo mật stateless với JSON Web Token, Interceptor và tích hợp dịch vụ thông báo đẩy Google Firebase Cloud Messaging vào ứng dụng thực tế.

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

1. Hệ thống sử dụng cơ chế bảo mật nào để kiểm soát các luồng dữ liệu vào ra?
Hệ thống sử dụng chuẩn mở JSON Web Token (JWT). Khi người dùng đăng nhập thành công, máy chủ sẽ cấp một mã Token gồm 3 phần (Header, Payload, Signature). Mọi yêu cầu (request) từ phía người dùng gửi lên hệ thống đều phải đi qua bộ lọc kiểm soát (Interceptor) và Token đóng vai trò là "chìa khóa" xác thực quyền hạn truy cập tài nguyên.

2. Cơ sở dữ liệu MongoDB của hệ thống gồm những bảng dữ liệu (collection) nào?
Hệ thống thiết kế 16 bảng dữ liệu trên MongoDB gồm: users, user_role, user_privilege, students, semesters, scholastics, roles, roles_privilege, privileges, people_contact, managers, faculities, classes, activity_level, activities_description và activities.

3. Các cấp quản lý và người dùng trong hệ thống có những chức năng chính nào?
Cấp quản lý (Đoàn trường, Đoàn khoa) có quyền quản lý năm học, học kỳ, khoa, lớp, người dùng, tạo/sửa/xóa hoạt động cấp trường và cấp khoa, gửi thông báo qua Firebase và xuất danh sách sinh viên tham gia ra file CSV/Excel. Cấp người dùng (đoàn viên/sinh viên) có thể đăng ký tài khoản, xem chi tiết hoạt động phân cấp, đăng ký tham gia, nhận thông báo đẩy và đánh giá sao (1 đến 5 sao) cho hoạt động đã diễn ra.

4. Ứng dụng di động được xây dựng bằng công nghệ gì và phát hành như thế nào?
Ứng dụng di động được phát triển bằng framework React Native để xây dựng mã nguồn đa nền tảng. Ứng dụng Android được xuất ra định dạng file Android App Bundle (.aab) có chữ ký số (Signager) để tải lên kho ứng dụng Google Play Store.

5. Nhóm tác giả đã tiến hành kiểm thử phần mềm cho những màn hình nào?
Nhóm tác giả đã xây dựng kế hoạch kiểm thử và thực thi các Test Case chi tiết kèm dữ liệu Test Data trên 5 màn hình chính: Màn hình trang chủ, Màn hình đăng nhập, Màn hình đăng ký tài khoản, Màn hình tạo hoạt động và Màn hình đăng ký tham gia hoạt động.

Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng hỗ trợ đoàn viên" của sinh viên Võ Hồng Phúc và Đặng Thị Duyên đã giải quyết thành công bài toán số hóa công tác quản lý đoàn vụ tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. Bằng việc kết hợp hệ sinh thái công nghệ Spring Boot, Hibernate, MongoDB ở phía máy chủ cùng ReactJS và React Native ở phía máy khách, hệ thống đã cung cấp một giải pháp toàn diện từ quản trị hoạt động đến tương tác sinh viên qua thiết bị di động. Đồ án đáp ứng đầy đủ các yêu cầu về phân tích, thiết kế, triển khai thực tế và kiểm thử chức năng, mang lại giá trị tham khảo thiết thực cho các dự án phát triển phần mềm quản lý trong môi trường giáo dục đại học.