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

Trong bối cảnh công nghệ số phát triển mạnh mẽ, điện thoại thông minh đã trở thành thiết bị thiết yếu hỗ trợ nhiều hoạt động sinh hoạt thường nhật. Nhu cầu đặt món và giao thức ăn tận nơi thông qua các ứng dụng di động ngày càng gia tăng, phản ánh sự thay đổi trong thói quen tiêu dùng và lối sống bận rộn của xã hội hiện đại. Nền tảng giao đồ ăn trực tuyến (được tác giả đề cập dưới mô hình ứng dụng IFood / Food Delivery) đóng vai trò cầu nối, giúp người tiêu dùng tiếp cận đa dạng các nhà hàng, quán ăn từ địa phương đến quốc tế, tiết kiệm thời gian và công sức tìm kiếm.

Tuy nhiên, mô hình kinh doanh này cũng đặt ra những yêu cầu khắt khe về việc tối ưu hóa quy trình vận hành chuỗi dịch vụ: từ việc quản lý thực đơn của nhà hàng, quy trình tiếp nhận và đặt món của khách hàng, cho đến việc điều phối và giao hàng của tài xế. Nhằm giải quyết các yêu cầu thực tiễn đó, đồ án tốt nghiệp ngành Kỹ thuật phần mềm của sinh viên Bùi Trung Hiếu (Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên, 2024), dưới sự hướng dẫn của ThS. Nguyễn Lan Oanh, tập trung vào đề tài "Xây dựng ứng dụng Mobile Food Delivery".

Mục tiêu và nhiệm vụ nghiên cứu của đồ án được xác định bao gồm:

  1. Nghiên cứu tổng quan lý thuyết và công nghệ phát triển ứng dụng di động đa nền tảng hiện đại, trọng tâm là Flutter, ngôn ngữ lập trình Dart, hệ quản trị cơ sở dữ liệu Firebase và ngôn ngữ mô hình hóa thống nhất UML.
  2. Khảo sát thực tế nhu cầu thị trường, phân tích yêu cầu nghiệp vụ và mô hình hóa hệ thống bằng các biểu đồ Use Case và biểu đồ trình tự (Sequence Diagram).
  3. Thiết kế và hiện thực hóa chương trình thử nghiệm (Demo) hoàn chỉnh cho quy trình đặt và giao đồ ăn với các giao diện tương tác trực quan cho các nhóm đối tượng người dùng.

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

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và xây dựng hệ thống phần mềm giao đồ ăn đa tác nhân trên nền tảng di động.
  • Phạm vi không gian: Đồ án được triển khai và thử nghiệm trong khuôn khổ chương trình đào tạo đại học ngành Kỹ thuật phần mềm tại Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên.
  • Phạm vi kỹ thuật và chức năng: Tập trung phát triển ứng dụng trên hệ điều hành Android dành cho 3 nhóm người dùng (Người mua hàng, Người bán hàng, Người giao hàng) kết hợp giao diện Web quản trị cho Quản trị viên (Admin), sử dụng Firebase làm nền tảng lưu trữ và quản lý dữ liệu thời gian thực.
  • Thời gian thực hiện: Hoàn thành vào tháng 5 năm 2024.

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

Đồ án ứng dụng phương pháp nghiên cứu kỹ thuật phần mềm truyền thống kết hợp mô hình hóa hướng đối tượng và công nghệ phát triển ứng dụng di động hiện đại. Hệ thống cơ sở lý thuyết và công cụ kỹ thuật bao gồm:

1. Framework Flutter và ngôn ngữ lập trình Dart

  • Flutter: Framework mã nguồn mở do Google phát triển, cho phép biên dịch ứng dụng đa nền tảng (Android, iOS) từ một cơ sở mã nguồn duy nhất. Cấu trúc của Flutter được chia thành 4 thành phần cốt lõi:
    • Flutter Engine: Viết bằng C++, chịu trách nhiệm vẽ giao diện đồ họa thông qua thư viện Skia, xử lý I/O mạng/tệp và cung cấp môi trường thời gian chạy Dart.
    • Foundation Library: Cung cấp các gói cơ sở và hàm viết bằng Dart để tương tác với hệ thống.
    • Widgets: Khái niệm trung tâm của Flutter, trong đó mọi thành phần giao diện đều là widget có thể lồng ghép theo cấu trúc phân cấp.
    • Design Specific Widgets: Hỗ trợ sẵn hai bộ giao diện đặc thù là Material Design (chuẩn Android) và Cupertino Style (chuẩn iOS).
    • Hot Reload (Tải lại nóng): Cho phép nạp thay đổi mã nguồn lập tức mà không cần khởi động lại toàn bộ ứng dụng.
  • Ngôn ngữ Dart: Ngôn ngữ lập trình hướng đối tượng (OOP) do Google phát triển, hỗ trợ các đặc tính kế thừa, đóng gói, chạy trên máy ảo Dart VM và biên dịch tối ưu hóa hiệu suất ứng dụng di động và web.

2. Môi trường phát triển tích hợp (IDE) Android Studio

Android Studio (dựa trên nền tảng IntelliJ IDEA) được sử dụng làm công cụ lập trình chính, hỗ trợ:

  • Trình biên soạn mã thông minh với tô màu cú pháp, tự động hoàn thành mã, gỡ lỗi (debugging) và phân tích hiệu năng (profiling) về bộ nhớ và tài nguyên.
  • Trình thiết kế giao diện trực quan (Designer Layout) hỗ trợ kéo thả và xem trước trên nhiều tỷ lệ màn hình.
  • Tích hợp Android SDK/NDK, trình giả lập thiết bị (Android Emulator) và hệ thống quản lý phiên bản Git.

3. Nền tảng Backend-as-a-Service (BaaS) Google Firebase

Firebase được sử dụng để giải quyết bài toán cơ sở dữ liệu và hạ tầng mà không cần triển khai máy chủ backend phức tạp:

  • Firebase Realtime Database: Cơ sở dữ liệu phi quan hệ (NoSQL) lưu trữ dưới dạng JSON, hỗ trợ đồng bộ hóa dữ liệu thời gian thực giữa máy khách và máy chủ.
  • Firebase Authentication: Xác thực người dùng bằng email, mật khẩu, số điện thoại và các tài khoản mạng xã hội.
  • Firebase Cloud Messaging (FCM) & Hosting & Analytics: Dịch vụ gửi thông báo đẩy, lưu trữ web tĩnh và phân tích hành vi người dùng.
  • Đánh giá ưu - nhược điểm: Tác giả chỉ ra Firebase giúp tích hợp nhanh và có tính thời gian thực cao, nhưng có nhược điểm là không mở mã nguồn, chỉ hỗ trợ NoSQL, khả năng truy vấn phức tạp bị hạn chế và không hỗ trợ máy chủ chuyên dụng (dedicated servers).

4. Ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language)

Sử dụng các biểu đồ chuẩn theo chuẩn OMG để phân tích và tài liệu hóa hệ thống:

  • Biểu đồ Use Case: Phân định ranh giới hệ thống, tác nhân và các ca sử dụng.
  • Biểu đồ Sequence (Trình tự): Mô tả tuần tự tương tác theo thời gian giữa người dùng, giao diện và cơ sở dữ liệu.

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

Hệ thống được thiết kế theo mô hình phân quyền đa tác nhân nhằm khép kín toàn bộ chu trình đặt và xử lý đơn hàng ẩm thực.

Phân hệ / Tác nhân Nền tảng Chức năng chính được thiết kế và đặc tả
Người mua (Khách hàng) Android App Đăng ký, Đăng nhập, Xem thông tin sản phẩm, Thêm vào giỏ hàng, Xem giỏ hàng & tính tổng tiền, Thêm/chọn địa chỉ giao hàng, Đặt hàng, Xem lịch sử đơn hàng, Xem chi tiết đơn hàng, Tìm kiếm nhà hàng/món ăn, Đăng xuất.
Người bán (Chủ nhà hàng) Android App Đăng ký tài khoản cửa hàng, Đăng nhập, Thêm/xóa thực đơn (Menu), Thêm đồ ăn vào thực đơn, Tiếp nhận đơn hàng mới (xác nhận/từ chối), Xác nhận đóng gói hoàn tất, Xem lịch sử đơn hàng, Quản lý doanh thu, Đăng xuất.
Người giao hàng (Shipper) Android App Đăng ký, Đăng nhập, Xem danh sách đơn hàng mới cần giao, Tiếp nhận đơn hàng, Xem trạng thái vận chuyển, Tích hợp Google Maps dẫn đường đến nhà hàng và địa chỉ giao, Xem lịch sử giao hàng thành công, Quản lý doanh thu giao hàng, Đăng xuất.
Quản trị viên (Admin) Web Portal Đăng nhập, Quản lý tài khoản người dùng (xem danh sách người dùng, xác minh tài khoản, chặn/khóa tài khoản vi phạm), Đăng xuất.

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

Chương 1: Tổng quan về lý thuyết cơ bản

Chương 1 đóng vai trò xây dựng nền tảng lý thuyết và công nghệ cho toàn bộ đồ án. Tác giả trình bày chi tiết về:

  • Lịch sử phát triển và các đặc tính của Flutter (mã nguồn mở, đa nền tảng, tính năng Hot Reload, cơ chế render giao diện qua Widget).
  • Chi tiết 4 tầng kiến trúc Flutter: Flutter Engine (viết bằng C++, đồ họa Skia), Thư viện nền tảng (Foundation Library viết bằng Dart), Hệ thống Widget phân cấp và Bộ Widget đặc thù (Material Design và Cupertino).
  • Ngôn ngữ lập trình Dart: Nguồn gốc từ Google, hỗ trợ lập trình hướng đối tượng (OOP), cú pháp đơn giản, cơ chế thực thi trên Dart VM.
  • Bộ công cụ Android Studio: Các tính năng của trình soạn thảo mã, Layout Designer, công cụ Debugging, Profiling bộ nhớ, quản lý dự án và tích hợp Git/SVN.
  • Khái niệm và vị trí của UML trong quy trình phần mềm; liệt kê các biểu đồ cơ bản (Class Diagram, Use Case Diagram, Sequence Diagram, State Diagram, Activity Diagram).
  • Nền tảng Google Firebase: Giới thiệu các dịch vụ Realtime Database, Cloud Messaging, Hosting, Analytics và phân tích chi tiết các ưu điểm (đồng bộ thời gian thực, dễ tích hợp) cùng nhược điểm (hạn chế truy vấn NoSQL, mã nguồn đóng, chi phí khi mở rộng).

Chương 2: Khảo sát và phân tích thiết kế hệ thống

Chương 2 tập trung vào việc mô hình hóa các yêu cầu nghiệp vụ và thiết kế chi tiết hệ thống:

  • Khảo sát nghiệp vụ: Phân tích nhu cầu của thị trường đối với dịch vụ đặt đồ ăn trực tuyến (IFood), các khó khăn của nhà hàng trong quản lý đơn hàng và yêu cầu tối ưu hóa vận chuyển.
  • Xác định tác nhân và phân rã chức năng: Phân chia hệ thống thành 4 phân hệ rõ ràng (Người mua, Người bán, Người giao hàng, Quản trị viên).
  • Mô hình hóa Use Case: Xây dựng các sơ đồ Use Case tổng thể cho 3 phân hệ di động (Hình 2.1, Hình 2.2, Hình 2.3).
  • Bảng đặc tả Use Case chi tiết: Tác giả lập 12 bảng đặc tả Use Case chuẩn xác bao gồm mô tả, tác nhân, mức độ ưu tiên, điều kiện tiên quyết, luồng tương tác chính, luồng phụ và luồng ngoại lệ:
    • Bảng 2.1 & 2.2: Đặc tả chức năng Đăng ký và Đăng nhập cho cả 3 đối tượng người dùng.
    • Bảng 2.3: Đặc tả quy trình Đặt hàng từ bước duyệt menu, thêm vào giỏ, chọn địa chỉ đến xác nhận đặt món.
    • Bảng 2.4: Đặc tả chức năng Thêm địa chỉ của người mua hàng.
    • Bảng 2.5 & 2.6: Đặc tả chức năng Xem chi tiết đơn hàng và Xem lịch sử mua hàng.
    • Bảng 2.7 & 2.8: Đặc tả chức năng Tìm kiếm nhà hàng và Đăng xuất hệ thống.
    • Bảng 2.9 & 2.10: Đặc tả chức năng Thêm menu và Thêm món ăn vào menu của người bán.
    • Bảng 2.11: Đặc tả chức năng Xem đơn hàng mới và Xác nhận đóng gói của người bán.
    • Bảng 2.12: Đặc tả quy trình Tiếp nhận đơn và Giao hàng của shipper (từ xem đơn, chuyển trạng thái đến lấy hàng tại quán và giao cho khách).
  • Xây dựng biểu đồ trình tự (Sequence Diagram): Thiết kế 14 biểu đồ tuần tự biểu diễn chi tiết dòng thông điệp giữa Actor, Boundary (Giao diện), Controller/Service và Database (Firebase) cho các luồng: Đăng ký, Đăng nhập, Xem menu, Xem danh sách món ăn, Thêm địa chỉ, Thêm menu, Thêm đồ ăn, Thêm vào giỏ hàng, Đặt hàng, Xem đơn mới phía người bán, Đóng gói đơn hàng, Xem thu nhập người bán, Tiếp nhận đơn phía người giao và Giao hàng thành công.

Chương 3: Phát triển và thử nghiệm ứng dụng (Xây dựng chương trình Demo)

Chương 3 trình bày kết quả hiện thực hóa phần mềm thông qua các giao diện demo trên thiết bị di động:

  • Giao diện phía khách hàng (Người mua): Triển khai màn hình Splash Screen, màn hình Đăng ký/Đăng nhập, Trang chủ hiển thị danh sách cửa hàng, Giao diện Menu cửa hàng, Giao diện danh sách món ăn, Chi tiết món ăn, Giao diện Giỏ hàng (chỉnh sửa số lượng, hiển thị tổng tiền), Giao diện Chọn/Thêm địa chỉ giao hàng và Giao diện Hoàn tất đặt hàng.
  • Giao diện phía người bán (Chủ cửa hàng): Triển khai màn hình Đăng nhập/Đăng ký cửa hàng, Trang chủ quản trị nhà hàng, Giao diện tạo mới Menu (nhập tên, tải ảnh đại diện), Giao diện thêm món ăn vào Menu (nhập giá, mô tả, ảnh món), Màn hình tiếp nhận đơn hàng mới và bấm nút "Đã đóng gói đơn hàng xong", Giao diện thống kê doanh thu theo đơn.
  • Giao diện phía người giao hàng (Shipper): Triển khai Trang chủ hiển thị danh sách đơn hàng có thể nhận giao, Màn hình xem thông tin chi tiết đơn hàng cần giao, Giao diện hiển thị thông tin và địa chỉ cửa hàng lấy hàng, Giao diện hiển thị thông tin và địa chỉ khách nhận hàng, Giao diện tích hợp bản đồ dẫn đường (Google Maps) và Màn hình lịch sử đơn hàng đã giao thành công kèm thu nhập.

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

Kết quả đạt được

  1. Hoàn thiện bộ tài liệu phân tích thiết kế: Xây dựng đầy đủ 12 bảng đặc tả Use Case nghiệp vụ và hệ thống biểu đồ UML (Use Case Diagrams, Sequence Diagrams) mô tả chính xác mọi luồng tương tác của hệ sinh thái giao đồ ăn.
  2. Hiện thực hóa 3 ứng dụng di động độc lập: Xây dựng thành công bộ giao diện demo bằng Flutter/Dart chạy trên nền tảng Android cho 3 nhóm đối tượng:
    • Ứng dụng Khách hàng với đầy đủ chức năng từ tìm kiếm, xem thực đơn, quản lý giỏ hàng đến đặt hàng.
    • Ứng dụng Nhà hàng với khả năng quản lý danh mục món ăn, cập nhật trạng thái đơn hàng và kiểm tra doanh thu.
    • Ứng dụng Tài xế hỗ trợ nhận đơn, định vị lộ trình qua Google Maps và xác nhận hoàn tất giao hàng.
  3. Ứng dụng công nghệ Backend thời gian thực: Tích hợp Firebase Realtime Database và Firebase Authentication để quản lý dữ liệu người dùng và đơn hàng mà không cần xây dựng hệ thống máy chủ vật lý riêng biệt.

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

  • Đóng góp một quy trình mẫu trong việc áp dụng framework Flutter và Firebase để giải quyết bài toán ứng dụng thương mại điện tử / giao đồ ăn nhiều tác nhân.
  • Cung cấp tài liệu thiết kế phần mềm hoàn chỉnh theo chuẩn công nghệ phần mềm, từ phân tích yêu cầu, mô hình hóa UML đến triển khai giao diện người dùng cụ thể.

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

Dựa trên phạm vi và các nội dung được trình bày trong văn bản đồ án, các hạn chế và hướng mở phát triển tiếp theo bao gồm:

  • Cơ sở dữ liệu và hạ tầng: Đồ án phụ thuộc vào Firebase Realtime Database (NoSQL). Cấu trúc NoSQL có thể gặp khó khăn trong việc thực hiện các truy vấn dữ liệu phức tạp hoặc tổng hợp báo cáo quy mô lớn khi lượng đơn hàng và người dùng tăng cao.
  • Phạm vi nền tảng thử nghiệm: Mặc dù Flutter hỗ trợ đa nền tảng, đồ án mới chỉ tập trung thử nghiệm và hiển thị giao diện demo trên hệ điều hành Android; phiên bản iOS và hệ thống Web Admin chưa được trình bày chi tiết về mặt giao diện thực thi.
  • Tính năng mở rộng: Hệ thống có thể tiếp tục phát triển và hoàn thiện các mô-đun nâng cao như tích hợp cổng thanh toán trực tuyến đa dạng, thuật toán tối ưu hóa ghép đơn tự động cho tài xế và hệ thống phân tích đánh giá chất lượng dịch vụ nâng cao.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Kỹ thuật phần mềm, Công nghệ thông tin: Làm tài liệu tham khảo trực tiếp cho các khóa luận, đồ án tốt nghiệp hoặc môn học Phân tích thiết kế hệ thống, Phát triển ứng dụng di động đa nền tảng.
  • Người học và lập trình viên Flutter: Tham khảo cấu trúc tổ chức mã nguồn, cách xây dựng giao diện người dùng bằng hệ thống Widget của Flutter và cách kết nối các dịch vụ của Google Firebase.
  • Phần đáng tham khảo nhất: Hệ thống 12 bảng đặc tả Use Case và các biểu đồ trình tự (Sequence Diagram) ở Chương 2, cung cấp khung phân tích nghiệp vụ rõ ràng, mạch lạc cho các đề tài phát triển ứng dụng thương mại dịch vụ dạng sàn kết nối ba bên (Khách hàng - Cửa hàng - Người giao hàng).

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

1. Khóa luận này do ai thực hiện và thuộc đơn vị đào tạo nào?

Đồ án do sinh viên Bùi Trung Hiếu (lớp KTPM - K18ĐT) thực hiện dưới sự hướng dẫn của ThS. Nguyễn Lan Oanh, thuộc ngành Kỹ thuật phần mềm, Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên, hoàn thành vào tháng 5 năm 2024.

2. Hệ thống phần mềm trong đồ án phục vụ những nhóm người dùng nào?

Hệ thống được thiết kế cho 4 nhóm đối tượng: Người mua hàng (Khách hàng), Người bán hàng (Chủ quán ăn), Người giao hàng (Tài xế/Shipper) sử dụng ứng dụng di động trên nền tảng Android, và Quản trị viên (Admin) sử dụng cổng Web quản trị.

3. Những công nghệ và công cụ chính nào được tác giả sử dụng để phát triển ứng dụng?

Tác giả sử dụng framework Flutter (với ngôn ngữ Dart), môi trường phát triển Android Studio, nền tảng cơ sở dữ liệu và dịch vụ đám mây Google Firebase (Realtime Database, Authentication, FCM, Hosting), công cụ mô hình hóa UML và dịch vụ Google Maps để dẫn đường.

4. Bốn thành phần cốt lõi trong kiến trúc Flutter được đồ án nêu ra là gì?

Kiến trúc Flutter gồm 4 thành phần: Flutter engine (viết bằng C++, sử dụng thư viện đồ họa Skia), Thư viện nền tảng (Foundation Library viết bằng Dart), Vật dụng (Widgets) và Bộ widget theo ngôn ngữ thiết kế cụ thể (Material Design cho Android và Cupertino Style cho iOS).

5. Tác giả đã chỉ ra những nhược điểm gì của nền tảng Google Firebase trong đồ án?

Theo phân tích của tác giả tại Chương 1, các nhược điểm của Firebase bao gồm: không phải là mã nguồn mở, chỉ hỗ trợ cơ sở dữ liệu NoSQL (hạn chế tùy biến so với SQL), lập trình viên không can thiệp được mã nguồn máy chủ, tốc độ truy vấn có thể chậm đối với các tác vụ phức tạp, một số dịch vụ nâng cao phải trả phí và thiếu máy chủ chuyên dụng (dedicated servers).


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng Mobile Food Delivery" của sinh viên Bùi Trung Hiếu đã giải quyết trọn vẹn quy trình phân tích, thiết kế và phát triển một hệ thống giao đồ ăn đa tác nhân trên nền tảng di động. Bằng việc kết hợp hiệu quả giữa framework Flutter, ngôn ngữ Dart, công cụ mô hình hóa UML và dịch vụ Firebase, tác giả đã xây dựng thành công bộ tài liệu đặc tả nghiệp vụ chi tiết cùng chương trình demo trực quan cho cả ba phân hệ Khách hàng, Cửa hàng và Tài xế. Công trình là một tài liệu tham khảo có giá trị học thuật và thực tiễn cao cho sinh viên ngành Kỹ thuật phần mềm trong việc xây dựng các ứng dụng di động phục vụ thương mại dịch vụ.