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

Trong bối cảnh công nghệ 4.0 và chuyển đổi số, trải nghiệm người dùng, tính tiện lợi cùng tốc độ cung cấp dịch vụ bán hàng đã trở thành những yếu tố cạnh tranh hàng đầu của doanh nghiệp. Sự phát triển mạnh mẽ của các nền tảng đặt hàng và gọi dịch vụ trực tuyến (như Grab, Uber, Lazada, Foody, Now, Baemin) cho thấy tiềm năng to lớn của các ứng dụng di động trong đời sống hằng ngày. Tuy nhiên, đối với các mặt hàng thiết yếu như khí đốt (gas), thị trường vẫn tồn tại nhiều bất cập: người tiêu dùng còn thiếu thông tin khách quan về chủng loại, mẫu mã sản phẩm, đồng thời phải đối mặt với nguy cơ gas giả và gas kém chất lượng.

Trước thực trạng đó, đề tài "Phát triển ứng dụng quản lý mua bán gas trên iOS - Sử dụng ngôn ngữ Dart trên nền tảng Flutter" được thực hiện bởi nhóm sinh viên Võ Trường Duy và Vi Văn Sang, dưới sự hướng dẫn của ThS. Nguyễn Hữu Trung tại Trường Đại học Sư phạm Kỹ thuật TP.HCM, nhằm số hóa quy trình đặt gas và quản lý bán hàng trên thiết bị di động.

Mục tiêu nghiên cứu được xác định cụ thể gồm hai nhiệm vụ chính:

  1. Nghiên cứu sâu về nền tảng Flutter và ngôn ngữ lập trình Dart, phân tích các cơ chế hoạt động giúp tối ưu hóa quá trình phát triển ứng dụng di động đa nền tảng.
  2. Thiết kế và xây dựng hoàn chỉnh ứng dụng quản lý mua bán gas trên hệ điều hành iOS (với khả năng hỗ trợ Android), tích hợp đầy đủ các chức năng nghiệp vụ cơ bản:
    • Đăng ký, đăng nhập, đăng xuất tài khoản.
    • Đăng nhập liên kết thông qua tài khoản Google và Facebook.
    • Quản lý tài khoản cá nhân (xem, cập nhật thông tin, đổi mật khẩu, khôi phục mật khẩu).
    • Tra cứu danh mục, xem chi tiết và đánh giá sản phẩm.
    • Quản lý giỏ hàng và tiến hành đặt hàng, thanh toán.
    • Phân hệ quản trị (Admin) phục vụ thêm, xóa, sửa sản phẩm, quản lý khách hàng và theo dõi tình trạng đơn hàng.

Đối tượng nghiên cứu của đồ án là ngôn ngữ Dart, framework Flutter, dịch vụ cơ sở dữ liệu thời gian thực Firebase và các quy trình nghiệp vụ của phần mềm bán hàng di động. Phạm vi nghiên cứu tập trung vào việc thiết kế và kiểm thử ứng dụng trên nền tảng hệ điều hành iOS, thời gian triển khai từ ngày 15/02/2020 đến ngày 04/08/2020.


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

Đồ án xây dựng trên nền tảng các công nghệ di động và dịch vụ đám mây hiện đại:

  • Flutter Framework: Là bộ công cụ phát triển giao diện người dùng (UI framework) mã nguồn mở của Google. Kiến trúc của Flutter được phân chia thành hai tầng chính:
    • Tầng Application: Viết bằng ngôn ngữ Dart, chứa mã nguồn ứng dụng, các widget và logic xử lý, cho phép tùy biến linh hoạt tại thời điểm biên dịch (compile time).
    • Tầng Shell: Nằm sâu bên dưới, viết bằng C++, đảm nhận việc kết nối ứng dụng với hệ điều hành và phần cứng thiết bị. Tầng này tích hợp máy ảo Dart VM chịu trách nhiệm biên dịch và cung cấp môi trường thực thi (runtime system), trình thu gom rác (garbage collector) cùng các thư viện cốt lõi.
    • Cơ chế hiển thị và render: Khác với kiến trúc Native (giao tiếp trực tiếp với OEM Widgets) hay Hybrid (dùng WebView và cầu nối JavaScript Bridge), Flutter vẽ trực tiếp toàn bộ giao diện lên một Canvas duy nhất bằng thuật toán so sánh khác biệt (Diff Algorithm) và cây chẩn đoán (Diagnosticable Tree), giúp giảm thiểu chi phí hiệu năng và đảm bảo tốc độ khung hình cao. Toàn bộ thành phần UI được đóng gói dưới dạng StatelessWidget (thành phần tĩnh) và StatefulWidget (thành phần có trạng thái, quản lý qua setState() và didUpdateWidget()). Hệ thống hỗ trợ sẵn hai chuẩn giao diện Material Design (Android) và Cupertino (iOS).
  • Ngôn ngữ lập trình Dart: Chuẩn hóa theo ECMA-408, là ngôn ngữ hướng đối tượng theo lớp (class-based), hỗ trợ kiểm tra kiểu tĩnh (static typing) và kiểu an toàn (sound type). Điểm nổi bật của Dart là hỗ trợ song song hai cơ chế biên dịch: Just-In-Time (JIT) phục vụ tính năng Hot Reload trong quá trình phát triển, và Ahead-Of-Time (AOT) biên dịch trực tiếp sang mã máy (ARM/x86) khi đóng gói sản phẩm để đạt hiệu năng tương đương mã nguồn gốc. Dart hỗ trợ mô hình lập trình phản ứng (Reactive) và xử lý bất đồng bộ thông qua đối tượng Future và Stream.
  • Google Firebase: Đóng vai trò làm giải pháp phụ trợ (Backend-as-a-Service) hoàn chỉnh:
    • Firebase Realtime Database: Cơ sở dữ liệu NoSQL lưu trữ dưới dạng cây JSON, cho phép tự động đồng bộ dữ liệu thời gian thực tới tất cả các máy khách kết nối.
    • Firebase Authentication: Hệ thống xác thực bảo mật hỗ trợ xác thực bằng Email/Mật khẩu và tích hợp xác thực từ bên thứ ba như Google, Facebook.
    • Bảo mật và truyền tải: Toàn bộ giao tiếp giữa ứng dụng và máy chủ được mã hóa qua giao thức SSL.

Phương pháp nghiên cứu thực tế được triển khai trong đồ án bao gồm:

  • Phương pháp khảo sát hiện trạng: Phân tích chức năng và ưu/nhược điểm của 3 ứng dụng thương mại tiêu biểu gồm Gas24h (Công ty Cổ phần Dầu khí Miền Nam), VipGas và sàn thương mại điện tử Lazada.
  • Phương pháp phân tích và thiết kế phần mềm: Đặc tả yêu cầu chức năng, phi chức năng; xây dựng sơ đồ ca sử dụng (Use Case Diagram); thiết kế kiến trúc dữ liệu NoSQL trên Firebase.
  • Phương pháp kiểm thử phần mềm: Thực hiện kiểm thử chức năng (Functional Testing) theo các kịch bản kiểm thử (Test Cases) chi tiết trên từng màn hình giao diện.

Thiết kế và triển khai

Ứng dụng được thiết kế theo mô hình Client - Server không máy chủ truyền thống (Serverless), trong đó Flutter đóng vai trò lớp giao diện người dùng và xử lý cục bộ trên thiết bị iOS, còn Firebase đảm nhận toàn bộ việc lưu trữ dữ liệu, xác thực và đồng bộ hóa.

Cấu trúc cơ sở dữ liệu trên Firebase Realtime Database

Cơ sở dữ liệu NoSQL của hệ thống được tổ chức thành các nút JSON chính như sau:

  • Danh mục tài khoản: Lưu thông tin định danh, email, họ tên, địa chỉ giao hàng và phân quyền người dùng (Khách hàng/Admin).
  • Thông tin đặt hàng: Quản lý danh sách các đơn đặt hàng mới từ khách hàng.
  • Trạng thái xử lý đơn hàng: Theo dõi chi tiết các đơn hàng theo các trạng thái: đang chờ nhận hàng, đã nhận hàng thành công, hoặc đã bị hủy đơn.
  • Đánh giá và bình luận: Lưu trữ nội dung phản hồi, thời gian bình luận và đánh giá của khách hàng đối với từng sản phẩm.

Quy định nghiệp vụ và ràng buộc hệ thống

Hệ thống thiết lập hệ thống quy định nghiệp vụ chặt chẽ cho cả hai nhóm người dùng thông qua bảng mã quy định:

Mã quy định Tên quy định Mô tả chi tiết và ràng buộc Áp dụng cho
QĐ_ĐN Quy định đăng nhập Nhập chính xác Email và Mật khẩu đã đăng ký để truy cập hệ thống Khách hàng & Admin
QĐ_BLSP Quy định bình luận Phải nhập nội dung bình luận vào ô nhập liệu trước khi bấm gửi, không được để trống Khách hàng
QĐ_QMK Quy định quên mật khẩu Nhập đúng địa chỉ Email đã đăng ký để nhận liên kết/thông tin đặt lại mật khẩu Khách hàng
QĐ_ĐMK Quy định đổi mật khẩu Phải nhập đúng mật khẩu cũ; mật khẩu mới bắt buộc phải có độ dài từ 6 ký tự trở lên Khách hàng
QĐ_TKH Quy định thêm khách hàng Thêm khách hàng bằng Email; không được phép sử dụng Email đã tồn tại trong hệ thống Admin
QĐ_XKH Quy định xóa khách hàng Chỉ được quyền xóa các tài khoản có vai trò là khách hàng Admin
QĐ_SKH Quy định sửa khách hàng Được phép chỉnh sửa thông tin địa chỉ giao hàng của khách hàng Admin
QĐ_TSP Quy định thêm sản phẩm Sản phẩm thêm mới không được trùng tên/mã với sản phẩm đã có trong danh mục Admin
QĐ_SSP Quy định sửa sản phẩm Chỉ được phép chỉnh sửa các trường thông tin mô tả, giá của sản phẩm Admin
QĐ_XSP Quy định xóa sản phẩm Chỉ được xóa những sản phẩm không còn kinh doanh tại cửa hàng Admin

Bên cạnh đó, hệ thống tích hợp các thuật toán tính toán tự động: tính tổng số lượng sản phẩm trong giỏ hàng, tính tổng tiền thanh toán, tính thời gian gửi bình luận, và đặc biệt là tính toán thời gian dự kiến hết gas của khách hàng theo chu kỳ mặc định là 45 ngày.


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

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

Chương này tập trung trình bày tổng quan và phân tích kỹ thuật các công nghệ nền tảng. Nội dung làm rõ cấu trúc 2 tầng của Flutter (Application và Shell), cơ chế điều khiển của máy ảo Dart VM với hai chế độ biên dịch JIT và AOT, phân tích ưu thế không phụ thuộc OEM Widgets của Flutter so với kiến trúc Native và Hybrid. Tác giả giới thiệu chi tiết hệ thống Widget, chu trình vòng đời giữa StatelessWidget và StatefulWidget, thuật toán Diff Algorithm. Tiếp đó, chương phân tích các đặc trưng của ngôn ngữ Dart (chuẩn ECMA-408, Type-safe, Garbage Collection, xử lý Future/Stream) và các dịch vụ cốt lõi của Google Firebase (Realtime Database NoSQL JSON, Firebase Authentication, SSL).

Chương 2: Khảo sát hiện trạng và xác định yêu cầu

Tác giả tiến hành khảo sát thực tế 3 ứng dụng: Gas24h (đặt hàng trực tuyến, tìm đại lý qua GPS, quét mã QR), VipGas (đặt gas nhanh qua một thao tác, xác nhận qua tổng đài), và Lazada (tìm kiếm sản phẩm, giỏ hàng, liên kết mạng xã hội). Dựa trên kết quả khảo sát, chương xác định các yêu cầu chức năng nghiệp vụ (Lưu trữ, Tra cứu, Tính toán, Kết xuất), yêu cầu chức năng hệ thống dành cho Khách hàng và Admin, yêu cầu phi chức năng (tính tiến hóa, tính tiện dụng, tính hiệu quả, tính tương thích trên thiết bị iOS, tính tái sử dụng của mã nguồn), đồng thời xây dựng sơ đồ Use Case cho từng phân hệ.

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

Chương 3 trình bày chi tiết toàn bộ thiết kế kiến trúc dữ liệu và giao diện người dùng. Về dữ liệu, chương mô tả mô hình NoSQL trên Firebase với các nút lưu trữ tài khoản, giỏ hàng, đơn hàng và bình luận. Về giao diện, chương cung cấp thiết kế màn hình kèm bảng mô tả thành phần UI và bảng mô tả logic xử lý sự kiện tương ứng cho:

  • Màn hình khởi đầu, Đăng nhập, Đăng ký, Quên mật khẩu.
  • Trang chủ khách hàng (phân loại theo danh mục: Bình gas, Bếp gas, Phụ kiện), Menu tùy chọn.
  • Màn hình chi tiết sản phẩm và gửi đánh giá/bình luận.
  • Màn hình Giỏ hàng và màn hình Thanh toán.
  • Trang chủ Admin, màn hình chi tiết đơn hàng của Admin và Menu quản trị hệ thống.

Chương 4: Cài đặt và kiểm thử

Chương này mô tả quá trình thiết lập môi trường phát triển trên iOS và thực thi kiểm thử chức năng cho từng màn hình thông qua các bảng ca kiểm thử (Bảng 23 đến Bảng 29): kiểm thử màn hình Đăng nhập, Trang chủ và thông tin Khách hàng, Trang chủ và thông tin Admin, Giỏ hàng, Thanh toán, Đánh giá sản phẩm và Chi tiết đơn hàng. Kết quả kiểm thử được tổng hợp và biểu diễn qua biểu đồ đánh giá mức độ ổn định của các chức năng.


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

Kết quả chính

Đồ án đã xây dựng và cài đặt thành công ứng dụng di động quản lý mua bán gas hoàn chỉnh trên môi trường iOS bằng Flutter và Dart, kết nối backend Firebase:

  • Hoàn thiện hệ thống xác thực người dùng đa dạng: đăng nhập bằng tài khoản nội bộ (Email/Mật khẩu) và đăng nhập nhanh bằng tài khoản Google, Facebook; hỗ trợ quy trình cấp lại mật khẩu qua email tự động.
  • Xây dựng danh mục sản phẩm trực quan gồm 3 nhóm hàng hóa chính: Bình gas, Bếp gas và Phụ kiện.
  • Vận hành trơn chu quy trình đặt hàng: từ xem chi tiết sản phẩm, thêm vào giỏ hàng, chọn phương thức thanh toán đến gửi đơn hàng.
  • Xây dựng cơ chế theo dõi đơn hàng thời gian thực (đang đợi xử lý, đã nhận hàng, đã hủy đơn) và chức năng bình luận/đánh giá sản phẩm.
  • Tích hợp logic tính toán chu kỳ sử dụng gas tự động (mặc định 45 ngày) hỗ trợ người dùng theo dõi thời điểm cần đổi bình mới.
  • Xây dựng phân hệ quản trị dành cho Admin cho phép kiểm soát danh mục sản phẩm, quản lý thông tin khách hàng và cập nhật trạng thái đơn hàng.
  • Kiểm thử thành công các ca kiểm thử chức năng, đảm bảo hệ thống vận hành ổn định trên thiết bị iOS.

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

  • Ứng dụng thành công công nghệ Flutter và ngôn ngữ Dart vào bài toán thương mại điện tử thực tế dành cho mặt hàng đặc thù (gas), chứng minh tính khả thi của giải pháp phát triển ứng dụng di động hiệu năng cao với chi phí thời gian tối ưu.
  • Đề xuất mô hình kết hợp giữa kiến trúc giao diện hướng thành phần (Widget Tree) của Flutter với hệ thống cơ sở dữ liệu thời gian thực không máy chủ (Firebase Realtime Database), giúp loại bỏ sự phức tạp trong việc xây dựng và duy trì hạ tầng máy chủ backend riêng biệt.

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

Hạn chế

  • Ứng dụng mới chỉ tập trung thử nghiệm và kiểm thử chính trên nền tảng hệ điều hành iOS trong phạm vi đề tài, chưa hoàn thiện kiểm thử diện rộng trên các dòng thiết bị Android khác nhau.
  • Hệ thống thanh toán dừng lại ở mức lựa chọn hình thức và xác nhận đơn hàng, chưa tích hợp trực tiếp các cổng thanh toán điện tử trực tuyến (như ví điện tử hay thẻ ngân hàng).
  • Quy tắc phân quyền và an toàn dữ liệu chủ yếu dựa trên logic mã nguồn client và quy tắc bảo mật cơ bản của Firebase.

Hướng phát triển trong tương lai

  • Triển khai và tối ưu hóa đồng bộ ứng dụng trên hệ điều hành Android để phục vụ đa dạng đối tượng người dùng.
  • Tích hợp thêm các cổng thanh toán trực tuyến trong nước và quốc tế nhằm đa dạng hóa phương thức thanh toán.
  • Bổ sung hệ thống thông báo đẩy (Push Notifications qua Firebase Cloud Messaging) để tự động nhắc nhở khách hàng khi sắp đến chu kỳ 45 ngày hết gas hoặc thông báo trạng thái đơn hàng tức thì.

Giá trị tham khảo

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

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Tham khảo cấu trúc hoàn chỉnh của một đồ án tốt nghiệp ứng dụng di động, từ khâu khảo sát hiện trạng, đặc tả Use Case, thiết kế cơ sở dữ liệu NoSQL đến lập bảng kiểm thử chức năng.
  • Lập trình viên phát triển ứng dụng di động: Nắm vững lý thuyết kiến trúc của Flutter (Widget Tree, Diff Algorithm, cơ chế quản lý trạng thái Stateless/Stateful, Dart VM, JIT/AOT) tại Chương 1 và cách tổ chức kết nối CSDL Firebase Realtime Database tại Chương 3.
  • Nhà phát triển các ứng dụng thương mại điện tử, bán hàng dịch vụ: Tham khảo quy trình phân tích nghiệp vụ, bảng thiết kế thành phần giao diện và các bộ quy định ràng buộc dữ liệu (Bảng 1 - Bảng 4) để áp dụng cho các hệ thống quản lý bán hàng tương tự.

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

1. Đồ án giải quyết vấn đề thực tiễn nào trong thị trường kinh doanh gas?

Đề tài giải quyết tình trạng người tiêu dùng thiếu thông tin về các chủng loại, mẫu mã gas trên thị trường và đối mặt với nguy cơ gas giả, gas kém chất lượng. Ứng dụng cung cấp kênh đặt gas trực tuyến minh bạch, hiển thị thông tin rõ ràng về bình gas, bếp gas, phụ kiện, đồng thời cho phép khách hàng đọc và gửi đánh giá thực tế về sản phẩm.

2. Vì sao nhóm tác giả lựa chọn Flutter và Dart để phát triển ứng dụng thay vì các nền tảng khác?

Flutter và Dart được chọn vì khả năng kết hợp giữa tốc độ phát triển nhanh (Fast Development qua tính năng Hot Reload nhờ cơ chế biên dịch JIT) và hiệu năng gốc (Native Performance nhờ biên dịch AOT sang mã máy ARM/x86). Ngoài ra, Flutter tự vẽ giao diện trực tiếp lên Canvas mà không phụ thuộc vào OEM Widgets hay cầu nối JavaScript Bridge, giúp giao diện hiển thị mượt mà và nhất quán.

3. Cơ sở dữ liệu của ứng dụng được tổ chức như thế nào trên Firebase Realtime Database?

Cơ sở dữ liệu được tổ chức dưới dạng cấu trúc cây JSON phi quan hệ (NoSQL), chia thành các nhánh dữ liệu riêng biệt: danh sách tài khoản người dùng, thông tin đơn hàng mới của khách hàng, danh sách đơn hàng theo các trạng thái (đang chờ, đã nhận, đã hủy), danh mục sản phẩm và dữ liệu đánh giá/bình luận sản phẩm.

4. Ứng dụng có chức năng tính toán tự động nào đặc thù cho nghiệp vụ bán gas?

Bên cạnh việc tự động tính tổng số lượng sản phẩm trong giỏ hàng và tổng số tiền thanh toán, ứng dụng có chức năng tính toán thời gian hết gas dự kiến của khách hàng với chu kỳ mặc định được thiết lập là 45 ngày, giúp hỗ trợ theo dõi và quản lý nhu cầu sử dụng.

5. Quá trình kiểm thử phần mềm được tiến hành trên những phân hệ nào?

Kiểm thử chức năng được tiến hành chi tiết trên 7 phân hệ giao diện chính: màn hình Đăng nhập, màn hình Trang chủ và thông tin Khách hàng, màn hình Trang chủ và thông tin Admin, màn hình Giỏ hàng, màn hình Thanh toán, màn hình Đánh giá sản phẩm và màn hình Chi tiết đơn hàng của Admin.


Kết luận

Đồ án "Phát triển ứng dụng quản lý mua bán gas trên iOS - Sử dụng ngôn ngữ Dart trên nền tảng Flutter" đã giải quyết thành công bài toán xây dựng một giải pháp thương mại điện tử di động chuyên biệt cho lĩnh vực kinh doanh khí đốt. Nhóm tác giả đã làm chủ quy trình phát triển ứng dụng di động với công nghệ Flutter/Dart kết hợp dịch vụ đám mây Firebase Realtime Database, hoàn thành đầy đủ các phân hệ chức năng cho cả người mua và người quản trị. Kết quả kiểm thử trên môi trường iOS chứng minh tính ổn định, tiện dụng và khả năng mở rộng của phần mềm trong thực tế.