● Trước khi đi vào nghiên cứu chi tiết cụ thể, nhóm em đã lên kế hoạch tìm hiểu rất nhiều các ứng dụng có sẵn trên thị trường. Các ứng dụng này đa số đều rất mới mẻ, chủ yếu là đáp ứng nhu cầu chăm sóc dinh dưỡng và cơ thể cho người từ 6 tuổi trở lên. Chính vì thế để tạo ra sự khác biệt và đáp ứng những nhu cầu chăm sóc cần thiết cho trẻ em dưới 6 tuổi, nhóm chúng em đã nghiên cứu tạo ra một ứng dụng có thể làm điều này.
● Nhóm em đã thực hiện đề tài này bằng ngôn ngữ Dart với công nghệ ứng dụng Flutter. ● Nhóm em cũng đã tuân theo những quy chuẩn phát triển phần mềm và làm hoàn thiện phần
mềm thông qua các bước sau:
o Bước 1: Nhóm tiến hành khảo sát người dùng chi tiết, thu thập những nhu cầu
người dùng và những khó khăn của người dùng khi chưa có phần mềm.
o Bước 2: Nhóm nghiên cứu các sản phẩm hiện có sẵn trên thị trường xem có đáp
ứng được những nhu cầu thực tại không, khó khăn của phần mềm hiện tại là gì.
o Bước 3: Nhóm phân tích và đặc tả phần mềm theo các mô hình có sẵn về phát triển
phần mềm. Vẽ các UseCase cho chức năng và WorkFlow để nhóm cùng thực hiện.
o Bước 4: Nhóm thiết kế cơ sở dữ liệu và chọn các phương pháp hiện thực cơ sở dữ
liệu.
o Bước 6: Nhóm lựa chọn ngôn ngữ lập trình để hiện thực phần mềm của nhóm thành sản phẩm. Qua các sự hội ý, họp hành, nhóm quyết định chọn sử dụng ngôn ngữ dễ học và tiện lợi Dart thông qua Cross platform Flutter để thực hiện việc lập trình.
o Bước 7: Nhóm thiết kế Giao diện cho ứng dụng trên ứng dụng hỗ trợ thiết kế figma.
o Bước 8: Nhóm tiến hành cài đặt hoàn thiện cho phần mềm.
o Bước 9: Nhóm tiến hành sửa chữa các lỗi và nâng cấp một số chức năng có trong
phần mềm.
Chương 2. TỔNG QUAN 2.1. Khảo sát hiện trạng:
2.1.1. Hiện trạng chăm sóc trẻ em của bố mẹ ở thành thị:
Trẻ em ở thành thị được chăm sóc và giúp đỡ rất nhiều ở môi trường trường học và môi trường bệnh viện. Trẻ được quan tâm từ sức khỏe ăn uống đến các hoạt động thể chất. Đa số thành thị đều có các cơ sở y tế, cơ sở tiêm ngừa, trung tâm chăm sóc dinh dưỡng cho trẻ. Cha mẹ có thể đưa trẻ đến các cơ sở để nhận lời khuyên từ chuyên gia. Với mức sống hiện đại, các vật dụng chăm sóc trẻ đều có sẵn trong không gian mỗi gia đình từ đó làm cho sức khỏe của trẻ trở nên tốt hơn rất nhiều, phát triển nhanh và ít bệnh tật. Nhưng áp lực về kinh tế đã làm cho các gia đình ở thành thị dần không còn nhiều thời gian chăm sóc con cái.
2.1.2. Hiện trạng các ứng dụng chăm sóc trẻ em:
Các ứng dụng chăm sóc trẻ em trên thị trường chủ yếu tập trung vào việc giúp cho các bậc phụ huynh giảm tải thời gian chăm sóc cũng như là một quyển sổ ghi chú giúp ghi nhớ các hoạt động của con trẻ. Các ứng dụng này còn cung cấp rất nhiều kiến thức chăm sóc trẻ nhỏ cho các bậc phụ huynh
2.2. Nhận xét về hiện trạng: 2.2.1. Các vấn đề tồn đọng: 2.2.1. Các vấn đề tồn đọng:
Ở cuộc sống thành thị hiện tại, có rất nhiều gia đình vừa phải đi làm vất vả hằng ngày, vừa phải chăm lo cho con cái của họ. Những bậc bố mẹ trẻ tuổi vấp phải rất nhiều khó khăn trong việc chăm sóc con khi làm việc từ sáng đến chiều ở công ty, chỉ có buổi tối mới dành được thời gian ít ỏi trong ngày để chăm sóc con. Vì thế nên sự quan tâm về dinh dưỡng, thể chất con người và tiêm phòng cho con khá hời hợt và qua loa.
Các ứng dụng thì chủ yếu là giúp ghi nhớ các hoạt động của trẻ và chủ yếu là cung cấp các kỹ năng chăm sóc trẻ rất khô cứng và chưa linh hoạt
2.2.2. Các vấn đề tập trung trong đề tài:
Đề tài của chúng em tập trung giúp người dùng có thể chăm sóc trẻ một cách chủ động hơn bằng cách gợi ý người dùng cung cấp dinh dưỡng cho trẻ một cách đầy đủ nhất. Lưu lại chỉ số BMI thường xuyên giúp bố mẹ nhận thấy được cơ thể trẻ lớn lên theo từng ngày.
Đề tài chúng em còn cung cấp kiến thức chăm sóc trẻ em một cách linh động, chủ động hơn. Người dùng chỉ cần thực hiện các bước đơn giản để có được kiến thức mình mong muốn.
Đồng thời đề tài chúng em còn ứng dụng khoa học máy tính về gợi ý sản phẩm người dùng, giúp cho các bậc phụ huynh lựa chọn tốt hơn trong việc mua các sản phẩm chăm sóc con trẻ.
Chương 3. TÌM HIỂU CÔNG NGHỆ ỨNG DỤNG TRONG ĐỀ TÀI
3.1. Tổng quan về công nghệ Flutter:
Trong đề tài này, appservice sẽ được viết bằng Flutter. Vì vậy nhóm sinh viên thực hiện cần tìm hiểu về công nghệ này.
3.1.1. Khái niệm:
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google phát triển. Flutter sử dụng ngôn ngữ DART cũng do Google phát triển và flutter cũng đã được sử dụng để tạo ra các ứng dụng native cho Google.
Flutter hỗ trợ rất nhiều cơ sở dữ liệu như: MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC…
3.1.2. Lịch sử phát triển:
Phiên bản đầu tiên của Flutter được gọi là “Sky” và chạy trên hệ điều hành Android. Nó được công bố tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết xuất ổn định ở mức 120 khung hình trên giây. Trong bài phát biểu chính ở hội nghị Google Developer Days tại Thượng Hải, Google công bố phiên bản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1.0. Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter Live, là phiên bản “ổn định” đầu tiên của khung ứng dụng này.
3.1.3. Ưu điểm của Flutter:
● Native đúng nghĩa: Với Flutter, bạn có thể giao tiếp gần như trực tiếp với hệ thống. Bộ Engine để render UI hoàn toàn thuộc Flutter, vì vậy bạn có thể tạo ra bất kỳ hiệu ứng và đồ hoạ nào cho cả 2 nền tảng iOS và Android.
● Ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại: Tương tự như JS, Python hay Java, Flutter sử dụng ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại. Trình biên dịch (Compiler) linh động khi dùng AOT (cho sản phẩm cuối) và JIT (cho quá trình phát triển với Hot Reload).
● Hot reload: Khi làm việc với những thứ liên quan đến UI thì Hot Reload thật khiến cho lập trình viên dễ chịu, càng tuyệt hơn khi Flutter cung cấp khả năng ghi nhớ state của ứng dụng. Hot Reload cung cấp cho bạn trải nghiệm tuyệt vời khi lập trình Flutter, so với React Native thì điểm này Flutter hơn.
● Kiểm soát chặt chẽ hiệu suất của ứng dụng: Flutter có thể chạy được giả lập mobile trên trang web, đây là một điều vô cùng thuận tiện cho việc phát triển. Ngoài ra, các chỉ số hiệu suất được hỗ trợ sẵn cũng giúp cho các developer kiểm soát hiệu suất của ứng dụng một cách chặt chẽ.
● Dễ dàng nâng cấp: Mặc dù cách cài đặt ban đầu của Flutter là tải về tập tin nén, nhưng khi cập nhật lên phiên bản mới thì chỉ cần dòng lệnh là đủ, và khá dễ dàng. Ứng dụng sau khi nâng cấp phiên bản Flutter chạy không gặp trở ngại gì cả. Đây là một điểm cộng khá lớn khi xét về độ trưởng thành. Khi sử dụng React Native, các phiên bản từ 0.25, 0.48 có những thay đổi phải sửa bằng tay mới chạy, rất khó chịu.
Kết luận: Với những tính năng ưu việt của mình, Flutter vẫn, sẽ và đang là một trong những ngôn ngữ lập trình phổ biến nhất ngày nay và trong tương lai, được các lập trình viên rất ưa chuộng, và sử dụng rộng rãi trên toàn thế giới.
3.2. Ngôn ngữ Dart: 3.2.1. Giới thiệu ngôn ngữ Dart: 3.2.1. Giới thiệu ngôn ngữ Dart:
Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn. Nó được sử dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động. Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript. Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe). Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub. Hiện nay Dart đã release phiên bản 2.23.2.2.
3.2.2. Ưu điểm của Dart:
● Năng xuất: Cú pháp Dart rõ ràng và súc tích, công cụ của nó đơn giản nhưng mạnh mẽ. Type-safe giúp bạn xác định sớm các lỗi tinh tế. Dart có các thư viện cốt lõi và một hệ sinh thái gồm hàng ngàn package.
● Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đoán hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.
● Khả năng di động cao: Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart có thể chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với các ứng dụng web, chuyển mã từ Dart sang JavaScript.
● Dễ tiếp cận: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định hướng đối tượng không gây ngạc nhiên của nó. Nếu bạn đã biết C ++, C # hoặc Java, bạn có thể làm việc hiệu quả với Dart chỉ sau vài ngày.
● Reactive: Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý các đối tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ đối tượng nhanh và GC. Dart hỗ trợ lập trình không đồng bộ thông qua các tính năng ngôn ngữ và API sử dụng các đối tượng Future và Stream.
3.3. Ứng dụng Figma:
Dựa trên kinh nghiệm đã thực hiện từ những đồ án trước, nhóm quyết định chọn Figma làm ứng dụng thiết kế giao diện đồ án.
3.3.1. Giới thiệu Figma:
Figma là một công cụ thiết kế vector và thử nghiệm sản phẩm website và app. Công cụ dựa trên nền tảng đám mây để người dùng có thể cộng tác trong các dự án và làm việc ở bất cứ đâu.
Mặc dù Figma có chức năng rất giống các công cụ thiết kế khác, những điểm khác biệt chính là khả năng làm việc với các nhóm trong các dự án. Đến nay, Figma có lẽ là lựa chọn phù hợp nhất hiện có.
Năm 2011, một nhóm các lập trình viên yêu thích thiết kế đã nhen nhóm một ý tưởng về một công cụ thiết kế chạy hoàn toàn trên nền tảng web, đây là một ý tưởng khá táo bạo, tiên phong và thậm chí là bị đánh giá là điên khùng lúc bấy giờ. Bởi lẽ, mọi người tại thời điểm này đều quan niệm web chỉ dành cho các tác vụ văn phòng hay giải trí nhẹ nhàng, như đọc email hay xem phim,… Còn công việc thiết kế, yêu cầu những cỗ máy tính cấu hình siêu mạnh mẽ, thì việc đem nó lên nền tảng web là bất khả thi.
Cốt lõi của ý tưởng này:
● Mọi người, mọi nền tảng đều có thể được sử dụng những công cụ thiết kế mạnh mẽ. ● Tạo ra một nền tảng hỗ trợ làm việc nhóm mạnh mẽ, linh hoạt cho phép mọi người trên thế
giới đều có thể cùng làm việc trên một file thiết kế duy nhất.
● Có hệ thống quản lý các phiên bản chỉnh sửa tiện lợi, rõ ràng, chi tiết.
Vào năm 2015, nhóm lập trình viên ngày nào đã thành lập Figma.Inc và cho ra mắt công cụ thiết kế trên nền tảng web đầu tiên trên thế giới – Figma 1.0, cung cấp hoàn toàn miễn phí cho người dùng tại thời điểm này.
Sau một thời gian dài sử dụng, Figma dần có được tình cảm không chỉ của những nhà thiết kế chuyên nghiệp mà còn từ những người dùng phổ thông bởi sự mới mẻ, linh hoạt, năng động và hiệu quả của mình, sau đó Figma được phát triển và ngày càng phổ biến cho đến ngày nay.
3.3.3. Ưu điểm:
● Tính tương thích: Figma hoạt động tương thích trên tất cả các hệ điều hành có trình duyệt web, từ Macs, Windows, Linux đến Chromebooks đều có thể dùng Figma. Đây là công cụ design duy nhất có thể làm được điều này. Tất cả mọi người đều có thể chia sẻ, mở và chỉnh sửa một file Figma dễ dàng dù đang dùng hệ máy nào.
● Hỗ trợ làm việc nhóm hiệu quả: Figma là một công cụ browser-based, do đó mọi người trong team có thể làm việc với nhau tương tự như làm việc trong Google Docs. Với mỗi thành viên đang xem hoặc chỉnh sửa file, Figma đại diện bằng một avatar tròn trên thanh công cụ với tên riêng. Click vào avatar này bạn sẽ được thấy thành viên đó đang nhìn phần nào trên design. Chức năng này rất tiện khi bạn muốn biết ai đang làm việc trên file.
● Chia sẻ file đơn giản: Một khi bạn chia sẻ file Figma qua việc gửi link cho người khác, người nhận link sẽ có khả năng truy cập vào file đó. Nếu bạn lựa chọn Link to selected frame người nhận sẽ nhìn thấy chính xác frame bạn đang chọn lúc chia sẻ file. Mình rất hay dùng tính năng tiện dụng này khi chia sẻ một file phức tạp, có quá nhiều frame nằm trong một page.
● Hỗ trợ feedback tiện lợi: Figma hỗ trợ bình luận ngay trong app, cả trong chế độ design và prototyping. Ngoài ra comment còn có thể được theo dõi thông qua Slack hoặc email. Nếu bạn đã từng sử dụng các công cụ như Sketch kết hợp với Invision, Marvel, bạn sẽ thấy việc update design sau mỗi đợt feedback cũng ngốn của bạn không ít thời gian. Với chức năng comment ngay trong file thiết kế, Figma đã giải quyết được vấn đề trên một cách nhẹ nhàng.
● Công cụ hỗ trợ cho các developer: Figma hiển thị code snippets cho từng đối tượng được chọn. Code có thể hiển thị dưới dạng CSS, dành cho iOS hay Android. Thay vì sử dụng các công cụ của bên thứ ba, developer có thể inspect đối tượng ngay trên file trong lúc xem thiết kế. Mặc dù thế, nếu bạn muốn các thông số phức tạp hơn, bạn vẫn có thể sử dụng Zeplin. Figma đã hỗ trợ Zeplin rất tốt cho tới thời điểm hiện tại.
● Tất cả đều được lưu trữ online: Tất cả mọi thứ của bạn đề đã được lưu trữ trên cloud. Bạn sẽ không sợ mất file, hỏng máy hay hàng tá các vấn đề trời ơi đất hỡi khác. Bạn có thể sắp xếp file theo project, mỗi file lại được chia ra làm nhiều page tùy theo nhu cầu của bạn.
Kết luận: Chính vì những ưu điểm vượt trội đó thì hiện nay, Figma đã và đang được nhiều công ty tin dùng và đây cũng là ứng dụng miễn phí nên rất phù hợp với các sinh viên.
3.4. Tổng quan về Firebase: 3.4.1. Giới thiệu về Firebase: 3.4.1. Giới thiệu về Firebase:
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase phát triển từ Evolve, một công ty khởi nghiệp trước đó được thành lập bởi James Tamplin và Andrew Lee vào năm 2011. Evolve cung cấp cho các nhà phát triển một API cho phép
tích hợp chức năng trò chuyện trực tuyến vào trang web của họ. Sau khi phát hành dịch vụ trò chuyện, Tamplin và Lee phát hiện ra rằng nó đang được sử dụng để truyền dữ liệu ứng dụng không phải là tin nhắn trò chuyện. Các nhà phát triển đã sử dụng Evolve để đồng bộ hóa dữ liệu ứng dụng