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

Trong bối cảnh chuyển đổi số và ứng dụng công nghệ thông tin vào công tác giáo dục và đào tạo, việc xây dựng các hệ thống quản lý học tập, quản lý chương trình đào tạo và quản lý sinh viên - học viên trở thành một nhu cầu thiết yếu đối với các cơ sở đào tạo đại học và doanh nghiệp. Đề tài "Xây dựng ứng dụng quản lý sinh viên" (trong hệ thống phần mềm được định danh là hệ thống quản lý đào tạo FAMS - Fresher Academy Management System) được thực hiện trong khuôn khổ môn học Báo cáo Đồ án 1 (mã học phần: SE121.PMCL) tại Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh.

Đồ án được thực hiện bởi sinh viên Nguyễn Thanh Huỳnh (MSSV: 19521649), dưới sự hướng dẫn của Th.S Huỳnh Tuấn Anh và giáo viên hướng dẫn trực tiếp Lê Thanh Trọng, hoàn thành vào tháng 12 năm 2023.

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

  1. Xây dựng một ứng dụng web quản lý sinh viên và quy trình đào tạo với các tính năng cơ bản và chuyên sâu, hỗ trợ quản lý chi tiết thông tin người dùng, ma trận phân quyền, giáo trình (syllabus), chương trình đào tạo (training program) và lớp học (class).
  2. Thiết kế cơ sở dữ liệu quan hệ hoàn chỉnh, chuẩn hóa các thực thể phục vụ việc quản lý chương trình học tập đa cấp độ (từ nội dung đào tạo, đơn vị bài học, mục tiêu bài học đến cấu trúc giáo trình hoàn chỉnh).
  3. Vận dụng các công nghệ lập trình web hiện đại để phát triển hệ thống theo mô hình kiến trúc phân lớp, đảm bảo tính phân quyền chặt chẽ giữa các vai trò người dùng khác nhau.
  4. Nâng cao kỹ năng phân tích, thiết kế hệ thống, lập đặc tả ca sử dụng (Use-case Specifications) và tiếp cận quy trình phát triển phần mềm thực tế.

Đố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 trị đào tạo học viên/sinh viên, bao gồm quản trị tài khoản người dùng, thiết lập cây phân quyền, quản lý vòng đời giáo trình đào tạo, cấu trúc chương trình đào tạo và tổ chức vận hành lớp học.
  • Phạm vi không gian và thời gian: Đề tài được triển khai nghiên cứu và xây dựng thử nghiệm tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh, mốc thời gian hoàn thành báo cáo là tháng 12/2023.

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

Khung lý thuyết và công nghệ sử dụng

Đề tài dựa trên nền tảng kiến trúc phần mềm phân tầng và các công nghệ phát triển web tiêu chuẩn:

  • Công nghệ tầng giao diện (Frontend):
    • Thư viện ReactJS: Tận dụng cơ chế Virtual DOM để tối ưu hóa hiệu năng kết xuất giao diện, mô hình phát triển dựa trên thành phần (Component-based architecture), cú pháp JSX, quản lý trạng thái (State) và thuộc tính (Props), phương thức vòng đời (Lifecycle methods) cùng thư viện định tuyến React Router cho ứng dụng đơn trang (SPA).
    • Ngôn ngữ JavaScript: Lập trình hướng sự kiện (Event-Driven Programming), xử lý tương tác client-side và cơ chế biên dịch tại thời điểm chạy (JIT).
  • Công nghệ tầng xử lý nghiệp vụ (Backend):
    • Ngôn ngữ Java: Nền tảng hướng đối tượng đa nền tảng, thực thi trên máy ảo Java (JVM).
    • Framework Java Spring Boot: Hỗ trợ cơ chế Inversion of Control (IoC), Dependency Injection (DI), cấu hình tự động (Auto-Configuration), tích hợp sẵn máy chủ web (Tomcat/Jetty/Undertow), cung cấp các gói Spring Boot Starter, Spring Boot Actuator và DevTools nhằm đơn giản hóa việc xây dựng các dịch vụ backend.
  • Hệ quản trị cơ sở dữ liệu:
    • MySQL: Hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS), hỗ trợ toàn vẹn dữ liệu qua khóa chính (Primary Key), khóa ngoại (Foreign Key), hệ thống phân quyền (Privilege) và ngôn ngữ truy vấn có cấu trúc (SQL).
  • Mô hình kiến trúc phần mềm:
    • Kết hợp mô hình Ba lớp (Three-Layer Architecture) và mô hình MVC (Model - View - Controller).

Phương pháp nghiên cứu

  • Phương pháp nghiên cứu tài liệu nghiệp vụ: Thu thập, tổng hợp các quy định và yêu cầu quản lý đào tạo, cấu trúc giáo trình và phân quyền học vụ.
  • Phương pháp khảo sát và tham khảo thực tế: Phân tích các mô hình ứng dụng quản lý hiện hành nhằm xác định luồng chức năng phù hợp.
  • Phương pháp phân tích thiết kế hệ thống hướng đối tượng: Xây dựng sơ đồ lớp dữ liệu, phân rã chức năng, xây dựng danh mục ca sử dụng và viết tài liệu đặc tả ca sử dụng chi tiết (kèm tiêu chí chấp nhận - Acceptance Criteria).
  • Phương pháp phát triển phần mềm: Thiết kế giao diện người dùng (UI/UX) và triển khai lập trình theo kiến trúc phân tách độc lập giữa Client và Server.

Thiết kế và triển khai

Kiến trúc hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc Ba lớp (Three-Layer Architecture):

  • Lớp hiển thị (Presentation Layer / GUI): Đảm nhiệm việc hiển thị giao diện đồ họa, tiếp nhận các tương tác và sự kiện từ phía người dùng, chuyển tiếp yêu cầu đến tầng nghiệp vụ.
  • Lớp xử lý nghiệp vụ (Business Logic Layer): Tiếp nhận yêu cầu từ lớp GUI, kiểm tra và xác thực các ràng buộc nghiệp vụ, xử lý luồng dữ liệu trước khi gửi tới tầng truy cập dữ liệu hoặc phản hồi kết quả về giao diện.
  • Lớp truy cập dữ liệu (Data Access Layer): Chịu trách nhiệm trực tiếp trong việc thực thi các truy vấn, kết nối và tương tác với cơ sở dữ liệu MySQL, đảm bảo tính toàn vẹn và bảo mật dữ liệu.

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

Hệ thống xác định và thiết kế 11 lớp thực thể chính với các ràng buộc dữ liệu cụ thể:

STT Tên lớp thực thể Mục đích quản lý Các thuộc tính chính
1 User Permission Phân quyền vai trò người dùng Permission ID, Role, Syllabus, Training Program, Class, Learning material, User Manager
2 Class Quản lý thông tin lớp học Class ID, Training program code, Class name, Class code, Duration, Status, Location, FSU, StartDate, EndDate, Created by, Created date, Modified by, Modified date
3 ClassUser Liên kết học viên/giảng viên với lớp UserId, ClassId, UserType
4 User Thông tin người dùng hệ thống ID, Name, Email, Phone Number, DOB, Gender, Status, Created by, Created date, Modified by, Modified date
5 Training Program Quản lý chương trình đào tạo Training program code, Name, UserID, Duration, Topic Code, Status, Created by, Created date, Modified by, Modified date
6 Syllabus Quản lý thông tin giáo trình Topic Code, Topic name, Technical_group, Version, training_audience, Topic outline, Training materials, Public status, Created by, Created date, Modified by, Modified date
7 Training program syllabus Liên kết chương trình đào tạo và giáo trình Topic Code, Training program code
8 Syllabus objective Mục tiêu của giáo trình Topic Code, Objective code
9 Training unit Quản lý các đơn vị bài học Unit Code, Unit Name, Topic Code
10 Learning objective Danh mục mục tiêu học tập Objective code, Objective name, Description
11 Training content Nội dung chi tiết bài học Content ID, Unit Code, Content Name, Duration, Delivery type, Training format

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

Chương 1: Giới thiệu chung

Chương này nêu tổng quan về bối cảnh công nghệ thông tin, sự chuyển dịch của các ứng dụng web phục vụ quản lý và kết nối thông tin. Tác giả trình bày lý do chọn đề tài, mục tiêu xây dựng một ứng dụng web quản lý dữ liệu học viên/sinh viên, tạo tiền đề nâng cao kiến thức phát triển phần mềm. Đồng thời, chương 1 cũng xác định 3 phương pháp nghiên cứu chính: nghiên cứu tài liệu nghiệp vụ, tham khảo ứng dụng quản lý hiện hành và tìm hiểu tài liệu kỹ thuật công nghệ.

Chương 2: Công nghệ trong ứng dụng

Tập trung làm rõ cơ sở lý thuyết và các công nghệ sử dụng trong đồ án:

  • Phân tích khái niệm và đặc điểm của ReactJS (Components, JSX, Props, State, Virtual DOM, Lifecycle methods, React Router) cùng ưu điểm (hiệu suất cao, tái sử dụng thành phần) và nhược điểm (độ phức tạp trong quản lý trạng thái ứng dụng lớn).
  • Khái quát về ngôn ngữ JavaScript (Event-Driven, Client-Side, JIT Compilation, hướng đối tượng).
  • Hệ quản trị cơ sở dữ liệu MySQL (khái niệm bảng, cột, khóa chính, khóa ngoại, ngôn ngữ SQL, ưu điểm miễn phí/ổn định và nhược điểm về khả năng mở rộng quy mô lớn).
  • Ngôn ngữ Java và framework Spring Boot (cơ chế đa nền tảng, IoC, Dependency Injection, cấu hình tự động Auto-Configuration, tích hợp sẵn máy chủ web).

Chương 3: Phân tích - Thiết kế cơ sở dữ liệu

Chương 3 trình bày chi tiết danh sách 11 lớp thực thể và định nghĩa cấu trúc bảng dữ liệu của hệ thống. Từng bảng đều được mô tả cụ thể về tên trường thuộc tính, kiểu dữ liệu (String, Int, Date, Datetime, File), ràng buộc bắt buộc và ý nghĩa quản lý nghiệp vụ (như phân quyền theo role, trạng thái lớp học, đơn vị FSU phụ trách, phiên bản giáo trình, ngày tạo và người sửa đổi).

Chương 4: Mô hình Use-case

Chương này xác định các tác nhân (Actors) của hệ thống gồm: INSTRUCTOR (Trainer phụ trách lớp học) và ADMIN (bao gồm Super_Admin có quyền tối cao và Admin quản lý hệ thống). Hệ thống thiết lập danh mục 23 ca sử dụng chia thành 4 phân hệ chính kèm đặc tả điều kiện tiên quyết, điều kiện sau và các tiêu chí chấp nhận (Acceptance Criteria - AC):

Phân hệ chức năng STT Tên Use-case Đối tượng thực hiện chính
Quản lý người dùng & Phân quyền 1 View list of existed user Admin
2 Create user Admin
3 Update user Admin
4 Allow super admin to add permission Super_Admin
5 View permission matrix Admin
6 Update permission to user Admin
Quản lý giáo trình (Syllabus) 7 View list of existed syllabus Admin / Instructor
8 Create Syllabus (General Tab) Admin / Instructor
9 Create Syllabus (Outline Screen) Admin / Instructor
10 Create Syllabus (Other Screen) Admin / Instructor
11 Read all detail information of syllabus Admin / Instructor
12 Update/edit syllabus information Admin / Instructor
13 Import syllabus (CSV/Excel) Admin
14 Duplicate Syllabus Instructor
Quản lý chương trình đào tạo 15 View list of existed training program Admin / Trainer
16 Create training program Admin
17 View detail training program list Admin / BU lead / Trainer / Trainee
18 Update training program information Admin
19 Active/Deactive training program Instructor
Quản lý lớp học (Class) 20 View list of class Admin
21 Create class Admin
22 View class detail Admin
23 Update class Admin

Chương 6: Thiết kế kiến trúc hệ thống

Trình bày sơ đồ kiến trúc Three Layers kết hợp MVC. Xác định rõ ràng ranh giới và trách nhiệm của Lớp hiển thị (Presentation Layer), Lớp xử lý nghiệp vụ (Business Logic Layer) và Lớp truy cập dữ liệu (Data Access Layer).

Chương 7: Thiết kế giao diện

Chương 7 liệt kê và đặc tả chi tiết 18 màn hình giao diện của ứng dụng:

  • Màn hình Đăng nhập, Quên mật khẩu, Màn hình chính (Home screen), Màn hình hồ sơ cá nhân (Profile).
  • Nhóm màn hình Quản lý người dùng: List User, Create User, Update User, User Permission, Update Permission (phân biệt giao diện giữa Admin và Super_Admin).
  • Nhóm màn hình Quản lý giáo trình: List Syllabus, Create Syllabus (gồm tab General, Outline, Other với các trường Course Objectives, Add New Content, Final Practice), Update Syllabus.
  • Nhóm màn hình Quản lý chương trình đào tạo: List Training Program, Create Training Program, Update Training Program.
  • Nhóm màn hình Quản lý lớp học: List Class, Create Class, Update Class.

Chương 8: Môi trường triển khai và phát triển

Ghi nhận việc thiết lập môi trường phát triển cục bộ và cấu hình môi trường triển khai cho cả hai thành phần Frontend (ReactJS) và Backend (Java Spring Boot, MySQL).

Chương 9: Tổng kết

Tổng kết các kết quả đạt được về mặt tính năng và hệ thống, xác định các hướng phát triển tiếp theo của ứng dụng và đưa ra bảng phân công công việc chi tiết.

Chương 10: Link source code và tài liệu tham khảo

Cung cấp liên kết lưu trữ mã nguồn của dự án và danh mục các tài liệu, nguồn tham khảo phục vụ quá trình nghiên cứu và thực hiện đồ án.


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

Kết quả chính

  • Chuẩn hóa phân tích nghiệp vụ: Hoàn thành tài liệu đặc tả yêu cầu cho 23 ca sử dụng bao quát toàn bộ vòng đời quản lý đào tạo (người dùng, phân quyền, giáo trình, chương trình và lớp học).
  • Mô hình hóa dữ liệu chi tiết: Xây dựng cơ sở dữ liệu quan hệ gồm 11 bảng thực thể với đầy đủ ràng buộc khóa chính, khóa ngoại, các thuộc tính quản lý lịch sử tạo và cập nhật dữ liệu (Created by, Created date, Modified by, Modified date).
  • Thiết lập quy tắc tự động hóa:
    • Quy tắc sinh mã lớp học tự động: <<Location Code>> + <<Current Year (yy)>> + <<Incremental Number (01-99)>>.
    • Quy tắc sinh mã mục tiêu giáo trình: <loại mục tiêu A/S/K/H> + <sequence>.
    • Cơ chế gửi email thời gian thực thông báo khởi tạo tài khoản thành công kèm mật khẩu tự sinh: [FAMS] - Tài khoản được tạo thành công.
    • Cơ chế tự động tính toán biểu đồ phân bổ thời gian (Time Allocation) và tỷ trọng đánh giá môn học (tổng 100% bao gồm Quiz, Assignment, Final Theory Test, Final Practice Test).
  • Thiết kế hệ thống giao diện: Xây dựng chi tiết 18 màn hình chức năng, phân định rõ trạng thái hiển thị theo quyền hạn tài khoản (Admin, Super_Admin, Trainer, Trainee).

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

  • Cung cấp một bộ tài liệu phân tích thiết kế hệ thống quản lý học viện/đào tạo (FAMS) có cấu trúc hoàn chỉnh theo chuẩn môn học SE121.
  • Minh họa phương pháp kết hợp công nghệ hiện đại (ReactJS ở frontend và Java Spring Boot ở backend) trên nền tảng kiến trúc Ba lớp và mô hình MVC.

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

Hạn chế

  • Do hạn chế về thời gian và kinh nghiệm thực tế, một số khâu trong quá trình triển khai có thể phát sinh sai sót kỹ thuật.
  • Khả năng mở rộng (extensibility) và hiệu năng truy vấn của hệ quản trị cơ sở dữ liệu MySQL khi lượng dữ liệu và người dùng đồng thời tăng cao chưa được kiểm thử tải chuyên sâu.
  • Các tính năng nâng cao liên quan đến xử lý dữ liệu phức tạp hoặc tối ưu hóa trải nghiệm tự động còn dừng lại ở mức thiết kế thử nghiệm.

Hướng nghiên cứu và phát triển tiếp

  • Hoàn thiện mã nguồn và tối ưu hóa hiệu năng của các API backend trên Java Spring Boot.
  • Tích hợp thêm các phân hệ khảo sát học viên, đánh giá chất lượng giảng dạy tự động.
  • Nâng cấp giao diện người dùng và mở rộng khả năng hỗ trợ đa nền tảng (Mobile/Web Responsive).

Giá trị tham khảo

Tài liệu báo cáo đồ án này có giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Kỹ thuật Phần mềm, Công nghệ Thông tin, Hệ thống Thông tin: Tham khảo cách thức phân tích nghiệp vụ, lập mô hình use-case, viết đặc tả tiêu chí chấp nhận (AC) và thiết kế cơ sở dữ liệu quan hệ cho bài tập lớn, đồ án môn học hoặc khóa luận tốt nghiệp.
  • Lập trình viên phát triển hệ thống quản lý đào tạo (LMS/FAMS): Tham khảo cấu trúc phân rã các lớp thực thể trong quản lý giáo trình đào tạo đa thành phần (Syllabus -> Training Unit -> Training Content -> Learning Objective).

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

1. Hệ thống quản lý những đối tượng người dùng nào và phân quyền ra sao?

Hệ thống phân định 2 nhóm tác nhân chính:

  • ADMIN: Bao gồm Super_Admin (có quyền hạn cao nhất, được phép phân quyền và gán vai trò vào tài khoản người dùng) và Admin (quản lý người dùng, tạo/chỉnh sửa chương trình đào tạo, giáo trình và lớp học).
  • INSTRUCTOR: Các giảng viên/trainer phụ trách lớp học, có quyền xem danh sách giáo trình, tạo/sao chép giáo trình, xem chi tiết chương trình đào tạo và kích hoạt/hủy kích hoạt chương trình đào tạo. Ngoài ra, hệ thống còn hỗ trợ hiển thị hạn chế cho vai trò BU leadTrainee.

2. Quy tắc tự động tạo mã lớp học (Class code) trong hệ thống được định nghĩa như thế nào?

Theo đặc tả ca sử dụng Create class (mục 1.21), khi lớp học được lưu, mã lớp sẽ được hệ thống sinh tự động theo công thức: $$\text{Class Code} = \text{<<Location Code>>} + \text{<<Current Year (yy)>>} + \text{<<Incremental Number (01-99)>>}$$

3. Quy trình tạo mới một giáo trình (Syllabus) gồm những bước nào?

Quy trình tạo giáo trình được chia làm 3 bước tương ứng với 3 màn hình/tab:

  1. General Tab: Nhập thông tin chung (tên giáo trình, cấp độ, số lượng người học, yêu cầu kỹ thuật, mục tiêu khóa học; mã giáo trình được sinh tự động theo định dạng <loại mục tiêu A/S/K/H><sequence>).
  2. Outline Screen: Thiết lập đề cương chi tiết theo cấu trúc ngày học (days), đơn vị bài học (units) và nội dung (contents/materials), kèm thời lượng (0 - 480 phút) và hình thức (online/offline). Biểu đồ phân bổ thời gian (Time Allocation) được tính toán tự động.
  3. Other Screen: Nhập tỷ trọng đánh giá môn học (gồm Quiz, Assignment, Final Theory Test, Final Practice Test với tổng điểm bằng 100%), thiết lập tiêu chí đạt và nguyên tắc đào tạo.

4. Hệ thống xử lý thông báo tài khoản người dùng mới như thế nào?

Theo đặc tả ca sử dụng Create user (mục 4.2), sau khi Admin tạo tài khoản thành công, hệ thống sẽ tự động gửi email thời gian thực đến địa chỉ của người dùng với tiêu đề [FAMS] - Tài khoản được tạo thành công. Nội dung thư chứa tên đăng nhập (Username: <user.email>) và mật khẩu tự sinh của hệ thống (Password: <auto password created by system>) kèm yêu cầu đổi mật khẩu sau khi đăng nhập.

5. Kiến trúc phần mềm của ứng dụng được xây dựng theo mô hình nào?

Phần mềm được thiết kế theo mô hình Ba lớp (Three-Layer Architecture) kết hợp mô hình MVC, gồm: Lớp GUI (Presentation Layer) xây dựng bằng ReactJS; Lớp nghiệp vụ (Business Logic Layer) xây dựng bằng Java Spring Boot để xử lý logic và kiểm tra ràng buộc; Lớp truy cập dữ liệu (Data Access Layer) chịu trách nhiệm tương tác và truy vấn với cơ sở dữ liệu MySQL.


Kết luận

Báo cáo Đồ án 1 "Xây dựng ứng dụng quản lý sinh viên" (môn SE121.PMCL) của sinh viên Nguyễn Thanh Huỳnh đã hoàn thành việc phân tích, thiết kế hệ thống quản trị đào tạo FAMS hoàn chỉnh. Báo cáo cung cấp đầy đủ thiết kế cơ sở dữ liệu với 11 thực thể, 23 đặc tả ca sử dụng chi tiết cùng thiết kế 18 màn hình giao diện người dùng. Đồ án kết hợp hài hòa giữa nền tảng frontend ReactJS và backend Java Spring Boot trên cơ sở dữ liệu MySQL, đáp ứng các tiêu chuẩn kỹ thuật trong quy trình phát triển phần mềm đào tạo.