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

Đề tài "NTN - Ứng dụng đặt đồ ăn online" (được thực hiện dưới dạng Báo cáo Đồ án cơ sở 3 tại Khoa Khoa học Máy tính, Trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn) do sinh viên Nguyễn Thị Ngọc thực hiện dưới sự hướng dẫn của Th.S Đỗ Công Đức vào tháng 5 năm 2024. Báo cáo tập trung vào việc phân tích, thiết kế và xây dựng một ứng dụng di động tích hợp chức năng đặt món ăn trực tuyến kết hợp tra cứu, lưu trữ công thức nấu ăn.

Bối cảnh thực tiễn được tác giả xác định xuất phát từ nhu cầu tiếp cận các dịch vụ ăn uống và tra cứu công thức chế biến món ăn trên thiết bị di động ngày càng phổ biến. Để đáp ứng trải nghiệm người dùng trong việc tìm kiếm, lựa chọn món ăn và quản lý đơn hàng một cách thuận tiện, việc phát triển một hệ thống ứng dụng chuyên biệt có tính tương tác cao và quản lý dữ liệu chặt chẽ là một yêu cầu thực tế trong lĩnh vực công nghệ thông tin.

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

  1. Nghiên cứu nền tảng lý thuyết về ngôn ngữ lập trình Kotlin và hệ quản trị cơ sở dữ liệu SQLite trong phát triển ứng dụng di động.
  2. Phân tích các yêu cầu chức năng và phi chức năng của hệ thống đặt món ăn trực tuyến và quản lý công thức nấu ăn.
  3. Thiết kế hệ thống thông tin thông qua ngôn ngữ mô hình hóa thống nhất (UML), bao gồm các biểu đồ Use Case, Class Diagram, Sequence Diagram, Activity Diagram và Communication Diagram.
  4. Xây dựng mô hình cơ sở dữ liệu quan hệ cho người dùng và quản trị viên theo quy trình thiết kế chuẩn 5 bước.
  5. Triển khai cài đặt giao diện người dùng và các chức năng cơ bản của ứng dụng trên nền tảng Android bằng Kotlin và SQLite.

Đố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 đồ ăn online, tra cứu thông tin món ăn/công thức nấu ăn, và quy trình phân tích thiết kế hệ thống phần mềm hướng đối tượng.
  • Phạm vi không gian và công nghệ: Ứng dụng di động hoạt động trên nền tảng Android, sử dụng ngôn ngữ Kotlin để xây dựng giao diện/xử lý logic và SQLite làm cơ sở dữ liệu nội bộ.
  • Phạm vi thời gian: Đồ án được hoàn thành và nghiệm thu vào tháng 5 năm 2024 tại thành phố Đà Nẵng.

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

Đồ án vận dụng các khái niệm kỹ thuật và công nghệ cốt lõi trong phát triển phần mềm di động:

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

  • Ngôn ngữ lập trình Kotlin: Ngôn ngữ lập trình đa nền tảng do JetBrains phát triển, có khả năng tương thích hoàn toàn với Java. Tác giả dựa trên các đặc tính kỹ thuật của Kotlin như cơ chế an toàn kiểu (Type Safety), Null Safety, hỗ trợ lập trình hướng đối tượng (kế thừa, đa hình, đóng gói) kết hợp các tính năng của lập trình hàm (hàm bậc cao - higher-order functions, biểu thức lambda, toán tử chuyển đổi, data classes, extension functions).
  • Hệ quản trị cơ sở dữ liệu SQLite: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) nhỏ gọn, tự chứa (self-contained), không cần máy chủ riêng biệt (serverless), cấu hình bằng không (zero-configuration). SQLite lưu trữ toàn bộ dữ liệu trong một tệp duy nhất, hỗ trợ các truy vấn SQL tiêu chuẩn, khóa ngoài, chỉ mục và cơ chế giao dịch có tính tin cậy cao trên môi trường nhúng/di động.

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

  • Phương pháp phân tích và mô hình hóa hệ thống bằng UML: Sử dụng các loại biểu đồ chuẩn để đặc tả hành vi và cấu trúc của hệ thống, bao gồm:
    • Biểu đồ Use Case và bảng đặc tả Use Case chi tiết.
    • Biểu đồ lớp (Class Diagram).
    • Biểu đồ tuần tự (Sequence Diagram).
    • Biểu đồ hoạt động (Activity Diagram).
    • Biểu đồ giao tiếp (Communication Diagram).
  • Phương pháp thiết kế cơ sở dữ liệu: Áp dụng quy trình 5 bước chặt chẽ nhằm tránh dư thừa dữ liệu:
    • Bước 1: Xác định mục tiêu khai thác cơ sở dữ liệu.
    • Bước 2: Xác định các bảng dữ liệu cần thiết từ các đối tượng thông tin.
    • Bước 3: Xác định các trường (attributes) và kiểu dữ liệu cho từng bảng.
    • Bước 4: Xác định các mối quan hệ giữa các bảng.
    • Bước 5: Tinh chế, hiệu chỉnh thiết kế thông qua việc nhập bản ghi thử nghiệm và kiểm tra truy xuất.
  • Nguồn dữ liệu tham khảo: Dữ liệu kỹ thuật trích xuất từ các tài liệu học thuật và hướng dẫn lập trình trực tuyến về API, biểu đồ trạng thái và biểu đồ hoạt động trong UML (Bizfly Cloud, AWS, Viblo, Codelearn, iVietTech).

Thiết kế và triển khai

Hệ thống được thiết kế phục vụ hai tác nhân chính là Khách hàng và Quản trị viên (Admin) với các ca sử dụng (Use Case) và cấu trúc dữ liệu được chuẩn hóa.

1. Phân rã tác nhân và chức năng hệ thống

Tác nhân Danh sách chức năng / Use Case
Khách hàng Đăng ký tài khoản, Đăng nhập, Tìm kiếm công thức mong muốn/món ăn, Tìm kiếm theo bộ lọc, Tìm kiếm trên danh mục, Xem chi tiết món ăn, Thêm vào thư viện (ghi chú), Xem thư viện (ghi chú), Đặt mua món ăn (đặt hàng), Thanh toán (trực tiếp hoặc trực tuyến), Đánh giá chất lượng công thức/món ăn, Chỉnh sửa thông tin tài khoản.
Quản trị viên Đăng nhập Admin, Đăng bán các công thức/món ăn, Kiểm duyệt các đơn đặt hàng, Duyệt các đánh giá từ khách hàng, Xóa tài khoản khách hàng vi phạm, Viết và đăng tải các tin tức/khuyến mãi lên Blog.

2. Mô hình cơ sở dữ liệu (SQLite)

Hệ thống định nghĩa các bảng dữ liệu lưu trữ thông tin thực thể, tiêu biểu với cấu trúc các trường được chi tiết trong văn bản:

Bảng 2.1: Bảng user

Tên trường (Name) Kiểu dữ liệu (Type) Cho phép NULL Chú thích
hoten nvarchar(20) No Họ và tên người dùng
gioitinh nvarchar(10) No Giới tính
Gmail nvarchar(30) No Địa chỉ thư điện tử
CCCD varchar(20) No Căn cước công dân
SDT varchar(10) No Số điện thoại
ngaysinh varchar(10) No Ngày tháng năm sinh

Bảng 2.2: Bảng quản trị viên

Tên trường (Name) Kiểu dữ liệu (Type) Cho phép NULL Chú thích
hoten nvarchar(20) No Họ và tên quản trị viên
gioitinh nvarchar(10) No Giới tính
Gmail nvarchar(30) No Địa chỉ thư điện tử
CCCD nvarchar(10) No Căn cước công dân
SDT varchar(10) No Số điện thoại
ngaysinh varchar(10) No Ngày tháng năm sinh

3. Quy trình thực hiện nghiệp vụ chính (Đặc tả luồng sự kiện)

  • Đăng ký: Cho phép chọn giữa luồng nhập thông tin cá nhân thủ công (nhập form, xác nhận hệ thống) hoặc luồng liên kết tài khoản Google.
  • Đăng nhập: Xác thực email/số điện thoại và mật khẩu đối chiếu từ hệ thống; phân nhánh thành công (truy cập ứng dụng) hoặc không tìm thấy thông tin (từ chối đăng nhập).
  • Tìm kiếm và Lọc: Tìm kiếm theo từ khóa tên món ăn khớp chuỗi ký tự; tìm kiếm theo tiêu chí bộ lọc chi tiết; hoặc duyệt theo danh mục món ăn sẵn có.
  • Thanh toán: Cung cấp hai luồng rẽ nhánh: (1) Thanh toán trực tiếp khi giao hàng (tạo hóa đơn cho người giao hàng xác nhận) và (2) Thanh toán trực tuyến (kết nối tài khoản ngân hàng và xuất hóa đơn điện tử).

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

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

Chương 1 trình bày tổng quan và phân tích chuyên sâu các công nghệ nền tảng được chọn để xây dựng ứng dụng:

  • Ngôn ngữ Kotlin: Nêu bật lịch sử phát triển bởi JetBrains, vị thế là ngôn ngữ chính thức cho Android, khả năng tương thích với Java, cú pháp tinh gọn giúp giảm mã thừa, tính năng Null Safety ngăn chặn lỗi ngoại lệ con trỏ rỗng (NullPointerException), cùng các kỹ thuật lập trình hàm như lambda và hàm bậc cao.
  • Hệ thống quản lý cơ sở dữ liệu SQLite: Làm rõ 7 đặc tính kỹ thuật cơ bản gồm: tính nhỏ gọn và tự chứa trong một tệp duy nhất, tính đa nền tảng, tính tự vận hành không cần cấu hình, khả năng phục hồi dữ liệu cao khi có sự cố ghi đứt đoạn, hỗ trợ đầy đủ các lệnh SQL tiêu chuẩn, tính chất mã nguồn mở miễn phí, và định dạng phân phối thư viện đơn dễ tích hợp. Đồng thời, chương này cũng nêu rõ các giới hạn của SQLite về khả năng xử lý đồng thời và mở rộng quy mô so với các hệ quản trị lớn như MySQL hay PostgreSQL.

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

Chương 2 là phần nội dung trọng tâm của đồ án, thực hiện giải bài toán nghiệp vụ thông qua các bước mô hình hóa chi tiết:

  • Phân tích yêu cầu: Phân tích quy trình các chức năng Đăng ký tài khoản, Đăng nhập, Xem menu (hỗ trợ bộ lọc và hình ảnh minh họa), Đặt hàng (giỏ hàng, tính tổng tiền, địa chỉ giao dịch), và Theo dõi đơn hàng (cập nhật trạng thái xử lý, vận chuyển, vị trí bản đồ).
  • Phân tích thiết kế với UML:
    • Xác định và đặc tả 11 Use Case chính của Khách hàng cùng hệ thống Use Case quản lý của Quản trị viên.
    • Xây dựng Biểu đồ Use Case tổng quát (Hình 2.1) và Biểu đồ lớp Class Diagram (Hình 2.2).
    • Xây dựng hệ thống Biểu đồ tuần tự (Sequence Diagram) từ Hình 2.3 đến Hình 2.16 cho 14 chức năng nghiệp vụ (Đăng ký, Đăng nhập, Tìm kiếm, Bộ lọc, Danh mục, Chi tiết món, Thư viện, Đặt hàng, Thanh toán, Đánh giá, Chỉnh sửa thông tin, Xóa tài khoản, Viết tin Blog).
    • Xây dựng hệ thống Biểu đồ hoạt động (Activity Diagram) từ Hình 2.17 đến Hình 2.30 mô hình hóa các luồng xử lý song song và rẽ nhánh của 14 tiến trình nghiệp vụ.
    • Xây dựng hệ thống Biểu đồ giao tiếp (Communication Diagram) từ Hình 2.31 đến Hình 2.45 mô tả sự tương tác giữa các đối tượng trong 15 kịch bản chức năng.
  • Mô hình hóa cơ sở dữ liệu: Định nghĩa quy trình thiết kế chuẩn 5 bước và thiết lập bảng dữ liệu vật lý gồm Bảng user (Bảng 2.1) và Bảng quản trị viên (Bảng 2.2).

Chương 3: Xây dựng ứng dụng đặt đồ ăn online (Xây dựng ứng dụng công thức nấu ăn)

Chương 3 trình bày các kết quả xây dựng giao diện người dùng thực tế và kết nối hệ thống:

  • Minh họa các màn hình chức năng thông qua danh mục hình ảnh từ Hình 3.1 đến Hình 3.8:
    • Hình 3.1: Giao diện vào app (Splash/Entry screen).
    • Hình 3.2: Giao diện đăng ký tài khoản.
    • Hình 3.3: Giao diện đăng nhập hệ thống.
    • Hình 3.4: Giao diện màn hình chính của app.
    • Hình 3.5: Giao diện xem trước món ăn.
    • Hình 3.6: Giao diện xem chi tiết thông tin món ăn và công thức.
    • Hình 3.7: Giao diện note / lưu trữ thư viện cá nhân.
    • Hình 3.8: Giao diện quản lý thông tin tài khoản người dùng.
  • Tác giả khẳng định việc phối hợp ngôn ngữ Kotlin để xây dựng các tương tác giao diện và SQLite làm cơ sở dữ liệu nền tảng giúp ứng dụng vận hành dễ dàng đối với cả người dùng và quản trị viên.

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

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

  • Hoàn thành báo cáo phân tích thiết kế hệ thống hoàn chỉnh với hệ thống tài liệu mô hình hóa UML phong phú gồm hơn 45 biểu đồ các loại (Use Case, Class, Sequence, Activity, Communication Diagrams).
  • Thiết kế hoàn chỉnh cấu trúc cơ sở dữ liệu quan hệ cho các đối tượng người dùng và quản trị viên với các trường thông tin cụ thể.
  • Xây dựng thành công ứng dụng mẫu với các chức năng cơ bản: cho phép người dùng vào ứng dụng, đăng ký, đăng nhập, duyệt danh sách món ăn, xem mức độ khó của từng loại công thức, quản lý ghi chú/thư viện và thực hiện quy trình tạo đơn hàng.

2. Giải pháp và kiến nghị

  • Thiết kế hệ thống dữ liệu phân biệt rõ ràng giữa xử lý logic ứng dụng và lưu trữ dữ liệu nhằm hạn chế tối đa sự dư thừa dữ liệu.
  • Đề xuất áp dụng cả hai hình thức thanh toán trực tiếp (thông qua người giao hàng) và thanh toán trực tuyến (qua ngân hàng) để tối ưu hóa sự thuận tiện trong giao dịch.
  • Tích hợp tính năng bộ lọc đa tiêu chí và danh mục có sẵn để tăng tốc độ tìm kiếm món ăn cho người dùng.

3. Đóng góp tự nêu của tác giả

  • Tác giả tự đánh giá đồ án đã tạo cơ hội tiếp cận nghiệp vụ thực tế, nắm vững quy trình thiết kế và phát triển ứng dụng di động theo đúng chuẩn công nghệ.
  • Đóng góp một mô hình mẫu về việc ứng dụng kết hợp giữa ngôn ngữ Kotlin và CSDL SQLite trong bài toán xây dựng ứng dụng dịch vụ ăn uống và công thức nấu ăn ở quy mô đồ án cơ sở ngành Công nghệ thông tin.

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

1. Hạn chế của đề tài

  • Do thời gian thực hiện có hạn và hạn chế về kinh nghiệm, tác giả chưa thể hoàn thiện toàn bộ các chức năng đã thiết kế trên mô hình lý thuyết.
  • Ứng dụng hiện tại mới chỉ dừng lại ở việc hoàn thiện một số chức năng cơ bản nhất của giao diện và lưu trữ cục bộ, chưa triển khai đầy đủ các cơ chế tự động hóa phức tạp.

2. Hướng phát triển tiếp theo

  • Bổ sung, sửa đổi và hoàn thiện hệ thống giao diện người dùng theo hướng thân thiện hơn, nâng cao tính dễ sử dụng mà vẫn đảm bảo độ an toàn và bảo mật hệ thống.
  • Mở rộng thêm các tính năng có mức độ tự động hóa cao trong quy trình xử lý đơn hàng và duyệt nội dung.
  • Tích hợp phân hệ thống kê số lượng người dùng truy cập và tần suất sử dụng ứng dụng.
  • Tiếp tục phát triển và phổ biến hệ thống ứng dụng chia sẻ công thức nấu ăn và đặt món đến phạm vi người dùng rộng rãi hơn.

Giá trị tham khảo

Báo cáo Đồ án cơ sở 3 này là tài liệu tham khảo phù hợp cho:

  • Sinh viên ngành Khoa học Máy tính, Công nghệ Thông tin, Kỹ thuật Phần mềm: Những người đang thực hiện các đồ án môn học, đồ án cơ sở hoặc bước đầu tiếp cận quy trình xây dựng ứng dụng di động Android.
  • Người nghiên cứu phân tích thiết kế hệ thống thông tin: Cung cấp tài liệu tham khảo chi tiết về phương pháp xây dựng bộ tài liệu UML hoàn chỉnh từ Use Case, Class Diagram đến Sequence, Activity và Communication Diagram cho một ứng dụng di động cụ thể.
  • Lập trình viên Android nhập môn: Tham khảo cách tổ chức cơ sở dữ liệu cục bộ với SQLite và xây dựng luồng giao diện người dùng trên nền tảng Kotlin.

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

1. Ứng dụng trong đồ án sử dụng ngôn ngữ lập trình và hệ quản trị cơ sở dữ liệu nào?

Hệ thống được phát triển bằng ngôn ngữ lập trình Kotlin (do JetBrains phát triển) cho phần giao diện và logic ứng dụng, kết hợp cùng hệ quản trị cơ sở dữ liệu quan hệ SQLite để lưu trữ dữ liệu nội bộ.

2. Hệ thống phân chia bao nhiêu tác nhân (actors) chính và vai trò cụ thể là gì?

Hệ thống gồm 2 tác nhân chính:

  • Khách hàng: Người tiêu thụ, thực hiện đăng ký/đăng nhập, tìm kiếm món ăn/công thức (theo từ khóa, danh mục, bộ lọc), xem chi tiết, thêm món vào ghi chú/thư viện, đặt hàng, thanh toán và đánh giá chất lượng.
  • Quản trị viên (Admin): Người điều hành và duy trì hệ thống, thực hiện đăng tải công thức/món ăn, kiểm duyệt đơn đặt hàng, duyệt đánh giá của khách hàng, xóa tài khoản vi phạm và viết bài tin tức/khuyến mãi lên Blog.

3. Cấu trúc bảng lưu trữ thông tin người dùng (user) và quản trị viên gồm các trường nào?

Cả hai bảng user và quản trị viên đều được thiết kế gồm 6 trường thuộc tính với ràng buộc không cho phép rỗng (NOT NULL):

  • hoten (nvarchar): Họ và tên.
  • gioitinh (nvarchar): Giới tính.
  • Gmail (nvarchar): Địa chỉ email.
  • CCCD (varchar/nvarchar): Căn cước công dân.
  • SDT (varchar): Số điện thoại.
  • ngaysinh (varchar): Ngày tháng năm sinh.

4. Use Case đăng ký tài khoản hỗ trợ các luồng sự kiện nhánh nào?

Use Case đăng ký tài khoản hỗ trợ 2 luồng sự kiện nhánh:

  • Luồng nhánh A1 (Nhập thông tin cá nhân): Người dùng điền đầy đủ các thông tin cá nhân theo yêu cầu trên biểu mẫu, bấm đăng ký và nhận thông báo hoàn tất từ hệ thống.
  • Luồng nhánh A2 (Kết nối tài khoản Google): Ứng dụng thực hiện liên kết trực tiếp với tài khoản Google của người dùng để hoàn thành đăng ký.

5. Những loại biểu đồ UML nào đã được tác giả xây dựng để mô hình hóa hệ thống?

Tác giả đã xây dựng 5 nhóm biểu đồ UML gồm: Biểu đồ ca sử dụng tổng quát (UseCase Diagram), Biểu đồ lớp (Class Diagram), 14 Biểu đồ tuần tự (Sequence Diagram), 14 Biểu đồ hoạt động (Activity Diagram), và 15 Biểu đồ giao tiếp (Communication Diagram) tương ứng với từng chức năng của hệ thống.


Kết luận

Báo cáo Đồ án cơ sở 3 của tác giả Nguyễn Thị Ngọc đã thực hiện trọn vẹn quy trình phân tích, thiết kế hệ thống cho ứng dụng đặt đồ ăn trực tuyến và tra cứu công thức nấu ăn dựa trên ngôn ngữ Kotlin và CSDL SQLite. Điểm nổi bật của công trình nằm ở hệ thống tài liệu mô hình hóa UML chi tiết cùng quy trình thiết kế cơ sở dữ liệu chuẩn hóa 5 bước phục vụ hai nhóm tác nhân khách hàng và quản trị viên. Dù còn một số hạn chế về phạm vi hoàn thiện tính năng do giới hạn thời gian nghiên cứu, đồ án đã xây dựng thành công ứng dụng mẫu đáp ứng các chức năng cốt lõi và định hình rõ ràng các hướng phát triển nâng cấp hệ thống trong tương lai.