Sinh viên thực hiện: Nguyễn Văn Hoà Mã SV: 1911505310217 Lớp: 19T2 Đồ án với đề tài Xây dựng ứng dụng TimePlanner lên lịch công việc xây dựng bằng ngôn ngữ lập trình Kotlin, sử dụng Fire
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
Đà Nẵng, 01/2024 ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG TIMEPLANNER LÊN LỊCH
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
Đà Nẵng, 01/2024 ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG TIMEPLANNER LÊN LỊCH
CÔNG VIỆC
Giảng viên hướng dẫn duyệt
TS.Nguyễn Tấn Thuận
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Trang 4NHẬN XÉT CỦA HỘI ĐỒNG BẢO VỆ
Trang 5TÓM TẮT
Tên đề tài: Xây dựng ứng dụng TimePlanner lên lịch công việc Sinh viên thực hiện: Nguyễn Văn Hoà
Mã SV: 1911505310217 Lớp: 19T2 Đồ án với đề tài Xây dựng ứng dụng TimePlanner lên lịch công việc xây dựng bằng ngôn ngữ lập trình Kotlin, sử dụng Firebase và Cloud FireStore để quản lý cơ sở dữ liệu, ngoài ra còn sử dụng các dịch vụ của Firebase như Authentication, Messasing để gửi thông báo đến người dùng, Storage để lưu trữ hình ảnh và tài liệu, cùng các thư viện hỗ trợ như Hilt Dagger, Retrofit2
Ứng dụng bao gồm các chức năng chính dành cho người sử dụng như: đăng ký, đăng nhập, đăng nhập bằng tài khoản google, xem danh sách công việc, tạo công việc cá nhân hay dự án mới, thêm thành viên vào dự án đã tạo, đặt lịch thông báo cho công việc, tìm kiếm công việc đã tạo, tạo danh mục công việc, cập nhật thông tin người dùng, thống kê lượng công việc
Trang 6NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Giảng viên hướng dẫn: TS Nguyễn Tấn Thuận Sinh viên thực hiện: Nguyễn Văn Hoà Mã SV: 1911505310217
1 Tên đề tài
Xây dựng ứng dụng TimePlanner lên lịch công việc
2 Các số liệu, tài liệu ban đầu
- Dựa trên qui định upload tài liệu, các qui tắc đặt câu hỏi - Tài liệu tham khảo: https://firebase.google.com/docs/build?hl=vi
3 Nội dung chính của đồ án
Quá trình Xây dựng ứng dụng TimePlanner lên lịch công việc: - Thu thập thông tin tài liệu liên quan và khảo sát thực tế - Phân tích thiết kế các chức năng của hệ thống
- Phân tích thiết kế cơ sơ dữ liệu - Thiết kế giao diện cho các chức năng - Xây dựng hệ thống website
- Kiểm thử chương trình - Hoàn thành báo cáo tổng hợp
4 Các sản phẩm dự kiến
- Ứng dụng TimePlanner lên lịch công việc - File báo cáo hoàn chỉnh
5 Ngày giao đồ án: 11/09/2023 6 Ngày nộp đồ án: 21/01/2024
Đà Nẵng, ngày 21 tháng 01 năm 2024
TS Nguyễn Tấn Thuận
Trang 7LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến quý thầy cô đã giúp đỡ chúng em thực hiện đề tài này Đặc biệt là TS Nguyễn Tấn Thuận đã tận tình giúp đỡ em trong suốt quá trình thực hiện đề tài tốt nghiệp này
Đồng thời, em cũng xin cảm ơn quý thầy cô thuộc ngành Công nghệ thông tin khoa Công nghệ số, trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng đã truyền đạt những kiến thức cần thiết và những kinh nghiệm quý báu cho chúng em trong suốt thời gian 4 năm trên giảng đường để em có thể thực hiện tốt đề tài này Đặc biệt, em xin gởi lời cảm ơn chân thành tới TS Hoàng Thị Mỹ Lệ, TS Nguyễn Tấn Thuận, cùng ThS Lê Vũ - giáo viên chủ nhiệm lớp 19T2 đã giúp đỡ em rất nhiều trong quá trình học tập và công việc
Trong quá trình thực hiện đề tài, do kiến thức và thời gian còn hạn chế nên không thể tránh khỏi những sai sót Vì vậy em mong quý thầy, cô thông cảm và góp ý để em có thể hoàn thiện đề tài Và những lời góp ý đó có thể giúp em có thể tránh được những sai lầm sau này
Em xin chân thành cảm ơn!
Trang 8Em xin cam đoan:
LỜI CAM ĐOAN
1 Những nội dung trong đồ án này là do em thực hiện dưới sự hướng dẫn trực tiếp của thầy Nguyễn Tấn Thuận
2 Mọi tham khảo trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian địa điểm công bố
3 Nếu có những sao chép không hợp lệ, vi phạm, em xin chịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Nguyễn Văn Hoà
Trang 9MỤC LỤC
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN i
NHẬN XÉT CỦA HỘI ĐỒNG BẢO VỆ ii
Trang 10Giới thiệu về Android Studio 24
Giới thiệu công cụ Emulator Android 25
Trang 11Biểu đồ Use Case 27
Sơ đồ usecase tổng quát 27
Sơ đồ usecase chức năng Xem và tìm kiếm danh sách công việc đã tạo 28
Sơ đồ usecase chức năng Tạo một công việc mới 28
Sơ đồ usecase chức năng Xem danh mục công việc 29
Sơ đồ usecase chức năng Xem chi tiết công việc 29
Sơ đồ usecase chức năng Cập nhật thông tin cá nhân 30
Sơ đồ usecase chức năng Xem thống kê công việc 30
Kịch bản cho Use Case 31
Kịch bản use-case “Đăng nhập” 31
Kịch bản use case “Xem và tìm kiếm danh sách công việc” 31
Kịch bản usecase Tạo mới công việc 32
Kịch bản usecase Xem chi tiết công việc 33
Kịch bản usecase Sửa chi tiết công việc 33
Kịch bản usecase Xoá công việc 33
Kịch bản Usecase Cập nhật thông tin cá nhân 34
Kịch bản use case Thống kê công việc 35
Sơ đồ hoạt động (Activity Diagram) 36
Đăng nhập 36
Xem danh sách công việc 37
Tìm kiếm công việc 38
Tạo công việc mới 39
Cập nhật danh mục công việc 41
Thống kê công việc 42
Cập nhật thông tin cá nhân 43
Trang 12Sơ đồ tuần tự Đăng nhập 44
Sơ đồ tuần tự Xem danh sách công việc 44
Sơ đồ tuần tự Tìm kiếm công việc 45
Sơ đồ tuần tự Tạo công việc mới 45
Sơ đồ tuần tự Xem danh mục công việc 46
Sơ đồ tuần tự Thống kê công việc 46
Sơ đồ tuần tự Cập nhật thông tin người dùng 47
Sơ đồ lớp 47
Thiết kế giao diện 48
Đăng nhập 48
Đăng ký tài khoản 49
Danh sách công việc 50
Tạo công việc mới 52
Xem chi tiết công việc 53
Danh mục công việc 55
Cập nhật thông tin cá nhân 56
Thống kê công việc 57
Thiết kế cơ sở dữ liệu 58
Trang 13Giao diện chương trình 64
Biểu tượng app 64
Giao diện màn hình Đăng ký và Đăng nhập 65
Giao diện màn hình Trang chủ 66
Giao diện màn hình Bảng 66
Giao diện màn hình “Cá Nhân” 67
Giao diện màn hình “Chỉnh sửa thông tin cá nhân” 67
Giao diện màn hình “Tạo công việc cá nhân mới” 68
Giao diện màn hình “Tạo dự án mới” 68
Giao diện màn hình “Chi tiết công việc cá nhân” 69
Giao diện màn hình “Chi tiết dư án” 69
Giao diện màn hình “Quản lý danh mục” 70
Giao diện màn hình “Danh sách công việc cá nhân” 70
Giao diện màn hình “Danh sách dự án” 71
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 14DANH MỤC BẢNG BIỂU
Bảng 3.1: Kịch bản Usecase đăng nhập 31
Bảng 3.2: Kịch bảng Usecase Xem và tìm kiếm danh sách công việc 31
Bảng 3.3: Kịch bảng Usecase Tạo mới công việc 32
Bảng 3.4: Kịch bản Usecase Xem chi tiết công việc 33
Bảng 3.5: Kịch bản Usecase Sửa chi tiết công việc 33
Trang 15DANH MỤC HÌNH VẼ
Hình 2.1: Realtime Database là một cơ sở dữ liệu theo thời gian thực 15
Hình 2.2: Cloud Storage là tính năng cho phép người dùng ứng dụng lưu trữ và quản lý nội dung đã tạo ra 16
Hình 2.3: Firebase có chức năng phát triển ứng dụng di động 18
Hình 2.4: Biểu tượng Android 19
Hình 2.5: Các biểu tượng phiên bản của Android 20
Hình 2.6: Kiến trúc của hệ điều hành Android 21
Hình 3.1: Usecase tổng quát 27
Hình 3.2: Usecase Xem và tìm kiếm danh sách công việc đã tạo 28
Hình 3.3: Usecase Tạo một công việc mới 28
Hình 3.4: Usecase Xem danh mục công việc 29
Hình 3.5: Usecase Xem chi tiết công việc 29
Hình 3.6: Usecase Cập nhật thông tin cá nhân 30
Hình 3.7: Usecase Xem thống kê công việc 30
Hình 3.8: Sơ đồ hoạt động đăng nhập 36
Hình 3.9: Sơ đồ hoạt động xem danh sách công việc 37
Hình 3.10: Sơ đồ hoạt động tìm kiếm công việc 38
Hình 3.11: Sơ đồ hoạt động Tạo công việc mới 39
Hình 3.12: Sơ đồ hoạt động Tạo danh mục công việc 40
Hình 3.13: Sơ đồ hoạt động Cập nhật danh mục công việc 41
Hình 3.14: Sơ đồ hoạt động Thống kê công việc 42
Hình 3.15: Sơ đồ usecase Cập nhật thông tin cá nhân 43
Hình 3.16: Sơ đồ tuần tự Đăng nhập tài khoản 44
Hình 3.17: Sơ đồ tuần tự Xem danh sách công việc 44
Hình 3.18: Sơ đồ tuần tự Tìm kiếm công việc 45
Hình 3.19: Sơ đồ tuần tự Tạo công việc mới 45
Hình 3.20: Sơ đồ tuần tự Xem danh mục công việc 46
Hình 3.21: Sơ đồ tuần tự Thống kê công việc 46
Hình 3.22: Sơ đồ tuần tự Cập nhật thông tin người dùng 47
Hình 3.23: Giao diện Đăng nhập 48
Hình 3.24: Giao diện Đăng ký tài khoản 49
Trang 16Hình 3.25: Giao diện Danh sách công việc 50
Hình 3.26: Giao diện Tạo công việc 52
Hình 3.27: Giao diện Chi tiết công việc 53
Hình 3.28: Giao diện Danh mục công việc 55
Hình 3.29: Giao diện Cập nhật thông tin cá nhân 56
Hình 3.30: Giao diện Thống kê công việc 57
Hình 4.1: Biểu tượng app 64
Hình 4.2: Giao diện màn hình “Đăng ký và Đăng nhập” 65
Hình 4.3: Giao diện màn hình “Trang chủ” 66
Hình 4.4: Giao diện màn hình “Bảng” 66
Hình 4.5: Giao diện màn hình “Cá nhân” 67
Hình 4.6: Giao diện “Chỉnh sửa thông tin cá nhân” 67
Hình 4.7: Giao diện “Tạo công việc mới” 68
Hình 4.8: Giao diện “Lịch sử đặt vé” 68
Hình 4.9: Giao diện “Chi tiết công việc cá nhân” 69
Hình 4.10: Giao diện “Chi tiết dự án” 69
Hình 4.11: Giao diện “Quản lý danh mục” 70
Hình 4.12: Giao diện “Danh sách công việc cá nhân” 70
Hình 4.13: Giao diện “Danh sách dự án” 71
Hình 4.14: Giao diện “Thông báo” 71
Trang 17DANH MỤC CHỮ VIẾT TẮT
2 ERD Entity Relationship Diagram Sơ đồ thực thể quan hệ 3 MVVM Model-View-ViewModel Mô hình cấu trúc ứng dụng
Trang 18MỞ ĐẦU
1 Đặt vấn đề
Trong thời đại hiện đại, nhu cầu quản lý công việc cá nhân ngày càng trở nên quan trọng, đặc biệt là trong môi trường làm việc và cuộc sống hối hả ngày nay Những thách thức đặt ra bởi sự bận rộn, cuộc sống nhanh chóng, và cả những thay đổi đột ngột trong kế hoạch làm việc đã tạo nên sự cần thiết cho một giải pháp hiệu quả để quản lý thời gian và công việc cá nhân
Mặc dù có nhiều ứng dụng và công cụ có sẵn để hỗ trợ quản lý công việc, tuy nhiên, nhiều người vẫn gặp khó khăn khi tìm kiếm một giải pháp tích hợp đầy đủ chức năng và dễ sử dụng, điều này tạo nên sự cần thiết cho một ứng dụng giúp người dùng dễ dàng quản lý trong một không gian làm việc duy nhất
Với mục tiêu giải quyết những thách thức trên, đề tài "Xây dựng ứng dụng TimePlanner lên lịch công việc" nhằm đáp ứng nhu cầu ngày càng cao của người sử dụng, mang lại trải nghiệm linh hoạt, tiện lợi và hiệu quả trong việc quản lý thời gian và công việc cá nhân
2 Đối tượng nghiên cứu và phạm vi nghiên cứu
a Đối tượng nghiên cứu Những người có nhu cầu cần một ứng dụng để lưu trữ công việc, nhắc nhở khi đến hạn hoặc đơn giản là ghi chú lại những việc quan trọng cần làm
b Phạm vi nghiên cứu Đề tài nghiên cứu về ứng dụng lên lịch công việc, áp dụng cho mọi người
3 Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết thu nhập thông tin qua sách, các tài liệu trang web để tìm được các cơ sở lý thuyết mà mình nghiên cứu
- Phương pháp triển khai thực nghiệp: xây dựng ứng dụng
4 Giải pháp công nghệ
- Ngôn ngữ lập trình : JavaScript - Công nghệ: Firebase
- Cơ sở dữ liệu đám mây: Cloud Firestore - Công cụ hỗ trợ: Android Studio, Emulator android
Trang 19b Chương 1: Cơ sở lý thuyết Tìm hiểu, giới thiệu tổng quát các kiến thức về ngôn ngữ lập trình Kotlin, Firebase và cơ sở dữ liệu đám mây Cloud Firestore, hệ điều hành Android
c Chương 2: Phân tích thiết kế hệ thống Phân tích các tác nhân và chức năng của từng tác nhân, yêu cầu phi chức năng của hệ thống Thiết kế sơ đồ use-case, sơ đồ hoạt động, sơ đồ ERD Thiết kế cơ sở dữ liệu Xây dựng kịch bản cho từng use-case trong hệ thống
d Chương 3: Xây dựng chương trình Xây dựng giao diện và chức năng của hệ thống e Phần kết luận
Kết luận chung cho các chương trong đồ án Trình bày những vấn đề đã giải quyết đồng thời trình bày hướng phát triển
Trang 20CƠ SỞ LÝ THUYẾT Ngôn ngữ lập trình Kotlin
Kotlin là gì? Kotlin là một ngôn ngữ lập trình đa nền tảng (cross-platform) được phát triển bởi JetBrains, một công ty phát triển phần mềm có trụ sở tại Nga Kotlin được thiết kế để chạy trên Java Virtual Machine (JVM) và có thể sử dụng để phát triển ứng dụng di động, web và backend
Mục tiêu chính của Kotlin là cung cấp một ngôn ngữ lập trình hiện đại, có tính năng mạnh mẽ và cú pháp dễ đọc, giúp tăng cường hiệu suất và năng suất của lập trình viên Kotlin được xây dựng với mục tiêu tương thích ngược (interoperability) với Java, điều này có nghĩa là mã nguồn Java hiện có có thể được tích hợp và sử dụng trong dự án Kotlin và ngược lại [1]
Lịch sử phát triển Năm 2010: JetBrains bắt đầu nghiên cứu và phát triển Kotlin như một ngôn ngữ mới dựa trên JVM
Tháng 7 năm 2011: Phiên bản M1 Tháng 6 năm 2013: Kotlin được phát triển dưới dạng dự án mã nguồn mở Tháng 2 năm 2016: Phiên bản 1.0 của Kotlin được phát hành
Tháng 5 năm 2017: Google công bố hỗ trợ chính thức Kotlin trong việc phát triển ứng dụng Android
Tháng 10 năm 2017: Phiên bản Kotlin 1.2 được phát hành với multiplatform projects và kotlinx.coroutines
Tháng 5 năm 2019: Kotlin 1.3 ra mắt với tính năng chính là Kotlin/Native Tháng 12 năm 2020: Kotlin 1.4 (kotlinx.serialization và JVM IR compiler)
Tháng 8 năm 2021: Kotlin 1.5 (sealed interfaces và implicit conversions).[1]
Giới thiệu API
Api: API là viết tắt của Application Programming Interface (Giao diện lập trình ứng dụng), một phần mềm trung gian cho phép hai ứng dụng nói chuyện với nhau Mỗi
Trang 21khi sử dụng một ứng dụng như Facebook, gửi tin nhắn tức thì hoặc kiểm tra thời tiết trên điện thoại, có nghĩa là bạn đang sử dụng API
Kiến trúc API thường được giải thích dưới dạng máy chủ và máy khách Ứng dụng gửi yêu cầu được gọi là máy khách, còn ứng dụng gửi phản hồi được gọi là máy chủ Như vậy, trong ví dụ về thời tiết, cơ sở dữ liệu của cơ quan thời tiết là máy chủ còn ứng dụng di động là máy khách API hoạt động theo 4 cách khác nhau, tùy vào thời điểm và lý do chúng được tạo ra
Cách hoạt động của API:
a) API SOAP Các API này sử dụng Giao thức truy cập đối tượng đơn giản Máy chủ và máy khách trao đổi thông đệp bằng XML Đây là loại API kém linh hoạt được dùng phổ biến trước đây
b) API RPC Những API này được gọi là Lệnh gọi thủ tục từ xa Máy khách hoàn thành một hàm (hoặc thủ tục) trên máy chủ còn máy chủ gửi kết quả về cho máy khách
c) API Websocket API Websocket là một bản phát triển API web hiện đại khác sử dụng các đối tượng JSON để chuyển dữ liệu API WebSocket hỗ trợ hoạt động giao tiếp hai chiều giữa ứng dụng máy khách và máy chủ Máy chủ có thể gửi thông điệp gọi lại cho các máy khách
d) API RESTĐây là loại API phổ biến và linh hoạt nhất trên web hiện nay Máy khách gửi yêu cầu đến máy chủ dưới dạng dữ liệu Máy chủ dùng dữ liệu đầu vào từ máy khách này
Firebase
Đôi nét lịch sử Tiền thân của nền tảng Firebase chính là Envolve Envolve đến với người dùng dưới mô hình startup, họ cung cấp cho người dùng những API để dễ dàng tích hợp tính năng chat vào trang web Thế nhưng, người dùng lại sử dụng Envolve để truyền dữ liệu ứng dụng chứ không đơn thuần là nhắn tin trò chuyện Chính điều này đã khiến các nhà phát triển Envolve quyết định tách riêng chat system và the real-time architecture
Trang 22Và năm 2012, Firebase ra đời dưới dạng Backend-as-a-Service với chức năng thời gian thực Sau khi được Google mua lại vào năm 2014 thì Firebase nhanh chóng phát triển thành nền tảng phát triển ứng dụng đa năng của di động và website như ngày nay.Nền tảng này là sự kết hợp giữa cloud với hệ thống máy chủ của Google để tập trung chính cho 2 đối tượng là:
Develop & test your app: phát triển và thử nghiệm các ứng dụng được thiết kế Grow & engage your audience: phân tích dữ liệu và tối ưu hóa trải nghiệm với
người dùng.[2] Những tính năng chính của Firebase
Realtime Database
Realtime Database là một cơ sở dữ liệu thời gian thực Ngay sau khi bạn đăng ký tài khoản trên Firebase, bạn sẽ nhận được Realtime Database được lưu trữ dưới dạng JSON và được đồng bộ hóa theo thời gian thực đối với mọi kết nối
Đối với các ứng dụng được xây dựng trên đa nền tảng như Android, IOS và WebApp, tất cả client sẽ cùng sử dụng một cơ sở dữ liệu Bên cạnh đó, hệ thống dữ liệu này sẽ tự động cập nhật khi lập trình viên phát triển ứng dụng Sau đó, tất cả dữ liệu này sẽ được truyền tải thông qua các kết nối SSl có 2048 bit [3]
Hình 1.1: Realtime Database là một cơ sở dữ liệu theo thời gian thực
Trang 23Authentication
Authentication là tính năng giúp xác thực danh tính của người dùng ứng dụng Firebase cung cấp các bước xác thực thông qua Email, Facebook, Twitter, GitHub hay Google Điều này giúp cho các thông tin cá nhân của khách hàng được bảo vệ một cách tốt nhất, hạn chế được tình trạng bị hacker đánh cắp Đồng thời việc xác thực danh tính qua Firebase sẽ giúp người dùng tiếp cận sản phẩm nhanh chóng và an toàn hơn [3]
Cloud Storage
Cloud Storage là tính năng cho phép lưu trữ và quản lý nội dung đã tạo ra như ảnh, video, nội dung, văn bản, Firebase Storage cung cấp các API hỗ trợ bạn upload và download các file từ ứng dụng một cách trơn tru mà không cần quan tâm đến chất lượng đường truyền mạng với độ bảo mật cao [3]
Hình 1.2: Cloud Storage là tính năng cho phép người dùng ứng dụng lưu trữ
và quản lý nội dung đã tạo ra
Cloud Firestore
Cloud Firestore được phát triển từ tính năng Realtime Database Trải qua nhiều lần nâng cấp, Cloud Firestore có giao diện trực quan và khả năng mở rộng ưu việt hơn so với Realtime Database Tính năng này của Firebase giúp đồng bộ mọi dữ liệu trên các ứng dụng thông qua việc đăng ký thời gian thực và cung cấp hỗ trợ ngoại tuyến cho thiết bị di động cũng như website [3]
Trang 24Hosting
Hosting được phân phối thông qua tiêu chuẩn công nghệ bảo mật SSl từ hệ thống mạng CDN CDN là một mạng lưới máy chủ giúp lưu trữ các bản sao của các nội dung tĩnh trên website Thông qua CDN, người dùng có thể truy cập và sử dụng các dịch vụ trên web khi cài Firebase Hosting một cách nhanh chóng và ổn định hơn [3]
Cloud Functions
Cloud Functions giúp chạy code backend tự động nhằm phản hồi các sự kiện được kích hoạt bởi tính năng của Firebase và HTTPS request Cloud Functions có tính bảo mật cao và luôn thực hiện chính xác những gì mà bạn muốn [3]
Analytics
Analytics giúp bạn có thể phân tích hành vi của người sử dụng ứng dụng của bạn Qua đó, bạn sẽ biết được khách hàng thường xuyên truy cập tính năng nào và các thông tin về hiệu quả quảng cáo, tình trạng trả phí, để có thể đưa ra được chiến lược phát triển phù hợp Để thực hiện tính năng Analytics của Firebase, bạn cần cài đặt Software Development Kit (SDK) [3]
Chức năng của Firebase
Phát triển ứng dụng di dộng và web
Với cơ sở dữ liệu khổng lồ, Firebase giúp lập trình viên phát triển ứng dụng di động một cách nhanh chóng và giúp giảm thiểu chi phí Song song đó, Firebase cho phép phát triển ứng dụng trên cả nền tảng iOS và Android nên có thể đáp ứng mọi yêu cầu về hệ điều hành
Ngoài việc hỗ trợ phát triển ứng dụng di động, Firebase còn giúp xây dựng ứng dụng website Các API đơn giản và hữu dụng giúp bạn có thể xây dựng ứng dụng mà không cần backend và server [3]
Lưu trữ và đồng bộ dữ liệu
Firebase thường xuyên sao lưu dữ liệu nhằm đảo bảo tính sẵn có của dữ liệu Bên cạnh đó, chức năng này của Firebase còn giúp cho mọi thông tin và dữ liệu của người dùng sẽ được bảo mật một cách tốt nhất nếu có trường hợp xấu xảy ra Đặc biệt, khi sử dụng gói dịch vụ mất phí, bạn có thể dễ dàng sử dụng cấu hình cơ sở dữ liệu thời gian thực của Firebase để thực hiện các bản sao lưu tự động [3]
Trang 25Quản lý đăng nhập
Firebase Authentication giúp nhà phát triển quản lý người dùng ứng dụng một cách đơn giản và an toàn Cụ thể, Firebase cung cấp nhiều phương pháp quản lý đăng nhập thông qua email với mật khẩu Google và Facebook Việc đăng nhập này vừa đảm bảo xác thực được người dùng, vừa không để lộ thông tin cá nhân [3]
Phân tích dữ liệu
Chức năng phân tích dữ liệu của Firebase giúp lập trình viên có một cái nhìn tổng quan về ứng dụng thông qua các số liệu thống kê, biểu đồ, bảng biểu, Cụ thể, bạn sẽ biết được số liệu về số khách hàng đã truy cập vào app và web, khách hàng đang sử dụng trong 30 phút vừa qua, Qua đó, bạn có thể xây dựng được những chiến lược phát triển ứng dụng sao cho phù hợp với nhu cầu của thị trường [3]
Hình 1.3: Firebase có chức năng phát triển ứng dụng di động
Android
Hệ điều hành Android là gì? Android là một hệ điều hành có dạng mã nguồn mở, nó hoạt động dựa trên nền tảng Linux và được thiết kế dành riêng cho những thiết bị di động cảm ứng hoặc máy tính bảng Trước đây, hệ điều hành này được phát triển bởi tổng công ty Android và được tài trợ bởi Google Cho đến năm 2005 thì Google đã mua lại hệ điều hành này và cho ra
Trang 26mắt người dùng vào năm 2007 Android này sở hữu mã nguồn mở nên lập trình viên có thể dễ dàng điều chỉnh và phân phối nó một cách tự do Đây chính là một trong những yếu tố đã giúp cho Android trở thành nền tảng xây dựng điện thoại thông minh phát triển nhất trên thế giới
Hình 1.4: Biểu tượng Android Hiện tại, Android đã chiếm 65% so với thị phần điện thoại thông minh trên toàn thế giới vào quý 3 năm 2012 Theo điều tra thì đã có khoảng 500 triệu thiết bị được kích hoạt và có đến 1.3 triệu lượt được hoạt mỗi ngày Vào tháng 10/2020 thì android đã có hơn 700.000 ứng dụng và số lượng tải từ Google Play ước tính lên khoảng 25 tỷ lượt Mặc dù có sự ra đời của iOS của Apple thì khiến Android có phần nào ảnh hưởng Tuy nhiên, Android vẫn đứng ở vị trí đầu tiên trong thị phần thế giới [4]
Lịch sử phiên bản Android Android phát triển rất nhanh, tới nay đã trải qua nhiều lần chỉnh sửa và nâng cấp với các phiên bản sau:
Android 1.5 Cupcake Android 1.6 Donut Android 2.1 Eclair Android 2.2 Froyo
Trang 27Android 2.3 Gingerbread Android 3.2 Honeycomb – Phiên bản Android đầu tiên được thiết kế cho máy tính bảng
Android 4.0 Ice Cream Sandwich Android 4.1 Jelly Bean
Android 4.2 Jelly Bean Android 4.3 Jelly Bean Android 4.4 KitKat
Android 5.0 Lollipop Android 6.0 Marshmallow Android 7.0 Nougat
Oreo(8.0) Pie(9.0) [5] Android 10 Quince Tart Android 11 Red Velvet Cake Android 12 Snow Cone
Android 12L Snow Cone v2 Android 13 Tiramisu
Android 14 Upside Down Cake [6]
Hình 1.5: Các biểu tượng phiên bản của Android
Trang 28Kiến trúc hệ điều hành Android Hệ điều hành Android là 1 ngăn xếp các thành phần phần mềm, được chia thành 5 phần và 4 lớp chính như trong hình bên dưới
Hình 1.6: Kiến trúc của hệ điều hành Android
Linux Kernel
Dưới cùng là lớp Linux - Linux 3.6 cùng với khoảng 115 bản vá Lớp này cung cấp 1 cấp độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phần cứng thiết yếu như máy ảnh, bàn phím, màn hình hiển thị Đồng thời, hạt nhân (kernel) còn xử lý tất cả các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết bị, giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn [7]
Các thư viện
Ở trên lớp nhân Linux là tập các thư viện bao gồm WebKit - trình duyệt Web mã nguồn mở, được biết đến như thư viện libc, cơ sở dữ liệu SQLite - hữu dụng cho việc lưu trữ và chia sẻ dữ liệu ứng dụng, các thư viện chơi và ghi âm audio, video, hay các thư viện SSL chiụ trách nhiệm bảo mật Internet [7]
Trang 29Các thư viện Android
Đây là các thư viện dựa trên Java phục vụ cho việc phát triển Android Ví dụ của các thư viện này bao gồm các thư viện ứng dụng dùng để xây dựng giao diện người dùng, vẽ đồ họa hay truy cập cơ sở dữ liệu 1 số thư viện chính của Android:
android.app - Cung cấp quyền truy cập vào ứng dụng và là nền tảng của tất cả ứng dụng Android
android.content - Cung cấp quyền truy cập nội dung (content), truyền tải thông điệp giữa các ứng dụng hay các thành phần của ứng dụng
android.database - Đựoc sử dụng để truy cập dữ liệu của content provider và cơ sở dữ liệu SQLite
android.opengl - giao diện các phuơng thức Java để sử dụng OpenGL ES android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ của hệ điều hành bao gồm thông điệp, các dịch vụ hệ thống và các giao tiếp nội tại android.text - Đựoc sử dụng để hiển thị và điều chỉnh chữ trên màn hình thiết bị android.view - Các thành phần cơ bản trong việc xây dựng giao diện người dùng
của ứng dụng android.widget - Tập các thành phần giao diện người dùng đã được xây dựng sẵn như các nút, các nhãn (label), list view,
android.webkit - Tập các lớp cho phép xây dựng khả năng duyệt web [7]
Android Runtime
Đây là phần thứ 3 của kiến trúc và nằm ở lớp thứ 2 từ dưới lên Phần này cung cấp 1 bộ phận quan trọng là Dalvik Vỉtual Machine - là 1 loại Java Virtual Machine được thiết kế đặc biệt để tối ưu cho Android
Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý bộ nhớ và đa luồng, những thứ mà đã có sẵn trong Java Dalvik VM giúp mọ ứng dụng Android chạy trong tiến trình riêng của nó, với các thể hiện (instance) riêng của Dalvik virtual Machine
Android Runtime cũng cung cấp 1 tập các thư viện chính giúp các nhà phát triển ứng dụng Android có thể viết ứng dụng Android bằng Java [7]
Trang 30Application Framework
Lớp Android Framework cung cấp các dịch vụ cấp độ cao hơn cho các ứng dụng dưới dạng các lớp Java Các nhà phát triển ứng dụng được phép sử dụng các dịch vụ này trong ứng dụng của họ
Android Framework bao gồm các dịch vụ chính sau: Activitty Manager - Kiểm soát tất cả khía cạnh của vòng đời ứng dụng và ngăn xếp các Activity
Content Providers - Cho phép các ứng dụng chia sẽ dữ liệu với các ứng dụng khác
Resource Manager - Cung cấp quyền truy cập vào các tài nguyên như các chuỗi, màu sắc, các layout giao diện người dùng
Notifications Manager - Cho phép các ứng dụng hiển thị cảnh báo và các thông báo cho người dùng
View System - Tập các thành phần giao diện (view) được sử dụng để tạo giao diện người dùng [7]
Màn hình chính sẽ xuất hiện khi bạn khởi động thiết bị, gồm có các tiện ích và biểu tượng ứng dụng Widget có chức năng hiển thị những thông tin cập nhật các nội dung về thời tiết cùng với tin tức Mỗi nhà sản xuất sẽ cho ra mắt các màn hình khác nhau tùy vào cá tính của họ Bạn cũng có thể tùy thích chọn các theme cho màn hình thông qua các app trên Google Play
Thanh trạng thái của Android OS sẽ hiển thị thông tin về thiết bị và kết nối của thiết bị, ví dụ như kết nối Wi-Fi sẽ cho người dùng biết được cường độ tín hiệu của nó Bạn có thể kéo thanh trạng thái xuống để xem màn hình thông báo
Trang 31Android OS cũng bao gồm các tính năng để tiết kiệm pin sử dụng Để tiết kiệm pin cho thiết bị, hệ điều hành sẽ thực hiện dừng các app không được phép dùng và mức sử dụng của CPU Android ngoài ra còn có thể quản lý bộ nhớ, tự động đóng các quá trình không hoạt động được lưu trữ trong bộ nhớ của nó
Android cũng hỗ trợ các tính năng như sau: Bluetooth
Edge 3G Wifi Tin nhắn SMS và MMS Máy quay Video, máy ảnh kỹ thuật số GPS
La bàn Máy đo gia tốc Đồ họa 3D tăng tốc Ứng dụng đa nhiệm [8]
Công cụ sử dụng phát triển hệ thống
Giới thiệu về Android Studio Android Studio là Môi trường phát triển tích hợp (IDE) chính thức để phát triển ứng dụng Android Nhờ có công cụ cho nhà phát triển và trình soạn thảo mã mạnh mẽ của IntelliJ IDEA, Android Studio cung cấp thêm nhiều tính năng giúp bạn nâng cao năng suất khi xây dựng ứng dụng Android, chẳng hạn như:
Một hệ thống xây dựng linh hoạt dựa trên Gradle Một trình mô phỏng nhanh và nhiều tính năng
Một môi trường hợp nhất nơi bạn có thể phát triển cho mọi thiết bị Android Tính năng Live Edit (Chỉnh sửa trực tiếp) để cập nhật các thành phần kết hợp trong trình mô phỏng và thiết bị thực theo thời gian thực
Mã mẫu và quá trình tích hợp GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ biến cũng như nhập mã mẫu
Trang 32Đa dạng khung và công cụ thử nghiệm Công cụ tìm lỗi mã nguồn (lint) để nắm bắt hiệu suất, khả năng hữu dụng, khả năng tương thích với phiên bản và các vấn đề khác
Hỗ trợ C++ và NDK Tích hợp sẵn tính năng hỗ trợ Google Cloud Platform, giúp dễ dàng tích hợp Google Cloud Messaging và App Engine [9]
Giới thiệu công cụ Emulator Android Trình mô phỏng Android mô phỏng các thiết bị Android thông qua máy tính để bạn có thể kiểm thử ứng dụng của mình trên nhiều thiết bị và cấp độ API Android mà không cần đến thiết bị thực tế Trình mô phỏng mang lại những lợi ích sau đây:
Tính linh hoạt: Ngoài khả năng mô phỏng nhiều thiết bị và cấp độ API Android,
trình mô phỏng còn có sẵn các cấu hình được xác định trước cho nhiều loại máy tính bảng, điện thoại Android, thiết bị Wear OS và thiết bị Android TV
Độ chân thực cao: Trình mô phỏng cung cấp hầu hết các tính năng của một thiết
bị Android thực tế Bạn có thể mô phỏng cuộc gọi điện thoại và tin nhắn văn bản đến, chỉ định vị trí của thiết bị, mô phỏng nhiều tốc độ mạng, mô phỏng cảm biến xoay và các cảm biến phần cứng khác, truy cập vào Cửa hàng Google Play và nhiều chức năng khác
Tốc độ: Việc kiểm thử ứng dụng trên trình mô phỏng có thể sẽ nhanh và dễ dàng
hơn so với khi dùng thiết bị thực tế Ví dụ: bạn có thể chuyển dữ liệu sang trình mô phỏng nhanh hơn so với khi sử dụng thiết bị kết nối qua USB [10]
Trang 33PHÂN TÍCH THIẾT KẾ HỆ THỐNG Khảo sát hệ thống
Khảo sát thực tế Hiện nay, trong cuộc sống hối hả và ngày càng nhiều công việc cần phải quản lý, nhu cầu sử dụng ứng dụng có thể quản lý công việc đang ngày càng tăng cao Việc quản lý công việc theo dõi tiến độ là những yếu tố quan trọng đối với nhiều người Để giải quyết những thách thức này, việc thành lập một ứng dụng lên lịch công việc đáp ứng đầy đủ nhu cầu người dùng là hết sức cần thiết
Khảo sát người dùng Nhu cầu quản lý công việc, ghi chú, lên kết hoạch cho các hoạt đông ngày càng tăng, nhiều ứng dụng ra đời nhưng lại tốn phí, ứng dụng miễn phí thì chứa quảng cáo gây bất tiện cho người dùng
Đặc tả yêu cầu phần mềm
Xác định các tác nhân ❖ Đề tài gồm một tác nhân chính:
Người dùng (User) Các yêu cầu chức năng ❖ User
Xem danh sách công việc đã tạo Tìm kiếm và lọc công việc
Xem chi tiết công việc Tạo một công việc hoặc dự án mới Thêm thành viên vào dự án
Xem danh mục công việc Tạo danh mục cá nhân
Xem thống kê công việc Lập lịch cho công việc (đặt thông báo, lên lịch theo thời gian) Cập nhật thông tin cá nhân
Trang 34Đăng nhập Yêu cầu phi chức năng Giao diện, đẹp mắt, đơn giản, dễ sử dụng Đảm bảo tính bảo mật, an toàn
Tốc độ xử lý nhanh chóng
Biểu đồ Use Case
Sơ đồ usecase tổng quát
Hình 2.1: Usecase tổng quát
Trang 35Sơ đồ usecase chức năng Xem và tìm kiếm danh sách công việc đã tạo
Hình 2.2: Usecase Xem và tìm kiếm danh sách công việc đã tạo Sơ đồ usecase chức năng Tạo một công việc mới
Hình 2.3: Usecase Tạo một công việc mới
Trang 36Sơ đồ usecase chức năng Xem danh mục công việc
Hình 2.4: Usecase Xem danh mục công việc Sơ đồ usecase chức năng Xem chi tiết công việc
Hình 2.5: Usecase Xem chi tiết công việc
Trang 37Sơ đồ usecase chức năng Cập nhật thông tin cá nhân
Hình 2.6: Usecase Cập nhật thông tin cá nhân Sơ đồ usecase chức năng Xem thống kê công việc
Hình 2.7: Usecase Xem thống kê công việc
Trang 38Kịch bản cho Use Case
Thông tin tài khoản
Output Hệ thống thông báo đăng nhập hệ thống thành công
Basic flow 1 Actor vào ứng dụng ➔ Bắt đầu use case
2 Actor nhập thông tin tài khoản (tên tài khoản, mật khẩu), hoặc chọn đăng nhập với Google
3 Actor nhấn nút đăng nhập Hệ thống kiểm tra và trả về trang Trang chủ (đã đăng nhập) ➔ Kết thúc use case
Alternative flow
Exception flow 2.1 Actor thoát khỏi hệ thống ➔ Use case kết thúc mà chưa
được đăng nhập 3.1 Nhập sai tài khoản hoặc mật khẩu ➔ Thông báo không tìm thấy tài khoản hoặc sai mật khẩu ➔Quay lại bước 2
Kịch bản use case “Xem và tìm kiếm danh sách công việc” Bảng 2.2: Kịch bảng Usecase Xem và tìm kiếm danh sách công việc
Use case name Xem và tìm kiếm danh sách công việc Description User muốn xem danh sách công việc đã tạo
Input Actor vào giao diện ứng dụng
Output Hệ thống hiển thị thành công danh sách công việc
Basic flow 1 Actor truy cập vào ứng dụng → Bắt đầu Usecase
2 Actor xem danh sách công việc được hiển thị ở tab “Công việc”
Trang 393 Actor nhấn vào chữ “Tất cả” → ứng dụng chuyển sang màn hình tìm kiếm công việc
4 Actor nhập từ khoá tìm kiếm Actor nhấn nút tìm kiếm → Hệ thống hiển thị danh sách công việc theo từ khoá → Usecase kết thúc
Alternative flow
•
Exception flow 2.1 Actor chuyển tab khác hoặc thoát ứng dụng → Usecase kết
thúc 3.1 Actor nhấn trở về → Chuyển sang bước 2 5.1 Actor nhập thông tin tìm kiếm không hợp lệ hoặc không có dữ liệu ➔ Hệ thống trả về danh sách rỗng
Kịch bản usecase Tạo mới công việc
Bảng 2.3: Kịch bảng Usecase Tạo mới công việc
Use case name Tạo mới công việc Description User muốn tạo mới một công việc
Thông tin công việc muốn tạo
Output Hệ thống hiển thị công việc đã được tạo thành công lên giao
diện
Basic flow 1 Actor nhấn vào nút tạo mới công việc ➔ Bắt đầu use
case 2 Actor chọn loại công việc 3 Actor nhập thông tin công việc 4 Actor nhấn nút xác nhận Hệ thống hiển thị thông tin công việc vừa tạo ra trên giao diện → Usecase kết thúc
Alternative flow
2.a Actor chọn loại công việc là Dự án Thêm thành viên dự án
Exception flow 3.1 Actor nhấn huỷ → Usecase kết thúc
Trang 40Kịch bản usecase Xem chi tiết công việc
Bảng 2.4: Kịch bản Usecase Xem chi tiết công việc
Use case name Xem chi tiết công việc Description User muốn xem chi tiết công việc
Output Hệ thống hiển thị thông tin chi tiết công việc
Basic flow 1 Actor chọn một công việc trong danh sách công việc trên
giao diện ➔ Bắt đầu use case Hệ thống hiển thị chi tiết về công việc → Usecase kết thúc
Alternative flow
Kịch bản usecase Sửa chi tiết công việc
Bảng 2.5: Kịch bản Usecase Sửa chi tiết công việc
Use case name Sửa chi tiết công việc Description User muốn chỉnh sửa chi tiết công việc
Input Thông tin chi tiết công việc
Output Thông tin chi tiết công việc sau khi chỉnh sửa
Basic flow 1 Actor chọn một công việc➔ Bắt đầu use case
2 Actor chình sửa chi tiết công việc (tiêu đề, mô tả công việc, tệp đính kèm…)
3 Actor nhấn vào nút “Xác nhận” Hệ thống hiển thị ra thông báo chỉnh sửa thành công ➔ Use case kết thúc
Alternative flow
1 a Actor chọn loại công việc là Dự án Chỉnh sửa thành viên
Exception flow 3.1 Actor nhấn trở về → Usecase kết thúc
Kịch bản usecase Xoá công việc
Bảng 2.6: Kịch bản Usecase bình luận
Use case name Xoá công việc Description User muốn xoá công việc