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

Trong nhịp sống hiện đại, do quỹ thời gian bận rộn, nhiều cá nhân thường không chú trọng đúng mức đến thói quen ăn uống hàng ngày, dẫn đến việc khó kiểm soát chế độ dinh dưỡng có thực sự khoa học hay đáp ứng đủ hàm lượng chất cần thiết cho cơ thể hay không. Nhiều người có xu hướng lầm tưởng bản thân đang duy trì một chế độ ăn uống lành mạnh, hoặc chưa nắm được phương pháp tính toán để xác định lượng calo và dưỡng chất nạp vào đang thừa hay thiếu. Khi điều kiện sống ngày càng được nâng cao, nhu cầu quản lý dinh dưỡng và chăm sóc sức khỏe chủ động đã trở thành một đòi hỏi thiết yếu đối với cộng đồng.

Đề tài "Xây dựng ứng dụng Tư vấn dinh dưỡng và sức khỏe trên nền tảng Android" được thực hiện bởi hai sinh viên Giáp Vinh Quang và Nguyễn Quang Sơn, dưới sự hướng dẫn của PGS.TS Vũ Chấn Hưng tại Khoa Công nghệ Thông tin – Viện Đại học Mở Hà Nội (niên khóa 2011 – 2015). Đề tài được giao ngày 23/01/2015 và hoàn thành ngày 10/05/2015.

Mục đích chính của đề tài là xây dựng và phát triển một phần mềm ứng dụng di động chạy trên hệ điều hành Android, phục vụ nhu cầu tra cứu thông tin dinh dưỡng, tư vấn sức khỏe một cách nhanh chóng, chính xác cho mọi đối tượng người dùng, đồng thời tích hợp hệ thống hỗ trợ chuyên biệt cho người tập thể hình (Gym) liên kết với website trực tuyến.

Về mặt nhiệm vụ và mục tiêu nghiên cứu, đề tài được chia thành hai nhóm nội dung:

  1. Mục tiêu lý thuyết: Nghiên cứu cơ chế lập trình ứng dụng trên hệ điều hành Android; ngôn ngữ lập trình Java; kỹ thuật thiết kế giao diện bằng XML; hệ quản trị cơ sở dữ liệu MySQL và công cụ SQLite Administrator; tìm hiểu các công nghệ web phụ trợ (HTML, CSS, JavaScript); cùng các công cụ xử lý đồ họa (Adobe Photoshop, Corel Draw).
  2. Mục tiêu thực tiễn:
    • Xây dựng ứng dụng di động hoàn chỉnh cài đặt trên các thiết bị chạy Android (điện thoại thông minh, máy tính bảng).
    • Thiết lập mô hình kết nối Client – Server, hỗ trợ xử lý cho nhiều người dùng truy cập đồng thời vào kho dữ liệu trên máy chủ.
    • Cung cấp chức năng tìm kiếm, tra cứu thành phần dinh dưỡng của các loại thực phẩm thường ngày và hiển thị danh mục tư vấn sức khỏe.
    • Xây dựng module tính toán chỉ số trao đổi chất cơ bản (BRM - Basal Metabolic Rate) và chỉ số khối cơ thể (BMI) để xác định mức năng lượng tiêu thụ của người dùng.
    • Cung cấp tính năng liên kết tới website trực tuyến hỗ trợ các bài tập và chế độ dinh dưỡng chuyên biệt cho người tập Gym (nam và nữ).

Đối tượng và phạm vi nghiên cứu của đề tài là các kỹ thuật phát triển ứng dụng di động trên nền tảng Android, kết hợp kiến trúc dịch vụ mạng Client – Server sử dụng PHP và MySQL để quản lý, phân phối dữ liệu dinh dưỡng, sức khỏe và thể hình.


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

Đề tài tiếp cận bài toán xây dựng phần mềm dựa trên nền tảng lý thuyết công nghệ phần mềm hướng đối tượng và quy trình phát triển hệ thống tiêu chuẩn:

  • Phương pháp phân tích và thiết kế hướng đối tượng (OOAD): Áp dụng nguyên lý trừu tượng hóa, chia để trị và đóng gói dữ liệu để mô hình hóa thế giới thực thành các lớp đối tượng (Class) và thực thể (Entity). Hệ thống được cấu trúc thành các đơn thể độc lập tương tác với nhau thông qua truyền nhận thông điệp, loại bỏ việc sử dụng biến toàn cục nhằm tăng tính bảo mật, khả năng tái sử dụng và khả năng mở rộng thông qua cơ chế kế thừa.
  • Quy trình phát triển phần mềm hợp nhất (UP / RUP / USPD): Áp dụng quy trình lặp và tăng trưởng (Iterative and Incremental), lấy ca sử dụng (Use Case) làm trung tâm định hướng toàn bộ quá trình phân tích yêu cầu, thiết kế kiến trúc, cài đặt mã nguồn và kiểm thử.
  • Ngôn ngữ mô hình hóa thống nhất (UML): Sử dụng các biểu đồ chuẩn (biểu đồ ca sử dụng, biểu đồ trình tự, biểu đồ hoạt động, biểu đồ lớp) để trực quan hóa, đặc tả và tài liệu hóa cấu trúc tĩnh cũng như hành vi động của hệ thống phần mềm.
  • Nguồn dữ liệu và tài liệu: Dữ liệu về thành phần dinh dưỡng thực phẩm, các khuyến nghị sức khỏe và hệ thống bài tập thể hình được tổng hợp, phân loại vào cơ sở dữ liệu quan hệ quản trị tập trung.

Quy trình nghiên cứu thực tế của nhóm tác giả được triển khai qua 5 bước tuần tự:

  1. Phân tích yêu cầu bài toán và xác định phạm vi chức năng.
  2. Lựa chọn công nghệ, môi trường phát triển và hệ quản trị cơ sở dữ liệu.
  3. Nghiên cứu sâu cơ sở lý thuyết của các công nghệ đã lựa chọn.
  4. Hiện thực hóa lý thuyết vào xây dựng mã nguồn và giao diện ứng dụng.
  5. Kiểm thử chức năng, so sánh đối chiếu và tối ưu hóa ứng dụng trên môi trường giả lập và thiết bị thật.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng Client – Server, trong đó ứng dụng di động đóng vai trò máy khách (Client) giao tiếp với hệ thống máy chủ (Server) qua giao thức mạng HTTP.

Thành phần hệ thống Công nghệ / Nền tảng sử dụng Vai trò và chức năng chính
Phía Máy khách (Client) Android SDK, Java, XML, Máy ảo Dalvik Xây dựng giao diện người dùng, tiếp nhận tương tác, xử lý logic hiển thị, tính toán cục bộ (BMI, BRM) và gửi yêu cầu dữ liệu
Môi trường phát triển Eclipse IDE + ADT Plug-in, Genymotion Biên soạn mã nguồn, gỡ lỗi (debug) và mô phỏng thực thi ứng dụng Android trên máy tính qua nền tảng ảo hóa VirtualBox
Giao thức & Định dạng trao đổi HTTP, JSON (JavaScript Object Notation) Đóng gói và truyền tải dữ liệu có cấu trúc giữa máy khách Android và máy chủ Web dưới dạng chuỗi văn bản gọn nhẹ
Phía Máy chủ (Server) LAMP (Linux, Apache, MySQL, PHP 5.1 với PDO) Tiếp nhận yêu cầu HTTP từ client, thực thi kịch bản PHP truy vấn cơ sở dữ liệu, phân quyền truy cập và trả về dữ liệu JSON
Xử lý Đồ họa & Giao diện Adobe Photoshop CS6 Thiết kế biểu tượng (icon), banner và chỉnh sửa hình ảnh các loại thực phẩm, bài tập thể hình

Phân công nhiệm vụ triển khai

  • Giáp Vinh Quang: Tham gia phân tích thiết kế hệ thống; thiết kế và xây dựng giao diện ứng dụng trên thiết bị di động bằng XML/Photoshop; tổng hợp nội dung và hoàn thiện báo cáo đồ án.
  • Nguyễn Quang Sơn: Tham gia phân tích thiết kế hệ thống; thiết kế và xây dựng cơ sở dữ liệu MySQL Server; xây dựng dịch vụ kết nối phía máy chủ và lập trình ứng dụng máy khách chạy trên nền tảng Android.

Kiến trúc cơ sở dữ liệu máy chủ

Cơ sở dữ liệu trên MySQL được chuẩn hóa thành các bảng quan hệ phục vụ 4 phân hệ chính:

  • Thực phẩm & Danh mục thực phẩm: Lưu trữ tên, nhóm thực phẩm, chỉ số năng lượng (Kcal), hàm lượng đạm (protein), chất béo (lipid), tinh bột (glucid), vitamin và khoáng chất.
  • Ảnh thực phẩm: Lưu trữ đường dẫn hình ảnh minh họa tương ứng với từng loại thực phẩm.
  • Tư vấn & Danh mục tư vấn: Lưu trữ nội dung bài viết tư vấn chế độ ăn bệnh lý, an toàn vệ sinh thực phẩm và chế độ dinh dưỡng hợp lý.
  • Hướng dẫn Gym & Danh mục hướng dẫn Gym: Lưu trữ các bài tập thể hình theo nhóm cơ và chế độ dinh dưỡng dành riêng cho người tập luyện thể thao.

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

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

Chương 1 trình bày tính cấp thiết của việc theo dõi chế độ dinh dưỡng trong đời sống thường nhật; xác định rõ mục đích, mục tiêu nghiên cứu lý thuyết và thực tiễn của đề tài. Nhóm tác giả mô tả tổng quát cách thức hoạt động của phần mềm: ứng dụng hướng đến sự tiện lợi khi không bắt buộc người dùng phải đăng ký tài khoản mà có thể trực tiếp tra cứu thông tin tư vấn sức khỏe, tìm kiếm hàm lượng dinh dưỡng của thực phẩm theo từ khóa, nhập chỉ số cơ thể để tính năng lượng tiêu thụ (BRM) hoặc truy cập phân hệ hướng dẫn bài tập Gym. Chương này cũng phác thảo sơ đồ 5 bước tiến hành nghiên cứu và bố cục tổng thể của báo cáo tốt nghiệp.

Chương 2: Công nghệ sử dụng

Chương 2 cung cấp hệ thống cơ sở lý thuyết chi tiết về các công nghệ được sử dụng trong đồ án:

  • Nền tảng Android: Lịch sử phát triển từ năm 2005 dưới sự bảo trợ của Google, mã nguồn mở theo giấy phép Apache; cấu trúc thư mục của một dự án Android chuẩn bao gồm: src/ (mã nguồn Java), gen/ (chứa R.java), bin/ (chứa gói cài đặt .apk), res/ (chứa các tài nguyên con như anim/, color/, drawable/, layout/, menu/, raw/, values/, xml/), libs/ và tệp cấu hình cốt lõi AndroidManifest.xml.
  • Máy ảo Dalvik & Android SDK: Cơ chế thực thi mã bytecode định dạng .dex tối ưu hóa dung lượng bộ nhớ RAM và năng lực xử lý CPU cho thiết bị di động; các gói thư viện nền tảng của Android (android.app, android.view, android.widget, android.content, android.net, android.graphics, android.webkit,...).
  • Ngôn ngữ Java & XML: Nguyên lý hoạt động của Java Virtual Machine (JVM), tính độc lập nền tảng ("viết một lần, chạy mọi nơi"), mô hình lập trình đa luồng; cấu trúc cú pháp của XML trong việc tạo lập các thành phần giao diện người dùng.
  • Công nghệ JSON & LAMP: Cấu trúc dữ liệu JSON (đối tượng, mảng, cặp name-value); kiến trúc ngăn xếp LAMP (Linux – Apache – MySQL – PHP); cơ chế kết nối cơ sở dữ liệu qua PHP 5.1 và giao thức truyền tải siêu văn bản HTTP.
  • Phân tích thiết kế hướng đối tượng và UML: Khái niệm mô hình hóa, các đặc trưng bao gói, kế thừa, đa hình; các phương diện biểu diễn của UML và quy trình hợp nhất (UP/RUP).

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, chi tiết hóa toàn bộ các sơ đồ phân tích và thiết kế:

  • Mô hình tác nhân và ca sử dụng: Xác định hai tác nhân chính là Người sử dụng (tra cứu thông tin, tính toán năng lượng, xem bài tập) và Người quản trị (cập nhật danh mục tư vấn, thực phẩm và bài tập Gym).
  • Bảng tham chiếu chức năng: Phân rã hệ thống thành 4 nhóm chức năng chính (R1: Tư vấn sức khỏe, R2: Tra cứu dinh dưỡng, R3: Tính lượng calo tiêu thụ, R4: Hướng dẫn tập Gym) cùng các chức năng con tương ứng (R11–R12, R21–R24, R41–R43).
  • Đặc tả Use Case và biểu đồ hành vi: Chi tiết hóa bảng đặc tả ca sử dụng UC01 (Tư vấn sức khỏe) với luồng sự kiện chính từ lúc chọn loại tư vấn, nhận danh sách cho đến khi hiển thị nội dung; biểu đồ trình tự (Sequence Diagram) và biểu đồ hoạt động (Activity Diagram) cho từng phân hệ: tìm kiếm thực phẩm theo tên, thống kê thành phần dinh dưỡng, tính calo cần hấp thụ, quản lý năng lượng và hiển thị hướng dẫn Gym.
  • Mô hình hóa dữ liệu: Thiết kế sơ đồ liên kết thực thể (ERD) và cấu trúc chi tiết của 7 bảng dữ liệu quan hệ trong MySQL.

Chương 4: Hướng dẫn sử dụng ứng dụng

Chương 4 minh họa kết quả triển khai giao diện thực tế của phần mềm trên thiết bị di động:

  • Giao diện chính: Thiết kế trực quan với các biểu tượng chức năng cho phép điều hướng nhanh tới 4 phân hệ cốt lõi.
  • Giao diện Tư vấn sức khỏe: Hiển thị danh mục các chủ đề tư vấn dinh dưỡng hợp lý, an toàn thực phẩm và thực phẩm dưỡng bệnh theo danh sách phân cấp.
  • Giao diện Tra cứu dinh dưỡng: Cung cấp thanh tìm kiếm thực phẩm theo tên và bảng thống kê chi tiết các thành phần dinh dưỡng kèm hình ảnh minh họa.
  • Giao diện Quản lý Calo: Màn hình tiếp nhận các thông số chiều cao, cân nặng, độ tuổi, giới tính và cường độ vận động để tự động tính toán và hiển thị chỉ số BRM/BMI.
  • Giao diện Hướng dẫn Gym: Trình bày danh mục bài tập thể hình phân loại theo nhóm cơ cho nam và nữ kèm đường dẫn liên kết tới nội dung hỗ trợ trực tuyến.

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

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

  • Xây dựng thành công ứng dụng di động "Tư vấn dinh dưỡng và sức khỏe" hoạt động ổn định trên nền tảng hệ điều hành Android.
  • Thiết lập hoàn chỉnh cơ chế giao tiếp Client – Server thông qua giao thức HTTP và định dạng dữ liệu JSON, cho phép ứng dụng tải dữ liệu động từ hệ quản trị MySQL trên máy chủ PHP.
  • Hiện thực hóa đầy đủ 4 nhóm chức năng theo yêu cầu thiết kế ban đầu:
    1. Phân hệ Tư vấn sức khỏe: Cung cấp kho dữ liệu hướng dẫn ăn uống khoa học và phòng ngừa bệnh lý.
    2. Phân hệ Tra cứu dinh dưỡng: Cho phép tìm kiếm nhanh danh mục thực phẩm thường ngày kèm bảng số liệu chi tiết về năng lượng (Kcal), đạm, chất béo và khoáng chất.
    3. Phân hệ Quản lý năng lượng: Tính toán chính xác lượng calo tiêu thụ cơ bản (BRM) và chỉ số thể trạng (BMI) dựa trên thông số nhân trắc học của người dùng.
    4. Phân hệ Hướng dẫn Gym: Tích hợp hệ thống phân loại bài tập và chế độ dinh dưỡng thể hình.

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

  • Ứng dụng quy trình phát triển phần mềm hợp nhất (RUP) và ngôn ngữ UML một cách bài bản vào một bài toán ứng dụng di động thực tế.
  • Xây dựng một công cụ hỗ trợ chăm sóc sức khỏe cá nhân tiện lợi, giao diện thân thiện, không đòi hỏi thủ tục đăng nhập phức tạp, góp phần nâng cao nhận thức cộng đồng về quản lý dinh dưỡng khoa học.

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

Dựa trên phạm vi và nội dung được công bố trong văn bản đồ án, một số hạn chế và hướng mở rộng được ghi nhận như sau:

  • Hạn chế:
    • Ứng dụng phụ thuộc vào kết nối mạng Internet để gửi yêu cầu HTTP và truy xuất dữ liệu từ máy chủ MySQL; chưa hỗ trợ cơ chế lưu bộ nhớ đệm (cache) hoặc làm việc ngoại tuyến (offline) toàn diện cho toàn bộ kho dữ liệu thực phẩm.
    • Chưa tích hợp tính năng cá nhân hóa chuyên sâu theo từng tài khoản người dùng để tự động lưu lại nhật ký dinh dưỡng và theo dõi lịch sử tiêu thụ calo theo từng ngày, tuần hoặc tháng.
    • Phân hệ hỗ trợ người tập Gym chủ yếu đóng vai trò điều hướng và hiển thị nội dung bài tập thể hình qua liên kết website online, chưa tích hợp trình phát video hướng dẫn động trực tiếp bên trong ứng dụng.
  • Hướng phát triển tiếp theo:
    • Nghiên cứu tích hợp cơ sở dữ liệu cục bộ (SQLite) ngay trên thiết bị để hỗ trợ tra cứu ngoại tuyến khi mất kết nối mạng.
    • Bổ sung chức năng tạo tài khoản cá nhân, lập kế hoạch thực đơn tự động dựa trên chỉ số calo mục tiêu (tăng cân, giảm cân, duy trì vóc dáng).
    • Tối ưu hóa giao diện người dùng để tương thích tốt trên nhiều kích thước màn hình và phiên bản Android mới hơn.

Giá trị tham khảo

Tài liệu đồ án có giá trị tham khảo hữu ích đối với sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm và các lập trình viên mới bắt đầu nghiên cứu phát triển ứng dụng di động:

  • Tài liệu tham khảo về phân tích thiết kế: Cung cấp mẫu đặc tả ca sử dụng (Use Case Specification), bảng tham chiếu chức năng và các biểu đồ UML (Sequence, Activity, Use Case) theo chuẩn RUP.
  • Tài liệu tham khảo về kiến trúc Client – Server: Minh họa rõ nét phương pháp tích hợp ứng dụng Android (sử dụng Java/XML) với dịch vụ Web phía máy chủ (sử dụng PHP và MySQL) thông qua cơ chế đóng gói dữ liệu JSON và giao thức HTTP.
  • Mô hình hóa ứng dụng sức khỏe: Cung cấp phương pháp xây dựng cơ sở dữ liệu dinh dưỡng thực phẩm và công thức tính toán chỉ số sinh học (BMI, BRM) trên thiết bị di động.

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

1. Ứng dụng sử dụng cơ chế nào để trao đổi dữ liệu giữa thiết bị Android và máy chủ?
Ứng dụng sử dụng mô hình kiến trúc Client – Server. Thiết bị Android (Client) gửi yêu cầu dữ liệu thông qua giao thức HTTP đến các kịch bản PHP lưu trữ trên máy chủ Apache. Phía máy chủ truy vấn cơ sở dữ liệu MySQL, đóng gói kết quả thành định dạng văn bản JSON và trả về cho ứng dụng Android phân tích, hiển thị lên giao diện.

2. Người dùng có bắt buộc phải đăng ký tài khoản để tra cứu thông tin dinh dưỡng và sức khỏe không?
Không. Theo thiết kế cách thức hoạt động của ứng dụng được nêu trong đồ án, người dùng không cần tạo hay đăng nhập tài khoản mà có thể trực tiếp truy cập ngay vào các danh mục tư vấn, tra cứu thành phần thực phẩm hoặc tính toán chỉ số calo.

3. Phân hệ Quản lý Calo tính toán mức năng lượng tiêu thụ dựa trên những thông số đầu vào nào?
Phân hệ tính toán chỉ số trao đổi chất cơ bản (BRM) và nhu cầu năng lượng dựa trên các thông số nhân trắc học do người dùng nhập vào gồm: chiều cao, cân nặng, độ tuổi, giới tính và mức độ hoạt động thể chất/công việc hàng ngày.

4. Cơ sở dữ liệu MySQL của hệ thống bao gồm những bảng dữ liệu chính nào?
Cơ sở dữ liệu của đồ án được thiết kế gồm 7 bảng quan hệ chính: Bảng thực phẩm, Bảng danh mục thực phẩm, Bảng danh mục tư vấn, Bảng tư vấn, Bảng danh mục hướng dẫn Gym, Bảng hướng dẫn Gym và Bảng ảnh thực phẩm.


Kết luận

Đồ án tốt nghiệp đại học "Xây dựng ứng dụng Tư vấn dinh dưỡng và sức khỏe trên nền tảng Android" của sinh viên Giáp Vinh Quang và Nguyễn Quang Sơn đã hoàn thành đầy đủ các mục tiêu nghiên cứu và nhiệm vụ được giao. Tác phẩm đã áp dụng thành công quy trình công nghệ phần mềm hướng đối tượng RUP và ngôn ngữ UML để thiết kế, cài đặt một giải pháp di động hoàn chỉnh kết hợp kiến trúc Client – Server (Android – PHP – MySQL – JSON). Đồ án thể hiện tính thực tiễn cao trong việc giải quyết nhu cầu tra cứu thông tin dinh dưỡng, chăm sóc sức khỏe chủ động và hỗ trợ tập luyện thể hình cho người dùng di động.