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

Đồ án tốt nghiệp "Xây dựng App đặt đồ ăn" được sinh viên Nguyễn Văn Huy (mã sinh viên: 520100048), dưới sự hướng dẫn của giảng viên Đỗ Thanh Bình, thực hiện tại Khoa Công nghệ thông tin & Truyền thông thuộc Trường Đại học Phương Đông trong năm học 2023 – 2024. Đề tài tập trung vào việc nghiên cứu và xây dựng một phần mềm ứng dụng trên nền tảng di động nhằm số hóa hoạt động đặt và quản lý món ăn cho các cơ sở kinh doanh dịch vụ ăn uống.

Về bối cảnh thực tiễn, tác giả chỉ ra rằng cuộc Cách mạng công nghiệp 4.0 và sự phát triển của công nghệ thông tin đã thúc đẩy sự gia tăng trong việc sử dụng các thiết bị di động thông minh. Trong ngành dịch vụ ẩm thực, mô hình đặt hàng trực tuyến trở thành xu hướng tất yếu khi số lượng và quy mô của các nhà hàng ngày càng mở rộng. Việc áp dụng ứng dụng di động giúp giải quyết vấn đề tồn đọng trong phương thức vận hành truyền thống, cụ thể là giảm thiểu tối đa việc ghi nhớ đơn đặt hàng thủ công của nhân viên, hỗ trợ nhà hàng kiểm soát dữ liệu chính xác và mang lại trải nghiệm linh hoạt hơn cho thực khách.

Mục tiêu nghiên cứu của đồ án được xác định rõ:

  1. Xây dựng một ứng dụng di động đơn giản và hiệu quả, cho phép người tiêu dùng đặt đồ ăn từ các nhà hàng, quán ăn một cách nhanh chóng và thuận tiện.
  2. Cung cấp tiện ích quản lý đơn hàng và hoạt động kinh doanh cho các chủ nhà hàng, quán ăn.

Phạm vi nghiên cứu của đồ án bao gồm:

  • Thiết kế giao diện người dùng đáp ứng tiêu chí dễ thao tác.
  • Phát triển hệ thống đặt hàng trực tuyến và hỗ trợ thanh toán điện tử.
  • Xây dựng cơ sở dữ liệu quản lý thông tin nhà hàng và thực đơn.
  • Tích hợp tính năng định vị vị trí để hỗ trợ tìm kiếm các cơ sở ẩm thực lân cận người dùng.

Ý nghĩa thực tiễn của đề tài được phân tách thành hai khía cạnh: đối với khách hàng, ứng dụng mở rộng sự lựa chọn ẩm thực tại nhiều địa điểm, hỗ trợ theo dõi phản hồi để kiểm chứng an toàn thực phẩm; đối với nhà hàng, ứng dụng đóng vai trò là kênh quảng bá thương hiệu, gia tăng doanh số và tự động hóa quy trình quản lý đơn hàng.

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

Đồ án xây dựng dựa trên nền tảng lý thuyết phát triển phần mềm di động, kiến trúc hệ điều hành và kỹ thuật mô hình hóa hệ thống thông tin. Các cơ sở lý thuyết, công nghệ và công cụ được tác giả sử dụng bao gồm:

  • Hệ điều hành Android: Hệ điều hành mã nguồn mở dựa trên nhân Linux (Kernel 2.6). Đồ án nghiên cứu sâu kiến trúc 4 tầng của Android: tầng nhân Linux (Linux Kernel) cung cấp driver phần cứng và quản lý tiến trình; tầng thư viện gốc (Native Libraries) bằng C/C++ (libc, Media Libraries OpenCORE, Surface Manager, LibWebCore WebKit, SGL, thư viện đồ họa 3D OpenGL ES 1.0, FreeType, SQLite); tầng môi trường thực thi (Android Runtime) vận hành trên máy ảo Dalvik VM xử lý các tệp định dạng tối ưu .dex; tầng khung ứng dụng (Application Framework) cung cấp các khối xây dựng như View UI, Providers, Resource Manager, Notification Manager và Activity Manager.
  • Thành phần và vòng đời ứng dụng: Nghiên cứu 4 thành phần ứng dụng cơ bản gồm Activity, Service, Broadcast Receiver, Content Provider và cơ chế truyền thông điệp Intent. Phân tích chu kỳ sống của Activity qua 4 trạng thái (Active/Running, Paused, Stopped, Killed) và 6 phương thức nạp/hủy tài nguyên (onCreate, onStart, onResume, onPause, onStop, onDestroy) vận hành theo cơ chế ngăn xếp Activity Stack.
  • Môi trường và công nghệ hỗ trợ:
    • Môi trường phát triển tích hợp Android Studio và hệ thống tự động hóa xây dựng phần mềm Gradle (build.gradle / build.kts).
    • Phần mềm ảo hóa Oracle VM VirtualBox (nền tảng ảo hóa loại 2) hỗ trợ tạo máy ảo độc lập, chụp trạng thái Snapshot và tối ưu hiệu suất với Guest Additions.
    • Công cụ quản trị cơ sở dữ liệu phpMyAdmin trên nền web viết bằng PHP dùng để quản lý hệ quản trị MySQL, xử lý các truy vấn SQL, cấu trúc bảng, nhập/xuất và sao lưu dữ liệu.
    • Nền tảng dịch vụ phụ trợ Firebase (Backend-as-a-Service của Google) với các dịch vụ Real-time Database, Authentication, Firebase Cloud Messaging (FCM), Firebase Database Query và Remote Config.
  • Phương pháp phân tích và thiết kế:
    • Phương pháp phân tích chức năng thông qua Sơ đồ phân cấp chức năng và Sơ đồ ngữ cảnh (Context Diagram).
    • Phương pháp mô hình hóa hướng đối tượng bằng ngôn ngữ UML (Unified Modeling Language), gồm sơ đồ trường hợp sử dụng (Use Case Diagram), biểu đồ hoạt động (Activity Diagram), biểu đồ tuần tự (Sequence Diagram), biểu đồ lớp (Class Diagram) và mô hình thực thể mối quan hệ (ERD).

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình ứng dụng di động kết nối cơ sở dữ liệu máy chủ, phân định rõ ràng quyền hạn giữa hai nhóm đối tượng: Khách hàng (người dùng) và Quản trị viên (nhà hàng).

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu của ứng dụng được xây dựng thông qua hệ thống các bảng dữ liệu có cấu trúc cụ thể như sau:

Tên bảng Thuộc tính Kiểu dữ liệu Kích thước Loại khóa Diễn giải chức năng
FOOD Tenmonan Nvarchar 50 Primary Key Tên món ăn (định danh món)
Gia Nvarchar 50 Đơn giá món ăn
Trangthai Nvarchar 30 Trạng thái phục vụ của món
Mota Nvarchar 100 Mô tả chi tiết món ăn
Hinhanh Nvarchar 50 Đường dẫn hình ảnh hiển thị
DONHANG Madonhang Nvarchar 10 Primary Key Mã định danh đơn đặt hàng
Email Nvarchar 50 Địa chỉ thư điện tử người đặt
Hoten Nvarchar 50 Họ và tên khách hàng
Sdt Nvarchar 10 Số điện thoại liên hệ nhận hàng
Diachi Nvarchar 100 Địa chỉ giao nhận món ăn
Tenmonan Nvarchar 50 Tên món ăn trong đơn hàng
Ngaydathang Date Thời gian thực hiện đặt hàng
Giatien Nvarchar 50 Tổng số tiền thanh toán
DANHGIA Hoten Nvarchar 50 Họ tên người gửi phản hồi
Sdt Nvarchar 10 Số điện thoại người gửi
Email Nvarchar 50 Thư điện tử người đánh giá
Binhluan Nvarchar 200 Nội dung đánh giá, góp ý
TAIKHOAN Email Nvarchar 50 Tên đăng nhập tài khoản
Matkhau Nvarchar 50 Mật khẩu truy cập hệ thống
Chucvu Nvarchar 10 Phân quyền vai trò người dùng

Thiết kế chức năng hệ thống

Hệ thống phân rã các yêu cầu nghiệp vụ thành các ca sử dụng cụ thể:

  • Phân hệ người dùng: Cung cấp tính năng đăng ký tài khoản mới (yêu cầu email, mật khẩu, họ tên, địa chỉ, số điện thoại); đăng nhập hệ thống và chức năng khôi phục/đổi mật khẩu qua email; hiển thị danh sách thực đơn đi kèm tính năng tìm kiếm món ăn theo từ khóa hoặc lọc danh mục; giỏ hàng trực tuyến cho phép thêm, xóa, tăng giảm số lượng sản phẩm; xác nhận đặt hàng với chi tiết người nhận và tổng tiền; tra cứu lịch sử trạng thái đơn hàng; gửi ý kiến phản hồi và đánh giá món ăn.
  • Phân hệ quản trị viên: Tiếp nhận tài khoản phân quyền quản trị; quản lý danh mục món ăn (thêm mới, cập nhật, xóa, duyệt thông tin); quản lý đơn đặt hàng với việc theo dõi các trạng thái xử lý (hủy đơn, đổi món, đã order, thanh toán thành công); kiểm duyệt phản hồi khiếu nại từ khách hàng; kết xuất báo cáo thống kê tổng số lượng đơn hàng và doanh thu tích lũy.

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

Lời mở đầu

Chương này thiết lập tính cấp thiết của đề tài trong bối cảnh phát triển công nghệ 4.0 và xu thế tiêu dùng trực tuyến. Tác giả trình bày các hạn chế của việc ghi chép đơn hàng bằng tay tại các cơ sở kinh doanh ăn uống, từ đó xác lập mục tiêu, phạm vi phát triển giao diện, quản lý cơ sở dữ liệu và ý nghĩa thực tiễn của phần mềm đối với cả người tiêu dùng lẫn các đơn vị vận hành nhà hàng.

Chương 1. Giới thiệu về Android

Tác giả hệ thống hóa lịch sử hình thành hệ điều hành Android từ giai đoạn khởi đầu của công ty Android Inc. với các nhân sự chủ chốt (Andy Rubin, Rick Miner, Nick Sears, Chris White), việc Google mua lại vào năm 2005, sự thành lập Liên minh Thiết bị cầm tay Mở (Open Handset Alliance) cuối năm 2007 gồm 34 đơn vị công nghệ, cho đến các mốc ra mắt thiết bị phần cứng T-Mobile G1 (11/2007), Android Dev Phone 1 (2008) và bản cập nhật SDK 1.5 (04/2009). Đi sâu vào khía cạnh kỹ thuật, chương này giải thích kiến trúc nền tảng 4 tầng của Android chạy trên nhân Linux 2.6, phân tích cơ chế hoạt động của máy ảo Dalvik VM trong việc thực thi mã .dex sau khi biên dịch từ mã nguồn Java thông qua công cụ DX tool, cùng hệ thống thư viện C/C++ nền tảng.

Chương 2. Môi trường lập trình

Chương 2 mô tả chi tiết các công cụ kỹ thuật phục vụ việc phát triển ứng dụng di động:

  • Cấu trúc dự án trên Android Studio với các thư mục chuyên biệt (manifests chứa AndroidManifest.xml, java chứa mã nguồn và kiểm thử JUnit, res chứa tài nguyên giao diện), đi kèm hệ thống biên dịch Gradle sử dụng tệp build.gradle hoặc build.kts.
  • Khảo sát các thành phần then chốt của ứng dụng (Activity, Service, Broadcast Receiver, Content Provider, Intent) và cơ chế chuyển đổi giữa các trạng thái trong chu kỳ sống của Activity.
  • Giới thiệu phần mềm ảo hóa Oracle VM VirtualBox với các đặc tính hỗ trợ thử nghiệm như quản lý nhóm máy ảo (VM Groups), tạo bản sao lưu trạng thái tức thời (Snapshots) và tăng cường tương tác phần cứng với Guest Additions.
  • Trình bày công cụ phpMyAdmin dùng cho việc quản lý cơ sở dữ liệu MySQL, phân tích các thao tác tạo bảng, truy vấn SQL, quy trình Import/Export và chỉ ra hạn chế cố hữu về tính an toàn trong sao lưu thủ công.
  • Khảo sát nền tảng đám mây Firebase của Google (phát triển từ tiền thân Envolve), phân tích 5 dịch vụ cốt lõi gồm cơ sở dữ liệu thời gian thực (Real-time Database), xác thực người dùng (Authentication), hệ thống gửi thông báo (Firebase Cloud Messaging), truy vấn dữ liệu (Firebase Database Query) và cấu hình ứng dụng từ xa không cần phát hành lại (Remote Config).

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

Chương 3 là phần trọng tâm kỹ thuật của đồ án, tập trung vào việc mô hình hóa bài toán nghiệp vụ cho người dùng và quản trị viên. Tác giả xây dựng Sơ đồ ngữ cảnh và Sơ đồ phân cấp chức năng nhằm xác định rõ ranh giới hệ thống. Tiến trình phân tích được cụ thể hóa bằng hệ thống các biểu đồ UML:

  • Sơ đồ Use Case tổng quát và các Use Case chi tiết cho từng tác vụ: đăng nhập, xem danh sách món ăn, quản lý giỏ hàng, quản lý món ăn và quản lý đơn đặt hàng.
  • Biểu đồ hoạt động (Activity Diagram) thể hiện luồng xử lý tuần tự và rẽ nhánh của các nghiệp vụ: đăng nhập, đăng ký, giỏ hàng, quản lý món ăn và đơn hàng.
  • Biểu đồ tuần tự (Sequence Diagram) mô tả các thông điệp trao đổi theo thời gian giữa người dùng, giao diện và hệ thống xử lý nội bộ.
  • Xây dựng mô hình thực thể liên kết (ERD) và biểu đồ lớp (Class Diagram) làm cơ sở triển khai cấu trúc 4 bảng dữ liệu vật lý (FOOD, DONHANG, DANHGIA, TAIKHOAN). Chương này kết thúc bằng phần thiết kế giao diện ứng dụng và tổng kết kết quả đạt được.

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

Về kết quả thực nghiệm, đồ án đã hoàn thành các nội dung chính sau:

  • Về mặt kiến thức: Tác giả đã tổng hợp và làm chủ quy trình phân tích thiết kế hệ thống phần mềm dựa trên chuẩn mô hình hóa UML; nắm vững kiến trúc hệ điều hành Android, cơ chế quản lý bộ nhớ của máy ảo Dalvik và vòng đời xử lý của các thành phần trong Activity Stack; hiểu rõ nguyên lý vận hành của các công cụ phát triển phần mềm gồm Android Studio, máy ảo Oracle VM VirtualBox, công cụ quản trị MySQL qua phpMyAdmin và các dịch vụ đám mây thời gian thực của Firebase.
  • Về mặt sản phẩm chương trình: Ứng dụng di động đặt đồ ăn được thiết kế với giao diện cơ bản và hoàn thiện các luồng chức năng đặt hàng cho người dùng (đăng ký, đăng nhập, tìm kiếm theo từ khóa, xem thực đơn, thao tác giỏ hàng, lưu đơn và xem lịch sử đơn) cùng các luồng quản trị cho nhà hàng (thêm, sửa, xóa món ăn; theo dõi đơn hàng với 4 trạng thái: hủy, đổi món, đã order, thanh toán thành công; tiếp nhận phản hồi và thống kê doanh thu). Cơ sở dữ liệu vật lý được thiết lập hoàn chỉnh với 4 bảng dữ liệu phục vụ lưu trữ nghiệp vụ.

Về mặt đóng góp giải pháp, đồ án đã đưa ra một thiết kế khả thi để tự động hóa khâu xử lý đơn hàng tại các nhà hàng quy mô vừa và nhỏ, hạn chế tình trạng sót đơn hoặc sai sót do ghi chép bằng tay. Đồng thời, việc tích hợp chức năng phản hồi giúp xây dựng một kênh thông tin hai chiều, cho phép thực khách đánh giá trực tiếp chất lượng món ăn và hỗ trợ người dùng khác đưa ra quyết định tiêu dùng an toàn.

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

Dựa trên các dữ liệu kỹ thuật được công bố trong tài liệu đồ án, một số điểm hạn chế và vấn đề tồn tại có thể ghi nhận gồm:

  • Thiết kế cơ sở dữ liệu chưa tối ưu chuẩn hóa: Bảng FOOD sử dụng thuộc tính Tenmonan làm khóa chính (Primary Key), có thể gây trùng lặp hoặc khó khăn khi mở rộng danh mục nếu có các món ăn trùng tên nhưng khác biến thể; kiểu dữ liệu của các trường giá tiền (Gia, Giatien) và số điện thoại (Sdt) đang được gán định dạng chuỗi ký tự (Nvarchar) thay vì các kiểu số học hoặc kiểu chuyên dụng cho tính toán tài chính; bảng DANHGIA chưa được thiết lập trường khóa chính riêng biệt để quản lý định danh bản ghi.
  • Phạm vi tính năng chưa đồng bộ với triển khai: Tài liệu đặt ra phạm vi ban đầu gồm thanh toán điện tử và tích hợp định vị tìm kiếm quán ăn xung quanh người dùng, tuy nhiên trong phần đặc tả CSDL và biểu đồ ca sử dụng, các chức năng này chưa được mô tả chi tiết bằng các API kết nối cụ thể (như Google Maps API hay cổng thanh toán trung gian).
  • Thiếu kiểm thử định lượng: Văn bản báo cáo chưa cung cấp các bảng số liệu đo kiểm hiệu năng thực tế, mức độ chiếm dụng tài nguyên hệ thống, độ trễ đồng bộ của cơ sở dữ liệu hoặc kết quả thử nghiệm trên nhiều thiết bị thực tế khác nhau.

Hướng phát triển tiếp theo được đặt ra từ phạm vi đề tài là hoàn thiện module định vị GPS theo vị trí người dùng, tích hợp cổng thanh toán trực tuyến chính thức, chuẩn hóa lại lược đồ cơ sở dữ liệu quan hệ và áp dụng cơ chế xác thực bảo mật tài khoản nâng cao.

Giá trị tham khảo

Báo cáo đồ án là tài liệu học thuật phù hợp cho sinh viên các ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin, đặc biệt là những người mới bắt đầu tiếp cận quy trình xây dựng ứng dụng di động trên nền tảng Android.

Các nội dung có giá trị tham khảo ứng dụng cao bao gồm:

  • Quy trình phân tích thiết kế hệ thống bằng UML: Các sơ đồ Use Case, Activity Diagram và Sequence Diagram được phân tích theo từng chức năng nghiệp vụ cụ thể (đăng ký, giỏ hàng, quản lý đơn hàng) cung cấp mẫu tham khảo rõ ràng cho sinh viên thực hiện các đồ án cơ sở ngành hoặc khóa luận tốt nghiệp về thương mại điện tử di động.
  • Phần tổng quan lý thuyết về kiến trúc 4 tầng của Android và chi tiết vòng đời Activity cùng các phương thức nạp tài nguyên, đóng vai trò như tài liệu tổng hợp kiến thức nền tảng có hệ thống cho người học lập trình Android.

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

1. Ứng dụng đặt đồ ăn trong đồ án này phục vụ những nhóm đối tượng người dùng nào và mỗi nhóm có quyền hạn gì?
Hệ thống phân định hai nhóm đối tượng: Người dùng (khách hàng) có quyền đăng ký, đăng nhập, tìm kiếm món ăn, quản lý giỏ hàng, xác nhận đặt món, xem lịch sử đơn hàng và gửi đánh giá; Quản trị viên (nhà hàng) sử dụng tài khoản được cấp quyền để cập nhật danh mục món ăn (thêm, sửa, xóa), theo dõi và chuyển đổi trạng thái đơn hàng (hủy, đổi món, đã order, thanh toán thành công), xem ý kiến phản hồi và xem báo cáo thống kê doanh thu.

2. Kiến trúc hệ điều hành Android được trình bày trong đồ án gồm những tầng nào và cơ chế hoạt động của máy ảo Dalvik ra sao?
Kiến trúc Android gồm 4 tầng: Tầng nhân Linux (Linux Kernel 2.6), tầng Native Libraries (thư viện C/C++), tầng Android Runtime và tầng Application Framework. Trong đó, mỗi ứng dụng Android vận hành trên một tiến trình riêng của máy ảo Dalvik VM. Dalvik VM thực thi các tệp định dạng .dex (Dalvik Executable) được tối ưu hóa vùng nhớ nhỏ nhất, chuyển đổi từ các lớp Java đã biên dịch thông qua công cụ DX tool.

3. Cơ sở dữ liệu của ứng dụng lưu trữ thông tin qua những bảng nào và có những trường dữ liệu nào đáng chú ý?
Cơ sở dữ liệu gồm 4 bảng: Bảng FOOD (Tenmonan - khóa chính, Gia, Trangthai, Mota, Hinhanh); bảng DONHANG (Madonhang - khóa chính, Email, Hoten, Sdt, Diachi, Tenmonan, Ngaydathang, Giatien); bảng DANHGIA (Hoten, Sdt, Email, Binhluan); và bảng TAIKHOAN (Email, Matkhau, Chucvu).

4. Chu kỳ sống của một Activity trong Android trải qua những trạng thái nào và các phương thức chuyển tiếp cơ bản là gì?
Chu kỳ sống của Activity được hệ thống quản lý theo cơ chế Activity Stack với 4 trạng thái: Active (Running), Paused, Stopped và Killed. Quá trình chuyển đổi trạng thái diễn ra thông qua 6 phương thức vòng đời cốt lõi: onCreate() (khởi tạo giao diện), onStart() (hiển thị ứng dụng), onResume() (đưa ứng dụng lên tiền cảnh), onPause() (tạm dừng khi mất focus), onStop() (ẩn hoàn toàn) và onDestroy() (giải phóng toàn bộ tài nguyên trước khi tiến trình bị kết thúc).

5. Các dịch vụ nổi bật của nền tảng Firebase được đồ án giới thiệu để hỗ trợ phát triển ứng dụng di động là gì?
Đồ án khảo sát 5 dịch vụ chính của Firebase gồm: Real-time Database (lưu trữ và đồng bộ dữ liệu thời gian thực trên đám mây, hỗ trợ lưu trữ cục bộ khi ngoại tuyến), Authentication (xác thực qua email, số điện thoại, tài khoản Google, Facebook), Firebase Cloud Messaging - FCM (gửi thông báo và tin nhắn đến các thiết bị mà không cần mã hóa phức tạp), Firebase Database Query (đơn giản hóa truy vấn dữ liệu thay thế câu lệnh SQL) và Remote Config (cập nhật bố cục, giao diện từ máy chủ mà không cần tải bản dựng mới lên kho ứng dụng).

Kết luận

Đồ án tốt nghiệp "Xây dựng App đặt đồ ăn" của sinh viên Nguyễn Văn Huy đã hoàn thành việc mô hình hóa và xây dựng một giải pháp phần mềm đặt món trực tuyến trên hệ điều hành Android. Đề tài kết hợp việc phân tích thiết kế hệ thống theo chuẩn UML với việc khảo sát kiến trúc công nghệ Android, Android Studio, phpMyAdmin và Firebase. Mặc dù cấu trúc cơ sở dữ liệu còn đơn giản và cần hoàn thiện thêm các tính năng thanh toán cũng như kiểm thử hiệu năng, công trình vẫn mang lại giá trị tham khảo thiết thực về mặt phương pháp luận và kỹ thuật lập trình ứng dụng di động cho sinh viên chuyên ngành Công nghệ thông tin.