Bối cảnh và vấn đề nghiên cứu
Trong môi trường giáo dục đại học, nguồn tài nguyên học tập bao gồm giáo trình, tài liệu tham khảo và các dụng cụ, linh kiện thực hành đóng vai trò thiết yếu đối với sinh viên. Tuy nhiên, thực trạng quản lý và lưu chuyển các tài nguyên này vẫn chưa được tổ chức đồng bộ và có hệ thống:
- Tính cấp thiết của đề tài: Vào đầu mỗi học kỳ, sinh viên thường gặp nhiều trở ngại khi tìm kiếm nguồn tài liệu học tập chính thống, dẫn đến lãng phí thời gian và chi phí. Ngược lại, sinh viên các khóa trước sở hữu lượng lớn giáo trình, dụng cụ, linh kiện kỹ thuật còn giá trị sử dụng nhưng không có kênh kết nối hiệu quả để chuyển giao cho sinh viên khóa sau. Tình trạng mất cân đối cung - cầu này xuất phát từ việc thiếu một nền tảng chung phục vụ hoạt động trao đổi học thuật và mua bán dụng cụ chuyên ngành.
- Mục tiêu nghiên cứu: Xây dựng hoàn chỉnh nền tảng web mang tên "StuGear" nhằm hỗ trợ sinh viên trao đổi, mua bán tài liệu và dụng cụ học tập; đồng thời cung cấp diễn đàn thảo luận kinh nghiệm học thuật có tích hợp trợ lý ảo hỗ trợ tự động.
- Nhiệm vụ của đề tài (được phân định cụ thể trong đề cương):
- Nhiệm vụ lý thuyết: Nghiên cứu và tìm hiểu các công nghệ phát triển ứng dụng bao gồm ReactJS, JavaScript, Laravel, PHP, MySQL, JSON Web Token (JWT), Docker, Nginx và máy chủ ảo VPS.
- Nhiệm vụ thực hành:
- Sử dụng PHP và framework Laravel để xây dựng hệ thống Backend và thiết kế hệ thống API cho các phân hệ chức năng.
- Sử dụng hệ quản trị cơ sở dữ liệu MySQL để lưu trữ thông tin và dữ liệu vận hành hệ thống.
- Ứng dụng chuẩn JSON Web Token (JWT) nhằm phục vụ cơ chế xác thực và phân quyền truy cập API.
- Sử dụng thư viện ReactJS để thiết kế và hiện thực hóa giao diện người dùng tương tác.
- Kết hợp Docker, Nginx và Cloud VPS để đóng gói, cấu hình máy chủ web và triển khai hệ thống lên môi trường Internet.
- Đối tượng nghiên cứu: Quy trình trao đổi giáo trình, dụng cụ học tập và nhu cầu chia sẻ kinh nghiệm học tập của sinh viên đại học; mô hình kiến trúc phần mềm phân tầng kết hợp giữa Laravel (Backend) và ReactJS (Frontend).
- Phạm vi nghiên cứu:
- Không gian: Áp dụng cho đối tượng sinh viên đại học (triển khai tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh).
- Thời gian thực hiện: Từ ngày 01/01/2024 đến ngày 10/07/2024.
Cơ sở lý thuyết và phương pháp
Đồ án được thực hiện dựa trên cơ sở công nghệ phát triển web hiện đại và quy trình kỹ thuật phần mềm chuẩn mực:
- Nền tảng công nghệ và kiến trúc:
- Phía máy chủ (Backend): Ngôn ngữ PHP kết hợp framework Laravel, hoạt động theo mô hình kiến trúc MVC (Model-View-Controller). Tận dụng công cụ Eloquent ORM để tương tác với cơ sở dữ liệu qua mẫu thiết kế Active Record; sử dụng hệ thống định tuyến (Routing), cơ chế phân quyền (Authorization), bộ xử lý hàng đợi (Queue), sự kiện (Events), lập lịch tác vụ (Task Scheduling) và kiểm thử đơn vị (Unit Testing).
- Phía giao diện người dùng (Frontend): Ngôn ngữ JavaScript, HTML, CSS kết hợp thư viện ReactJS. Ứng dụng mô hình kiến trúc theo thành phần (Component-based architecture), sử dụng Virtual DOM để tối ưu hóa hiệu năng render giao diện và quản lý trạng thái (State Management).
- Cơ sở dữ liệu và bảo mật: Hệ quản trị cơ sở dữ liệu quan hệ MySQL; cơ chế xác thực phiên làm việc thông qua mã thông báo JWT (JSON Web Token) và giao thức xác thực OAuth với Google.
- Hạ tầng và vận hành: Nền tảng ảo hóa container Docker, web server/reverse proxy Nginx và máy chủ đám mây VPS.
- Phương pháp nghiên cứu:
- Phân tích yêu cầu: Khảo sát thực trạng nhu cầu trao đổi học tập của sinh viên, mô hình hóa các yêu cầu nghiệp vụ thành các yêu cầu chức năng và phi chức năng của phần mềm.
- Thiết kế hệ thống: Thiết kế cơ sở dữ liệu quan hệ (lược đồ ERD), lược đồ lớp (Class Diagram), lược đồ chức năng (Use Case Diagram), lược đồ tuần tự (Sequence Diagram) và lược đồ hoạt động (Activity Diagram) theo chuẩn UML.
- Thử nghiệm người dùng: Đưa hệ thống vào môi trường thực tế để người dùng trải nghiệm, ghi nhận phản hồi nhằm phát hiện lỗi phát sinh và hoàn thiện giao diện cũng như luồng nghiệp vụ.
Thiết kế và triển khai hệ thống
Hệ thống StuGear được mô hình hóa chi tiết thành hai nhóm tác nhân chính với các tiêu chuẩn phi chức năng và kiến trúc phân rã chức năng cụ thể:
1. Phân định tác nhân hệ thống
| STT |
Tác nhân |
Vai trò và ý nghĩa nghiệp vụ |
| 1 |
Người dùng |
Khách hàng tham gia hệ thống với hai vai trò: người mua và người bán tài liệu, giáo trình, dụng cụ học tập; tham gia đăng bài, bình luận trên diễn đàn học tập. |
| 2 |
Quản lý |
Quản trị viên phụ trách điều hành hệ thống, kiểm duyệt nội dung, quản lý danh mục, xử lý tranh chấp, quản lý tài chính và cấu hình trợ lý ảo. |
2. Yêu cầu phi chức năng
Hệ thống StuGear thiết lập 9 tiêu chuẩn phi chức năng nhằm đảm bảo tính ổn định và an toàn khi vận hành:
| STT |
Tiêu chí phi chức năng |
Nội dung kỹ thuật và yêu cầu bảo đảm |
| 1 |
Bảo mật |
Mã hóa dữ liệu, xác thực hai yếu tố, triển khai cơ chế chống tấn công SQL Injection và Cross-Site Scripting (XSS). |
| 2 |
Bảo vệ quyền riêng tư |
Cung cấp quyền kiểm soát thông tin cá nhân và cho phép người dùng tùy chỉnh cài đặt hiển thị thông tin riêng tư. |
| 3 |
Linh hoạt về quyền truy cập |
Hỗ trợ phân quyền chặt chẽ theo vai trò người dùng (người dùng thông thường và quản trị viên). |
| 4 |
Khả năng mở rộng |
Kiến trúc module hóa cho phép mở rộng quy mô hệ thống khi lưu lượng và số lượng người dùng tăng cao. |
| 5 |
Dự phòng và phục hồi |
Thiết lập quy trình sao lưu và phương án phục hồi dữ liệu định kỳ, tránh thất thoát khi có sự cố hạ tầng. |
| 6 |
Tự động hóa kiểm thử |
Tích hợp các bộ công cụ kiểm thử tự động nhằm bảo đảm tính chính xác của các hàm logic và API. |
| 7 |
Tự động hóa triển khai |
Tích hợp quy trình CI/CD hỗ trợ đóng gói và tự động triển khai phần mềm lên môi trường đám mây. |
| 8 |
Khả năng truy cập |
Thiết lập hệ thống tên miền (Domain) và máy chủ đám mây đảm bảo truy cập thông suốt mọi lúc, mọi nơi. |
| 9 |
Đa dạng môi trường |
Vận hành độc lập qua 3 môi trường phát triển: Local (máy cục bộ), Quality (kiểm định chất lượng) và Production (môi trường thực tế). |
Nội dung chính theo từng chương
Mở đầu
Phần mở đầu nêu rõ tính cấp thiết của đề tài xuất phát từ nhu cầu chia sẻ tài nguyên học thuật chưa được khai thác tối ưu tại các trường đại học. Tác giả xác định rõ mục tiêu, đối tượng, phương pháp nghiên cứu và dự kiến các kết quả cụ thể đạt được ở cả hai phía: người dùng (mua bán tài liệu, thanh toán linh hoạt, tương tác diễn đàn, hỗ trợ bởi AI) và quản trị viên (quản lý sản phẩm, tài khoản, bài đăng, trích xuất báo cáo thống kê qua biểu đồ).
Chương 1: Tổng quan đề tài
Chương 1 giới thiệu chi tiết về nền tảng StuGear và phân tích nền tảng công nghệ được lựa chọn:
- Giới thiệu định hướng của StuGear: Không chỉ là cổng thương mại điện tử chuyên biệt cho giáo trình, tài liệu và linh kiện học tập mà còn là mạng xã hội kết nối tri thức, hỗ trợ tìm kiếm nâng cao theo chủ đề, mức giá và trạng thái sản phẩm.
- Cơ sở công nghệ Backend: Trình bày chi tiết về cấu trúc framework Laravel, bộ công cụ định tuyến, Eloquent ORM, bộ xử lý hàng đợi, hệ thống quản lý quyền truy cập và kiểm thử.
- Cơ sở công nghệ Frontend: Phân tích các ưu điểm của ReactJS như cấu trúc Component độc lập, kỹ thuật DOM ảo (Virtual DOM) giúp tối ưu hiệu năng và khả năng tái sử dụng mã nguồn.
- Hệ quản trị cơ sở dữ liệu: Lựa chọn MySQL làm kho lưu trữ quan hệ có cấu trúc cho toàn bộ hệ thống.
Chương 2: Mô hình hóa yêu cầu
Chương này đóng vai trò cốt lõi trong việc chuẩn hóa các yêu cầu nghiệp vụ thành tài liệu đặc tả kỹ thuật phần mềm:
- Phân rã 51 ca sử dụng (Use Case) cụ thể của hệ thống, bao gồm các nhóm chức năng chính:
- Nhóm tài khoản và bảo mật: Đăng ký tài khoản kèm gửi liên kết xác thực email trong vòng 1 giờ, đăng nhập hệ thống, đăng nhập bằng tài khoản Google, đổi mật khẩu, quên mật khẩu thông qua mã xác nhận qua email, đăng xuất.
- Nhóm quản lý thông tin cá nhân: Quản lý hồ sơ người dùng, xem hồ sơ người dùng khác, hiển thị danh sách người dùng uy tín được sắp xếp theo điểm đánh giá.
- Nhóm sản phẩm và thương mại: Tìm kiếm sản phẩm theo danh mục (Sách, Tài liệu, Linh kiện), lọc sản phẩm theo phương thức giao dịch ("Tự do" hoặc "Qua website"), xem chi tiết sản phẩm, đăng bán sản phẩm, cập nhật và xóa sản phẩm, quản lý danh sách yêu thích, đánh giá và phản hồi bình luận sản phẩm.
- Nhóm giao dịch tài chính: Nạp tiền vào ví ảo, thanh toán đơn hàng, xem lịch sử đơn hàng, cập nhật trạng thái đơn hàng, gửi yêu cầu hoàn tiền, rút tiền, hệ thống cộng tiền cho người bán.
- Nhóm diễn đàn và tương tác cộng đồng: Đăng bài viết thảo luận, xem danh sách và chi tiết bài đăng, tìm kiếm bài đăng, gợi ý bài viết liên quan, trả lời bài viết, tương tác (thích/phản hồi) bài viết và câu trả lời, nhận thông báo thời gian thực, quản lý bài đăng cá nhân.
- Nhóm quản trị hệ thống: Cập nhật trạng thái sản phẩm, kiểm duyệt bài viết diễn đàn, quản lý tài khoản người dùng, xử lý đơn tố cáo/báo cáo vi phạm, xử lý hoàn tiền, xem biểu đồ thống kê hệ thống (thống kê bài đăng, sản phẩm, sự kiện) và cấu hình mô-đun trợ lý ảo AI.
- Xây dựng lược đồ cơ sở dữ liệu quan hệ (ERD), lược đồ phân rã chức năng tổng quan, lược đồ chức năng dành riêng cho người dùng và lược đồ chức năng quản lý.
- Thiết lập các bảng đặc tả Use Case chi tiết gồm tiền điều kiện (Pre-Conditions), hậu điều kiện (Post-Conditions), luồng sự kiện chính (Basic Flow) và các luồng ngoại lệ (Exception Flow).
Chương 3: Thiết kế hệ thống
Chương 3 trình bày các mô hình thiết kế động và tĩnh của hệ thống StuGear dựa trên các Use Case đã đặc tả:
- Lược đồ lớp (Class Diagram): Định nghĩa cấu trúc các thực thể, mối quan hệ và các phương thức xử lý nghiệp vụ của hệ thống.
- Hệ thống lược đồ tuần tự (Sequence Diagram): Hiện thực hóa 55 sơ đồ tuần tự mô tả chi tiết dòng thông điệp trao đổi giữa Actor, Giao diện (Boundary/View), Bộ điều khiển (Controller), Dịch vụ (Service) và Cơ sở dữ liệu (Database) cho từng thao tác cụ thể (đăng ký, nạp tiền, rút tiền, đặt hàng, xử lý khiếu nại, trợ lý ảo...).
- Hệ thống lược đồ hoạt động (Activity Diagram): Xây dựng 55 sơ đồ luồng hoạt động trực quan hóa các nhánh rẽ điều kiện, xử lý lỗi và các trạng thái kết thúc của từng chức năng.
Chương 4: Giao diện chương trình
Chương này minh họa toàn bộ các màn hình chức năng đã được hiện thực hóa và đóng gói triển khai:
- Phân hệ người dùng (22 giao diện): Trang đăng nhập, đăng ký, tìm tài khoản, cập nhật mật khẩu, trang chủ, trang tìm kiếm và lọc dữ liệu, trang đăng sản phẩm, trang chi tiết sản phẩm kèm khối phản hồi và đánh giá sao, trang quản lý sản phẩm cá nhân, trang sản phẩm yêu thích, trang thông tin cá nhân, trang ví tiền điện tử, trang lịch sử mua hàng, trang thanh toán, trang chi tiết đơn hàng, trang diễn đàn sinh viên, trang đăng bài viết, trang chi tiết bài đăng và phản hồi, mục bài đăng liên quan, trang quản lý bài viết của tôi, trang thông báo.
- Phân hệ quản trị viên (12 giao diện): Trang đăng nhập quản lý, bảng điều khiển thông tin cơ bản, màn hình thống kê bài đăng và sản phẩm, màn hình thống kê sự kiện theo biểu đồ trực quan, trang quản lý người dùng, trang quản lý danh mục sản phẩm, trang quản lý sản phẩm, trang quản lý đơn hàng, trang kiểm duyệt bài đăng diễn đàn, trang xử lý yêu cầu rút tiền của người bán, trang quản lý trợ lý ảo AI, trang xử lý đơn tố cáo vi phạm.
Kết quả và đóng góp
- Kết quả đạt được:
- Xây dựng hoàn chỉnh nền tảng web StuGear phục vụ việc trao đổi và kinh doanh tài liệu, giáo trình, linh kiện chuyên ngành dành cho sinh viên.
- Tích hợp thành công hệ thống ví tiền ảo nội bộ hỗ trợ cả hai phương thức giao dịch: giao dịch trực tiếp tự do và giao dịch bảo đảm qua website.
- Xây dựng diễn đàn học tập sinh viên tích hợp mô-đun trợ lý ảo (AI) tự động phản hồi các câu hỏi học thuật khi chưa có người giải đáp.
- Thiết kế và hoàn thiện hệ thống quản trị toàn diện, hỗ trợ biểu đồ thống kê động phục vụ công tác theo dõi vận hành và kiểm duyệt nội dung.
- Đóng góp của đề tài:
- Giải quyết bài toán lãng phí giáo trình, linh kiện học tập tồn đọng sau các kỳ học tại các trường đại học thông qua mô hình chia sẻ tài nguyên số hóa.
- Cung cấp tài liệu phân tích thiết kế hệ thống chi tiết (51 use case, 55 sơ đồ tuần tự, 55 sơ đồ hoạt động) làm tài liệu tham khảo cho quy trình phát triển ứng dụng Fullstack bằng Laravel và ReactJS.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên nội dung đánh giá của tác giả trong đồ án:
- Hạn chế tồn tại:
- Hệ thống vẫn còn một số điểm cần tối ưu hóa về mặt trải nghiệm người dùng (UX) trên các thiết bị khác nhau.
- Cần nâng cao quy trình kiểm thử tự động toàn diện và kiểm thử chịu tải để đáp ứng quy mô mở rộng đồng thời lớn hơn trong thực tế.
- Hướng phát triển:
- Nâng cấp và cải tiến thuật toán phản hồi của mô-đun trợ lý ảo AI trên diễn đàn học tập để tăng độ chính xác của tri thức học thuật.
- Tích hợp thêm các cổng thanh toán điện tử phổ biến và tự động hóa quy trình đối soát giao dịch tài chính.
- Mở rộng quy mô triển khai kết nối liên trường đại học, xây dựng mạng lưới trao đổi tài nguyên sinh viên rộng khắp.
Giá trị tham khảo
Đồ án tốt nghiệp là nguồn tài liệu hữu ích đối với:
- Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo thực tế về quy trình thực hiện một đồ án tốt nghiệp ứng dụng web Fullstack hoàn chỉnh, từ khâu khảo sát, mô hình hóa yêu cầu phần mềm bằng chuẩn UML đến lập trình và triển khai.
- Người phát triển ứng dụng web trên nền tảng Laravel và ReactJS: Cung cấp phương thức phân tách kiến trúc giữa Laravel API và ReactJS Single Page Application, cách tổ chức cơ chế xác thực người dùng bằng JWT và Google OAuth, cũng như cấu trúc quản lý trạng thái giao diện.
- Nhóm nghiên cứu xây dựng các sàn trao đổi học thuật nội bộ: Cung cấp mô hình nghiệp vụ kết hợp giữa thương mại điện tử chuyên biệt (sách, linh kiện) và mạng xã hội học tập tích hợp công cụ AI hỗ trợ.
Câu hỏi thường gặp
1. Hệ thống StuGear sử dụng kiến trúc và công nghệ nền tảng nào?
Hệ thống sử dụng PHP và framework Laravel theo mô hình MVC để xây dựng Backend và API; thư viện ReactJS (JavaScript) để xây dựng giao diện người dùng (Frontend); hệ quản trị MySQL để lưu trữ cơ sở dữ liệu quan hệ; kết hợp Docker, Nginx và Cloud VPS để triển khai hạ tầng.
2. Phân hệ người dùng của StuGear phân loại sản phẩm trao đổi theo các danh mục nào?
Hệ thống tổ chức sản phẩm theo 3 danh mục chính gồm: Sách, Tài liệu và Linh kiện học tập. Người dùng có thể tùy chọn lọc sản phẩm theo phương thức giao dịch ("Tự do", "Qua website", hoặc "Tất cả") và sắp xếp theo ngày đăng hoặc giá bán.
3. Cơ chế xác thực và bảo mật tài khoản người dùng được hiện thực ra sao?
Hệ thống áp dụng chuẩn JSON Web Token (JWT) cho các phiên làm việc với API, hỗ trợ đăng nhập qua Google, mã hóa dữ liệu cá nhân, áp dụng cơ chế xác thực email qua mã OTP/link kích hoạt với thời hạn hiệu lực trong 1 giờ khi đăng ký hoặc đổi mật khẩu.
4. Mô-đun trợ lý ảo đóng vai trò gì trong hệ thống StuGear?
Trợ lý ảo được tích hợp vào phân hệ diễn đàn sinh viên nhằm đóng vai trò trả lời tự động các bài đăng, chủ đề thảo luận học thuật khi chưa có sinh viên khác phản hồi, giúp duy trì tương tác và hỗ trợ giải đáp kịp thời cho người học.
5. Các công cụ thiết kế phần mềm nào được tác giả sử dụng trong giai đoạn mô hình hóa?
Tác giả đã xây dựng lược đồ cơ sở dữ liệu quan hệ (ERD), lược đồ lớp (Class Diagram), 3 lược đồ chức năng tổng quan/người dùng/quản lý, cùng 55 lược đồ tuần tự (Sequence Diagram) và 55 lược đồ hoạt động (Activity Diagram) tương ứng với từng Use Case của hệ thống.
Kết luận
Đồ án tốt nghiệp "Xây dựng trang web trao đổi tài liệu dành cho sinh viên" của nhóm sinh viên Nguyễn Đức Khải và Lê Nguyễn Tuấn Kiệt đã hoàn thành trọn vẹn mục tiêu nghiên cứu và phát triển nền tảng StuGear. Ứng dụng đã giải quyết bài toán lãng phí tài nguyên học tập thông qua việc kết nối cung - cầu giáo trình, linh kiện và chia sẻ kinh nghiệm học thuật giữa các thế hệ sinh viên. Với kiến trúc phân tầng kết hợp giữa Laravel, ReactJS, cơ sở dữ liệu MySQL và hạ tầng Docker/VPS, công trình thể hiện đầy đủ quy trình kỹ thuật phần mềm từ phân tích yêu cầu, thiết kế UML chi tiết đến triển khai giao diện thực tế.