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

Ngành dịch vụ ẩm thực và đồ uống (F&B) tại Việt Nam đang ghi nhận tốc độ tăng trưởng nhanh chóng, trong đó thị trường trà sữa là một trong những phân khúc thu hút lượng người tiêu dùng đông đảo ở nhiều lứa tuổi. Song hành cùng sự bùng nổ của mạng Internet và chuyển đổi số, thương mại điện tử đã trở thành phương thức kinh doanh thiết yếu. Việc vận hành chuỗi cửa hàng theo phương thức truyền thống bộc lộ nhiều hạn chế về chi phí quảng cáo, khả năng tiếp cận khách hàng, cũng như công tác quản trị dữ liệu món ăn, nguyên liệu và chi phí.

Trước yêu cầu tối ưu hóa vận hành cho đơn vị kinh doanh và nâng cao trải nghiệm mua sắm trực tuyến cho người tiêu dùng, đề tài "Xây dựng website và ứng dụng chuỗi trà sữa Gogi" được thực hiện bởi nhóm tác giả Nguyễn Huỳnh Thanh Hải và Lê Thị Thanh Nhi, dưới sự hướng dẫn của ThS. Nguyễn Hữu Trung tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

Mục tiêu của đề tài được xác định cụ thể trong văn bản bao gồm:

  1. Xây dựng website cho quản trị viên nhằm thực hiện công tác quản trị cơ sở dữ liệu và quản lý toàn diện hệ thống chuỗi cửa hàng.
  2. Xây dựng hệ thống website và ứng dụng di động (mobile app) dành cho khách hàng phục vụ nhu cầu tra cứu, đặt hàng và thanh toán trực tuyến.
  3. Vận dụng các công nghệ mới và ngôn ngữ lập trình hiện đại vào quy trình phân tích, thiết kế và phát triển phần mềm.

Phạm vi và đối tượng nghiên cứu của khóa luận:

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ bán hàng, quản lý đơn hàng, quản trị sản phẩm, phân loại, cửa hàng, nhân viên, chương trình khuyến mãi và báo cáo thống kê trong chuỗi kinh doanh trà sữa.
  • Phạm vi không gian: Triển khai mô hình chuỗi cửa hàng trà sữa Gogi trên hai nền tảng chính: Web Application (dành cho Quản trị viên, Nhân viên và Khách hàng) và Mobile Application (dành cho Khách hàng).
  • Phạm vi thời gian: Quá trình nghiên cứu và thực hiện đồ án diễn ra từ ngày 29/08/2022 đến ngày 30/06/2023 (thời gian làm khóa luận chính thức từ 06/02/2023 đến 30/06/2023, bảo vệ vào tháng 07/2023).

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

Khóa luận kết hợp nghiên cứu lý thuyết nền tảng về công nghệ phần mềm với phương pháp phân tích, thiết kế hệ thống hướng đối tượng:

  • Khung công nghệ và nền tảng lý thuyết:
    • Java Spring Boot: Module phát triển ứng dụng nhanh (RAD) thuộc Spring Framework, hỗ trợ cấu hình tự động, tạo ứng dụng độc lập có khả năng thực thi trực tiếp thông qua tệp JAR (nhúng sẵn máy chủ server) mà không cần cấu hình XML phức tạp hay triển khai qua tệp WAR.
    • Spring Security & Token: Cơ chế bảo mật và phân quyền người dùng trong hệ thống dựa trên token xác thực.
    • Java Persistence API (JPA): Tiêu chuẩn quản lý ánh xạ đối tượng - quan hệ (ORM) phục vụ giao tiếp và thao tác với cơ sở dữ liệu.
    • ReactJS: Thư viện JavaScript mã nguồn mở do Meta duy trì, ứng dụng cơ chế Virtual DOM và cú pháp JSX để xây dựng giao diện Single-Page Application (SPA) cho người dùng và trang quản trị.
    • Flutter & Dart: Bộ công cụ phát triển phần mềm giao diện người dùng mã nguồn mở của Google. Sử dụng ngôn ngữ Dart hỗ trợ biên dịch JIT (Just-In-Time cho tính năng Hot Reload) và AOT (Ahead-Of-Time cho hiệu năng tiệm cận Native), cho phép xây dựng ứng dụng di động đa nền tảng (Android và iOS) từ một cơ sở mã nguồn (single codebase).
    • Hệ quản trị cơ sở dữ liệu và lưu trữ: MySQL (hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở), SQLite và Firebase Storage (dùng để lưu trữ tệp tin hình ảnh sản phẩm).
  • Phương pháp nghiên cứu và khảo sát thực tế:
    • Khảo sát hiện trạng: Phân tích trực tiếp website của chuỗi thương hiệu TocoToco nhằm đánh giá các chức năng thực tế (thực đơn, giỏ hàng, thông tin size, đường, đá, tính năng mua chung) và xác định các điểm hạn chế cần cải tiến (như thiếu bộ lọc cửa hàng theo địa chỉ).
    • Phương pháp mô hình hóa hệ thống: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng biểu đồ Use Case, biểu đồ tuần tự (Sequence Diagram), thiết kế cấu trúc dữ liệu quan hệ và mô hình luồng dữ liệu API RESTful.
    • Phương pháp kiểm thử: Thực hiện kiểm thử hộp đen (Black-box testing) đối với các chức năng nghiệp vụ của từng nhóm vai trò, kiểm tra tính hợp lệ dữ liệu đầu vào (form validation).
  • Nguồn dữ liệu: Dữ liệu mẫu về thực đơn trà sữa, phân loại món, danh mục topping, danh sách cửa hàng, thông tin khuyến mãi và các giao dịch đơn hàng do nhóm nghiên cứu tự thiết lập và lưu trữ trong hệ quản trị MySQL.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng kết hợp dịch vụ API RESTful, tách biệt độc lập giữa tầng nghiệp vụ máy chủ và tầng giao diện đa nền tảng:

[ Mobile App (Flutter) / Web Client (ReactJS) / Web Admin (ReactJS) ]
            [ Back-End: Java Spring Boot & Spring Security ]
   [ Database: MySQL / JPA ]             [ Firebase Storage & Mail Service ]
  • Kiến trúc phân tầng và luồng xử lý:
    • Tầng máy chủ (Back-End): Xây dựng bằng Java Spring Boot, đảm nhận xử lý logic nghiệp vụ, quản lý phiên làm việc bằng Spring Security, kết nối cơ sở dữ liệu thông qua Spring Data JPA và cung cấp hệ thống REST API đồng nhất cho cả nền tảng Web và Mobile.
    • Tầng giao diện (Front-End & App): Nền tảng web quản trị và web bán hàng sử dụng ReactJS; ứng dụng di động cho người dùng cuối phát triển bằng Flutter SDK kết nối trực tiếp với hệ thống API máy chủ.
    • Dịch vụ bổ trợ: Tích hợp Firebase Storage phục vụ lưu trữ và truy xuất hình ảnh sản phẩm; tích hợp dịch vụ gửi Email tự động hỗ trợ tính năng cấp lại mật khẩu và tiếp nhận phản hồi từ khách hàng.
  • Phân quyền người dùng (Role-Based Access Control): Hệ thống phân định rõ ba nhóm quyền hạn:
    1. Người dùng (User/Customer): Đăng ký, đăng nhập, tìm kiếm sản phẩm, chọn cấu hình đồ uống (topping, mức đường, mức đá), quản lý giỏ hàng, lưu sổ địa chỉ giao hàng, áp dụng mã giảm giá, đặt hàng, đánh giá sản phẩm và theo dõi lịch sử đơn hàng.
    2. Nhân viên (Employee): Tiếp nhận đơn hàng, xem chi tiết đơn hàng, xử lý trạng thái giao dịch và thực hiện hủy đơn khi có yêu cầu hợp lệ.
    3. Quản trị viên (Admin): Quản lý toàn diện dữ liệu sản phẩm, phân loại, danh mục topping, danh sách cửa hàng, thông tin tài khoản nhân viên, mã giảm giá và xem báo cáo thống kê doanh thu.
  • Thiết kế cơ sở dữ liệu: Cơ sở dữ liệu MySQL được thiết kế chuẩn hóa để lưu trữ các bảng thực thể: Tài khoản người dùng (User), Phân quyền (Role), Sản phẩm (Product), Phân loại (Category), Topping, Chi nhánh cửa hàng (Store), Đơn hàng (Order), Chi tiết đơn hàng (OrderDetail), Sổ địa chỉ (Address), Đánh giá (Review) và Mã khuyến mãi (Voucher).

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

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

Chương này trình bày chi tiết về các nền tảng công nghệ được lựa chọn trong dự án:

  • Java Spring Boot: Làm rõ khái niệm RAD, khả năng tạo ứng dụng độc lập qua file JAR nhúng sẵn server, loại bỏ cấu hình XML, nâng cao năng suất lập trình và tối ưu hóa quy trình triển khai REST API.
  • ReactJS: Phân tích cơ chế Virtual DOM giúp giảm thiểu chi phí tái tạo DOM thực tế, ứng dụng cú pháp JSX kết hợp linh hoạt giữa HTML và JavaScript, tính module hóa theo component và khả năng mở rộng thư viện UI.
  • Flutter & Dart: Trình bày kiến trúc bộ SDK nguồn mở của Google, phân tích ưu thế của tính năng Hot Reload trên ngôn ngữ Dart đối với tốc độ lập trình, hiệu năng hiển thị tiệm cận Native thông qua cơ chế AOT, cùng sự đồng nhất về mặt giao diện trên các phiên bản hệ điều hành Android và iOS. Đồng thời, văn bản chỉ rõ các hạn chế kỹ thuật của Flutter như dung lượng file ứng dụng còn lớn (so sánh: Flutter 4.7MB so với Kotlin 550KB và Native Java 539KB) và hệ sinh thái thư viện bổ trợ chưa phong phú bằng native SDK.
  • MySQL: Nêu rõ đặc tính quản trị cơ sở dữ liệu quan hệ tốc độ cao, khả năng bảo mật, hỗ trợ đa hệ điều hành và cơ chế sao lưu, khôi phục transaction; chỉ ra nhược điểm suy giảm tốc độ truy xuất khi dung lượng bản ghi tăng cao, đòi hỏi các giải pháp tạo cache hoặc phân tải cơ sở dữ liệu.

Chương 2. Khảo sát, phân tích, thiết kế

Tập trung vào phân tích hiện trạng thị trường F&B và đánh giá đối thủ cạnh tranh:

  • Tiến hành khảo sát thực tế hệ thống website TocoToco, chỉ ra các ưu điểm (cung cấp thông tin cửa hàng, thực đơn, phân loại size, đường, đá, tính năng mua chung) và hạn chế thực tế (chưa có bộ lọc danh sách cửa hàng theo khu vực/địa chỉ).
  • Phân tích các yêu cầu chức năng nghiệp vụ của hệ thống Gogi, bao gồm: lưu trữ dữ liệu (cửa hàng, khách hàng, nhân viên, sản phẩm, topping, khuyến mãi, đơn hàng), tra cứu thông tin và thống kê doanh thu theo từng chi nhánh hoặc toàn bộ hệ thống theo mốc thời gian (ngày, tháng, quý, năm).
  • Thiết lập danh mục yêu cầu phi chức năng nhằm đảm bảo độ tin cậy và hiệu năng:
STT Nội dung yêu cầu phi chức năng Tiêu chuẩn Mô tả chi tiết trong văn bản
1 Tốc độ xử lý đặt hàng Hiệu quả Xử lý nhanh, cho phép nhiều tài khoản thực hiện đặt hàng đồng thời
2 Tốc độ tìm kiếm Hiệu quả Thời gian trả về kết quả tìm kiếm tối đa trong vòng 3 giây
3 Tối ưu lưu trữ và an toàn dữ liệu Hiệu quả Tiết kiệm không gian lưu trữ so với quản lý thủ công; dữ liệu sao lưu có thể phục hồi dễ dàng
4 Quản lý và kiểm soát Tiện dụng Quản trị viên theo dõi, thống kê đơn hàng trên toàn hệ thống nhanh chóng
5 Khả năng tiến hóa Tiến hóa Có khả năng mở rộng, bổ sung tính năng theo nhu cầu doanh nghiệp
6 Giao diện người dùng Tiện dụng Thiết kế đơn giản, thân thiện, tiếp cận được khách hàng ở nhiều độ tuổi
7 Thao tác sử dụng Tiện dụng Quy trình nhập, xuất, chỉnh sửa dữ liệu gần gũi, dễ thao tác

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

Chương 3 xây dựng hệ thống biểu đồ Use Case tổng thể và đặc tả chi tiết từng Use Case cho hệ thống:

  • Các Use Case quản trị (Admin): Quản lý sản phẩm (thêm, sửa, ẩn sản phẩm và lưu ảnh lên Firebase Storage), Quản lý phân loại (thêm, sửa, ẩn danh mục), Quản lý nhân viên (thêm tài khoản Employee, sửa thông tin, xóa tài khoản), Quản lý cửa hàng (thêm, sửa, xóa chi nhánh), Quản lý mã khuyến mãi và Quản lý topping.
  • Các Use Case người dùng (User): Đăng ký tài khoản (kiểm tra trùng lặp số điện thoại, kiểm tra khớp mật khẩu), Đăng nhập (xác thực token), Đăng xuất, Quên/đặt lại mật khẩu (gửi link xác nhận qua email), Gửi phản hồi liên hệ, Tìm kiếm sản phẩm, Xem chi tiết sản phẩm, Thêm sản phẩm vào giỏ hàng, Thêm và quản lý sổ địa chỉ giao hàng, Đặt hàng và Đánh giá sản phẩm đã mua.
  • Các Use Case nhân viên (Employee): Xem danh sách đơn hàng, Xem chi tiết đơn hàng, Hoàn tất giao hàng và Hủy đơn hàng.

Chương 4. Thiết kế phần mềm

Trình bày các bản vẽ kỹ thuật chi tiết của hệ thống:

  • Xây dựng hệ thống biểu đồ tuần tự (Sequence Diagram) mô tả luồng tương tác giữa Actor, Giao diện (Boundary/UI), Bộ điều khiển (Controller/Service) và Cơ sở dữ liệu (Database) cho các nghiệp vụ: Đăng ký tài khoản, Đăng nhập, Thêm thông tin cá nhân, Thêm sản phẩm vào giỏ hàng, Đặt hàng, Thêm mới sản phẩm, Tìm kiếm sản phẩm, Xác nhận đơn hàng và Thống kê dữ liệu.
  • Thiết kế lược đồ cơ sở dữ liệu quan hệ (Database Schema) thể hiện rõ cấu trúc các bảng, khóa chính, khóa ngoại và mối liên kết giữa các bảng thực thể dữ liệu.

Chương 5. Thiết kế giao diện và xử lý

Mô tả chi tiết kiến trúc giao diện người dùng và bảng đặc tả hành vi của từng màn hình:

  • Giao diện Web: Thiết kế màn hình Trang chủ, Đăng ký, Đăng nhập, Menu sản phẩm, Tìm kiếm, Chi tiết món uống, Giỏ hàng, Áp dụng mã giảm giá, Thanh toán, Sổ địa chỉ giao hàng, Lịch sử đơn hàng, Màn hình quản lý phân loại/sản phẩm/nhân viên/cửa hàng/topping và Màn hình thống kê doanh thu.
  • Giao diện Mobile App: Thiết kế màn hình khởi động (Flash Screen), Quên/Đặt lại mật khẩu, Menu, Chi tiết sản phẩm, Giỏ hàng, Đặt hàng, Chi tiết đơn hàng, Đánh giá đơn hàng, Trang cá nhân và Sổ địa chỉ.

Chương 6. Cài đặt và kiểm thử ứng dụng

Trình bày kết quả cấu hình môi trường mã nguồn và kiểm thử hệ thống:

  • Cấu trúc mã nguồn: Minh họa cấu trúc thư mục của Project Back-End (Spring Boot), Project Front-End (ReactJS) và Project Mobile App (Flutter với file cấu hình dependencies pubspec.yaml).
  • Kết quả biên dịch: Trình bày kết quả compile và chạy thực tế của toàn bộ hệ thống.
  • Kiểm thử chức năng: Thiết lập và thực thi các ca kiểm thử chức năng (Test Cases) phân định theo ba nhóm: Kiểm thử chức năng của Người dùng (User), Kiểm thử chức năng của Nhân viên (Employee) và Kiểm thử chức năng của Quản trị viên (Admin).

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

  • Kết quả đạt được:
    • Xây dựng hoàn chỉnh hệ sinh thái phần mềm phục vụ chuỗi trà sữa Gogi bao gồm: ứng dụng di động cho khách hàng, website bán hàng và cổng thông tin quản trị tập trung.
    • Ứng dụng thành công kiến trúc RESTful API trên nền tảng Java Spring Boot kết hợp Spring Data JPA để xử lý dữ liệu tập trung, giao tiếp hiệu quả với giao diện ReactJS và Flutter.
    • Tích hợp thành công dịch vụ lưu trữ đám mây Firebase Storage để quản lý tài nguyên hình ảnh và hệ thống thư điện tử tự động phục vụ khôi phục mật khẩu.
    • Thực hiện đầy đủ các kịch bản kiểm thử chức năng và kiểm tra ràng buộc dữ liệu đầu vào trên toàn bộ các biểu mẫu (form validation).
  • Giải pháp và đề xuất của tác giả:
    • Xây dựng cơ chế linh hoạt cho phép người dùng tùy chọn chi tiết món uống theo từng kích cỡ (size), định lượng đường, đá và lựa chọn nhiều loại topping đi kèm.
    • Bổ sung tính năng quản lý sổ địa chỉ giao hàng với nhiều địa chỉ khác nhau và hỗ trợ thiết lập địa chỉ mặc định, giải quyết sự bất tiện trong quy trình giao hàng.
    • Thiết lập tính năng đánh giá sản phẩm sau mua và hệ thống tiếp nhận ý kiến phản hồi trực tiếp qua email quản lý.
  • Đóng góp so với các khảo sát thực tế:
    • Khắc phục hạn chế của các website cùng ngành (cụ thể là hệ thống TocoToco được khảo sát) bằng việc hoàn thiện chức năng tìm kiếm, tối ưu danh sách cửa hàng và cung cấp khả năng cá nhân hóa đơn hàng trực tuyến.

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

Dựa trên các phân tích kỹ thuật và nội dung tự nhận xét trong văn bản, khóa luận tồn tại một số hạn chế và định hướng hoàn thiện như sau:

  • Hạn chế:
    • Dung lượng bản dựng của ứng dụng di động Flutter còn tương đối lớn so với các ứng dụng phát triển thuần native (Native Java/Kotlin).
    • Khả năng mở rộng của cơ sở dữ liệu MySQL khi khối lượng bản ghi tăng trưởng đột biến trong tương lai sẽ gặp khó khăn về hiệu năng truy xuất nếu chưa áp dụng kỹ thuật phân tải hay bộ nhớ đệm (cache).
  • Hướng phát triển:
    • Tiếp tục tối ưu hóa hiệu năng ứng dụng, nghiên cứu áp dụng các giải pháp cache dữ liệu để gia tăng tốc độ phản hồi của cơ sở dữ liệu khi hệ thống mở rộng.
    • Nâng cấp và hoàn thiện cơ chế gửi thông báo thời gian thực (Push Notification) khi có đơn đặt hàng mới phát sinh.
    • Tích hợp sâu các cổng thanh toán ví điện tử trực tuyến và phát triển thêm các tính năng nghiệp vụ theo yêu cầu quản lý thực tế của doanh nghiệp.

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ệ thông tin và Công nghệ phần mềm đang thực hiện các đồ án tốt nghiệp hoặc tiểu luận chuyên ngành về hệ thống thương mại điện tử đa nền tảng.

Tài liệu có giá trị tham khảo cụ thể ở các nội dung:

  • Quy trình mô hình hóa hệ thống bằng UML (bao gồm danh mục Use Case, bảng đặc tả kịch bản Use Case và hệ thống Sequence Diagram hoàn chỉnh cho các luồng nghiệp vụ mua sắm).
  • Phương pháp xây dựng kiến trúc phân tầng kết nối giữa Back-End Spring Boot và hai loại Front-End riêng biệt (ReactJS trên Web và Flutter trên Di động).
  • Mẫu lập kế hoạch tiến độ thực hiện đề tài từ giai đoạn khảo sát, thiết kế cơ sở dữ liệu, xây dựng API đến kiểm thử và đóng gói sản phẩm.

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

1. Hệ thống chuỗi trà sữa Gogi sử dụng những công nghệ cốt lõi nào cho các phân hệ?
Hệ thống sử dụng Java Spring Boot kết hợp Spring Security và JPA cho tầng máy chủ (Back-End API); ReactJS cho giao diện trang web; Flutter cùng ngôn ngữ Dart cho ứng dụng di động; hệ quản trị MySQL kết hợp SQLite và Firebase Storage cho cơ sở dữ liệu và lưu trữ hình ảnh.

2. Quá trình khảo sát website TocoToco đã chỉ ra hạn chế gì mà đề tài hướng tới khắc phục?
Qua khảo sát thực tế, văn bản chỉ ra website TocoToco chưa cung cấp bộ lọc danh sách cửa hàng theo địa chỉ. Đề tài Gogi đã bổ sung việc quản lý danh sách cửa hàng, tìm kiếm và tối ưu hóa chức năng quản lý địa chỉ nhận hàng của người dùng.

3. Tiêu chuẩn phi chức năng về tốc độ tìm kiếm và xử lý đơn hàng được văn bản quy định như thế nào?
Hệ thống đặt ra tiêu chuẩn: tốc độ xử lý đặt hàng phải nhanh chóng, cho phép nhiều tài khoản đặt hàng cùng lúc; tốc độ tìm kiếm sản phẩm phải chính xác và trả về kết quả trong thời gian tối đa không quá 3 giây.

4. Chức năng phân quyền trong hệ thống được chia thành những nhóm người dùng nào?
Hệ thống phân chia 3 nhóm quyền rõ rệt: Người dùng (User) với các chức năng xem, tìm kiếm, đặt hàng, quản lý sổ địa chỉ, đánh giá; Nhân viên (Employee) với chức năng quản lý, tiếp nhận và xử lý đơn hàng; Quản trị viên (Admin) với quyền quản lý sản phẩm, phân loại, cửa hàng, nhân viên, mã giảm giá, topping và thống kê doanh thu.

5. Nhược điểm kỹ thuật của Flutter và MySQL được nhóm tác giả nêu ra trong báo cáo là gì?
Văn bản nêu rõ Flutter có kích thước file ứng dụng lớn (bản dựng mẫu khoảng 4.7MB so với khoảng hơn 500KB của Android native) và hệ sinh thái thư viện còn hạn chế hơn native SDK; trong khi đó MySQL bị hạn chế về tốc độ truy xuất dữ liệu khi dung lượng bản ghi lớn dần, đòi hỏi các giải pháp phân tải hoặc tạo cache.


Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Huỳnh Thanh Hải và Lê Thị Thanh Nhi đã hoàn thành toàn diện mục tiêu xây dựng hệ thống phần mềm thương mại điện tử cho chuỗi trà sữa Gogi trên cả hai nền tảng Website và Mobile App. Đề tài áp dụng đúng quy trình công nghệ phần mềm từ khảo sát hiện trạng, phân tích yêu cầu, mô hình hóa UML, thiết kế cơ sở dữ liệu đến lập trình và kiểm thử chức năng. Sản phẩm đã chứng minh tính khả thi của việc tích hợp các công nghệ hiện đại gồm Spring Boot, ReactJS, Flutter và MySQL vào việc giải quyết bài toán số hóa quy trình kinh doanh ngành F&B.