Giới thiệu Flutter, sử dụng ngôn ngữ lập trình Dart, được giới thiệu là một bộ công cụ UI UI toolkit đa nền tảng, được thiết kế để cùng một codebase mà lập trình viên có thể sử dụng để
CƠ SỞ KIẾN THỨC
Framework Flutter
Flutter là một bộ công cụ UI đa nền tảng sử dụng ngôn ngữ Dart, được thiết kế để cho phép lập trình viên làm việc với cùng một codebase và chạy ứng dụng trên nhiều nền tảng như iOS, Android, web và desktop Với kiến trúc dựa trên widget tùy biến và biên soạn native, Flutter mang lại hiệu suất cao và trải nghiệm người dùng mượt mà từ một nguồn mã duy nhất Tính năng hot reload giúp xem ngay các thay đổi trong thời gian thực, rút ngắn vòng đời phát triển và tăng năng suất nhóm Nhờ khả năng thiết kế giao diện đồng bộ và tối ưu hóa cho từng nền tảng, Flutter đang trở thành lựa chọn phổ biến cho các dự án đa nền tảng.
Android, đồng thời vẫn cho phép ứng dụng giao tiếp trực tiếp với các service riêng của từng platform
Flutter được thiết kế để hỗ trợ lập trình viên tạo ra các sản phẩm ứng dụng có hiệu suất cao nhất và mang lại cảm giác tự nhiên nhất trên từng nền tảng, đồng thời tối đa hóa khả năng chia sẻ mã nguồn giữa các nền tảng để giảm thiểu sự trùng lặp và tăng tốc độ phát triển.
During development, Flutter runs inside a virtual machine that provides hot reload without a full recompile In release mode, Flutter apps are ahead-of-time compiled into native machine code for optimal performance, and hot reload is not available in deployed builds.
Hình 1 Flutter - Framework đa nề tảng
Flutter là một framework open source với giấy phép BSD, có hệ sinh thái mạnh mẽ và kho thư viện bên thứ ba do người dùng phát triển để hỗ trợ cho thư viện gốc Nó cho phép biên dịch trực tiếp sang mã máy cho các kiến trúc x86_64 (Intel x64) và ARM, đồng thời có thể biên dịch sang JavaScript để chạy trên ứng dụng Web.
2.1.2 Ưu nhược điểm Ưu điểm Nhược điểm
Giảm tối đa thời gian phát triển ứng dụng bằng cách sử dụng cùng một codebase cho nhiều nền tảng, giúp đẩy nhanh vòng đời sản phẩm và đưa ứng dụng ra thị trường sớm hơn Đồng thời tiết kiệm chi phí và công sức khi chỉ cần một đội ngũ phát triển duy nhất thay vì chia làm hai nhóm cho iOS và Android Việc kết hợp codebase sẽ đảm bảo tính nhất quán về chức năng và giao diện, đồng thời dễ bảo trì và tối ưu hóa quy trình cập nhật trên mọi nền tảng.
Hot reload của Flutter cho phép xem ngay các thay đổi sau khi sửa code mà không cần rebuild toàn bộ ứng dụng, giúp tăng tốc quá trình phát triển, sửa lỗi và bảo trì dự án Nhờ kiến trúc mạnh mẽ của Flutter, tính năng này render nhanh và cho phép tuỳ biến giao diện một cách hoàn toàn tự do, tối ưu hóa trải nghiệm người dùng và đẩy nhanh vòng lặp phát triển của bạn.
Flutter giúp ta kiểm soát từng pixel trên màn hình, xóa bỏ mọi rào cản giới hạn về render đồ họa
Cộng đồng phát triển mạnh mẽ từng ngày, framework cũng đang trên đà phát triển, ví dụ như việc
Flutter và ngôn ngữ Dart vẫn còn khá mới và chưa ổn định hoàn toàn, nên các ứng dụng Flutter chưa tối ưu về dung lượng và có thể nặng hơn mong đợi Flutter không hoàn toàn là native vì nó không tạo ra các component native mà chỉ giả lập native, nên vẫn có những khác biệt nhỏ so với ứng dụng native Hiện tại chưa có một kiến trúc phát triển chuẩn cho Flutter, điều này có thể mang lại sự tự do cho các lập trình viên dày dặn nhưng lại là thách thức cho người mới khi chưa biết nên áp dụng kiến trúc nào Cả Flutter và Dart đều được cập nhật và đổi mới liên tục, khiến ta phải bảo trì mã nguồn liên tục để bắt kịp những thay đổi.
10 support ổn định cho website và desktop app thông qua phiên bản
Flutter 2.0 ra mắt đầu năm 2021 tục nếu muốn bắt kịp sự phát triển của Flutter
Bảng 2 Ưu nhược điểm của Flutter
Dart, ngôn ngữ lập trình của Flutter, là một ngôn ngữ lập trình hướng đối tượng được tối ưu cho phía client, giúp phát triển ứng dụng nhanh chóng trên nhiều nền tảng Mục tiêu của Dart là mang tới một công cụ phát triển hiệu quả nhất cho việc xây dựng các ứng dụng đa nền tảng.
Dart là nền tảng của Flutter và là ngôn ngữ lập trình chính cho các ứng dụng Flutter Dart cung cấp giải pháp ngôn ngữ cho Flutter với nhiều chức năng cốt lõi như định dạng mã, phân tích cú pháp và kiểm thử mã nguồn, giúp tối ưu hóa quy trình phát triển và đảm bảo chất lượng cho các ứng dụng Flutter.
Dart là ngôn ngữ có kiểu dữ liệu an toàn (type-safe), sử dụng kiểm tra kiểu dữ liệu tĩnh (static type checking) để đảm bảo mọi giá trị biến luôn khớp với kiểu dữ liệu của biến đó; đồng thời hệ thống kiểu của Dart cũng rất linh hoạt, cho phép khai báo kiểu dynamic, tức là biến có kiểu động sẽ được kiểm tra ở thời gian chạy (runtime) thay vì ở thời điểm biên dịch (compile time) như kiểu tĩnh.
Dart đã triển khai tính năng sound null safety, nghĩa là giá trị của biến sẽ không thể là null trừ khi ta khai báo nó có thể null Nhờ đó Dart giảm thiểu tối đa các lỗi tham chiếu null trên runtime Điểm đặc biệt là so với một số ngôn ngữ khác có null safety, khi một biến được khai báo là không thể null trong Dart thì biến đó sẽ chắc chắn luôn ở trạng thái không null Đây chính là ý nghĩa của chữ 'sound' trong cụm từ sound null safety.
Dart có một bộ thư viện gốc rất mạnh mẽ, đáp ứng mọi nhu cầu cơ bản về lập trình:
- Bộ kiểu dữ liệu, danh sách và các hàm chính cho mọi chương trình Dart (dart:core)
- Bộ danh sách hỗ trợ mạnh hơn, gồm queue, linked list, hashmap, và cây nhị phân (dart:collection)
- Bộ dịch encoder và decoder giúp chuyển đổi giữa các dạng dữ liệu khác nhau, bao gồm JSON và UTF-8 (dart:convert)
- Bộ hỗ trợ hằng số, hàm và các công thức toán học (dart:math)
- Hỗ trợ xử lý file, socket, HTTP, và đọc ghi (I/O) cho các ứng dụng không phải web (dart:io)
- Hỗ trợ lập trình bất đồng bộ, với các lớp như Future (tương tự Promise trong ES6) và Stream (tương tự Observable trong rxjs) (dart:async)
- Hỗ trợ giao tiếp với các ngôn ngữ kiểu C (ví dụ C++) (dart:f i)
- Lập trình song song sử dụng isolate - các worker độc lập tương tự như threads nhưng không chia sẻ bộ nhớ, giao tiếp với nhau chỉ thông qua các message (dart:isolate)
- Cung cấp các element HTML và các công cụ khác để tương tác với trình duyệt và với DOM (Document Object Model) (dart:html)
Kiến trúc và cơ chế hoạt động Flutter
Hình 2 Các tầng kiến trúc Flutter
Flutter được thiết kế như một kiến trúc phân tầng dễ mở rộng Flutter tồn tại dưới dạng một loạt các thư viện độc lập mà mỗi thư viện tương ứng với một tầng Không tầng nào có đặt quyền truy cập trực tiếp vào tầng dưới, và mọi phần của framework đều là optional và dễ dàng thay thế Đối với các hệ điều hành, các ứng dụng Flutter đều được đóng gói tương tự như các ứng dụng native Một trình nhúng (Embedder) của hệ điều hành cung cấp một entrypoint, phối hợp với hệ điều hành để truy cập vào các service như render giao diện, input và quản lý event loop Trình nhúng được viết bằng các ngôn ngữ tương ứng của hệ điều hành: Java và C++ cho Android, Objective- C/Objective-C++ cho iOS và macOS, và C++ cho Windows và Linux Sử dụng trình nhúng, code Flutter có thể được tích hợp vào các ứng dụng sẵn có dưới dạng một module con, hoặc cũng có thể được dùng như một ứng dụng riêng Flutter đã tích hợp sẵn các trình nhúng gốc cho từng nền tảng, tuy nhiên vẫn có các trình nhúng khác được phát triển, ví dụ như go-flutter, một trình nhúng giúp chạy ứng dụng Flutter trên Windows, sử dụng ngôn ngữ go để giao tiếp với hệ điều hành
Lõi Flutter, hay Flutter engine, được viết chủ yếu bằng C++ và đảm bảo các chức năng thiết yếu cho phần lớn các ứng dụng Flutter; engine chịu trách nhiệm vẽ mọi thứ lên màn hình mỗi khi có frame mới cần render Flutter framework gọi engine thông qua thư viện dart:ui, thư viện đóng gói các mã C++ tương ứng dưới dạng các lớp Dart, ví dụ như các lớp hỗ trợ nhận input, đồ họa và render text Thông thường, lập trình viên tương tác với Flutter qua Flutter framework một cách hiện đại và dễ hiểu hơn các tầng dưới, được viết bằng Dart Framework có một bộ thư viện phong phú về nền tảng và bố cục (platform và layout) và được phân tầng; đi từ dưới lên, ta có tầng foundation, gồm các lớp nền tảng như animation (để animate) và painting (để vẽ đồ họa), cùng các thành phần khác liên quan đến rendering và xây dựng giao diện.
Flutter có kiến trúc gồm ba tầng chính: tầng rendering chứa các class hỗ trợ cho hệ thống layout và cho phép xây dựng một cây layout với các render object; tầng widget chứa các class đại diện cho các component trên giao diện, với mỗi render object ở tầng rendering có một class tương ứng ở tầng widget, đồng thời tầng widget còn định nghĩa các class mang tính tái sử dụng, tương tự như Component của React Từ các thành phần của tầng widget, thư viện Material và Cupertino cho phép gọi và render giao diện theo chuẩn Material Design hoặc iOS Design Framework Flutter tương đối nhỏ và cơ bản; nhiều tính năng cao cấp được đóng gói dưới dạng các package, bao gồm plugins nền tảng như camera và webview cũng như các tính năng chung như http Các package này được xây dựng dựa trên phần gốc của Dart và Flutter.
2.2.2 Cơ chế Render Điểm đặc biệt nhất của Flutter, là dù đây là một framework chạy đa nền tảng, nhưng về hiệu năng thì Flutter vẫn sánh ngang với các ứng dụng native Để đạt được điều này, Flutter có một cơ chế render rất đặc biệt, khác với các framework đa nền tảng khác như React Native Các framework đa nền tảng khác như React Native thông thường sẽ render bằng cách tạo ra một tầng abstract bên trên các thư viện UI của Android và iOS để giao tiếp với các thư viện UI đó Code thông thường sẽ được viết bằng các ngôn ngữ thông dịch như Javascript, từ đó ngôn ngữ này phải tương tác với các thư viện Java của Android hoặc Objective-C của iOS để hiển thị giao diện Việc này dần dần sẽ tăng đáng kể chi phí render, đặc biệt là khi sự tương tác giữa UI và app logic trở nên phức tạp Ngược lại, Flutter giảm thiểu tối đa, thậm chí là hoàn toàn không cần giao tiếp với thư native để render giao diện Code để render của Flutter sẽ được compile về dạng code native, rồi từ đó dùng thư viện Skia (một thư viện đồ họa được viết bằng C/C++, dùng trực tiếp CPU hoặc GPU để vẽ lên giao diện) để render giao diện Điều này đồng nghĩa với việc, từng pixel trên màn hình giao
14 diện của ứng dụng Flutter đều sẽ được do Flutter quản lý và lập trình viên có thể toàn quyền kiểm soát chúng
Flutter nhúng một bản sao của Skia vào engine, cho phép các ứng dụng Flutter có thể cập nhật để bắt kịp các cập nhật hiệu năng mới nhất ngay cả khi thiết bị Android của người dùng chưa lên phiên bản mới Tính năng này được áp dụng tương tự cho các ứng dụng Flutter trên các nền tảng khác như iOS, Windows và macOS, giúp đồng nhất hiệu năng và trải nghiệm người dùng trên đa nền tảng.
Hệ thống gợi ý – Recommendation systems
Hệ thống gợi ý (Recommender systems hoặc Recommendation systems) là một dạng hệ thống hỗ trợ ra quyết định, cung cấp các giải pháp mang tính cá nhân hóa mà người dùng có thể tiếp cận mà không cần trải qua quá trình tìm kiếm phức tạp Hệ thống này học từ hành vi và sở thích của người dùng để gợi ý các sản phẩm phù hợp nhất trong số những lựa chọn có sẵn, từ đó tối ưu hóa trải nghiệm người dùng và tiết kiệm thời gian mua sắm.
Hình 3 Skia trong engine Flutter
Hệ thống gợi ý sử dụng các tri thức về sản phẩm, các tri thức của chuyên gia hay tri thức khai phá học được từ hành vi con người dùng để đưa ra các gợi ý về sản phẩm mà họ thích trong hàng ngàn hàng vạn sản phẩm có trong hệ thống Các website thương mại điện tử, ví dụ như sách, phim, nhạc, báo sử dụng hệ thống gợi ý để cung cấp các thông tin giúp cho người sử dụng quyết định sẽ lựa chọn sản phẩm nào Các sản phẩm được gợi ý dựa trên số lượng sản phẩm đó đã được bán, dựa trên các thông tin cá nhân của người sử dụng, dựa
Hình 4 Minh họa một hệ thông gợi ý
Việc phân tích hành vi mua hàng trước đó của người dùng được dùng để dự đoán hành vi mua hàng trong tương lai của chính khách hàng đó Các dạng gợi ý được triển khai bao gồm gợi ý sản phẩm tới người tiêu dùng, cung cấp thông tin sản phẩm mang tính cá nhân hóa, tổng hợp ý kiến từ cộng đồng, và chia sẻ các phê bình, đánh giá mang tính cộng đồng liên quan đến yêu cầu hoặc mục đích mà người dùng đang theo đuổi.
Giả sử I là tập các đối tượng (Item) có thể được gợi ý, U là tập người dùng, u là một người dùng cụ thể trong U và i là một đối tượng cụ thể trong I Trong bối cảnh hệ thống gợi ý, mục tiêu là dự đoán mức độ quan tâm của người dùng u đối với từng đối tượng i dựa trên dữ liệu hành vi, đặc trưng của người dùng và đặc trưng của các mục trong I Khái niệm này giúp mô tả các thành phần chính của hệ thống đề xuất và phục vụ cho việc thiết kế các hàm đánh giá điểm gợi ý cho mỗi cặp (u, i).
I mà chúng ta muốn dự đoán cho u (dựa vào sở thích của u)
Dữ liệu cơ sở Dữ liệu đầu ra Tiến trình xử lý
Dựa theo lọc cộng tác
Các điểm số đánh giá của những người sử dụng trong U đối với các đối tượng trong I
Các điểm số đánh giá của u cho các đối tượng trong I
Nhận ra người sử dụng trong U tượng tự với u ( về sở thích) và sau đó ngoại suy điểm số đánh giá vủa u cho i
Các đặc điểm của các đối tượng trong I
Các điểm số đánh giá của u cho các đối tượng trong I
Tạo ra một mô hình mô tả sở thích của người sử dụng u, sau đó sử dụng để đánh giá mức độ ưa thích của u với i
Dựa trên cơ sở tri thức
Các đặc điểm của các đối tượng trong I Các tri thức (hiểu biết) về
Một sự mô tả nhu cầu và sở thích của người
Suy luận sự phù hợp giữa I và nhu cầu của u
17 sự phù hợp giữa các đối tượng với nhu cầu của người sử dụng sử dụng u
Bảng 3 Các phương pháp gợi ý a) Hệ thống gợi ý dựa theo lọc cộng tác
Hệ thống gợi ý dựa theo lọc cộng tác (Collaborative recommendation systems): là phương pháp gợi ý được triển khai rộng rãi nhất và thành công nhất trong thực tế
Trong hệ thống lọc cộng tác, việc phân tích và tổng hợp các điểm đánh giá của người dùng và các đối tượng cho phép nhận diện sự tương đồng giữa người dùng với nhau và từ đó tạo ra các gợi ý dựa trên sự so sánh này Hồ sơ người dùng điển hình được biểu diễn dưới dạng một vector gồm các đối tượng (items) và các điểm đánh giá tương ứng, với số chiều của vector tăng dần theo thời gian khi người dùng tương tác với hệ thống Nhiều hệ thống sử dụng phương pháp chiết khấu dựa trên thời gian (time-based discounting) để điều chỉnh yếu tố trượt của sự quan tâm Điểm đánh giá có thể là nhị phân (thích/không thích) hoặc là các giá trị thực phản ánh mức độ ưu tiên Điểm mạnh nổi bật của gợi ý theo lọc cộng tác là tính độc lập với biểu diễn của các đối tượng được gợi ý, giúp hệ thống hoạt động tốt với các đối tượng phức tạp như âm thanh và phim Schafer, Konstan & Riedl (1999) mô tả lọc cộng tác là "tương quan giữa người– với– người" (people-to-people correlation).
18 b) Hệ thống gợi ý dựa theo nội dung
Hệ thống gợi ý dựa theo nội dung (Content-based recommendation systems): là sự kế thừa và mở rộng của lĩnh vực nghiên cứu lọc thông tin
Trong hệ thống thì các đối tượng được biểu diễn bởi các đặc điểm liên quan tới chúng
Hình 5 Hệ thống gợi ý dựa theo lọc cộng tác
Ví dụ, hệ thống gợi ý văn bản như hệ thống lọc tin NewsWeeder sử dụng những từ của các văn bản như các đặc điểm
Content-based filtering là một loại hệ thống gợi ý dựa trên nội dung, xây dựng hồ sơ sở thích cá nhân của người dùng bằng cách phân tích các đặc tính xuất hiện trong các đối tượng mà người dùng đã đánh giá (rated) Các hệ thống này gắn các đặc điểm nổi bật cho từng đối tượng và so khớp chúng với hồ sơ người dùng để đề xuất những mục có đặc điểm tương tự Schafer, Konstan và Riedl gọi gợi ý theo nội dung là “tương quan đối tượng với đối tượng” (item-to-item similarity), tức là đo lường mức độ tương đồng giữa các đối tượng để đưa ra gợi ý dựa trên hành vi đánh giá trước đó.
Hình 6 Hệ thống gợi ý lọc theo nội dung
20 correlation) Hồ sơ người sử dụng của một hệ thống gợi ý theo nội dung phụ thuộc vào phương pháp học máy được dùng
Các phương pháp như cây quyết định (decision trees), mạng nơ-ron (neural networks) và biểu diễn dựa trên vector có thể được dùng để học hồ sơ người dùng Giống như trong lọc cộng tác, hồ sơ người dùng trong gợi ý dựa theo nội dung là dữ liệu lâu dài và được cập nhật theo thời gian Hệ thống gợi ý dựa trên cơ sở tri thức là một phương án khác để khai thác kiến thức sẵn có nhằm cải thiện chất lượng đề xuất.
Hệ thống gợi ý dựa trên cơ sở tri thức (Knowledge-based recommenders systems): gợi ý các đối tượng dựa trên các suy luận về nhu cầu và sở thích của
Hình 7 Hệ thống gợi ý dựa trên cơ sở tri thức
Trong hệ thống gợi ý cho 21 người dùng, các kỹ thuật gợi ý có thể được xem như một quá trình suy luận Phương pháp tiếp cận dựa trên cơ sở tri thức phân biệt ở chỗ chúng nắm được cách một đối tượng cụ thể đáp ứng nhu cầu của một người dùng cụ thể, từ đó có thể lập luận về mối quan hệ giữa nhu cầu và các gợi ý tương ứng.
Trong thiết kế hệ thống đề xuất, cần sử dụng miền tri thức rõ ràng, liên quan trực tiếp đến mối quan hệ giữa yêu cầu của người dùng và sản phẩm cụ thể Ban đầu, ta xác định ba dạng tri thức cốt lõi: tri thức về danh mục (tri thức liên quan đến danh mục sản phẩm được gợi ý), tri thức người dùng (tri thức về các yêu cầu và mục tiêu của người dùng), và tri thức về chức năng (tri thức để ánh xạ các yêu cầu của người dùng tới các sản phẩm có thể đáp ứng chúng) Việc kết hợp hiệu quả ba loại tri thức này cho phép hệ thống hiểu ngữ cảnh, phân tích độ phù hợp của từng sản phẩm với yêu cầu và tối ưu hóa quá trình gợi ý, từ đó nâng cao độ chính xác và sự hài lòng khi người dùng tương tác với đề xuất.
Phương pháp này không dựa trên tiểu sử người dùng nên giảm thiểu các khó khăn khi tiếp cận sản phẩm mới và người dùng mới Các gợi ý được xây dựng trên cơ sở tri thức có khả năng suy diễn, nhưng độ chính xác của suy diễn phụ thuộc vào mức độ phù hợp giữa yêu cầu của người dùng và các thuộc tính của sản phẩm.
Mọi hệ thống dựa trên cơ sở tri thức vận hành dựa trên mối quan hệ thu nhận tri thức, và chất lượng của các phương án gợi ý phụ thuộc trực tiếp vào độ chính xác của cơ sở tri thức Đây là hạn chế lớn nhất của phương pháp này, bởi bất kỳ sai lệch hoặc thiếu sót nào trong dữ liệu và kiến thức được lưu trữ cũng sẽ làm giảm hiệu quả và độ tin cậy của các đề xuất.
2.3.3 So sánh các phương pháp gợi ý
Tên phương pháp Ưu điểm Nhược điểm
Hệ thống gợi ý dựa trên lọc cộng tác
• Khả năng đa hạng mục
• Không cần tri thức miền
• Chất lượng tăng theo thời gian
• Đủ thông tin phản hồi không tường minh
• Vấn đề người dùng mới
• Vấn đề sản phẩm/đối tượng mới
• Chất lượng phụ thuộc vào độ lớn dữ liệu lịch sử thao tác của người sử dụng
• Vần đề về tính bền vững và mềm dẻo
Hệ thống gợi ý dựa trên nội dung
• Không cần tri thức miền
• Chất lượng tăng theo thời gian
• Đủ thông tin phản hồi không tường minh
• Vấn đề người dùng mới
• Chất lượng phụ thuộc vào độ lớn dữ liệu lịch sử thao tác của người sử dụng
• Vần đề về tính bền vững và mềm dẻo
Hệ thống gợi ý dựa trên cơ sở tri thức
• Có thể ánh xạ giữa nhu cầu người dùng và sản phẩm/đối tượng
• Cần phải thu thập tri thức
Bảng 4 So sánh các phương pháp gợi ý
THỰC HIỆN DỰ ÁN
Khảo sát hiện trạng
Nhóm đã tiến hành khảo sát người tập tại các phòng gym ở tòa nhà B3 và E1 thuộc Ký túc xá khu B, Đại học Quốc gia TP.HCM, nhằm hiểu rõ thói quen tập luyện, mức độ hài lòng và nhu cầu cải thiện cơ sở vật chất tại đây Đồng thời, nhóm cũng khảo sát các ứng dụng tập luyện tương tự có mặt trên Google Play và App Store để so sánh tính năng, giao diện người dùng và mức độ hỗ trợ tập luyện giữa các ứng dụng với trải nghiệm tại phòng gym thực tế.
1 Đếm nhịp tim, số bước đi Đếm nhịp tim, số bước, qua đó tính ra lượng calo tiêu thụ qua quãng đường và thời gian
2 Đề xuất các dữ liệu khoa học làm thế nào để “giữ một trái tim khỏe mạnh”
Dẫn đến các bài báo thông qua trình duyệt
3 Thống kê mục tiêu hằng ngày Theo dõi tiến độ và mục tiêu hằng ngày đã đề ra
4 Theo dõi nhịp tim Cho người dùng theo dõi nhịp
Hình 8 Ứng dụng Google Fit
24 tim của bản thân, liệt kê theo ngày, tuần, tháng
5 Theo dõi bước đi Cho người dùng theo dõi bước đi của bản thân, liệt kê theo ngày, tuần, tháng
6 Theo dõi cân nặng Cho người dùng theo dõi cân nặng của bản thân, liệt kê theo tuần, tháng, 3 tháng, năm
7 Theo dõi huyết áp Cho người dùng theo dõi huyết áp, liệt kê theo tuần, tháng, năm
8 Đề xuất bài viết phòng tránh bênh Đi đến bài viết của WHO thông qua trình duyệt
1 Thêm huyết áp Thêm các thông tin về huyết áp của người dùng
2 Thêm cân nặng Thêm các thông tin về cân nặng của người dùng
3 Thêm hoạt động Thêm các thông tin về các hoạt động của người dùng
4 Theo dõi bài tập Liệt kê và theo dõi các bài tập người dùng đang tiến hành
1 Hiển thị mục tiêu hoạt động Hiển thị số bước, điểm nhịp tim
2 Lịch giờ đi ngủ và thức Thiết lập giờ đi ngủ và thức
3 Thông tin bản thân Bao gồm các thông tin Giới tính, ngày sinh, cân nặng, chiều cao
Bảng 5 Ứng dụng Google Fit Đánh giá:
- Tích cực: o Có kết nối với thiết bị đeo tay google, nhờ đó nắm bắt được chính xác thể trạng sức khỏe
- Hạn chế: o Giao diện quá đơn giản o Chỉ cung cấp thông tin nhưng không cung cấp biện pháp khắc phục
Home 1 Biểu đồ thống kê đánh giá cảm xúc theo ngày
Thống kê đánh giá của bản thân theo các mức từ tệ đến tuyệt vời Các giá trị liệt kê bao gồm
2 Danh sách đề xuất các định nghĩa và bài học Đề xuất một số định nghĩa và bài học trong lĩnh vực chăm sóc sức khỏe con người
Learn 1 Danh sách chủ đề các bài viết khoa học
Chia nội dung theo từng chủ đề, mỗi chủ đề sẽ có các định nghĩa mang tính khoa học nhằm làm rõ các khái niệm Người dùng có thể tìm kiếm từ khóa và xem các diễn giải liên quan cho từng từ khóa được chọn, giúp nắm bắt ý nghĩa và phạm vi của chủ đề Các chủ đề bao gồm nhiều lĩnh vực khác nhau, được tối ưu hóa cho SEO với từ khóa phù hợp để tăng khả năng hiển thị trên công cụ tìm kiếm.
Find 1 Tìm kiếm Chức năng tìm kiếm một tiện ích cụ thể Bao gồm
DOT 1 Liên hệ Liên hệ trực tiếp với người quản trị hệ thống Bảng 6 Ứng dụng Healthily Đánh giá
- Tích cực: o Nhiều thông tin cung cấp o Có chỉ dẫn đến bác sĩ và cơ sở y tế gần nhất
- Hạn chế: o Thông tin quá bao quát và dư thừa o Bài viết chỉ là lý tuyết, không đề xuất được biện pháp cụ thể
Trang chủ – Tính toán lượng calo tiêu thụ hàng ngày được thực hiện bằng cách ước tính tổng calo cần thiết, trừ đi lượng calo dự kiến từ khẩu phần ăn và các hoạt động, từ đó xác định chính xác lượng calo cơ thể hấp thụ trong ngày.
Viết bài viết chia sẻ kinh nghiệm bản thân
Giong như mạng xã hội, giúp chia sẽ kinh nghiệm và kiến thức bản thân với mọi người
Danh sách các bài viết của người khác Hình 10 Ứng dụng MyFitnessPal
Diary Danh sách cụ thể lịch trình ăn uống bản thân trong ngày
Thống kê lượng calo theo từng buổi sáng, trưa, chiều tối thông qua việc thêm danh sách khẩu phần ăn
Me Thông tin bản thân Cân nặng, Bạn bè, các thiết bị liên kết
Danh sách món ăn, hóa đơn, nhịp tim và thể trạng
Tạo các danh sách thành phần cơ bản trong chế độ tập luyện của bản thân
Danh sách bài viết Quản lý danh sách các bài viết người dùng chia sẽ với mọi người
Bảng 7 Ứng dụng MyFitnessPal Đánh giá
- Tích cực: o Nhiều thông tin cung cấp o Chia sẽ kinh nghiệm thực tế và giao lưu với mọi người
- Hạn chế: o Thông tin không được kiểm duyệt o Bài viết chỉ là lý tuyết, không có bằng chứng khoa học cụ thể
Phân tích yêu cầu
Thông qua khảo sát yêu cầu, nhóm đã đút kết được các chức năng mà ứng dụng cần phải có như:
Trang chủ Hiển thị chiều cao và câng nặng
Chiều cao và câng nặng do người dùng nhập, dùng để hiển thị BMI cho bản thân
Hiển thị tiến độ bài tập luyện
Chế độ tập luyện của bản thân người dùng đang tập luyện
Hiển thị lộ trình ăn uống
Lộ trình ăn uống với thể trạng người dùng
Biểu đồ thay đổi BMI
Theo dõi chỉ số BMI qua tuần, tháng
Chỉ số bước chân của người dùng
Tính toán Tính toán chỉ số
Chỉ số BMI dành cho mục đích tra cứu
Tính toán chỉ số dinh dưỡng cần cung cấp trong ngày dành cho mục đích tra cứu
Tính toán kalo đốt cháy của bài tập dành cho mục đích tra cứu
Tính nồng độ cồn trong máu
Dành cho mục đích tra cứu
Tập luyện Danh sách các bài tập luyện nâng cao thể trạng
Danh sách gồm các chủ đề
4 Duy trì thể trạng hằng ngày
Nhắc nhở Nhắc nhở tập Dành cho mục đích nhắc nhở người
Bảng 8 Phân tích yêu cầu
Danh sách Actor
Người dùng hệ thống là các Gymmer và cả những người có am hiểu về các chỉ số sức khỏe, có nhu cầu theo dõi và quản lý sức khỏe của bản thân Họ tìm kiếm các công cụ và nền tảng giúp dễ dàng theo dõi các chỉ số sức khỏe và đánh giá hiệu quả luyện tập, từ đó tối ưu hóa kế hoạch tập luyện và chăm sóc sức khỏe cá nhân dựa trên dữ liệu.
Sơ đồ và danh sách Usecase hệ thống
STT Tên Usecase Mô tả
1 Quản lý chỉ số bản thân
Quản lý các chỉ số chiều cao, cân nặng, độ tuổi, giới tính và số đo vòng eo của người dùng
2 Quản lý mục tiêu Quản lý các mục tiêu bao gồm đi dạo, lượng nước và trọng lượng tăng/giảm của người dùng
3 Gửi phản hồi Gửi lại phản hồi của người dùng nhằm cải thiện và phát triển ứng dụng Hình 11 Sơ đồ usecase tổng quát
4 Đo bước chân Đếm số bước chân và quãng đường đi được theo bước chân của người dùng
5 Quản lý lượng nước nạp vào
Quản lý lượng nước nạp vào trong 1 ngày của người dùng
6 Quản lý các hoạt động
Quản lý chỉ số calo đốt được thông qua các hoạt động
Theo dõi trọng lượng thay đổi của người dùng theo thời gian
8 Quản lý các chỉ số khác
Quản lý chỉ số nhịp tim, đường huyết, thời gian ngủ của người dùng
9 Quản lý món ăn nạp vào
Quản lý lượng calo nạp vào cơ thể thông qua các bữa ăn và món ăn
Tính toán chỉ số BMI thông qua chỉ số chiều cao, cân nặng
11 Tính toán Calo cần hằng ngày
Tính toán lượng calo cơ thể cần mỗi ngày thông qua chiều cao, cân nặng, độ tuổi, giới tính và chế độ luyện tập
12 Độ cồn trong máu Tính toán độ cồn trong máu và các thông tin cần thiết cho người dùng
13 Khối lượng cơ thể nạc
Tính toán lượng cơ trong cơ thể (cần thiết cho gymmer)
14 Chỉ số mỡ cơ thể Tính toán lượng mỡ trong cơ thể (cần thiết cho phái nữ)
15 Máy tính giảm cân Tính toán lượng calo và thời gian cần thiết để đạt được số cân nặng mục tiêu mà không ảnh
Cho biết chỉ số cân nặng khoa học tương ứng với chiều cao
17 Bài tập tim mạch Thực hiện các bài tập hỗ trợ tim mạch khỏe mạnh
18 Bài tập múi cơ Thực hiện các bài tập hỗ trợ xây dựng múi cơ
19 Bài tập bụng Thực hiện các bài tập hỗ trợ vòng eo thon thả
20 Bài tập cơ bản Thực hiện các bài tập hỗ trợ sức khỏe toàn thân
Nhắc nhở uống nước sau các khoản thời gian
22 Nhắc nhở ăn Nhắc nhở các bữa ăn hằng ngày
23 Nhắc nhở cân Nhắc nhở cân nặng để kiểm soát sức khỏe
Nhắc nhở uống thuốc trợ năng, vitamin hoặc các loại thực phẩm chức năng
3.4.1 Nhóm Usecase “Quản lý tài khoản”
Hình 12 Sơ đồ nhóm usecase "Quản lý tài khoản" a) Quản lý chỉ số bản thân
Tên usecase: Quản lý các chỉ số bản thân
Mô tả: Quản lý các chỉ số chiều cao, cân nặng, độ tuổi, giới tính và số đo vòng eo của người dùng
+ Ở màn hình chính, người dùn chọn vào MenuButton “Quản lý tài khoản”
+ Một Popup menu hiện ra từ phía trái màn hình, chọn “Quản lý chỉ số bản thân”
+ Nhập các chỉ số chiều cao, cân nặng, độ tuổi, giới tính và số đo vòng eo
Hình 13 Sơ đồ hoạt động usecase "Quản lý tài khoản" b) Quản lý mục tiêu
Tên usecase: Quản lý mục tiêu
Ứng dụng quản lý mục tiêu sức khỏe giúp người dùng thiết lập và theo dõi các mục tiêu mong muốn như thời gian đi dạo mỗi ngày, lượng nước uống hàng ngày và mục tiêu cân nặng tăng hoặc giảm Hệ thống đề xuất khung mục tiêu phù hợp với lịch trình cá nhân, tự động nhắc nhở, ghi nhận quá trình luyện tập và lượng nước tiêu thụ để người dùng thấy rõ sự tiến bộ theo thời gian Người dùng có thể điều chỉnh mục tiêu dựa trên kết quả thực tế và các yếu tố sức khỏe, từ đó duy trì động lực và tối ưu hóa thói quen sống lành mạnh Các báo cáo định kỳ và biểu đồ phân tích xu hướng hiển thị mối liên hệ giữa hoạt động, lượng nước và cân nặng, giúp người dùng đưa ra quyết định đúng đắn để đạt được mục tiêu sức khỏe mong muốn Tất cả nội dung được tối ưu cho tìm kiếm với các từ khóa chủ đạo như quản lý mục tiêu sức khỏe, mục tiêu đi dạo, lượng nước uống, cân nặng mục tiêu, theo dõi tiến độ, nhắc nhở và phân tích xu hướng.
+ Ở màn hình chính, người dùn chọn vào MenuButton “Quản lý tài khoản”
+ Một Popup menu hiện ra từ phía trái màn hình, chọn “Quản lý mục tiêu”
+ Nhập các chỉ số thời gian đi dạo, lượng nước, số câng nặng tăng/giảm
Hình 14 Sơ đồ hoạt động usecase "Quản lý mục tiêu"
Tên usecase: Gửi phản hồi
Mô tả: Dành cho người dùng muốn phản hồi trực tiếp nhà phát triển Luồng sự kiện:
+ Ở màn hình chính, người dùn chọn vào MenuButton “Quản lý tài khoản”
+ Một Popup menu hiện ra từ phía trái màn hình, chọn “Gửi phản hồi”
+ Lựa chọn Gmail hoặc các ứng dụng soạn mail khác và gửi
3.4.2 Nhóm Usecase “Quản lý bản thân” a) Quản lý lượng nước nạp vào
Tên usecase: Quản lý lượng nước nạp vào
Mô tả: Quản lý các nguồn nước nạp vào cơ thể trong ngày
+ Ở màn hình “Trang chủ” người dùng chọn vào mục “quản lý lượng nước”
+ Một Popup menu hiện lên, người dùng chọn các lever thể tích nước đã uống, hoặc có thể chỉnh sửa bằng một nút ở bên cạnh
38 b) Quản lý các hoạt động
Tên usecase: Quản lý các hoạt động
Mô tả: Dùng để quản lý lượng calo đã đốt cháy trong lúc tham gia các hoạt động thể dục thể thao
+ Ở màn hình “Trang chủ” người dùng chọn vào mục “quản lý các hoạt động”
+ Một Popup menu hiện lên, người dùng chọn vào nút “add”
Trên màn hình chọn hoạt động, hãy chọn một hoạt động và nhấn Bắt đầu để bắt đầu buổi tập Thời gian luyện tập sẽ quyết định ước tính lượng calo được đốt trong suốt quá trình hoạt động.
Hình 15 Sơ đồ hoạt động usecase "Quản lý lượng nước nạp vào"
+ Sau khi kết thúc hoạt động, bấm lưu
Sơ đồ hoạt động: c) Theo dõi trọng lượng
Tên usecase: “Theo dõi trọng lượng”
Mô tả: Theo dõi trọng lượng cơ thể của người dùng qua các khoản thời gian
+ Ở màn hình “Trang chủ” người dùng chọn vào mục “Theo dõi trọng lượng” tại đây là biểu đồ về sự thay đổi cân nặng người dùng qua các khoản thời gian được kê khai
Hình 16 Sơ đồ hoạt động usecase "Quản lý hoạt động"
+ Nếu người dùng chọn vào nút “add”, một popup hiện lên và người dùng chọn số cân nặng bản thân hiện tại
Hình 17 Sơ đồ hoạt động useacse "Theo dõi trọng lượng"
41 d) Quản lý các chỉ số khác
Tên usecase: “Quản lý các chỉ số khác”
Mô tả: Quản lý các chỉ số như nhịp tim, đường huyết, giờ đã ngủ
+ Ở màn hình “Trang chủ” người dùng chọn vào mục “Quản lý các chỉ số khác”
+ Nếu người dùng chọn vào nút “add”, một popup hiện lên tại đây người dùng chọn các chỉ số như: Nhịp tim, đường huyết và số giờ đã ngủ
Hình 18 Sơ đồ hoạt động usecase "Quản lý các chỉ số khác"
42 e) Quản lý món ăn nạp vào
Tên usecase: “Quản lý món ăn nạp vào”
Mô tả: Quản lý lượng calo nạp vào thông qua các bữa ăn trong ngày Luồng sự kiện:
+ Ở màn hình “Trang chủ” người dùng chọn vào mục “Quản lý món ăn”
+ Nếu người dùng chọn vào nút “add”, một popup hiện lên tại đây người dùng chọn “Thêm” các món ăn cùng bữa ăn (đính kèm lượng năng lượng)
Hình 19 Sơ đồ hoạt động usecase "Quản lý món ăn"
Tên usecase: “Đo bước chân”
Mô tả: Đo bước chân cùng lượng calo và khoảng cách di chuyển của người dùng
+ Ở màn hình “Trang chủ” người dùng chọn vào mục “Đo bước chân”
+ Nếu người dùng chọn vào nút “add”, một popup hiện ra + Bấm nút bắt đầu và di chuyển
+ Kết thúc và bấm lưu
Hình 20 Sơ đồ hoạt động usecase "Đo bước chân"
3.4.3 Nhóm Usecase “Tính toán các chỉ số sức khỏe” a) Tính toán chỉ số BMI
Tên usecase: Tính toán chỉ số BMI
Mô tả: Tính toán chỉ số BMI của cơ thể qua chiều cao và cân nặng Luồng sự kiện:
+ Tại màn hình hính toán, chọn mục “Chỉ số BMI”
+ Nhập thông tin chiều cao và cân nặng + Bấm tính toán
Hình 21 Sơ đồ nhóm useace "Tính toán chỉ số sức khỏe”
45 Hình 22 Sơ đồ hoạt độn usecase "Tính toán chỉ số BMI"
46 b) Tính toán Calo cần hằng ngày
Tên usecase: Tính toán calo hằng ngày
Mô tả: Tính toán lượng calo cần cung cấp cho cơ thể tùy theo thể trạng và giới tính
+ Tại màn hình hính toán, chọn mục “Calo hằng ngày”
+ Nhập đầy đủ các trường thông tin + Bấm tính toán
Hình 23 Sơ đồ hoạt động usecase "Calo hằng ngày"
Tên usecase: Tính toán độ cồn trong máy
Mô tả: Tính toán nồng độ cồn trong cơ thể tùy theo thể trạng và giới tính, lượng cồn đã uống và thời gian
+ Tại màn hình hính toán, chọn mục “Độ cồn trong máu”
+ Nhập đầy đủ các trường thông tin + Bấm tính toán
Hình 24 Sơ đồ hoạt động cho usecase "Độ cồn trong máu"
48 d) Khối lượng cơ thể nạc
Tên usecase: Khối lượng cơ thể nạc
Mô tả: Tính toán khối lượng cơ nạc trong cơ thể
+ Tại màn hình hính toán, chọn mục “Khối lượng cơ thể nạc” + Nhập đầy đủ các trường thông tin
Hình 25 Sơ đồ hoạt động usecase "Khối lượng cơ thể nạc"
49 e) Chỉ số mỡ cơ thể
Tên usecase: Chỉ số mỡ cơ thể
Mô tả: Tính toán tỉ lệ mỡ trong cơ thể
+ Tại màn hình hính toán, chọn mục “Chỉ số mỡ cơ thể” + Nhập đầy đủ các trường thông tin
Hình 26 Sơ đồ hoạt động useacse "Chỉ số mỡ cơ thể"
Tên usecase: Máy tính giảm cân
Mô tả: Tính toán lượng calo cần đủ và thời gian đạt được số cân mục tiêu mà không ảnh hưởng đến sức khỏe
+ Tại màn hình hính toán, chọn mục “Máy tính giảm cân”
+ Nhập đầy đủ các trường thông tin + Bấm tính toán
Hình 27 Sơ đồ hoạt động usecase "Máy tính giảm cân"
Tên usecase: Trọng lượng lý tưởng
Mô tả: Tính toán cân nặng lý tưởng theo chỉ số BMI dựa vào chiều cao của cơ thể
+ Tại màn hình hính toán, chọn mục “Trọng lượng lý tưởng” + Nhập đầy đủ các trường thông tin
Hình 28 Sơ đồ hoạt động usecase ""Trọng lượng lý tưởng"
3.4.4 Nhóm Usecase “Tra cứu các bài tập” a) Bài tập tim mạch
Tên usecase: Bài tập tim mạch
Mô tả: Tra cứu là luyện tập các bài tập hổ trợ tim mạch theo lộ trình Luồng sự kiện:
+ Tại màn hình luyện tập, chọn mục “Bài tập tim mạch”
+ Chọn bài tập chưa hoàn thành gần nhất, sau đó nhấn bắt đầu + Bấm lưu nếu kết thúc luyện tập
Hình 29 Sơ đồ nhóm usecase "Tra cứu các bài tập"
53 Hình 30 Sơ đồ hoạt động usecase “Bài tập tim mạch”
Tên usecase: Bài tập múi cơ
Mô tả: Tra cứu là luyện tập các bài tập hổ trợ xây dựng các múi cơ theo lộ trình
+ Tại màn hình luyện tập, chọn mục “Bài tập múi cơ”
+ Chọn bài tập chưa hoàn thành gần nhất, sau đó nhấn bắt đầu + Bấm lưu nếu kết thúc luyện tập
Hình 31 Sơ đồ hoạt động usecase "Bài tập múi cơ"
Tên usecase: Bài tập bụng
Mô tả: Tra cứu là luyện tập các bài tập hổ trợ bụng – vòng eo theo lộ trình
+ Tại màn hình luyện tập, chọn mục “Bài tập bụng”
+ Chọn bài tập chưa hoàn thành gần nhất, sau đó nhấn bắt đầu + Bấm lưu nếu kết thúc luyện tập
Hình 32 Sơ đồ hoạt động usecase "Bài tập bụng"
Tên usecase: Bài tập cơ bản
Mô tả: Tra cứu là luyện tập các bài tập cơ bản hổ trợ sức khỏe theo lộ trình
+ Tại màn hình luyện tập, chọn mục “Bài tập cơ bản”
+ Chọn bài tập chưa hoàn thành gần nhất, sau đó nhấn bắt đầu + Bấm lưu nếu kết thúc luyện tập
Hình 33 Sơ đồ hoạt động usecase "Bài tập cơ bản"
3.4.5 Nhóm Usecase “Quản lý nhắc nhở” a) Nhắc nhở uống nước
Tên usecase: Nhắc nhở uống nước
Mô tả: Nhắc nhở uống nước sau một khoản thời gian
+ Tại màn hình nhắc nhở, chọn mục “Nhắc nhở uống nước” + Bật/ tắt chế độ nhắc nhở uống nước
+ Chọn thời khoản thời gian nhắc nhở
+ Dựa vào khoản thời gian đã chọn, hệ thống sẽ thông báo nhắc nhở người dùng
Hình 34 Sơ đồ nhóm usecase "Quản lý nhắc nhở"
Sơ đồ hoạt động: b) Nhắc nhở ăn
Tên usecase: Nhắc nhở ăn
Mô tả: Nhắc nhở các bữa ăn hằng ngày với các khoản thời gian chỉ định Luồng sự kiện:
+ Tại màn hình nhắc nhở, chọn mục “Nhắc nhở ăn”
+ Bật/ tắt chế độ nhắc nhở ăn + Chọn thời khoản thời gian nhắc nhở Hình 35 Sơ đồ hoạt động usecase "Nhắc nhở uống nước"
+ Dựa vào khoản thời gian đã chọn, hệ thống sẽ thông báo nhắc nhở người dùng
Sơ đồ hoạt động: c) Nhắc nhở cân
Tên usecase: Nhắc nhở cân
Mô tả: Nhắc nhở cân sau một khoản thời gian nhất định
+ Tại màn hình nhắc nhở, chọn mục “Nhắc nhở cân”
Hình 36 Sơ đồ hoạt động usecase "Nhắc nhở ăn"
+ Bật/ tắt chế độ nhắc nhở cân + Chọn thời khoản thời gian nhắc nhở
+ Dựa vào khoản thời gian đã chọn, hệ thống sẽ thông báo nhắc nhở người dùng
Sơ đồ hoạt động: d) Nhắc nhở uống thuốc
Tên usecase: Nhắc nhở uống thuốc
Mô tả: Nhắc nhở uống thuốc, vitamin hoặc thực phẩm chức năng sau một khoản thời gian
Hình 37 Sơ đồ hoạt động usecase "Nhắc nhở cân"
+ Tại màn hình nhắc nhở, chọn mục “Nhắc nhở uống nước” + Bật/ tắt chế độ nhắc nhở uống nước
+ Chọn thời khoản thời gian nhắc nhở
+ Dựa vào khoản thời gian đã chọn, hệ thống sẽ thông báo nhắc nhở người dùng
Hình 38 Sơ đồ hoạt động usecase "Nhắc nhở uống thuốc"