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

Trong bối cảnh công nghệ số 4.0, sự tăng trưởng mạnh mẽ của thương mại điện tử đã thúc đẩy nhu cầu giao nhận hàng hóa nội thành gia tăng nhanh chóng. Người tiêu dùng ngày càng đòi hỏi các dịch vụ vận chuyển phải đáp ứng được tiêu chí nhanh chóng, an toàn, minh bạch và tiện lợi. Việc xây dựng ứng dụng giao hàng chuyên biệt không chỉ hỗ trợ tối ưu hóa quy trình vận chuyển và rút ngắn thời gian giao nhận, mà còn giải quyết nhu cầu theo dõi lộ trình đơn hàng trực tuyến và hỗ trợ tương tác trực tiếp giữa khách hàng và tài xế.

Đề tài "Xây dựng ứng dụng giao hàng Smart Express" do sinh viên Lê Đức Long và Nguyễn Huỳnh Khoa thực hiện (Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh, chuyên ngành Công nghệ phần mềm, năm 2024) tập trung giải quyết các mục tiêu và nhiệm vụ nghiên cứu cụ thể sau:

  1. Phát triển một hệ sinh thái ứng dụng giao hàng thông minh nhằm kết nối trực tiếp, hiệu quả giữa người gửi và người nhận hàng trong phạm vi nội thành.
  2. Thiết lập cơ chế vận hành đảm bảo tính an toàn, minh bạch về thông tin chuyến đi và giúp người gửi tiết kiệm thời gian vận chuyển.
  3. Tạo thêm cơ hội việc làm và nâng cao thu nhập cho đội ngũ tài xế với mức chi phí dịch vụ hợp lý cho người sử dụng.
  4. Đóng góp vào việc thúc đẩy phát triển kinh tế địa phương và nâng cao chất lượng tiện ích đô thị.

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

  • Đối tượng nghiên cứu: Nhu cầu giao nhận hàng hóa thực tế tại các đô thị lớn; mô hình ứng dụng giao hàng hiện đại; các công nghệ phần mềm bao gồm Spring Framework, Spring Security, Spring OAuth, RESTful API, ReactJS, Android Java Native, hệ quản trị cơ sở dữ liệu MySQL, và giải pháp truyền thông điệp RabbitMQ, WebSocket.
  • Phạm vi nghiên cứu: Tập trung xây dựng, thiết kế và cài đặt các chức năng vận hành cơ bản của hệ thống giao hàng nội thành, bao gồm ứng dụng di động cho khách hàng, ứng dụng di động cho tài xế và hệ thống web quản trị (CMS).

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

Đề tài áp dụng các lý thuyết kiến trúc phần mềm chuẩn hóa và các phương pháp kỹ nghệ phần mềm để hoàn thiện sản phẩm:

  • Kiến trúc hệ thống: Mô hình Client-Server kết hợp định hướng kiến trúc Microservices nhằm tăng tính linh hoạt, khả năng mở rộng, giảm thiểu sự phụ thuộc giữa các dịch vụ và tối ưu hóa khả năng chịu lỗi. Phía Máy chủ (Backend) đảm nhận xử lý logic nghiệp vụ, quản lý dữ liệu và cung cấp API/Socket. Phía Máy khách (Frontend & Mobile App) đảm nhận tương tác người dùng và hiển thị dữ liệu.
  • Mô hình giao diện di động: Áp dụng mẫu thiết kế MVVM (Model - View - ViewModel) trên nền tảng Android, tuân thủ chuẩn Architecture Components của Google (LiveData, ViewModel) nhằm phân tách độc lập giữa tầng giao diện và logic xử lý, giải quyết bài toán thay đổi vòng đời và xoay màn hình ứng dụng.
  • Phương pháp khảo sát hiện trạng: Nhóm tác giả tiến hành khảo sát và phân tích thực trạng giao diện, tính năng và cơ chế tính giá của hai ứng dụng giao hàng phổ biến trên thị trường là Grab và Ahamove để rút ra các yêu cầu giao diện phân cụm trực quan, thao tác dịch vụ rõ ràng và định giá minh bạch.
  • Phương pháp phân tích và thiết kế phần mềm: Mô hình hóa yêu cầu hệ thống bằng sơ đồ ca sử dụng (Use Case Diagram), đặc tả chi tiết Use Case, xây dựng sơ đồ tuần tự (Sequence Diagram), sơ đồ lớp (Class Diagram) và sơ đồ thực thể liên kết (ERD).
  • Công nghệ và nguồn dữ liệu:
    • Backend: Ngôn ngữ Java, Spring Boot, Spring Data JPA (tích hợp Hibernate quản lý giao dịch và thao tác CRUD), Spring Security và Spring OAuth (xác thực, phân quyền).
    • Truyền thông điệp & Thời gian thực: RabbitMQ (Message Broker chuẩn AMQP hỗ trợ xếp hàng tin nhắn) và giao thức WebSocket (truyền tải dữ liệu hai chiều liên tục qua kết nối TCP).
    • Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ MySQL.
    • Frontend Web Quản trị: Thư viện ReactJS, bộ thành phần giao diện Ant Design và React Bootstrap.
    • Mobile App: Android SDK, Android Java Native.

Thiết kế và triển khai

Hệ thống được thiết kế theo cấu trúc module hóa phân tầng, bao gồm các dịch vụ backend độc lập, hệ thống web quản lý và hai ứng dụng di động native:

Thành phần hệ thống Công nghệ / Nền tảng Vai trò và Chức năng chính
Backend Service Spring Boot, Spring Data JPA, Spring Security Xử lý logic nghiệp vụ quản lý tài khoản, đơn hàng, dịch vụ, khuyến mãi, ví điện tử và phân quyền qua RESTful API.
Backend Socket Spring Boot, WebSocket, RabbitMQ Tiếp nhận và điều phối tin nhắn tức thời, định vị lộ trình di chuyển và cập nhật trạng thái đơn hàng thời gian thực.
Cơ sở dữ liệu MySQL Lưu trữ dữ liệu quan hệ có cấu trúc gồm các bảng định danh, phân quyền, người dùng, cuốc xe, ví và cấu hình.
Web CMS (meta-cms, booking-cms) ReactJS, Ant Design, React Bootstrap Giao diện quản trị hệ thống, quản lý cấu hình, phân quyền vai trò, kiểm soát tài chính, tài xế, khách hàng và danh mục.
Customer App Android Java Native, MVVM, Android SDK Ứng dụng dành cho khách hàng: đăng ký, đặt đơn giao hàng, theo dõi lộ trình, nạp tiền ví, chat và đánh giá tài xế.
Driver App Android Java Native, MVVM, Android SDK Ứng dụng dành cho tài xế: nhận/từ chối cuốc, cập nhật trạng thái lấy/trả hàng qua hình ảnh, quản lý thu nhập và ví.

Cơ sở dữ liệu hệ thống được thiết kế chuẩn hóa, gồm các bảng thực thể tiêu biểu:

  • account: Lưu trữ thông tin tài khoản người dùng (id, kind, username, phone, email, password, full_name, attempt_code, reset_pwd_code, attempt_login, is_super_admin, group_id...).
  • group & permission & permission_group: Quản lý các nhóm quyền, tên quyền, hành động API (action) và phân quyền cho các nhóm quản trị.
  • service & category: Quản lý danh mục loại hình vận chuyển và thông tin dịch vụ giao hàng.
  • Các bảng chuyên biệt khác: customer, driver, position, driver_vehicle, driver_service, booking, booking_detail, room, chat_detail, rating, promotion, wallet, wallet_transaction, request_pay_out, notification, settings, news.

Quy trình triển khai và kiểm thử ứng dụng bao gồm các bước cài đặt công cụ môi trường, khởi tạo cơ sở dữ liệu MySQL, cấu hình RabbitMQ Management, thiết lập tham số kết nối trong file cấu hình của backend service và backend socket, cài đặt thư viện dependencies và biên dịch mã nguồn cho hai dự án web CMS (meta-cms và booking-cms). Kế hoạch kiểm thử được xây dựng với các tiêu chí, mục tiêu và quy trình kiểm thử chi tiết nhằm xác nhận tính chính xác của các luồng nghiệp vụ.

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

Phần Mở đầu

Trình bày tính cấp thiết của việc phát triển ứng dụng giao hàng trong thời đại số; xác định mục đích nghiên cứu kết nối người gửi và tài xế nội thành. Nội dung phần này phân tích kết quả khảo sát hiện trạng giao diện, tính năng của ứng dụng Grab và Ahamove, từ đó xác định 31 yêu cầu chức năng cho 4 nhóm tác nhân (Khách hàng, Tài xế, Quản trị viên, Super Admin) cùng 4 yêu cầu phi chức năng (tính thân thiện, tốc độ xử lý, tính bảo mật và khả năng mở rộng/bảo trì). Phần mở đầu cũng làm rõ đối tượng, phạm vi nghiên cứu và ý nghĩa thực tiễn của đề tài.

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

Trình bày tổng quan về kiến trúc Client-Server và mô hình Microservices. Phân tích chi tiết các công nghệ nền tảng được lựa chọn: ngôn ngữ Java, framework Spring Boot, Spring Data JPA, giải pháp bảo mật Spring Security, thư viện ReactJS kết hợp Ant Design và React Bootstrap trong xây dựng ứng dụng trang đơn (SPA). Đồng thời, chương này làm rõ cơ chế hoạt động của mô hình MVVM trên Android SDK, giao thức AMQP và Message Broker RabbitMQ trong trung chuyển thông điệp, hệ quản trị cơ sở dữ liệu quan hệ MySQL và giao thức truyền tải dữ liệu hai chiều WebSocket.

Chương 2: Mô hình hóa yêu cầu

Xây dựng lược đồ Use Case tổng thể hệ thống và cung cấp bảng đặc tả chi tiết cho 8 ca sử dụng trọng tâm:

  1. Đăng ký tài khoản (UC-2.1): Xác thực tính hợp lệ của số điện thoại, định dạng email và mật khẩu có độ dài tối thiểu 6 ký tự, sau đó chuyển hướng xác thực OTP.
  2. Đăng nhập (UC-2.2): Xác thực số điện thoại và mật khẩu của người dùng theo từng vai trò.
  3. Đặt lại mật khẩu (UC-2.3): Yêu cầu người dùng đã đăng nhập nhập mật khẩu cũ, mật khẩu mới (tối thiểu 6 ký tự) và xác nhận mật khẩu.
  4. Xem thông tin cá nhân (UC-2.4): Truy xuất và hiển thị dữ liệu tài khoản người dùng.
  5. Đặt chuyến (UC-2.5): Khách hàng nhập điểm giao/nhận, điền thông tin người gửi/nhận, chọn dịch vụ hiển thị và tạo đơn tìm tài xế.
  6. Hoàn thành chuyến (UC-2.6): Tài xế chọn chức năng trả hàng, chụp ảnh trực tiếp hoặc tải ảnh bằng chứng giao hàng từ thư viện để hoàn tất đơn hàng.
  7. Nạp tiền vào ví (UC-2.7): Người dùng nhập số tiền, chọn phương thức nạp và quét mã QR để hệ thống ghi nhận giao dịch nạp tiền.
  8. Tạo yêu cầu rút tiền (UC-2.8): Người dùng tạo yêu cầu chuyển tiền từ ví về tài khoản ngân hàng đã liên kết.

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

Hiện thực hóa các yêu cầu thông qua các sơ đồ kỹ thuật:

  • Thiết kế 10 sơ đồ tuần tự (Sequence Diagram) cho các chức năng then chốt: Đăng ký, Đăng nhập, Quên mật khẩu, Đặt đơn, Nhận chuyến, Lấy/Trả hàng, Hủy chuyến đã nhận, Gửi tin nhắn hình ảnh, Nạp tiền, Thêm quản trị viên.
  • Xây dựng sơ đồ lớp (Class Diagram) và sơ đồ thực thể liên kết (ERD) phân tách thành hai phân hệ: Phân hệ xác thực & phân quyền và Phân hệ nghiệp vụ hệ thống.
  • Thiết kế chi tiết cấu trúc dữ liệu cho các bảng (thuộc tính chung, account, group, permission, category, service...).
  • Thiết kế toàn diện hệ thống giao diện người dùng (UI) cho Khách hàng (trang chủ, truy cập vị trí, đặt chuyến, lịch sử, chi tiết chuyến), Tài xế (nhận chuyến, trạng thái hoạt động, thu nhập, nạp tiền), và Quản trị viên trên web CMS (quản lý vai trò, nhóm quyền, người dùng, nội dung, cấu hình).

Phần Cài đặt và kiểm thử

Mô tả quy trình cài đặt môi trường, công cụ phát triển, hướng dẫn cấu hình kết nối giữa các module phần mềm (backend service, backend socket, meta-cms, booking-cms) với hệ thống cơ sở dữ liệu MySQL và RabbitMQ. Xây dựng kế hoạch, xác định mục tiêu, tiêu chí và thực hiện quy trình kiểm thử nhằm rà soát và đánh giá các chức năng đã xây dựng.

Phần Kết luận

Tổng kết lại toàn bộ khối lượng công việc đã hoàn thành về mặt kỹ năng chuyên môn và kỹ năng mềm; đánh giá các ưu điểm và hạn chế của hệ thống; đồng thời vạch ra định hướng phát triển trong tương lai.

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

Hệ thống Smart Express đã hoàn thiện việc phân tích, thiết kế và cài đặt hệ thống chức năng toàn diện theo ma trận vai trò người dùng:

STT Nhóm chức năng Khách hàng Tài xế Admin Super Admin
1 - 6 Đăng ký, Đăng nhập, Quên mật khẩu, Đăng xuất, Xem thông tin, Đặt lại mật khẩu Có Có Có Có
7 - 12 Xem lịch sử chuyến, Lộ trình, Nhắn tin, Thông báo, Lịch sử giao dịch, Quản lý ví Có Có Có Có
13 - 16 Nhận chuyến, Từ chối chuyến, Hủy chuyến, Thống kê doanh thu - Có - -
17 - 19 Đặt chuyến xe, Đánh giá tài xế, Xem danh sách khuyến mãi Có - - -
20 - 21 Quản lý quyền, Quản lý vai trò - - - Có
22 - 31 Quản lý khách hàng, tài xế, chuyến xe, dịch vụ, tin tức, cài đặt, rút tiền, loại xe, tỉnh thành, tài chính, khuyến mãi - - Có Có

Các đóng góp chính được nhóm tác giả tự xác định bao gồm:

  • Xây dựng thành công ứng dụng giao hàng thông minh giải quyết nhu cầu kết nối giao nhận hàng hóa nội thành với giao diện thân thiện, trực quan.
  • Tích hợp các giải pháp công nghệ hiện đại (Spring Security, Spring OAuth, RabbitMQ, WebSocket) nhằm nâng cao độ an toàn, bảo mật dữ liệu và hỗ trợ cập nhật dữ liệu tức thời.
  • Thiết lập quy trình số hóa minh bạch cho việc theo dõi đơn hàng, quản lý dòng tiền qua ví điện tử, tạo cơ sở để tối ưu hóa chi phí vận hành khi áp dụng vào thực tiễn.

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

  • Hạn chế: Nhóm tác giả tự nhận định đề tài mới tập trung xây dựng, phát triển và xử lý các chức năng nền tảng cơ bản của ứng dụng giao hàng; một số chức năng nâng cao vẫn còn ở trạng thái dang dở do giới hạn về thời gian và kiến thức thực tế.
  • Hướng phát triển:
    • Tiếp thu các đóng góp chuyên môn từ giảng viên hướng dẫn và giảng viên phản biện để hoàn thiện các chức năng nâng cao còn chưa hoàn tất.
    • Tối ưu hóa hiệu năng và chi phí vận hành hệ thống trong môi trường thực tế.
    • Nâng cấp và hoàn thiện toàn diện hệ thống để tiến tới khả năng phát hành và ứng dụng chính thức vào đời sống.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo phù hợp cho:

  • Sinh viên chuyên ngành Công nghệ phần mềm, Công nghệ thông tin và Kỹ thuật phần mềm đang thực hiện đồ án tốt nghiệp hoặc các dự án xây dựng hệ thống phần mềm hướng dịch vụ.
  • Những người phát triển muốn tham khảo mô hình kết hợp giữa Spring Boot (REST API), RabbitMQ (Message Broker), WebSocket và Android Java Native theo mẫu kiến trúc MVVM.
  • Tài liệu cung cấp giá trị tham khảo cụ thể ở phần mô hình hóa yêu cầu (đặc tả 8 ca sử dụng, 10 sơ đồ tuần tự) và thiết kế hệ thống phân quyền đa cấp (account, group, permission, permission_group).

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

1. Hệ thống Smart Express phân quyền cho những nhóm tác nhân nào và bao gồm bao nhiêu chức năng?
Hệ thống xác định 4 nhóm tác nhân chính gồm: Khách hàng, Tài xế, Quản trị viên (Admin) và Quản trị viên cấp cao (Super Admin). Tổng cộng có 31 yêu cầu chức năng được thiết kế phân bổ chi tiết cho các vai trò này.

2. Quy trình xác thực hoàn thành chuyến xe của tài xế được thiết kế như thế nào?
Theo đặc tả Use Case UC-2.6, khi đơn hàng đang ở trạng thái đi giao, tài xế chọn "Trả hàng". Hệ thống yêu cầu cung cấp hình ảnh xác thực, tài xế tiến hành chụp ảnh trực tiếp đơn hàng hoặc chọn ảnh có sẵn từ thư viện thiết bị và gửi lên để hệ thống kiểm tra và chuyển trạng thái hoàn thành đơn hàng.

3. Các công nghệ nào được sử dụng để xây dựng hệ thống Backend và chức năng thời gian thực?
Backend sử dụng Java và framework Spring Boot, kết hợp Spring Data JPA để thao tác cơ sở dữ liệu MySQL, Spring Security và Spring OAuth để bảo mật. Các tính năng thời gian thực như tin nhắn, cập nhật lộ trình được xây dựng bằng cách kết hợp Message Broker RabbitMQ (giao thức AMQP) và giao thức WebSocket.

4. Cơ sở dữ liệu của hệ thống quản lý cơ chế phân quyền thông qua các bảng nào?
Cơ chế phân quyền được quản lý thông qua các bảng: account (chứa thông tin tài khoản và cờ is_super_admin, khóa ngoại group_id), group (chứa thông tin nhóm quyền), permission (chứa mã quyền, tên quyền và đường dẫn action) và bảng liên kết permission_group (chứa cặp khóa chính permission_id và group_id).

5. Ứng dụng di động của Smart Express được xây dựng trên nền tảng và kiến trúc nào?
Ứng dụng di động được xây dựng bằng ngôn ngữ Java Native trên nền tảng Android SDK, áp dụng mẫu thiết kế kiến trúc MVVM (Model - View - ViewModel) kết hợp các thành phần Architecture Components của Google như LiveData và ViewModel.

Kết luận

Khóa luận tốt nghiệp "Xây dựng ứng dụng giao hàng Smart Express" của sinh viên Lê Đức Long và Nguyễn Huỳnh Khoa đã hoàn thành việc nghiên cứu, phân tích yêu cầu, thiết kế kiến trúc và triển khai xây dựng hệ thống giao hàng nội thành hoàn chỉnh. Đề tài kết hợp đồng bộ giữa backend dịch vụ Spring Boot, truyền thông thời gian thực qua RabbitMQ và WebSocket, hệ thống quản trị ReactJS và ứng dụng di động Android native theo mô hình MVVM. Báo cáo cung cấp đầy đủ các đặc tả kỹ thuật, sơ đồ tuần tự và thiết kế cơ sở dữ liệu có giá trị tham khảo thiết thực cho việc phát triển các hệ thống phần mềm quản lý và điều phối vận chuyển.