Đăng ký Đăng nhập
Trang chủ Phát triển ứng dụng di động hỗ trợ học trực tuyến trên các thiết bị thông minh v...

Tài liệu Phát triển ứng dụng di động hỗ trợ học trực tuyến trên các thiết bị thông minh và hỗ trợ thanh toán online

.PDF
95
1
100

Mô tả:

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG HỖ TRỢ HỌC TRỰC TUYẾN TRÊN CÁC THIẾT BỊ THÔNG MINH VÀ HỖ TRỢ THANH TOÁN ONLINE NGÀNH: KHOA HỌC MÁY TÍNH HỘI ĐỒNG: HỆ THỐNG & MẠNG MÁY TÍNH GVHD: TS. NGUYỄN QUANG HÙNG GVPB: THS. LÊ ĐÌNH THUẬN SVTH1: SVTH2: DANH TRÍ HIẾU (1711271) PHAN ĐÌNH TUỆ (1713814) Lời cam đoan Chúng tôi xin cam đoan rằng đề tài luận văn tốt nghiệp: "Phát triển ứng dụng di động hỗ trợ học trực tuyến trên các thiết bị thông minh và hỗ trợ thanh toán online" là do chúng tôi thực hiện dưới sự hướng dẫn của TS Nguyễn Quan Hùng. Tất cả các tham khảo từ các công trình khác đều được ghi rõ trong mục "Tài liệu tham khảo". Nội dung của luận văn này chưa từng được công bố trước đây dưới bất kì hình thức nào. Nếu có bất kì sai phạm nào, chúng tôi xin chịu hoàn toàn trách nhiệm trước Ban Chủ nhiệm Khoa và Ban Giám hiệu Nhà trường. Nhóm sinh viên thực hiện Lời cảm ơn Trước hết, chúng tôi xin trân trọng gửi lời cảm ơn đến TS Nguyễn Quan Hùng - giảng viên khoa Khoa học và Kỹ thuật Máy tính (trường Đại học Bách Khoa - ĐHQG TP.HCM). Trong thời gian vừa qua, thầy đã tận tình chỉ dạy, hướng dẫn cho chúng tôi những kiến thức quý báu. Bên cạnh đó thầy cũng tạo mọi điều kiện thuận lợi để chúng tôi hoàn thành luận văn trong thời gian sớm nhất. Bên cạnh đó, chúng tôi xin gửi lời cảm ơn đến Trường Đại học Bách Khoa - ĐHQG TPHCM, nơi đã tạo cho nhóm chúng tôi môi trường học tập tốt. Quý thầy cô khoa Khoa học và Kỹ thuật Máy tính, những người đã truyền tri thức cùng tâm huyết của mình cho nhóm chúng tôi vốn kiến thức trong suốt thời gian qua. Chúng tôi xin gửi lời cảm ơn sâu sắc đến bố mẹ và bạn bè đã động viên tinh thần, bên cạnh nhóm trong suốt quá trình học tập ở trường cũng như thực hiện luận văn tốt nghiệp. Do giới hạn kiến thức và khả năng lý luận của bản thân còn nhiều thiếu sót và hạn chế, kính mong sự chỉ dẫn và đóng góp của các thầy cô để luận văn của nhóm được hoàn thiện hơn. Lời cuối cùng, chúng tôi xin gửi lời cám ơn sâu sắc đến gia đình, bạn bè - những người đã sát cánh bên chúng tôi, là động lực to lớn để chúng tôi hoàn thành luận văn một cách trọn vẹn nhất Nhóm sinh viên thực hiện Tóm tắt Đề tài luận văn mà nhóm chúng tôi thực hiện là "Phát triển ứng dụng di động hỗ trợ học trực tuyến trên các thiết bị thông minh và hỗ trợ thanh toán online". Trong quá trình thực hiện đề tài này, nhóm chúng tôi đã thực hiện qua hai giai đoạn, cụ thể như sau: Giai đoạn 1: Tìm hiểu phân tích đề tài, tìm hiểu nền tảng moodle. Đưa ra các phân tích và thiết kế ứng dụng, tìm hiểu các kỹ thuật nền tảng triển khai. Tiến hành lựa chọn công nghệ phù hợp. Giai đoạn 2: Xây dựng ứng dụng có khả năng hoạt động tốt trên hai nền tảng iOS, Android và hoạt động ổn định trên nhiều thiết bị có cấu hình yếu. Đảm bảo đầy đủ các chức năng cần thiết cho việc học tập của học sinh. Báo cáo luận văn tốt nghiệp của nhóm sẽ trình bày thông qua các nội dung chính sau đây: • • • • • • Chương 1: Tổng quan Chương 2: Lý thuyết cơ sở, công nghệ, các công trình liên quan Chương 3: Thiết kế kiến trúc ứng dụng Chương 4: Hiện thực ứng dụng Chương 5: Kiểm thử phần mềm Chương 6: Kết luận và hướng phát triển Summary The thesis topic that our team carries out is "Develop mobile application for online learning on smart devices and support online payment". In the process of implementing this topic, our team has done through two stages, specifically as follows: Stage 1: Learn to analyze the topic, learn the moodle background. Provide system analysis and design, learn implementation foundation techniques. Select the suitable technology. Stage 2: Building applications capable of working well on two platforms iOS, Android and stable operation on many devices with weak configuration. Ensure all necessary functions for students’ learning. The group’s graduation thesis report will present through the following main contents: • • • • • • Chapter 1: Overview Chapter 2: Basic theory, technology, related construction Chapter 3: Application architecture designing Chapter 4: Application reality Chapter 5: Software testing Chapter 6: Conclusion and development direction Mục lục 1 2 TỔNG QUAN 1.1 Đặt vấn đề . . . . . . . 1.2 Các vấn đề hiện tại . . 1.3 Mục tiêu của đề tài . . 1.4 Phạm vi đề tài . . . . . 1.5 Khó khăn và thử thách . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÝ THUYẾT CƠ SỞ, CÔNG NGHỆ, CÁC CÔNG TRÌNH LIÊN QUAN 2.1 Learning Management System - LMS . . . . . . . . . . . . . . . . . . . . . 2.1.1 LMS - Edmodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 LMS - Moodle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Kết luận và lựa chọn . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Các loại ứng dụng di động . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Native App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Hybrid App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Cross Platform App . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Kết luận và lựa chọn loại ứng dụng . . . . . . . . . . . . . . . . . . . 2.3 Frame-work và ngôn ngữ lập trình Cross Platform App . . . . . . . . . . . . 2.3.1 Flutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Xamarin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 React Native . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4 Kết luận lựa chọn frame-work, ngôn ngữ lập trình Cross Platform App 2.4 Kiến trúc ứng dụng của flutter . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 Gestures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 Stateless widgets và Stateful widgets . . . . . . . . . . . . . . . . . . 2.4.4 Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.5 ScopedModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.6 REST API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.7 Mô hình MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Một số lưu lý khi lập trình ứng dụng đa nền tảng . . . . . . . . . . . . . . . . 2.5.1 Phân biệt thiết kế UI trên hai nền tảng Android và IOS . . . . . . . . 2.5.2 Xu hướng thiết kế ứng dụng 2020 . . . . . . . . . . . . . . . . . . . 2.6 Figma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Java và Spring-boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9 Firebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10 Google Cloud Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . 1 1 1 1 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 4 5 6 6 7 8 9 10 10 10 11 12 13 13 13 13 15 16 17 18 20 20 21 23 24 26 27 29 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính 3 4 2.11 VNPay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.12 ZaloPay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 31 THIẾT KẾ KIẾN TRÚC ỨNG DỤNG 3.1 Phân tích yêu cầu đề tài . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Tìm hiểu các ứng dụng tương tự . . . . . . . . . . . . . . 3.1.2 Phân tích nghiệp vụ, chức năng sẽ hiện thực trên ứng dụng a. Đối tượng chính trong ứng dụng . . . . . . . . . b. Các chức năng chính . . . . . . . . . . . . . . . 3.2 Thiết kế use case . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Thiết kế giao diện . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Giao diện đăng nhập, đăng ký . . . . . . . . . . . . . . . 3.3.2 Giao diện trang chủ . . . . . . . . . . . . . . . . . . . . . 3.3.3 Giao diện mua khoá học . . . . . . . . . . . . . . . . . . 3.3.4 Giao diện thông tin cá nhân . . . . . . . . . . . . . . . . 3.3.5 Giao diện xem lại bài làm . . . . . . . . . . . . . . . . . 3.3.6 Giao diện làm quiz . . . . . . . . . . . . . . . . . . . . . 3.3.7 Giao diện trò chơi . . . . . . . . . . . . . . . . . . . . . . 3.3.8 Giao diện chức năng thanh toán . . . . . . . . . . . . . . 3.3.9 Các loại popup . . . . . . . . . . . . . . . . . . . . . . . 3.4 Thiết kế Back-end (API Bee Service) và cơ sở dữ liệu . . . . . . . 3.4.1 Cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Back-end (Bee Service) . . . . . . . . . . . . . . . . . . . 3.5 Cấu trúc của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 33 33 33 33 35 40 40 40 41 41 42 42 43 43 44 45 45 46 47 . . . . . . . . . . . . . . . . . . . . . . 48 48 48 49 49 49 49 50 50 51 52 52 53 53 54 55 56 56 57 58 58 59 59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HIỆN THỰC ỨNG DỤNG 4.1 Công nghệ sử dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Quản lý mã nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Hiện thực API back-end . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Hiện thực ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Truy cập dữ liệu, sử dụng hệ thống Moodle(Ong vàng học tập) . . . . . 4.5.1 Web Service API . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2 Một số hàm của API Web Service được sử dụng trong ứng dụng a. Lấy danh sách khoá học . . . . . . . . . . . . . . . . b. Lấy danh sách khoá học đã đăng ký . . . . . . . . . . c. Lấy nội dung khóa học . . . . . . . . . . . . . . . . d. Lấy thông tin người dùng . . . . . . . . . . . . . . . e. Cập nhật thông tin người dùng . . . . . . . . . . . . f. Phân quyền người dùng . . . . . . . . . . . . . . . . g. Lấy nội dung bài tập . . . . . . . . . . . . . . . . . . h. Lấy danh sách những lần làm bài của người dùng . . . i. Người học bắt đầu thực hiện bài tập . . . . . . . . . . j. Lấy nội dung, các câu hỏi của bài tập . . . . . . . . . k. Lấy nội dung kết quả thực hiện bài tập . . . . . . . . l. Xử lý kết quả thực hiện bài tập của người học . . . . . m. Lấy kết quả của khóa học . . . . . . . . . . . . . . . n. Lấy kết quả đầy đủ của một khóa học . . . . . . . . . 4.6 Kết quả hiện thực . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trang 2/83 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 . . . . . . . . . . 59 62 63 64 66 67 67 69 70 71 5 KIỂM THỬ PHẦN MỀM 5.1 Kiểm thử API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Kiểm thử hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 73 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 Kết quả đạt được . . . . . . . . . . 6.2 Thuận lợi . . . . . . . . . . . . . . 6.3 Khó khăn . . . . . . . . . . . . . . 6.4 Hướng phát triển trong tương lai . . 80 80 80 81 81 4.6.7 4.6.8 Đăng nhập, đăng ký . . . . . . . . . . . . . . . . . . Giao diện trang chủ và chức năng đặt mục tiêu học tập Giao diện khoá học và bài tập . . . . . . . . . . . . . Chức năng làm quiz online . . . . . . . . . . . . . . . Chức năng thống kê đánh giá . . . . . . . . . . . . . . Chức năng thanh toán online . . . . . . . . . . . . . . a. Thanh toán VNPay . . . . . . . . . . . . . b. Thanh toán ZaloPay . . . . . . . . . . . . . Chơi game kết hợp làm quiz . . . . . . . . . . . . . . Thông tin người dùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trang 3/83 Danh sách hình vẽ 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 Sơ đồ đơn giản ứng dụng hello world [15] Ví dụ cho StatelessWidget [20] . . . . . . Ví dụ cho StatefulWidget [20] . . . . . . Mô hình MVVM [16] . . . . . . . . . . Ví dụ bảng màu tươi tông màu nóng [13] Ví dụ bảng màu tươi tông màu lạnh [13] . Bảng màu tương phản [17] . . . . . . . . Các hình thức thanh toán trên VNPay [5] Các chức năng chính của ZaloPay [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 15 18 21 22 22 30 31 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 Use case cho người dùng . . . Giao diện đăng nhập, đăng ký Giao diện trang chủ . . . . . . Giao diện trang chủ . . . . . . Giao diện thông tin cá nhân . . Giao diện xem lại bài làm . . . Giao diện làm quiz . . . . . . Giao diện làm bài tập trò chơi . Giao diện thanh toán . . . . . Các loại popup thông báo . . ERD cơ sở dữ liệu hệ thống . . Thiết kế Back-end . . . . . . . Kiến trúc chung của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 40 40 41 41 42 42 43 43 44 45 46 47 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 Xác thực người dùng thông với tài khoản Moodle . . . . Xác thực người dùng thông qua Firebase . . . . . . . . . Giao diện đăng nhập, đăng ký . . . . . . . . . . . . . . Giao diện trang chủ và chức năng đặt mục tiêu học tập . Giao diện khoá học và bài tập . . . . . . . . . . . . . . . Luồng lấy dữ liệu khóa học . . . . . . . . . . . . . . . . Luồng lấy dữ liệu bài học và cách hiển thị với người dùng Giao diện làm câu hỏi trắc nghiệm . . . . . . . . . . . . Giao diện thống kê kết quả . . . . . . . . . . . . . . . . Giao diện thanh toán khoá học . . . . . . . . . . . . . . Sequent diagram chức năng thanh toán VNPay . . . . . . Các phương thức thanh toán hỗ trợ . . . . . . . . . . . . Sequent diagram chức năng thanh toán qua ZaloPay . . . Giao diện chơi game kết hợp làm quiz . . . . . . . . . . Giao diện thông tin người dùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 61 62 63 63 64 65 66 66 67 68 68 69 70 71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính 5.1 5.2 Gọi API tạo URL thanh toán với VNPay và kết quả trả về thành công . . . . . . Gọi API tạo order thanh toán với VNPay và kết quả trả về thành công . . . . . 72 73 Trang 5/83 Danh sách bảng 2.1 Phân biệt thiết kế UI trên hai nền tảng Android và IOS [12] 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Use case đăng nhập . . . . . . . . . . . . . . Use case xem khoá học đã mua . . . . . . . . Use case thanh toán khoá học . . . . . . . . . Use case cập nhật thông tin cá nhân . . . . . Use case chơi game vòng quay trả lời câu hỏi Use case tạo mục tiêu học tập . . . . . . . . . Use case làm bài tập trắc nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 Những thư viện, framework chính được sử dụng . . . . . . . . . . . . Những tham số của hàm lấy danh sách khoá học . . . . . . . . . . . . Mô tả đối tượng Course . . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm lấy danh sách khoá học đã đăng ký . . . . . . Những tham số của hàm lấy nội dung khoá học . . . . . . . . . . . . Mô tả đối tượng Section . . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm lấy thông tin người dùng . . . . . . . . . . . Mô tả đối tượng User . . . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm cập nhật thông tin người dùng . . . . . . . . Những tham số của hàm phân quyền người dùng, ghi danh khoá học . Những tham số của hàm lấy nội dung bài Quiz . . . . . . . . . . . . . Mô tả đối tượng Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm lấy thông tin làm bài của người dùng . . . . . Mô tả đối tượng Attempt . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm thực hiện bài tập . . . . . . . . . . . . . . . Những tham số của hàm lấy nội dung, các câu hỏi của bài tập . . . . . Mô tả đối tượng Question . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm lấy kết quả thực hiện bài tập . . . . . . . . . Mô tả những thông tin của lần làm bài được chỉ định . . . . . . . . . Những tham số của hàm xử lý kết quả thực hiện bài tập của người học Những tham số của hàm lấy kết quả của khóa học . . . . . . . . . . . Mô tả đối tượng Grade . . . . . . . . . . . . . . . . . . . . . . . . . Những tham số của hàm lấy kết quả đầy đủ của một khóa học . . . . . Mô tả đối tượng UserGrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 . . . . . . . . . . . 20 . . . . . . . . . . . . . . 36 36 37 37 38 38 39 . . . . . . . . . . . . . . . . . . . . . . . . 48 50 51 51 52 52 52 53 53 54 54 55 55 56 56 57 57 57 58 58 58 59 59 59 Danh sách trường hợp kiểm thử back box . . . . . . . . . . . . . . . . . . . . . 79 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Thuật ngữ và từ viết tắt API App Graphic animation Database Data Server Client Client side ERD Frontend Backend Quiz Offline Platform Fintech Local State Request URL UI Web service Webview Component GCP Application Programming Interface Ứng dụng, chỉ cả ứng dụng Web, Mobile Hiệu ứng động Cơ sở dữ liệu Dữ liệu Máy chủ Máy khách Phía máy khách Entity Relationship Diagram được hiểu là mô hình thực thể kết hợp hay còn gọi là thực thể liên kết Thành phần tương tác trực tiếp với người dùng Thành phần này xử lý logic đằng sau của ứng dụng Bài tập Ngoại tuyến Nền tảng kết nối Sự kết hợp giữa Finance (tiền tệ, tài chính) và Technology (công nghệ), là công nghệ tài chính Cục bộ Trạng thái Yêu cầu từ phía người dùng gửi lên cho máy chủ Uniform Resource Locator là đường dẫn hay địa chỉ dùng để tham chiếu đến các tài nguyên trên mạng Internet User Interface hay còn gọi là giao diện người dùng Là dịch vụ web, một module phần mềm được thiết kế để thực hiện một nhóm các tác vụ nhất định Trình duyệt được nhúng trong ứng dụng để hiển thị HTML Một thành phần unit của Flutter app Google Cloud Platform Chương 1 TỔNG QUAN 1.1 Đặt vấn đề Giai đoạn 2020-2021 là một giai đoạn đầy biến động, khó khăn và những thách thức lớn, đại dịch COVID-19 đã làm thay đổi xã hội, thay đổi nền kinh tế, giáo dục của nhiều nước trên thế giới, mọi người ở nhà nhiều hơn, tiếp xúc các thiết bị di động và Internet nhiều hơn, làm việc ở nhà, đi chợ online, học online,... Nhận thấy các dịch vụ giải trí, các mạng xã hội phát triển mạnh, nhiều trẻ em, học sinh có điều kiện sử dụng điện thoại nhiều hơn nhưng đa số là các em sử dụng để chơi game, xem phim là chính. Thêm việc các ứng dụng hỗ trợ học tập cho trẻ em, học sinh chưa nhiều, chưa cuốn hút các em tự học, nên nhóm quyết định xây dựng một ứng dụng học tập online với giao diện đẹp mắt, trải nghiệm thú vị đem lại cảm giác vừa học vừa chơi cho các em tự tìm hiểu kiến thức với mong muốn giúp các em có ứng dụng để học tập những lúc ở nhà thay vì xem phim và chơi game lãng phí thời gian. 1.2 Các vấn đề hiện tại • Qua mùa dịch vừa rồi, lượng người dùng những ứng dụng học online tăng mạnh. • Ở Việt Nam, số lượng trang web học tập được xây dựng dựa trên nền tảng Moodle khá phổ biến. • Mobile App của Moodle chưa thực sự đáp ứng tốt cho người dùng (giật lag, lỗi hiển thị, không thông báo, đăng nhập khó khăn,...). • Công nghệ Webview bị lạm dụng trong Moodle Mobile App làm ứng dụng trở nên quá nhiều chữ, khó tiếp cận với người dùng mobile. Với thực trạng đó, đề tài này cung cấp mobile app mới miễn phí thay thế Moodle Mobile App làm cầu nối tốt hơn giữa người dùng và các trang web được xây dựng dựa trên nền tảng Moodle. 1.3 Mục tiêu của đề tài Đề tài này phát triển ứng dụng Mobile App sử dụng framework Flutter cho phép đồng bộ nội dung từ Moodle với các tính năng chính như sau: • Kết nối, đồng bộ được các khoá học trên hệ thống E-learning dựa vào Moodle LMS (ongvanghoctap.edu.vn). • Hỗ trợ thanh toán trực tuyến qua cổng thanh toán VNPAY và ví ZaloPAY. 1 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính Ngoài ra, còn có các mục tiêu khác như: • Giao diện phần mềm thân thiện trên cả Android, iOS. • Đề xuất khoá học dựa trên thông tin học sinh. • Hỗ trợ làm bài kiểm tra dạng trắc nghiệm và dạng H5P. • Thống kê kết quả học tập theo từng khoá học, từng bài quiz định kỳ hàng ngày, hàng tháng. 1.4 Phạm vi đề tài Phạm vi các đối tượng mà đề tài hướng đến là: • Người học (học sinh, sinh viên) thông qua ứng dụng trên điện thoại thông minh tham gia các khóa học trên hệ thống Moodle LMS (chẳng hạn: ongvanghoctap.edu.vn). • Ứng dụng đã hỗ trợ được thanh toán với: VNPAY, ZaloPAY. • Giao diện ứng dụng di động sử dụng framework Flutter đã chạy trên cả Android và iOS. • Thống kê kết quả học tập theo từng khoá học, từng bài quiz, thống kê thời gian học tập của học viên định kỳ hàng ngày, hàng tháng. • Chỉ mới hỗ trợ được bài tập Quiz dạng Moodle Quiz (Multichoice) và H5P Quiz (multiple choice). 1.5 Khó khăn và thử thách Các khó khăn, thử thách mà đề tài gặp phải: • Độ ổn định của ứng dụng. • Phải đảm bảo đầy đủ các chức năng nhưng vẫn dễ dàng sử dụng cho học viên. • Hỗ trợ được nhiều dạng bài tập khác nhau. Trang 2/83 Chương 2 LÝ THUYẾT CƠ SỞ, CÔNG NGHỆ, CÁC CÔNG TRÌNH LIÊN QUAN 2.1 Learning Management System - LMS • LMS là chữ viết tắt của Learning Management System, tiếng việt nghĩa là Hệ thống quản lý học trực tuyến. LMS là một phần mềm cho phép việc quản lý, vận hành hệ thống các tài liệu, hướng dẫn, theo dõi, báo cáo và cung cấp các công nghệ giáo dục điện tử (E-Learning) cho các khóa học hay chương trình đào tạo. • LMS được cấu tạo từ 2 thành phần chính: – Thành phần công nghệ nền (back-end) gồm các chức năng cốt lõi như tạo, quản lý và cung cấp các khóa học, chứng thực người dùng, cung cấp các dữ liệu hay thực hiện các thông báo,.... Thành phần này được quản lý và điều khiển bởi người lập trình hay người quản lý hệ thống. – Thành phần giao diện người dùng (front-end) chạy trên nền các trình duyệt web. Thành phần này được dùng bởi các chủ thể trong hệ thống học trực tuyến như người quản lý, giảng viên và học viên. • Một số chức năng cốt lõi – Quản lý người dùng – Quản lý khóa học – Quản lý tương tác, hỗ trợ – Thi, kiểm tra – Theo dõi, giám sát – Báo cáo, Thông báo – Tùy chỉnh Sau đây nhóm sẽ so sánh một số mã nguồn mở LMS đang thịnh hành hiện tại. 2.1.1 LMS - Edmodo Edmodo là giải pháp LMS phổ biến nhất hiện nay hướng đến đối tượng là giáo viên, học sinh và phụ huynh. Với lượng người dùng lên đến 100 triệu, Edmodo là công cụ dạy học theo mô hình mạng xã hội mà giáo viên có thể chia sẻ bài giảng, quản lý lớp học, khảo sát ý kiến, ... và học viên có thể làm bài tập, chia sẻ kiến thức học tập, .... Edmodo có thể hoạt động trên nền tảng điện thoại IOS, Android chỉ với dung lượng 14 Mb vô cùng thân thiện với người sử dụng.[22] Ưu điểm 3 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính • Là mã nguồn mở LMS phổ biến nhất hiện tại. • Lưu trữ trên đám mây • Giáo viên có thể tải lên nội dung gốc từ nhiều nguồn khác nhau • Edmodo dành cho người dùng không giới hạn chỉ với tài khoản freemium • Edmodo cung cấp cho người dùng nhiều cơ hội đào tạo, cả miễn phí và trả phí. Nhược điểm • Không thể tải xuống chạy local. • Không cung cấp các công cụ soạn thảo nội dung để giáo viên tạo chương trình giảng dạy của riêng họ. Nội dung cũng không tuân theo SCORM(Sharable Content Object Reference Model là một tập hợp tiêu chuẩn cho hệ thống E-learning) • Tài khoản “freemium” chỉ dùng được những chức năng cơ bản • Edmodo thường nhắm mục tiêu đến thị trường K-12 hơn là giáo dục đại học • Không nhằm vào các doanh nghiệp. • Không tích hợp với các hệ thống của bên thứ ba khác ngoài Google Apps và Microsoft Office. 2.1.2 LMS - Moodle Moodle được sáng lập vào năm 1999 bởi Martin Dougiamas, cho đến nay đã được phát triển thành hệ thống quản lý học tập phổ biến thứ 2 thế giới, được sử dụng bởi các doanh nghiệp, tập đoàn, bệnh viện và cả tổ chức phi lợi nhuận, trong đó có Liên Hợp Quốc. Tính đến tháng 8 năm 2016, Moodle đã có 89 triệu người dùng và lượng khách hàng lên đến 71 nghìn người. Sở dĩ Moodle thu hút như vậy là bởi hệ thống này sở hữu mã nguồn mở, hoàn toàn miễn phí và có thể chỉnh sửa được. Moodle cho phép các giảng viên, các nhà tuyển dụng xây dựng khóa học trực tuyến để đáp ứng nhu cầu học tập của đối tượng học tập (học sinh, sinh viên, nhân viên,. . . )[1] Qua quá trình trải nghiệm và phân tích hệ thống LMS(Learning Management System) Moodle, nhóm đưa ra những ý kiến về Moodle như sau: • Moodle là một hệ thống quản lý học tập (Learning Management System - LMS) mã nguồn mở, cho phép tạo các khóa học trên mạng Internet hay các website học tập trực tuyến. • Moodle nổi bật là thiết kế hướng tới giáo dục, dành cho những người làm trong lĩnh vực giáo dục. • Moodle rất dễ dùng với giao diện trực quan, khá dễ dùng và giống với trang web e-learning của trường Đại học Bách Khoa. • Moodle thiết kế dựa trên module cho phép bạn chỉnh sửa giao diện bằng cách dùng các theme. • Tài liệu hỗ trợ của Moodle rất đồ sộ và chi tiết, khác hẳn với nhiều dự án mã nguồn mở khác. • Moodle phù hợp với nhiều cấp học và hình thức đào tạo: phổ thông, đại học/cao đẳng, không chính quy, trong các tổ chức/công ty. • Moodle phát triển dựa trên PHP. Có thể dùng Moodle với các database mã nguồn mở như MySQL hoặc PostgreSQL. Phiên bản 1.7 sẽ hỗ trợ thêm các database thương mại như Oracle, Microsoft SQL. • Có hỗ trợ mobile app trên các nền tảng IOS và Android. Trang 4/83 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính Ưu điểm • Phù hợp nếu trường hợp cần một giải pháp chạy trên máy tính cá nhân. • Lưu trữ trên đám mây • Có nhiều plug-in để tạo nội dung tuân thủ SCORM. • Diễn đàn phát triển rộng rãi • Phù hợp với nhiều thị trường (K-12, cao đẳng, đại học, thậm chí là cả môi trường doanh nghiệp) Nhược điểm • Tốn chi phí duy trì(mua máy chủ, thuê nhân viên CNTT bảo trì) • Giá dịch vụ cloud không phù hợp với sinh viên. (Tài khoản thấp nhất trừ freemium Starter: 113$ mỗi năm cho 50 người dùng và 250 MB dung lượng lưu trữ) • Không có dịch vụ đào tạo sử dụng cụ thể từ nhà cung cấp, mọi đào tạo đều do người sử dụng moodle tự tạo và chia sẻ với nhau. • Vì đào tạo đều có nguồn từ người sử dụng nên rất rải rác. Một số ý kiến của nhóm về Moodle mobile app để tham khảo và rút kinh nghiệm tránh những nhược điểm mà Moodle mobile app đang có. • Moodle Mobile App sử dụng Webview trên nền JavaScript đến 90% nên rất khó khả năng mở rộng. • Trái ngược với Moodle web, Moodle mobile app bị người dùng chê rất nhiều về việc chậm, lag, thiếu tính năng, lỗi hiển thị. • Vì sử dụng web view nên chịu phụ thuộc vào trang web nơi moodle mobile app trỏ đến. 2.1.3 Kết luận và lựa chọn Từ những nhận định, những ưu điểm, nhược điểm được nêu trên, nhóm quyết định lựa chọn Moodle làm LMS chính cho dự án. Vai trò của Moodle trong dự án • Moodle sẽ là framework chính cho back-end • Cung cấp trang admin cho admin quản lý toàn bộ dịch vụ. • Cung cấp trang web cho các giáo viên, giảng viên thêm các khóa học, các bài học. • Cung cấp các REST API để Mobile App của nhóm sử dụng tài nguyên. Giới thiệu trang web http://ongvanghoctap.edu.vn/ (Ong vàng học tập) • http://ongvanghoctap.edu.vn/ là trang web đã được triển khai thực tế dựa trên nền tảng của Moodle. • Trang thuộc quyền sở hữu của thầy hướng dẫn đề tài. • Tiết kiệm chi phí và thời gian triển khai nền tảng Moodle cho nhóm. • Được sự hỗ trợ từ thầy hướng dẫn về các cài đặt nền tảng moodle. Trang 5/83 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính 2.2 Các loại ứng dụng di động Nhắc đến lập trình ứng dụng di động hiện nay thì ba thuật ngữ quan trọng không thể bỏ qua đó là Native App, Hybrid App và Cross Platform App. Mỗi công nghệ có những ưu điểm và nhược điểm khác nhau cần cân nhắc để lựa chọn phù hợp với dự án. 2.2.1 Native App Native app thường được gọi là ứng dụng gốc. Là những ứng dụng được viết riêng cho một loại nền tảng cụ thể như iOS, Android, Windows Phone bằng các ngôn ngữ tương ứng. Vì một ứng dụng gốc được xây dựng để sử dụng trên một thiết bị cụ thể và hệ điều hành của nó, nên nó có khả năng sử dụng phần cứng và phần mềm dành riêng cho thiết bị. Các ứng dụng gốc có thể cung cấp hiệu suất tối ưu hóa và tận dụng công nghệ mới nhất, chẳng hạn như GPS, so với các ứng dụng web hoặc ứng dụng đám mây di động được phát triển chung trên nhiều hệ thống.[23] Công nghệ được sử dụng để phát triển iOS Native app: • Objective-C – Ngôn ngữ lập trình này được biết đến với trải nghiệm phát triển tuyệt vời, thư viện có sẵn và một nhóm chuyên gia rộng lớn. Objective-C là một mature framework, cũng có được khả năng tương thích với các công nghệ lập trình khác. Bất chấp những lợi ích đó, chúng ta nhận ra rằng các ngôn ngữ mới xuất hiện và đôi khi nó sẽ không có khả năng hỗ trợ tất cả các tính năng mới nhất. • Swift – Đây là một framework lập trình tương đối mới được Apple giới thiệu đã trở thành lựa chọn thay thế để xây dựng các iOS Native app. Các nhà phát triển đã chỉ ra hiệu năng nhanh hơn của nó và nó dễ dàng hơn để tìm hiểu và làm việc với. Swift liên tục phát triển đó là lý do tại sao có thể thiếu một số thành phần. Các nhà phát triển phần mềm cho rằng có thể thay thế Objective-C trong tương lai. Công nghệ được sử dụng để phát triển Android Native app: • Java – Ngôn ngữ lập trình không chỉ chủ yếu được sử dụng cho các ứng dụng mobile Android mà còn cho các mục đích khác. Phần lớn phát triển desktop và web dựa trên Java. Nó đã trở thành một hệ thống công cụ đặc biệt, các nhà phát triển có quyền truy cập vào một thư viện mạnh mẽ. Nó giúp đơn giản hóa quá trình lập trình tổng thể. Tuy nhiên, các ứng dụng trên Java đòi hỏi nhiều bộ nhớ hơn và hoạt động chậm hơn so với các framework khác. • Kotlin – Nó là một ngôn ngữ lập trình được phát triển đặc biệt để làm việc với Java và Java Virtual Machine. Do đó, việc sử dụng nó được Google hỗ trợ và phê duyệt để phát triển các ứng dụng Android. Một trong những ưu điểm chính của Kotlin so với Java thông thường là giao diện của nó cho phép làm việc theo cú pháp ngắn hơn. Thực tế này giúp giảm thời gian lập trình cần thiết để tạo một ứng dụng cho Android. Bây giờ nó được bao gồm như là một thay thế cho trình biên dịch Java tiêu chuẩn cho Android Studio. Expedia, Square, Pinterest và Flipboard có thể được nêu tên trong số những ví dụ điển hình nhất về các công ty sử dụng Kotlin cho các ứng dụng Android của họ. Ưu điểm • Về mặt hiệu năng thì native app chạy nhanh đặc biệt trong game. • Truy cập phần cứng mạnh mẽ. • Có nhiều lợi thế ở chế độ offline. • Có nhiều chức năng do sử dụng các khả năng của thiết bị cơ bản. Trang 6/83 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính • Bảo mật dữ liệu - Ứng dụng native dễ dàng bảo mật dữ liệu hơn các loại ứng dụng khác. Đó là lợi thế mà rất nhiều công ty quan tâm trong việc cung cấp cho khách hàng của họ đặc biệt là trong lĩnh vực doanh nghiệp, fintech và các ứng dụng có dữ liệu nhạy cảm. Nhược điểm • Không hỗ trợ đa nền tảng. • Nhiều cơ sở mã nguồn vì mỗi thiết bị có phiên bản ứng dụng riêng. • Dành thời gian cho nhiều phiên bản cho các nền tảng riêng biệt trong mỗi bản cập nhật tính năng. • Tốn nhân lực và tài nguyên khi dự án cần hiện thực đa nền tảng. Khi nào nên lựa chọn Native app • Ứng dụng cần sự ăn khớp với nền tảng cao. • Ứng dụng cần truy cập sâu vào quản lí phần cứng. • Ứng dụng yêu cầu UI cao hoặc graphic animation như game. 2.2.2 Hybrid App Một ứng dụng hybrid được tạo dưới dạng một ứng dụng duy nhất để sử dụng trên nhiều nền tảng như Android, iPhone và Windows. Ứng dụng hybrid thực tế là ứng dụng native và ứng dụng web được kết hợp với nhau. Là một sản phẩm hoạt động trên nhiều hệ điều hành như iOS, Android, Windows,. . . Hybrid app trông giống như một ứng dụng native nhưng thực sự được chạy trên website được tạo ra bằng HTML5, CSS và JavaScript, về cơ bản là một chương trình dựa trên web đặt trong một vỏ ứng dụng native và được kết nối với phần cứng thiết bị.[23] Công nghệ được sử dụng để phát triển Hybrid app • React Native - Facebook đã tạo ra công nghệ open-sourced này để tương thích đa nền tảng. Các UI được đơn giản hóa có hiệu suất tăng đáng kể khi tải lại. React Native được ưu chuộng sử dụng vì thời gian phát triển ngắn. Các kỹ sư phần mềm có quyền truy cập vào các đơn vị có sẵn để áp dụng, tuy nhiên, framework có thể thiếu các thành phần nhất định. Cả Facebook và cộng đồng thường xuyên cung cấp thông tin cập nhật. • Xamarin : Open framework được Microsoft hỗ trợ và duy trì nâng cấp mạnh mẽ. Gần đây, họ đã đưa ra cách tiếp cận phát triển Hybrid mobile app mới cho phép code across platform. Nó đã giúp cải thiện tốc độ phát triển và đơn giản hóa bảo trì. Các nhà phát triển có thể sử dụng logic chung, tuy nhiên, các quy định UI sẽ duy trì cụ thể cho từng nền tảng. Xamarin sẽ không xử lý đồ họa phức tạp nhưng phù hợp với các ứng dụng đơn giản. Công nghệ này thường được chọn cho các dự án định hướng kinh doanh. • Ionic : Framework này tạo ra các ứng dụng mobile với các công nghệ web tiêu chuẩn như JavaScript, CSS, HTML, Angular,... Các nhà phát triển cũng có rất nhiều UI component có thể truy cập đơn giản để xử lý. Thời gian phát triển là tuyệt vời như với tất cả các khung khác cho các ví dụ Hybrid app. Mặc dù có tất cả các lợi ích, việc bảo trì có thể khó khăn hơn. Ionic cung cấp rất nhiều plugin, vì vậy khi sự cố xuất hiện, nó có thể yêu cầu điều chỉnh thủ công thêm. Ưu điểm • Single code base – Đây là lợi thế đem đến tất cả các lợi ích sau. Các ứng dụng hybrid được các công ty và nhà phát triển ưa thích vì chúng có thể hoạt động trên cả hai nền tảng. Sẽ không cần xây dựng hai code riêng cho iOS và Android vì lý do code chung chức năng. Trang 7/83 Trường Đại học Bách Khoa - Khoa Khoa học và Kỹ thuật Máy tính • Chi phí thấp - Nhà phát triển có thể tiết kiệm một chi phí rất lớn bằng cách phát triển một ứng dụng mobile trong khi giải quyết vấn đề người dùng trên các nền tảng khác nhau. Chi phí sẽ gần giống như chi phí xây dựng chỉ cho một nhưng được thiết kế để chạy ở mọi nơi. • Đơn giản để xây dựng và kiểm thử – Team sẽ đạt được kết quả mong đợi nhanh hơn. Họ không thỏa thuận với từng nền tảng. Code được tạo một lần và thời gian kiểm thử cũng sẽ được giảm. • Có nhiều chức năng do sử dụng các khả năng của thiết bị cơ bản. • Dễ dàng bảo trì – Tất cả các thay đổi và cập nhật bắt buộc sẽ được duy trì đồng thời trên cả hai nền tảng. Nó không chỉ thuận tiện cho các nhà phát triển cho người dùng là tốt. Rất nhiều vấn đề có thể khắc phục từ phía máy chủ và người dùng sẽ chỉ nhận được các bản cập nhật tự động. • Thời gian hiện thực nhanh hơn – Không cần phải có hai nhóm iOS và Android hoặc nhóm đa chức năng lớn, chỉ cần tìm một nhóm chuyên gia tương đối nhỏ là có thể tạo ra một sản phẩm được tiếp thị thông minh sẽ thú vị cho những người dùng khác nhau. Nhược điểm • Giới hạn hiệu quả – Cross-platform framework phụ thuộc vào các plugin được kết nối với các tính năng của thiết bị. Đôi khi các nhà phát triển phải tạo chúng bằng tay để tiếp cận chức năng cụ thể của thiết bị. • Kết nối internet – Đối với hiệu quả của Native app và Hybrid app, có một sự khác biệt đáng kể. Các cross-platform framework yêu cầu kết nối internet thường xuyên. Một số chức năng sẽ không có sẵn khi người dùng thiếu kết nối internet. • Phần mềm cần dung lượng lớn – Dung lượng phần mềm khá lớn, tốn bộ nhớ của thiết bị nhiều hơn so với Native app. Khi nào nên lựa chọn Hybrid app • Ứng dụng cần xuất bản trên nhiều nền tảng. • Nhà phát triển có kinh nghiệm thuần web. 2.2.3 Cross Platform App Cross Platform còn một tên gọi khác là Multi Platform Thuật ngữ này dùng để chỉ các ứng dụng đa nền tảng, phù hợp để cài đặt cho nhiều loại thiết bị khác nhau. Đây được xem là giải pháp hiệu quả nhất để giải quyết các vấn đề khi sử dụng Native app. Với Cross Platform, nhà phát triển chỉ cần sử dụng một ngôn ngữ và lập trình ứng dụng một lần. Chúng sẽ được biên dịch sang các phiên bản khác để phù hợp cho những nền tảng khác nhau[24] . Một số framework được sử dụng để phát triển Cross platform app • Flutter : Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng cao trên iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với những code sẵn có được sử dụng bởi các lập trình viên, các tổ chức. Flutter hoàn toàn miễn phí và cũng là mã nguồn mở. • Xamarin : Open framework được Microsoft hỗ trợ và duy trì nâng cấp mạnh mẽ. Gần đây, họ đã đưa ra cách tiếp cận phát triển Hybrid mobile app mới cho phép code across platform. Nó đã giúp cải thiện tốc độ phát triển và đơn giản hóa bảo trì. Các nhà phát triển có thể sử dụng logic chung, tuy nhiên, các quy định UI sẽ duy trì cụ thể cho từng nền tảng. Xamarin sẽ không xử lý đồ họa phức tạp nhưng phù hợp với các ứng dụng đơn giản. Công nghệ này thường được chọn cho các dự án định hướng kinh doanh. Trang 8/83
- Xem thêm -

Tài liệu liên quan