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

1. Lý do chọn đề tài và bối cảnh thực tiễn

Theo nhóm tác giả, sự phát triển không ngừng của công nghệ thông tin và mạng Internet đã đưa hoạt động mua sắm, đặt hàng trực tuyến trở thành một phần thiết yếu trong đời sống hiện đại. Trong lĩnh vực ẩm thực, phương thức kinh doanh truyền thống đòi hỏi khách hàng phải đến trực tiếp quán ăn để trải nghiệm dịch vụ. Việc ứng dụng công nghệ hóa thông qua nền tảng website và ứng dụng trực tuyến cho phép khách hàng đặt món ăn yêu thích từ xa một cách linh hoạt, đồng thời giúp các quán ăn tiếp cận và mở rộng số lượng khách hàng tiềm năng, tối ưu hóa thời gian, chi phí và công sức quản lý.

Từ thực tiễn đó, nhóm sinh viên thuộc Khoa Công nghệ Thông tin, Học viện Công nghệ Bưu chính Viễn thông cơ sở TP. Hồ Chí Minh đã thực hiện đề tài "Xây dựng hệ thống đặt đồ ăn trực tuyến" trong khuôn khổ môn học Phát triển phần mềm hướng dịch vụ, dưới sự hướng dẫn của TS. Huỳnh Trung Trụ.

2. Mục tiêu và nhiệm vụ nghiên cứu

Mục tiêu cốt lõi của đề tài là xây dựng một hệ thống đặt đồ ăn trực tuyến hoàn chỉnh dựa trên kiến trúc hướng dịch vụ, phục vụ hai nhóm đối tượng chính là Quản trị viên (Admin) và Khách hàng (User). Các nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Đặc tả chi tiết các yêu cầu chức năng và phi chức năng của hệ thống đặt đồ ăn trực tuyến.
  2. Nghiên cứu cơ sở lý thuyết về kiến trúc microservices, cơ chế khám phá dịch vụ (Service Discovery), các nền tảng đóng gói (Docker, Kubernetes) và công nghệ phát triển ứng dụng (Java Spring Framework, Swift, SwiftUI, MySQL).
  3. Phân tích và thiết kế hệ thống thông qua các mô hình nghiệp vụ, biểu đồ phân cấp chức năng, biểu đồ ca sử dụng (Use Case), biểu đồ tuần tự (Sequence Diagram), biểu đồ hoạt động (Activity Diagram), biểu đồ trạng thái (State Diagram), biểu đồ lớp (Class Diagram) và lược đồ quan hệ thực thể (ERD).
  4. Thiết kế kiến trúc phân chia cơ sở dữ liệu riêng biệt cho từng microservice (User-service, Product-service, Favorite-service, Order-service, Notification-service).
  5. Xây dựng và đặc tả danh sách các API RESTful phục vụ giao tiếp giữa các thành phần.
  6. Hiện thực hóa giao diện ứng dụng quản trị trên Desktop (App Desktop Admin) và ứng dụng người dùng trên thiết bị di động (App Mobile User).

3. Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ đặt món ăn, quản lý thực đơn, quản lý đơn hàng, quản lý tài khoản người dùng, xử lý thanh toán và phân chia cơ sở dữ liệu trong hệ thống phần mềm hướng dịch vụ.
  • Phạm vi không gian: Đề tài được thực hiện tại Học viện Công nghệ Bưu chính Viễn thông cơ sở TP. Hồ Chí Minh (Khoa Công nghệ Thông tin, lớp D20CQCNPM01-N).
  • Phạm vi thời gian: Báo cáo được hoàn thành và nghiệm thu vào tháng 06 năm 2024.
  • Phạm vi kỹ thuật: Hệ thống bao gồm ba khối thành phần mã nguồn: khối xử lý backend theo kiến trúc microservices kết hợp Spring Framework và MySQL, khối giao diện Desktop dành cho Admin, và khối giao diện Mobile iOS xây dựng bằng Swift/SwiftUI.

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

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

Hệ thống được xây dựng dựa trên các nền tảng công nghệ, ngôn ngữ và khung kiến trúc sau:

Thành phần / Tầng Công nghệ / Nền tảng được sử dụng Mô tả kỹ thuật trong văn bản
Front-End Web/Desktop HTML, CSS, JavaScript HTML định nghĩa cấu trúc nội dung; CSS định kiểu phông chữ, màu sắc; JavaScript tạo tính tương tác phía máy khách.
Back-End Java, Spring Framework Spring Framework (Rod Johnson phát triển năm 2003) dựa trên 2 nguyên tắc chính: Dependency Injection (DI) và Aspect Oriented Programming (AOP), hỗ trợ phát triển ứng dụng theo mô hình POJO.
Web Server Tomcat Server Máy chủ phục vụ ứng dụng web Java.
Cơ sở dữ liệu MySQL 8.0 Hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) của Oracle, quản lý dữ liệu qua các bảng có cấu trúc bằng ngôn ngữ SQL.
Môi trường phát triển IntelliJ 2022, Xcode Môi trường lập trình backend Java và ứng dụng Swift.
Nền tảng Di động Swift, SwiftUI Swift là ngôn ngữ lập trình hướng đối tượng an toàn cho iOS; SwiftUI là framework khai báo giúp xây dựng giao diện người dùng trực quan trên các nền tảng của Apple.
Ảo hóa & Điều phối Docker, Kubernetes Docker đóng gói ứng dụng vào các container chuẩn hóa; Kubernetes quản lý, điều phối và tự động hóa việc triển khai các container/service.

Về kiến trúc vi dịch vụ (Microservices Architecture), văn bản trình bày rõ các thành phần cấu thành mạng phân tán:

  • Identity Provider: Quản lý định danh và cung cấp dịch vụ xác thực.
  • Service Discovery: Theo dõi địa chỉ dịch vụ và điểm cuối (endpoints), bao gồm hai cơ chế: Client-side discovery (client/API Gateway truy vấn trực tiếp Service Registry) và Server-side discovery (client gửi yêu cầu qua Load Balancer để điều hướng tới Service Registry).
  • API Gateway: Điểm tiếp nhận yêu cầu duy nhất từ client, điều phối và tổng hợp phản hồi từ các vi dịch vụ cơ bản.
  • Static Service / CDN: Mạng phân phối nội dung phục vụ các tài nguyên tĩnh.

2. Phương pháp nghiên cứu và thiết kế

  • Phương pháp phân tích và thiết kế hệ thống hướng đối tượng (OOAD): Sử dụng chuẩn UML để trực quan hóa toàn bộ quy trình nghiệp vụ thông qua hệ thống Use Case, biểu đồ phân rã chức năng mức đỉnh, biểu đồ lớp, biểu đồ tuần tự, biểu đồ hoạt động và biểu đồ trạng thái.
  • Phương pháp thiết kế hướng dịch vụ (SOA/Microservices): Phân rã bài toán lớn thành các dịch vụ nghiệp vụ nhỏ, độc lập; áp dụng nguyên tắc phân tách cơ sở dữ liệu độc lập (Database-per-Service) cho từng vi dịch vụ cụ thể.
  • Phương pháp đặc tả giao diện lập trình ứng dụng (API Specification): Thiết kế hệ thống RESTful API với các phương thức HTTP chuẩn (GET, POST, PUT, DELETE) để kết nối giữa tầng giao diện (Client) và các dịch vụ xử lý dữ liệu backend.

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

1. Kiến trúc dịch vụ và phân chia cơ sở dữ liệu

Hệ thống được thiết kế theo mô hình Microservices với cơ chế phân tách cơ sở dữ liệu riêng biệt theo từng miền nghiệp vụ (Service Data Isolation). Cấu trúc phân chia cụ thể gồm 5 dịch vụ độc lập:

Tên Vi dịch vụ (Service) Bảng dữ liệu / Thực thể quản lý Chức năng chính
User-service Users Quản lý thông tin tài khoản, xác thực, phân quyền (Admin, Khách hàng).
Product-service categories, Product Quản lý danh mục sản phẩm, thông tin chi tiết món ăn, đơn giá, số lượng.
Favorite-service Favorites Quản lý danh sách các món ăn yêu thích của từng người dùng.
Order-service Orders, Order_detail, Cart, Payments, status_payment Quản lý giỏ hàng, tạo và xử lý đơn hàng, trạng thái thanh toán và lịch sử giao dịch.
Notification-service Thành phần dịch vụ thông báo Tiếp nhận sự kiện và xử lý gửi thông báo tới người dùng.

2. Đặc tả yêu cầu hệ thống

a. Yêu cầu chức năng

Hệ thống phân quyền cho hai tác nhân chính:

  • Khách hàng (User): Đăng ký, đăng nhập, quên mật khẩu, cập nhật thông tin cá nhân; tìm kiếm và xem chi tiết món ăn; thêm/chỉnh sửa sản phẩm trong giỏ hàng; thực hiện đặt hàng; chọn hình thức thanh toán (Tiền mặt, VNPay, ApplePay); xem lịch sử đơn hàng; quản lý danh sách món ăn yêu thích.
  • Quản trị viên (Admin): Đăng nhập hệ thống; quản lý người dùng (xem danh sách, tìm kiếm, thêm, sửa thông tin, xóa tài khoản); quản lý danh mục (thêm, sửa, xóa, tìm kiếm); quản lý sản phẩm (thêm món ăn, sửa giá/mô tả/hình ảnh, xóa món ăn, tìm kiếm); quản lý đơn hàng (xem danh sách, tìm kiếm, cập nhật trạng thái đơn hàng: Đang xử lý, Đang vận chuyển, Đã giao hàng, Hủy).

b. Yêu cầu phi chức năng

  1. Ứng dụng có dung lượng nhỏ gọn, tốc độ xử lý nhanh.
  2. Thời gian tương tác giữa người dùng và hệ thống không quá 2 giây.
  3. Khả năng phục vụ đồng thời 10.000 người dùng (users) tại cùng một thời điểm.
  4. Giao diện trực quan, thân thiện, hoạt động tương thích trên nhiều trình duyệt web và đa dạng thiết bị.
  5. Thực hiện mã hóa các thông tin nhạy cảm của khách hàng, đảm bảo an toàn dữ liệu trực tuyến.
  6. Tính toán đơn hàng chính xác, đảm bảo tính đúng đắn và kịp thời về dữ liệu thời gian; hệ thống cập nhật liên tục thông tin từ cơ sở dữ liệu.

3. Thiết kế mô hình lớp (Class Diagram)

Biểu đồ lớp của hệ thống định nghĩa các thực thể và phương thức chính:

  • Users / User: id, roleId, username, email, password, phone, address. Các phương thức: Register(), Login(), editProfile(), forgotPassword(), insertUser(), getAllUser(), updateUser(), deleteUser(), searchUser().
  • Admin: roleId, userManagement(), productManagement(), categoryManagement(), orderManagement().
  • Product: id, name, image, description, price, quantity, categoryId. Các phương thức: insertProduct(), getAllProduct(), updateProduct(), deleteProduct(), searchProduct().
  • Category: id, name. Các phương thức: insertCategory(), getAllCategory(), updateCategory(), deleteCategory().
  • Order: id, orderDate, orderFee, orderDesc, orderStatus. Các phương thức: placeOrder(), getAllOrder(), updateOrder(), deleteOrder(), searchOrder().
  • Cart: id, quantity, userId, cartId, productId. Các phương thức: insertProductIntoCart(), deleteCartById().
  • Payment: id, isPayed, paymentDate, paymentStatus, orderId. Các phương thức: createPayment(), getAllPayment(), updatePaymentById(), deletePaymentById().

4. Đặc tả hệ thống API RESTful

Hệ thống cung cấp danh mục API hoàn chỉnh phục vụ kết nối đa nền tảng:

Nhóm chức năng Phương thức HTTP Điểm cuối (Endpoint) Chức năng nghiệp vụ
Đăng ký / Đăng nhập POST /login/signup Tạo tài khoản người dùng mới
POST /login/signin Đăng nhập hệ thống
Người dùng (User) GET /users Lấy danh sách tất cả người dùng
GET /users/{id} Lấy thông tin người dùng theo ID
PUT /users/{id} Cập nhật thông tin người dùng
DELETE /users/{id} Xóa tài khoản người dùng
Danh mục (Category) GET /categories Lấy danh sách toàn bộ danh mục
POST /categories Thêm danh mục món ăn mới
GET /categories/{id} Lấy chi tiết danh mục theo ID
PUT /categories/{id} Cập nhật thông tin danh mục
DELETE /categories/{id} Xóa danh mục theo ID
Sản phẩm (Product) GET /products Lấy danh sách toàn bộ sản phẩm
POST /products Thêm mới một sản phẩm
GET /products/{id} Lấy thông tin sản phẩm theo ID
PUT /products/{id} Chỉnh sửa thông tin sản phẩm
DELETE /products/{id} Xóa sản phẩm khỏi hệ thống
GET /products/search Tìm kiếm sản phẩm theo từ khóa
Thanh toán (Payment) GET /payments Lấy danh sách các giao dịch thanh toán
POST /payments Khởi tạo giao dịch thanh toán mới
PUT /payments/{id} Cập nhật thông tin giao dịch
DELETE /payments/{id} Xóa giao dịch thanh toán
GET /payments/order/{orderId} Lấy thông tin thanh toán theo mã đơn hàng
POST /payments/vnpay/create Tạo yêu cầu thanh toán qua cổng VNPay
GET /payments/vnpay/callback Tiếp nhận callback xử lý kết quả từ VNPay
Đơn hàng (Order) GET /orders Lấy danh sách tất cả đơn hàng
POST /orders Thêm đơn hàng mới
GET /orders/{id} Lấy thông tin chi tiết đơn hàng theo ID
PUT /orders/{id} Cập nhật trạng thái đơn hàng
DELETE /orders/{id} Xóa đơn hàng theo ID
GET /orders/user/{userId} Lấy danh sách đơn hàng của một người dùng
Yêu thích (Favourite) GET /favourites/user/{id} Lấy danh sách món yêu thích theo User ID
GET /favourites Lấy toàn bộ danh sách yêu thích
POST /favourites Thêm món ăn vào danh sách yêu thích
POST /favourites/verify Kiểm tra trạng thái yêu thích của món ăn

5. Triển khai giao diện ứng dụng

  • Ứng dụng Desktop dành cho Admin: Cung cấp bảng điều khiển (Dashboard) và các màn hình quản trị trực quan: Đăng nhập quản trị, Quản lý người dùng (danh sách người dùng kèm ID, Username, Email, Phone, Address, nút Thêm/Sửa/Xóa), Quản lý sản phẩm (danh sách món ăn như Cơm tấm giá 10.000, Nước giá 100.000, form Thêm/Sửa sản phẩm), Danh sách đơn hàng (hiển thị Total, trạng thái thanh toán is Pay, trạng thái xử lý đơn COMPLETED, NOT_STARTED), và Quản lý danh mục.
  • Ứng dụng Mobile iOS dành cho Khách hàng: Giao diện điện thoại bao gồm màn hình Đăng ký, Đăng nhập, Quên mật khẩu; Màn hình Cài đặt cá nhân và Lịch sử đơn hàng; Trang chủ tìm kiếm món ăn; Màn hình Chi tiết sản phẩm; Giỏ hàng (My Cart list, hiển thị Subtotal, Delivery, Total, áp dụng mã giảm giá); Màn hình Chọn phương thức thanh toán (ApplePay, VNPay, Cash); Màn hình Hoàn thành đơn hàng và Theo dõi đơn hàng (In coming); Màn hình Danh sách món ăn yêu thích.

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

Chương 1: Tổng quan đề tài

Chương 1 thiết lập bài toán nghiên cứu thông qua việc phân tích nhu cầu thực tế của dịch vụ đặt đồ ăn trực tuyến trong xã hội hiện đại. Tác giả trình bày các yêu cầu cần thiết đối với một nền tảng thương mại ẩm thực số, bao gồm: hiển thị chi tiết món ăn (hình ảnh, mô tả, giá cả), cung cấp bộ lọc tìm kiếm linh hoạt, quản lý hồ sơ và lịch sử mua sắm của khách hàng, tích hợp đánh giá chất lượng từ cộng đồng và hỗ trợ các chương trình ưu đãi, combo khuyến mãi. Đồng thời, chương 1 tóm lược các yêu cầu kỹ thuật nền tảng về tính chính xác trong tính toán, tốc độ xử lý nhanh, bảo mật thông tin nhạy cảm và an toàn dữ liệu trực tuyến.

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

Chương 2 trình bày chi tiết về cấu hình, công nghệ cài đặt và các lý thuyết nền tảng phục vụ xây dựng hệ thống:

  • Tổng quan về công nghệ Front-End (HTML, CSS, JavaScript), công nghệ Back-End (Java kết hợp Spring Framework phiên bản dung lượng nhẹ ~2MB với cơ chế DI và AOP), máy chủ Tomcat Server, hệ quản trị cơ sở dữ liệu MySQL 8.0 và môi trường lập trình IntelliJ 2022.
  • Kiến trúc microservices và các thành phần cốt lõi: Identity Provider, Service Discovery (mô hình Client-side discovery và Server-side discovery), API Gateway, CDN, nền tảng container Docker và hệ thống điều phối Kubernetes.
  • Ngôn ngữ lập trình Swift và framework SwiftUI phục vụ phát triển ứng dụng di động phía người dùng.
  • Đặc tả chi tiết danh mục yêu cầu chức năng (5 nhóm chức năng chính) và các chỉ số yêu cầu phi chức năng (tương tác $\le 2$ giây, chịu tải 10.000 người dùng đồng thời).

Chương 3: Phân tích thiết kế hệ thống

Chương 3 là phần trọng tâm về thiết kế kỹ thuật của đề tài:

  • Xây dựng mô hình nghiệp vụ, mô hình yêu cầu hệ thống và ma trận phân quyền giữa Admin và Khách hàng đối với 10 chức năng nghiệp vụ cốt lõi.
  • Phân tích chi tiết biểu đồ phân cấp chức năng mức đỉnh (chia thành 3 nhánh: Quản lý mua hàng, Quản lý truy cập, Quản lý dữ liệu).
  • Đặc tả chi tiết 15 kịch bản Use Case hệ thống kèm điều kiện tiên quyết, luồng sự kiện chính, luồng sự kiện lỗi và hậu điều kiện (Đăng nhập, Đăng xuất, Đăng ký, Quên mật khẩu, Tìm kiếm, Xem lịch sử đơn hàng, Xem chi tiết món ăn, Thêm vào giỏ hàng, Chỉnh sửa thông tin cá nhân, Quản lý giỏ hàng, Đặt hàng, Quản lý người dùng, Quản lý danh mục, Quản lý sản phẩm, Quản lý đơn hàng).
  • Xây dựng hệ thống Biểu đồ tuần tự (Sequence Diagrams) và Biểu đồ hoạt động (Activity Diagrams) cho từng thao tác nghiệp vụ.
  • Thiết lập Biểu đồ trạng thái cho 4 đối tượng: Trạng thái đăng nhập, Trạng thái đơn hàng (Chờ thanh toán $\rightarrow$ Đã thanh toán $\rightarrow$ Chế biến $\rightarrow$ Đang giao, hoặc Hủy), Trạng thái sản phẩm (Khởi tạo $\rightarrow$ Đang bán $\rightarrow$ Hết sản phẩm / Ngưng bán), và Trạng thái tài khoản (Khởi tạo $\rightarrow$ Hoạt động $\rightarrow$ Ngưng hoạt động).
  • Xây dựng Biểu đồ lớp (Class Diagram) tổng thể và Lược đồ ERD, trình bày phương án phân chia CSDL độc lập cho 5 microservices: User-service, Product-service, Favorite-service, Order-service, Notification-service.

Chương 4: Giao diện App Mobile và App Desktop

Chương 4 minh họa kết quả triển khai giao diện thực tế thông qua các ảnh chụp màn hình demo hệ thống:

  • Giao diện Admin Desktop: Minh họa các giao diện Quản lý người dùng, Thêm/Sửa tài khoản, Danh sách sản phẩm, Thêm/Sửa món ăn, Danh sách đơn hàng (với các trạng thái thanh toán và xử lý đơn) và Danh mục sản phẩm.
  • Giao diện User Mobile: Minh họa giao diện Đăng nhập, Đăng ký, Quên mật khẩu; Màn hình Trang chủ, Tìm kiếm món ăn, Xem chi tiết món ăn (Cơm tấm), Giỏ hàng và tính toán chi phí; Các bước lựa chọn phương thức thanh toán (Tiền mặt, VNPay, ApplePay), Hoàn tất đặt hàng và Màn hình theo dõi đơn hàng thời gian thực.

Chương 5: Danh sách API

Chương 5 cung cấp bảng đặc tả chi tiết toàn bộ các API RESTful của hệ thống được phân chia theo 8 nhóm chức năng chính (Đăng ký, Đăng nhập, Người dùng, Danh mục, Sản phẩm, Thanh toán, Đơn hàng, Yêu thích), quy định rõ phương thức HTTP và đường dẫn URI cho từng thao tác. Đồng thời, chương 5 cung cấp bảng liên kết tài nguyên mã nguồn công khai trên GitHub của nhóm nghiên cứu.


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

1. Kết quả chính của đề tài

Dựa trên các số liệu và nội dung được trình bày trong văn bản, đề tài đã đạt được các kết quả cụ thể sau:

  • Xây dựng hoàn chỉnh hồ sơ phân tích thiết kế phần mềm với 15 biểu đồ Use Case chi tiết, 18 biểu đồ tuần tự, 18 biểu đồ hoạt động, 4 biểu đồ trạng thái đối tượng, 1 biểu đồ lớp tổng thể và 1 lược đồ ERD phân chia CSDL theo microservices.
  • Xây dựng hệ thống backend microservices phân tách thành 5 dịch vụ dữ liệu độc lập (User-service, Product-service, Favorite-service, Order-service, Notification-service), triển khai 23 endpoint API RESTful hoàn chỉnh đáp ứng đầy đủ các thao tác CRUD và quy trình đặt hàng, thanh toán.
  • Hiện thực hóa thành công ứng dụng Desktop dành cho Admin để quản lý dữ liệu tập trung và ứng dụng Mobile chạy trên hệ điều hành iOS dành cho người dùng cuối với đầy đủ quy trình từ duyệt món, quản lý giỏ hàng, tích hợp thanh toán (VNPay, ApplePay, Tiền mặt) đến theo dõi đơn hàng.
  • Thiết lập chỉ tiêu vận hành hệ thống đáp ứng thời gian phản hồi tương tác không quá 2 giây và định hướng phục vụ 10.000 người dùng đồng thời.

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

  • Ứng dụng mô hình kiến trúc Microservices kết hợp API Gateway và Service Discovery thay thế cho kiến trúc nguyên khối (Monolithic), giúp tăng cường tính linh hoạt, khả năng mở rộng độc lập cho từng phân hệ và nâng cao khả năng chịu lỗi của toàn hệ thống.
  • Áp dụng nguyên tắc tách biệt CSDL (Database-per-Service) nhằm đảm bảo tính toàn vẹn và độc lập dữ liệu giữa các dịch vụ.
  • Tích hợp đa dạng phương thức thanh toán trực tuyến (VNPay, ApplePay) song song với phương thức tiền mặt truyền thống để gia tăng tiện ích cho khách hàng.

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

Nhóm tác giả tự đánh giá đề tài đã hiện thực hóa phương thức kinh doanh ẩm thực qua môi trường số, cung cấp giải pháp tiết kiệm thời gian, chi phí và công sức quản lý. Về mặt kỹ thuật học thuật, đề tài cung cấp một mô hình tham chiếu thực tế về việc áp dụng kiến trúc hướng dịch vụ trong môn học Phát triển phần mềm hướng dịch vụ, đóng gói hoàn chỉnh từ khâu phân tích thiết kế, xây dựng API đến hiện thực hóa giao diện đa nền tảng với 3 kho mã nguồn mở:

  • Backend Microservices: idiotman-2212/Food-Order-Backend
  • App Desktop Admin: henrytran1803/AdminOrderFood_Desktop
  • App Mobile User: henrytran1803/APPOrderFoodHDV

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

  • Hạn chế: Theo ghi nhận từ nội dung báo cáo và giao diện demo, một số trường dữ liệu hiển thị trên giao diện chi tiết đơn hàng vẫn ở dạng giá trị mặc định của hệ thống lập trình (như Optional(""), Optional(0.0), Delivery NULLLLL); các số liệu thử nghiệm đơn hàng và người dùng chủ yếu là dữ liệu mẫu mô phỏng. Báo cáo chưa trình bày kết quả đo kiểm tải thực tế bằng công cụ tự động đối với chỉ tiêu 10.000 người dùng đồng thời.
  • Hướng phát triển: Nhóm tác giả nêu rõ trong lời mở đầu rằng kiến thức còn một số hạn chế và ghi nhận các góp ý, chỉ bảo của giảng viên hướng dẫn (TS. Huỳnh Trung Trụ) để tiếp tục hoàn thiện, tối ưu hóa mã nguồn và phát triển mở rộng đề tài trong tương lai.

Giá trị tham khảo

Báo cáo khóa luận/đồ án này mang lại giá trị tham khảo học thuật và kỹ thuật đối với các đối tượng sau:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Tài liệu hữu ích cho sinh viên đang thực hiện đồ án môn học Phát triển phần mềm hướng dịch vụ hoặc khóa luận tốt nghiệp có định hướng xây dựng ứng dụng thương mại điện tử theo kiến trúc Microservices kết hợp Java Spring Framework và Swift/SwiftUI.
  • Các phần có giá trị tham khảo cao trong văn bản:
    • Chương 3: Hệ thống biểu đồ UML chi tiết (Use Case có đặc tả luồng sự kiện, Sequence, Activity, State, Class Diagram) và phương pháp phân rã CSDL quan hệ thành 5 CSDL riêng cho từng microservice.
    • Chương 5: Bảng thiết kế danh mục 23 API RESTful chuẩn mực cho bài toán đặt hàng trực tuyến và danh sách các liên kết mã nguồn mở trên GitHub.

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

1. Hệ thống đặt đồ ăn trực tuyến trong đề tài được phân chia thành những microservice nào?

Hệ thống được chia thành 5 dịch vụ vi mô độc lập với cơ sở dữ liệu riêng biệt:

  1. User-service (quản lý bảng Users).
  2. Product-service (quản lý bảng categories và Product).
  3. Favorite-service (quản lý bảng Favorites).
  4. Order-service (quản lý các bảng Orders, Order_detail, Cart, Payments, status_payment).
  5. Notification-service (quản lý dịch vụ gửi thông báo).

2. Các yêu cầu phi chức năng về hiệu năng và tải của hệ thống được quy định cụ thể ra sao?

Theo đặc tả của nhóm tác giả tại Chương 2 và Chương 3, hệ thống phải đáp ứng các chỉ số kỹ thuật:

  • Thời gian tương tác giữa người dùng và hệ thống không vượt quá 2 giây.
  • Hệ thống có khả năng hoạt động ổn định với 10.000 người dùng truy cập tại cùng một thời điểm.
  • Dung lượng ứng dụng tối ưu, mã hóa các dữ liệu nhạy cảm của khách hàng và cập nhật dữ liệu liên tục từ database.

3. Ứng dụng di động của người dùng hỗ trợ những phương thức thanh toán nào?

Giao diện thanh toán trên ứng dụng di động (Chương 4) và danh mục API (Chương 5) thể hiện hệ thống hỗ trợ 3 phương thức thanh toán:

  1. Thanh toán qua cổng điện tử VNPay (thông qua API /payments/vnpay/create và /payments/vnpay/callback).
  2. Thanh toán qua ApplePay.
  3. Thanh toán bằng tiền mặt khi nhận hàng (Cash).

4. Nhóm tác giả sử dụng những công nghệ và công cụ nào để xây dựng các tầng ứng dụng?

  • Backend: Ngôn ngữ Java, Spring Framework (nguyên tắc DI và AOP), máy chủ Tomcat Server, cơ sở dữ liệu MySQL 8.0, IDE IntelliJ 2022.
  • Frontend Admin Desktop: HTML, CSS, JavaScript.
  • Frontend User Mobile: Ngôn ngữ Swift, framework SwiftUI chạy trên môi trường iOS.
  • Hạ tầng & Điều phối: Docker, Kubernetes.

5. Mã nguồn của đề tài được lưu trữ tại những kho lưu trữ (repository) nào?

Tài nguyên mã nguồn đề tài được công khai trên GitHub tại 3 địa chỉ:

  • Backend Microservices: idiotman-2212/Food-Order-Backend
  • App Desktop Admin: henrytran1803/AdminOrderFood_Desktop
  • App Mobile User: henrytran1803/APPOrderFoodHDV

Kết luận

Đồ án "Xây dựng hệ thống đặt đồ ăn trực tuyến" của nhóm sinh viên Khoa Công nghệ Thông tin, Học viện Công nghệ Bưu chính Viễn thông cơ sở TP. Hồ Chí Minh đã hoàn thành toàn diện mục tiêu nghiên cứu và ứng dụng kiến trúc Microservices trong môn học Phát triển phần mềm hướng dịch vụ. Đề tài cung cấp đầy đủ hồ sơ phân tích thiết kế hệ thống theo chuẩn UML, thiết kế CSDL phân tán cho 5 microservices độc lập và đặc tả 23 API RESTful. Bên cạnh việc xây dựng hoàn chỉnh giao diện ứng dụng quản trị Desktop và ứng dụng di động iOS (Swift/SwiftUI), đề tài là tài liệu tham khảo có giá trị cao cho sinh viên và lập trình viên trong việc thiết kế, hiện thực hóa các hệ thống thương mại điện tử phân tán.