Tại sao nên sử dụng Flutter - Phát triển ứng dụng nhanh chóng: Tính năng hot reload giúp bạn nhanh chóng và dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tính năng và sửa lỗi
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 3LỜI CẢM ƠN
Nhóm chúng em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đến cô Thái Thụy Hàn Uyển đã hướng dẫn, tạo điều kiện cho nhóm chúng em tìm hiểu về đề tài xây dựng ứng dụng sách
Trong vòng 15 tuần, qua các buổi học, nhờ sự hướng dẫn nhiệt tình của cô, chúng em đã tiếp thu được những kiến thức quan trọng, bổ ích, hoàn thành đồ án
Mặc dù đã cố gắng hoàn thành báo cáo với tất cả nỗ lực song báo cáo của nhóm chúng
em chắc chắn không tránh khỏi những thiếu sót, chúng em rất mong nhận được sự thông cảm và góp ý chân thành từ cô Nhóm em xin chân thành cảm ơn
Thành phố Hồ Chí Minh, tháng 12 năm 2022
Nguyễn Đức Thành Phát
Lù Xuân Thái
Trang 4MỤC LỤC
CHƯƠNG 1 TÌM HIỂU VỀ JAVA SPRING BOOT 14
1.1 Giới thiệu Java spring boot 14
1.2 Các khái niệm chính trong Java spring boot 15
1.3 Các thư viện và các gói thường được sử dụng với Java spring boot 15
1.4 Cách cài đặt Java spring boot 16
CHƯƠNG 2 GIỚI THIỆU ỨNG DỤNG 18
2.1 Đặt vấn đề 18
2.2 Mục tiêu đề tài 18
2.3 Phương pháp nghiên cứu 18
2.4 Ý nghĩa và kết quả của đề tài 19
2.4.1 Sản phẩm 19
2.4.2 Tài liệu 19
CHƯƠNG 3 CƠ SỞ LÝ THUYẾT 20
3.1 Framework Flutter 20
3.1.1 Flutter là gì 20
3.1.2 Tại sao nên sử dụng Flutter 20
3.1.3 Ngôn ngữ Dart 21
3.2 Firebase 21
3.2.1 Ưu điểm 21
3.2.2 Nhược điểm 22
CHƯƠNG 4 KHẢO SÁT VÀ PHÂN TÍCH ĐẶT TẢ YÊU CẦU 23
4.1 Khảo sát hiện hiện trạng 23
4.1.1 Phương pháp khảo sát 23
4.2 Khảo sát hiện trạng tin học 23
4.2.1 Hệ thống phần cứng 23
4.2.2 Hệ thống phần mềm 24
4.2.3 Con người 26
Trang 54.3 Danh sách các yêu cầu 27
4.4 Sơ đồ tổng quan tính năng 28
CHƯƠNG 5 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 29
5.1 Phân tích thiết kế hệ thống 29
5.1.1 Công nghệ sử dụng 29
5.1.1.1 Front end 29
5.1.1.2 Back end 29
5.1.1.3 Công cụ khác 29
5.1.2 Kiến trúc hệ thống 29
5.1.3 Kiến trúc ứng dụng 30
5.1.3.1 Front end 30
5.1.3.2 Back end 30
5.1.3.2.1 Presentation Layer 31
5.1.3.2.2 Business Layer 31
5.1.3.2.3 Persistence Layer 31
5.1.3.2.4 Database Layer 32
5.1.3.2.5 Luồng đi của Spring boot 32
5.1.4 Sơ đồ use case 33
5.1.4.1 Diagrams 33
5.1.4.2 Danh sách các actor 34
5.1.4.3 Danh sách các use case 34
5.1.4.4 Mô tả chi tiết use case 35
5.1.4.4.1 Đăng nhập 35
5.1.4.4.2 Quên mật khẩu 35
5.1.4.4.3 Đăng ký 36
5.1.4.4.4 Xác nhận tài khoản 37
5.1.4.4.5 Thêm sách 38
5.1.4.4.6 Chỉnh sửa sách 39
5.1.4.4.7 Xoá sách 40
Trang 65.1.4.4.8 Tạo bài đăng 41
5.1.4.4.9 Chỉnh sửa bài đăng 41
5.1.4.4.10 Xoá bài đăng 42
5.1.4.4.11 Bình luận bài đăng 43
5.1.4.4.12 Tìm kiếm 44
5.1.4.4.13 Xem danh sách sách 45
5.1.4.4.14 Thay đổi thông tin tài khoản 45
5.1.4.4.15 Đóng góp sách 46
5.1.4.4.16 Phê duyệt sách 47
5.1.4.4.17 Quét mã tìm sách 48
5.1.5 Class diagrams 50
5.1.5.1 Diagrams 50
5.1.5.2 Danh sách các bảng 51
5.1.5.3 Mô tả chi tiết các bảng 51
5.1.5.3.1 Bảng User 51
5.1.5.3.2 Bảng Book 51
5.1.5.3.3 Bảng ContributionBook 52
5.1.5.3.4 Bảng Post 52
5.1.5.3.5 Bảng Comment 53
5.1.5.3.6 Bảng Verification 53
5.1.6 Activity diagrams 55
5.1.6.1 Đăng nhập 55
5.1.6.2 Đăng ký 56
5.1.6.3 Quên mật khẩu 57
5.1.6.4 Thêm sách 58
5.1.6.5 Chỉnh sửa sách 59
5.1.6.6 Xoá sách 60
5.1.6.7 Tạo bài đăng 61
5.1.6.8 Chỉnh sửa bài đăng 62
Trang 75.1.6.9 Xoá bài đăng 63
5.1.6.10 Bình luận bài viết 63
5.1.6.11 Tìm kiếm 64
5.1.6.12 Xem danh sách sách 65
5.1.6.13 Thay đổi thông tin tài khoản 66
5.1.6.14 Đóng góp sách 66
5.1.6.15 Phê duyệt sách 67
5.1.7 Sequence diagrams 69
5.1.7.1 Đăng nhập 69
5.1.7.2 Quên mật khẩu 70
5.1.7.3 Đăng ký 71
5.1.7.4 Xác nhận tài khoản 72
5.1.7.5 Thêm sách 73
5.1.7.6 Chỉnh sửa sách 74
5.1.7.7 Xoá sách 75
5.1.7.8 Tạo bài đăng 76
5.1.7.9 Chỉnh sửa bài đăng 77
5.1.7.10 Xoá bài đăng 78
5.1.7.11 Bình luận bài đăng 79
5.1.7.12 Tìm kiếm 80
5.1.7.13 Xem danh sách sách 81
5.1.7.14 Thay đổi thông tin tài khoản 82
5.1.7.15 Đóng góp sách 83
5.1.7.16 Phê duyệt sách 84
5.1.7.17 Quét mã tìm sách 85
5.2 Thiết kế giao diện 86
5.2.1 Danh sách giao diện 86
5.2.2 Chi tiết giao diện 87
5.2.2.1 Màn hình welcome 87
Trang 85.2.2.2 Màn hình đăng nhập 88
5.2.2.3 Màn hình đăng ký 89
5.2.2.4 Màn hình quên mật khẩu 90
5.2.2.5 Màn hình xác thực 91
5.2.2.6 Màn hình home 92
5.2.2.7 Màn hình thêm sách 93
5.2.2.8 Màn hình xem lại sách 94
5.2.2.9 Màn hình chi tiết sách 95
5.2.2.10 Màn hình đóng góp sách 96
5.2.2.11 Màn hình quét barcode 97
5.2.2.12 Màn hình chỉnh sửa sách 98
5.2.2.13 Màn hình thông tin cá nhân 99
5.2.2.14 Màn hình chỉnh sửa thông tin cá nhân 100
5.2.2.15 Màn hình đổi mật khẩu 101
5.2.2.16 Màn hình bài đăng 102
5.2.2.17 Màn hình thêm bài đăng 103
5.2.2.18 Màn hình chỉnh sửa bài đăng 104
5.2.2.19 Màn hình bài đăng của tôi 105
CHƯƠNG 6 KẾT LUẬN 106
6.1 Kết quả đạt được 106
6.2 Ưu điểm 106
6.3 Nhược điểm 106
6.4 Hướng phát triển 106
Trang 9DANH MỤC HÌNH
Hình 1 Spring framework runtime 14
Hình 2 Spring initializr 16
Hình 3 Inttellij IDEA 17
Hình 4 Khảo sát hệ điều hành IOS hiện nay 23
Hình 5 Khảo sát hệ điều hành Android hiện nay 24
Hình 6 Website reader.com.vn 24
Hình 7 Website reviewsach.net 25
Hình 8 Ứng dụng review sách hay 25
Hình 9 Ứng dụng book shelf 26
Hình 10 Người dùng của các ứng dụng sách 27
Hình 11 Sơ đồ tổng quan tính năng 28
Hình 12 Kiến trúc hệ thống 30
Hình 13 Kiến trúc ứng dụng android 30
Hình 14 Kiến trúc ứng dụng web service 31
Hình 15 Use case diagrams 33
Hình 16 Class diagram 50
Hình 17 Activity diagram đăng nhập 55
Hình 18 Activity diagram đăng ký 56
Hình 19 Activity diagram quên mật khẩu 57
Hình 20 Activity diagram thêm sách 58
Hình 21 Activity diagram chỉnh sửa sách 59
Hình 22 Activity diagram xoá sách 60
Hình 23 Activity diagram tạo bài đăng 61
Hình 24 Activity diagram chỉnh sửa bài đăng 62
Hình 25 Activity diagram xoá bài đăng 63
Hình 26 Activity diagram bình luận bài đăng 64
Hình 27 Activity diagram tìm kiếm 64
Hình 28 Activity diagram xem danh sách sách 65
Hình 29 Activity diagram thay đổi thông tin tài khoản 66
Hình 30 Activity diagram đóng góp sách 67
Hình 31 Activity diagram phê duyệt sách 68
Hình 32 Sequence diagram đăng nhập 69
Hình 33 Sequence diagram quên mật khẩu 70
Hình 34 Sequence diagram đăng ký 71
Hình 35 Sequence diagram xác nhận tài khoản 72
Hình 36 Sequence diagram thêm sách 73
Trang 10Hình 37 Sequence diagram chỉnh sửa sách 74
Hình 38 Sequence diagram xoá sách 75
Hình 39 Sequence diagram tạo bài đăng 76
Hình 40 Sequence diagram chỉnh sửa bài đăng 77
Hình 41 Sequence diagram xoá bài đăng 78
Hình 42 Sequence diagram bình luận bài đăng 79
Hình 43 Sequence diagram tìm kiếm 80
Hình 44 Sequence diagram xem danh sách sách 81
Hình 45 Sequence diagram thay đổi thông tin tài khoản 82
Hình 46 Sequence diagram đóng góp sách 83
Hình 47 Sequence diagram phê duyệt sách 84
Hình 48 Sequence diagram quét mã tìm sách 85
Hình 49 Màn hình chào mừng 87
Hình 50 Màn hình đăng nhập 88
Hình 51 Màn hình đăng ký 89
Hình 52 Màn hình quên mật khẩu 90
Hình 53 Màn hình xác thực 91
Hình 54 Màn hình trang chủ 92
Hình 55 Màn hình thêm sách 93
Hình 56 Màn hình xem lại sách 94
Hình 57 Màn hình chi tiết sách 95
Hình 58 Màn hình đóng góp sách 96
Hình 59 Màn hình quét mã 97
Hình 60 Màn hình chỉnh sửa sách 98
Hình 61 Màn hình cá nhân 99
Hình 62 Màn hình chỉnh sửa thông tin cá nhân 100
Hình 63 Màn hình thay đổi mật khẩu 101
Hình 64 Màn hình bài đăng 102
Hình 65 Màn hình thêm bài đăng 103
Hình 66 Màn hình sửa bài đăng 104
Hình 67 Màn hình bài đăng của tôi 105
Trang 11DANH MỤC BẢNG
Bảng 1 Danh sách các yêu cầu 28
Bảng 2 Danh sách các actor 34
Bảng 3 Danh sách các use case 34
Bảng 4 Use case đăng nhập 35
Bảng 5 Use case quên mật khẩu 36
Bảng 6 Use case đăng ký 37
Bảng 7 Use case xác nhận tài khoản 38
Bảng 8 Use case thêm sách 39
Bảng 9 Use case chỉnh sửa sách 40
Bảng 10 Use case xoá sách 41
Bảng 11 Use case tạo bài đăng 41
Bảng 12 Use case chỉnh sửa bài đăng 42
Bảng 13 Use case xoá bài đăng 43
Bảng 14 Use case bình luận bài đăng 44
Bảng 15 Use case tìm kiếm 45
Bảng 16 Use case xem danh sách sách 45
Bảng 17 Use case thay đổi thông tin tài khoản 46
Bảng 18 Use case đóng góp sách 47
Bảng 19 Use case phê duyệt sách 48
Bảng 20 Use case quét mã tìm sách 49
Bảng 21 Danh sách các bảng trong class diagrams 51
Bảng 22 Bảng user 51
Bảng 23 Bảng sách 52
Bảng 24 Bảng sách đóng góp 52
Bảng 25 Bảng bài đăng 53
Bảng 26 Bảng bình luận 53
Bảng 27 Bảng xác thực 54
Bảng 28 Bảng danh sách màn hình 86
Bảng 29 Bảng mô tả màn hình chào mừng 87
Bảng 30 Bảng mô tả màn hình đăng nhập 88
Bảng 31 Bảng mô tả màn hình đăng ký 89
Bảng 32 Bảng mô tả màn hình quên mật khẩu 90
Bảng 33 Bảng mô tả màn hình xác thực 91
Bảng 34 Bảng mô tả màn hình trang chủ 92
Bảng 35 Bảng mô tả màn hình sách 93
Bảng 36 Bảng mô tả màn hình xem lại sách 94
Trang 12Bảng 37 Bảng mô tả màn hình chi tiết sách 95
Bảng 38 Bảng mô tả màn hình đóng góp sách 96
Bảng 39 Bảng mô tả màn hình quét mã 97
Bảng 40 Bảng mô tả màn hình chỉnh sửa sách 98
Bảng 41 Bảng mô tả màn hình cá nhân 100
Bảng 42 Bảng mô tả màn hình chỉnh sửa thông tin cá nhân 100
Bảng 43 Bảng mô tả màn hình thay đổi mật khẩu 101
Bảng 44 Bảng mô tả màn hình bài đăng 102
Bảng 45 Bảng mô tả màn hình thêm bài đăng 103
Bảng 46 Bảng mô tả màn hình chỉnh sửa bài đăng 104
Bảng 47 Bảng mô tả màn hình bài đăng của tôi 105
Trang 13DANH MỤC TỪ VIẾT TẮT
STT Từ viết tắt Mô tả
1 HTTP Hypertext Transfer Protocol
2 UI User interface
3 SDK Software development kit
4 API Application protocol interface
5 CSDL Cơ sở dữ liệu
6 MVVM Model view view model
Trang 14CHƯƠNG 1 TÌM HIỂU VỀ JAVA SPRING BOOT
1.1 Giới thiệu Java spring boot
Trước tiên về khái niệm Java Spring, Java Spring là một khung phát triển Java mã nguồn mở Spring cung cấp một mô hình lập trình và cấu hình toàn diện để phát triển các ứng dụng Java cấp doanh nghiệp Spring nhằm mục đích đơn giản hóa sự phát triển Java của doanh nghiệp và giúp các nhà phát triển xây dựng các ứng dụng hiệu quả và hiệu quả hơn
Spring tập trung vào một số lĩnh vực phát triển ứng dụng và cung cấp một loạt các tính năng
Hình 1 Spring framework runtime
Spring Boot là một phần mở rộng của Spring, giúp loại bỏ các cấu hình có sẵn cần thiết
để thiết lập một ứng dụng Spring Với các mã mặc định và chú thích dựa trên cấu hình , Spring Boot cho phép hệ sinh thái phát triển nhanh hơn và hiệu quả hơn
Trang 15Vì Spring Boot được xây dựng dựa trên Spring nên nó cung cấp tất cả các tính năng và lợi ích của Spring Spring Boot nhằm mục đích giảm độ dài mã và cung cấp cho các nhà phát triển cách dễ dàng nhất để xây dựng một ứng dụng
1.2 Các khái niệm chính trong Java spring boot
Một số tính năng của Spring Boot bao gồm:
Embedded server (Tomcat, Jetty và Undertow): hầu hết các nhà phát triển sử dụng
"Started" thích hợp để có được một thể hiện được cấu hình đầy đủ Ví dụ, theo mặc định, máy chủ Tomcat nhúng Spring Boot, lắng nghe các yêu cầu HTTP trên cổng
8080
Cấu hình mặc định tùy ý: chúng ta có thể thay đổi cấu hình của các embedded server
tùy ý, ví dụ như thay đổi cổng
Tự động cấu hình cho các chức năng cho Spring: tự động cấu hình thay cho bạn, chỉ
cần bắt đầu code và chạy là được
Theo dõi tình trạng, số liệu và các báo cáo: Spring boot cung cấp tự động health
indicator (chỉ số sức khỏe) cho các components chuẩn (DataSourceHealthIndicator, MongoHealthIndicator, RedisHealthIndicator, ) Ví dụ, health indicator cung cấp bởi DataSource tạo kết nối tới database và thực hiện các câu query để kiểm tra xem nó có hiện động tốt không
Do Spring Boot là một trình khởi tạo dự án dựa trên Spring, việc sử dụng các tính năng như tự động cấu hình, nó giúp các nhà phát triển không phải viết mã dài dòng Mặc dù
nó làm mất đi một số tính linh hoạt của Spring với cấu hình phù hợp, nhưng nó giúp giảm thời gian phát triển và tránh cấu hình không cần thiết
Embedded server là một hệ thống chip đơn với chuẩn kết nối qua mạng Ethernet Bằng cách nhúng bằng cách nhúng hệ điều hành và giao thức Ethernet vào trong thiết bị, thiết bị đó có khả năng giao tiếp thông qua Ethernet mà không cần phải gián tiếp qua một máy tính độc lập
1.3 Các thư viện và các gói thường được sử dụng với Java spring boot
Spring Boot cung cấp một số phụ thuộc khởi động cho các mô-đun Spring Một số trong những cái phổ biến nhất bao gồm:
Spring-boot-starter-web
Spring-boot-starter-thymeleaf
Trang 17• Dùng intelliJ IDEA
Hình 3 Inttellij IDEA
Trang 18CHƯƠNG 2 GIỚI THIỆU ỨNG DỤNG
2.1 Đặt vấn đề
Đọc sách hiện nay đang là vấn đề thu hút sự chú ý, quan tâm của xã hội Đọc sách không những để nâng cao trình độ nhận thức về mọi mặt, bồi dưỡng cho tâm hồn, là nhu cầu chính đáng của mỗi người mà sách còn mang đến nguồn tri thức để người đọc
có thể trải nghiệm, học tập, nghiên cứu, để làm giàu thêm vốn sống của bản thân mỗi người, hướng con người tới những giá trị chân, thiện, mỹ
Với tốc độ tăng trưởng về khoa học và kĩ thuật hiện nay, nhu cầu và hình thức đọc sách của xã hội cũng bị ảnh hưởng theo Các thiết bị điện tử ngày nay được xem là những thiết bị không chỉ hỗ trợ, giúp đỡ cho con người trong nhiều mục đích khác nhau đặc biệt là các thiết bị di động thông minh, con người bắt đầu chuyển qua đọc sách trên thiết bị di động và phát triển hơn nữa là sách nói, chúng ta có thể nghe mọi lúc mọi người
Cho dù là sách giấy hay sách điện tử, đối với những người đọc sách nhiều việc quản lý sách đã đọc và có nhu cầu chia sẻ cảm nghĩ của mình sau khi đọc một cuốn sách nào
đó có lẽ gặp nhiều khó khăn Việc ghi chép trong sách vở hay trên nhưng tài liệu trực tuyến đôi lúc gặp bất tiện Vì vậy, một ứng dụng quản lý và đánh giá sách sẽ là một sự lựa chọn hợp lý bởi trong thời kì công nghệ mới, hầu hết mỗi chúng ta đều sở hữu một thiết bị di động,
2.2 Mục tiêu đề tài
Ứng dụng sách được tạo ra nhằm cho giúp người dùng quản lý được các quyển sách mình đã đọc và chia sẻ cảm nhận sau khi đọc sách cho những người khác
2.3 Phương pháp nghiên cứu
- Tham khảo các tài liệu trực tuyến về các hoạt động trao đổi qua lại giữa người dùng
Trang 19- Tham khảo một số ý tưởng và ứng dụng review sách qua internet
- Tham khảo tài liệu, video hướng dẫn cách áp dụng ứng dụng các công nghệ
mới vào quá trình xây dựng ứng dụng
2.4 Ý nghĩa và kết quả của đề tài
2.4.1 Sản phẩm
- Tạo ra được ứng dụng quản sách và chia sẻ sách chơi trực tuyến giữa các người dùng
- Đáp ứng được các chức năng đề ra của ứng dụng
2.4.2 Tài liệu
- Kiến thức về các công nghệ đã sử dụng vào đồ án: ngôn ngữ, framework, database,
…
Trang 20CHƯƠNG 3 CƠ SỞ LÝ THUYẾT
3.1 Framework Flutter
3.1.1 Flutter là gì
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 gồm 2 thành phần quan trọng:
- Một SDK (Software Development Kit): Một bộ sưu tập các công cụ sẽ giúp bạn phát triển các ứng dụng của mình Điều này bao gồm các công cụ để biên dịch
mã của bạn thành mã máy gốc (mã cho iOS và Android)
- Một Framework (UI Library based on widgets): Một tập hợp các thành phần giao diện người dùng (UI) có thể tái sử dụng (button, text inputs, slider, ) giúp bạn có thể cá nhân hóa tùy theo nhu cầu của riêng mình
3.1.2 Tại sao nên sử dụng Flutter
- Phát triển ứng dụng nhanh chóng: Tính năng hot reload giúp bạn nhanh chóng và dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tính năng và sửa lỗi nhanh hơn Trải nghiệm tải lại lần thứ hai, mà không làm mất trạng thái, trên emulator,
simulator và device cho iOS và Android
- Giao diện người dùng đẹp và thu hút: Thỏa mãn người dùng của bạn với các widget built-in đẹp mắt của Flutter theo Material Design và Cupertino (iOS-flavor), các giao diện lập trình ứng dụng (API) chuyển động phong phú, scroll tự nhiên mượt mà và tự nhận thức được nền tảng
- Framework hiện đại: Dễ dàng tạo giao diện người dùng của bạn với framework hiện đại của Flutter và tập hợp các platform, layout và widget phong phú Giải quyết các
Trang 21thách thức giao diện người dùng khó khăn của bạn với các API mạnh mẽ và linh hoạt cho 2D, animation, gesture, hiệu ứng và hơn thế nữa
3.1.3 Ngôn ngữ Dart
Dart là ngôn ngữ lập trình mới, được phát triển bởi Google, hiện đã được chấp thuận bởi tổ chức Ecma Dart được sử dụng để xây dựng các loại ứng dụng: web, server, di động (IOS và Android với công cụ Flutter)
Dart là ngôn ngữ hỗ trợ lập trình hướng đối tượng, cú pháp kiểu C, mã code Dart có thể biên dịch thành JavaSript để chạy trên trình duyệt Nó hỗ trợ những khái niệm lập trình hiện đại như giao diện lớp, lớp trừu tượng, …
3.2 Firebase
Firebase là một nền tảng mà Google cung cấp để phát triển các ứng dụng di động
và trang web, hỗ trợ Developer trong việc đơn giản hóa các thao tác với dữ liệu và không
cần tác động tới backend hay server
Trang 22- Tập trung phát triển chủ yếu về giao diện người dùng: Firebase cho phép lập trình viên tập trung chủ yếu vào phát triển phần giao diện người dùng nhờ kho Backend mẫu phong phú đa dạng
- Không có máy chủ: Điều này giúp Firebase có khả năng tối ưu hóa về hiệu suất làm việc thông qua mở rộng cụm database
- Học máy: Firebase cung cấp học máy cho lập trình viên, hỗ trợ tối đa cho việc phát triển ứng dụng
- Tạo ra lưu lượng truy cập: Với khả năng hỗ trợ tạo lập các chỉ mục, Firebase giúp nâng cao thứ hạng của ứng dụng trên bảng xếp hạng Google, từ đó tăng lượt traffic
- Theo dõi lỗi: Firebase là công cụ phát triển, khắc phục lỗi tuyệt vời
- Sao lưu: Firebase sao lưu thường xuyên, giúp đảm bảo tính sẵn có và bảo mật thông tin cho dữ liệu
3.2.2 Nhược điểm
- Không phải mã nguồn mở
- Chỉ hoạt động trên CSDL NoSQL
- Lập trình viên không được truy cập mã nguồn
- Phạm vi hoạt động bị hạn chế ở một vài quốc gia
- Một vài dịch vụ cần trả phí, chi phí dành cho Firebase tương đối lớn và không ổn
- Chỉ có thể chạy trên Google Cloud
Trang 23CHƯƠNG 4 KHẢO SÁT VÀ PHÂN TÍCH ĐẶT TẢ YÊU CẦU
4.1 Khảo sát hiện hiện trạng
4.1.1 Phương pháp khảo sát
• Quan sát
• Thu thập thông tin, tài liệu
4.2 Khảo sát hiện trạng tin học
Trang 24Hình 5 Khảo sát hệ điều hành Android hiện nay
4.2.2 Hệ thống phần mềm
Tham khảo các website và ứng dụng hiện có:
• Webisite reader.com.vn
Hình 6 Website reader.com.vn
Trang 26Hình 9 Ứng dụng book shelf
Kết luận:
Giao diện phối màu hài hòa, bố cục hợp lý và rõ ràng, dễ dàng sử dụng
Tốc độ xử lý, phản hồi nhanh, độ trễ không đáng kể
Chức năng đa dạng, có hai dạng ứng dụng chủ yếu: thứ nhất đánh giá, tổng hợp nhứng cuốn sách hay, đáng nên đọc Thứ 2 là đọc sách, theo dõi tiến trình đọc, quản lý sách Tương thích tốt với tất cả các thiết bị di động hiện giờ
4.2.3 Con người
Theo quan sát, những ứng dụng sẽ có hai phái tương tác: người sử dụng ứng dụng với mục đích bài đánh giá, đọc sách và người quản lý hệ thống, viết các bài đánh giá Người sử dựng ứng dụng có thể là người mới bắt đầu đọc sách hoặc là những người đam mê đọc sách Họ đều có điểm giống nhau là có một bộ sưu tầm sách của mình
Trang 27Hình 10 Người dùng của các ứng dụng sách
4.3 Danh sách các yêu cầu
Sau khảo sát hiện trạng về phần cứng, phần mềm và con người, nhóm quyết định đưa
ra các yêu cầu phần mềm như sau
STT Phân loại Tên yêu cầu Mô tả
1 Chức năng Thêm sách vào bộ sưu
tập,
Tính năng quan trọng của ứng dụng Người dùng thêm thông tin sách vào bộ sưu tập của mình
2 Chức năng Viết bài đánh giá sách Người dùng viết bài đánh sách sách
từ những sách đã thêm vào bộ sưu tập
3 Chức năng Chia sẻ sách với người
5 Chức năng Đăng nhập – đăng ký Hệ thống cho phép người dùng
đăng ký tài khoản mới bằng email,
số điện thoại, google, facebook, … Sau khi đăng ký, người dùng đăng nhập bằng tài khoản đã tạo
Trang 286 Chức năng Quản lý tài khoản Người dùng có thể chỉnh sửa thông
tin tài khoản, bộ sưu tập, thông báo,
7 Chức năng Tìm kiếm Người dùng có thể tìm kiếm nhanh
Ứng dụng chạy được trên hầu hết các ứng dụng
Bảng 1 Danh sách các yêu cầu
4.4 Sơ đồ tổng quan tính năng
Hình 11 Sơ đồ tổng quan tính năng
Trang 29CHƯƠNG 5 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Mô hình Client – Server
- Lớp Client: Hiển thị giao diện người dùng, thông qua kết nối Internet để kết nối đến
cơ sở dữ liệu quản lý thư viện Là nơi diễn ra các tương tác của người dùng với chương trình như nhập, các thao tác truy xuất dữ liệu
- Lớp Server: Quản lý và chứa toàn bộ dữ liệu của phần mềm Đồng thời xử lý các
yêu cầu nhập/xuất được gửi xuống từ lớp Client
Trang 31Hình 14 Kiến trúc ứng dụng web service
Kiến trúc Spring boot bao gồm 4 lớp:
• Chuyển giao xác thực cho Business Layer
Presentation Layer tương đương với Controller Controller xử lý tất cả các yêu cầu API REST đến (nhận, đăng, đặt, xóa, vá) khỏi máy khách
Trang 32Tầng này chịu trách nhiệm:
• Chứa logic lưu trữ
• Tìm nạp các đối tượng và dịch chúng thành các hàng cơ sở dữ liệu (và ngược lại)
Persistence Layer tương đương với Repository Chúng ta viết các truy vấn cơ sở dữ liệu bên trong này
Persistence Layer là lớp duy nhất giao tiếp với Business Layer và Database Layer
5.1.3.2.5 Luồng đi của Spring boot
• Người dùng thực hiện một yêu cầu HTTP
• Lớp controllernhận được yêu cầu HTTP
• Lớp controller hiểu loại yêu cầu nào sẽ xử lý, và sau đó nó giải quyết xử lý đó
• Nếu cần thiết, nó gọi lớp service
• Lớp service sẽ xử lý business logic Nó thực hiện điều này trên dữ liệu từ cơ sở
dữ liệu Nếu mọi thứ suôn sẻ, chúng tôi trả lại kết quả mong muốn
Trang 335.1.4 Sơ đồ use case
5.1.4.1 Diagrams
Hình 15 Use case diagrams
Trang 345.1.4.3 Danh sách các use case
STT Tên use case
8 Tạo bài đăng
9 Chỉnh sửa bài đăng
10 Xoá bài đăng
11 Bình luận bài đăng
Trang 355.1.4.4 Mô tả chi tiết use case
Điều kiện kích hoạt Người dùng thực hiện tính năng đăng nhập
Luồng chính Hành động của tác nhân Hành động của hệ thống
1 Nhập thông tin đăng nhập, bao gồm email và password
Luồng thay thế Không
Điều kiện tiên quyết • Tính năng đăng nhập hoạt động bình thường
• Người dùng có tài khoản trong hệ thống
• Người dùng đang ở màn hình đăng nhập Điều kiện sau • Đăng nhập thành công: chuyển sang màn hình trang
chủ
• Đăng nhập thất bại: thông báo cho người dùng
Bảng 4 Use case đăng nhập
5.1.4.4.2 Quên mật khẩu
Tên Quên mật khẩu
Trang 36Mô tả Người dùng không nhớ mật khẩu tài khoản và muốn cài đặt lại
mật khẩu mới Tác nhân Người dùng
Điều kiện kích hoạt Người dùng thực hiện tính năng quên mật khẩu
Luồng chính Hành động của tác nhân Hành động của hệ thống
1 Người dùng điền email của tài khoản đã tạo
2 Nhấn vào nút gửi email
1 Kiểm tra email người dùng
có trong hệ thống hay không
2 Nếu có tiến hành gửi email cài đặt lại mật khẩu Nếu không tiến hành luồng thay thế 1
Luồng thay thế Luồng thay thế 1
1 Hiện lên thông báo cho người dùng: nhập sai email
2 Tiến nhanh cho người dùng nhập lại thông tin
Điều kiện tiên quyết • Tính năng quên mật khẩu hoạt động bình thường
• Ứng dụng đang được chạy
Điều kiện sau • Thành công: chuyển sang màn hình xác nhận
• Đăng ký thất bại: thông báo cho người dùng
Bảng 5 Use case quên mật khẩu
5.1.4.4.3 Đăng ký
Tên Đăng ký
Mô tả Người dùng muốn tạo tài khoản dùng để truy cập ứng dụng Tác nhân Người dùng
Điều kiện kích hoạt Người dùng thực hiện tính năng đăng ký tài khoản
Luồng chính Hành động của tác nhân Hành động của hệ thống
Trang 371 Người dùng điền tất cả thông tin
Luồng thay thế Luồng thay thế 1
1 Hiện lên thông báo cho người dùng: sai thông tin hoặc là tạo tài khoản thất bại
2 Tiến nhanh cho người dùng nhập lại thông tin
Điều kiện tiên quyết • Tính đăng ký hoạt động bình thường
• Người dùng đang ở màn hình đăng ký Điều kiện sau • Đăng ký thành công: chuyển sang màn hình đăng nhập
• Đăng ký thất bại: thông báo cho người dùng
Bảng 6 Use case đăng ký
5.1.4.4.4 Xác nhận tài khoản
Tên Xác nhận tài khoản
Mô tả Sau khi người dùng đăng ký cần xác nhận tài khoản người
dùng Tác nhân Người dùng, hệ thống
Điều kiện kích hoạt Người dùng thực hiện tính năng đăng ký tài khoản thành công Luồng chính Hành động của tác nhân Hành động của hệ thống
1 Đăng ký tài khoản thành công
1 Tạo mã xác nhận cho tài khoản đã đăng ký
2 Gửi mã xác nhận đến email của người dùng
Trang 382 Sau khi nhận được mã thành công, người dùng nhập
mã xác nhận tài khoản
3 Xác nhận mã xác nhận của người dùng với hệ thống Hợp
lệ trạng thái tài khoản thành
đã xác nhận
Luồng thay thế Không
Điều kiện tiên quyết • Tính đăng ký và xác nhận hoạt động bình thường
• Người dùng đang ở màn hình xác nhận tài khoản Điều kiện sau • Xác nhận thành công: chuyển sang màn hình đăng
nhập
• Xác nhận thất bại: thông báo cho người dùng
Bảng 7 Use case xác nhận tài khoản
5.1.4.4.5 Thêm sách
Tên Thêm sách
Mô tả Người dùng thêm sách vào bộ sưu tập
Tác nhân Người dùng
Điều kiện kích hoạt Người dùng thực tính tính năng thêm sách
Luồng chính Hành động của tác nhân Hành động của hệ thống
1 Người dùng điền tất cả thông tin của sách
2 Nhấn vào nút thêm sách
1 Kiểm tra dữ liệu người dùng nhập vào Nếu không hợp lệ tiến hành luồng thay thế 1
2 Lưu thông tin vào database Thông báo người dùng lưu thành công Nếu không tiến hành luồng thay thế 2
Luồng thay thế Luồng thay thế 1
Trang 39• Thông báo cho người dùng thông tin sai
• Yêu cầu người dùng nhập lại Luồng thay thế 2
• Thông báo cho người dùng thêm thất bại
Điều kiện tiên quyết • Tính năng thêm sách hoạt động bình thường
• Người dùng đang ở màn hình thêm sách
Điều kiện sau • Thêm sách thành công: chuyển sang màn hình thông
báo thêm sách thành công
• Thêm sách thất bại: thông báo cho người dùng
Bảng 8 Use case thêm sách
5.1.4.4.6 Chỉnh sửa sách
Tên Chỉnh sửa sách
Mô tả Người dùng muốn chỉnh sửa thông tin sách trong bộ sưu tập Tác nhân Người dùng
Điều kiện kích hoạt Người dùng thực tính tính năng chỉnh sửa sách
Luồng chính Hành động của tác nhân Hành động của hệ thống
1 Người dùng chọn sách cần chỉnh sửa thông tin
2 Người dùng điền thông tin cần chỉnh của sách
3 Nhấn vào nút chỉnh sửa
1 Kiểm tra dữ liệu người dùng nhập vào Nếu không hợp lệ tiến hành luồng thay thế 1
2 Lưu thông tin vào database Thông báo người dùng lưu thành công Nếu không tiến hành luồng thay thế 2
Luồng thay thế Luồng thay thế 1
• Thông báo cho người dùng thông tin sai
Trang 40• Yêu cầu người dùng nhập lại Luồng thay thế 2
• Thông báo cho người dùng thêm thất bại
Điều kiện tiên quyết • Tính năng chỉnh sửa sách hoạt động bình thường
• Người dùng đang ở màn hình chỉnh sửa sách
Điều kiện sau • Chỉnh sửa sách thành công: thông báo chỉnh sửa sách
Điều kiện kích hoạt Người dùng thực tính tính năng xoá sách
Luồng chính Hành động của tác nhân Hành động của hệ thống
1 Người dùng chọn sách cần xoá
2 Nhấn vào nút xoá sách
1 Xoá sách trong database Thông báo người dùng xoá thành công Nếu không tiến hành luồng thay thế 1 Luồng thay thế Luồng thay thế 1
Luồng thay thế 1
• Thông báo cho người dùng xoá thất bại
Điều kiện tiên quyết • Tính năng xoá sách hoạt động bình thường
• Người dùng đang ở màn hình xoá sách
Điều kiện sau • Xoá sách thành công: thông báo xoá sách thành công
• Xoá thất bại: thông báo cho người dùng