HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM MAI ĐĂNG KHOA KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP CHĂM SÓC CÂY CẢNH Build an application t
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
MAI ĐĂNG KHOA
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP
CHĂM SÓC CÂY CẢNH Build an application to share the method of taking care of
ornamental plants
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
TP HỒ CHÍ MINH, 2021ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
MAI ĐĂNG KHOA – 15520371
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP
CHĂM SÓC CÂY CẢNH Build an application to share the method of taking care of
ornamental plants
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN
TS NGUYỄN LƯU THÙY NGÂN ThS LÊ THANH TRỌNG
TP HỒ CHÍ MINH, 2021
THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Trang 3Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 ……… – Chủ tịch
2 ……… – Thư ký
3 ……… – Ủy viên
4 ……… – Ủy viên
ĐHQG TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc CÔNG NGHỆ THÔNG TIN TP.
HCM, ngày….tháng… năm 2021
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:
XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP CHĂM SÓC CÂY
CẢNH
Nhóm SV thực hiện: Cán bộ hướng dẫn: Mai Đăng Khoa 15520371 TS.
Nguyễn Lưu Thùy Ngân ThS Lê Thanh Trọng
Đánh giá Khóa luận
1 Về cuốn báo cáo :
Số trang 88 Số chương 5 Số bảng số liệu 22 Số hình vẽ 54 Số tài liệu tham
khảo 18 Sản phẩm 1 Một số nhận xét về hình thức cuốn báo cáo:
Trang 4Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ
sư/ cử nhân, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Mai Đăng Khoa:…………/10
Người nhận xét
(Ký tên và ghi rõ họ tên)
ĐHQG TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc CÔNG NGHỆ THÔNG TIN TP.
HCM, ngày….tháng… năm 2021
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ PHẢN BIỆN)
Tên khóa luận:
XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP CHĂM SÓC CÂY
CẢNH
Trang 5Nhóm SV thực hiện: Cán bộ phản biện: Mai Đăng Khoa 15520371
ThS Phan Trung Hiếu
Đánh giá Khóa luận
1 Về cuốn báo cáo :
Số trang 88 Số chương 4 Số bảng số liệu 22 Số hình vẽ 54 Số tài liệu tham
khảo 18 Sản phẩm 1 Một số nhận xét về hình thức cuốn báo cáo:
Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ
sư/ cử nhân, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Mai Đăng Khoa:…………/10
Người nhận xét (Ký tên và ghi rõ họ tên)
Trang 6LỜI CẢM ƠNKhoá luận tốt nghiệp với đề tài “Xây dựng ứng dụng chia sẻ phương pháp chăm sóc cây cảnh” là kết quả sau cùng của hơn 4 năm rèn luyện và học tập tại trường Đại học Công nghệ Thông tin Thể hiện khả năng của bản thân trong việc áp dụng kiến thức chuyên môn vào giải quyết bài toán thực tế
Trong quá trình thực hiện khoá luận, em đã nhận được sự hướng dẫn tận tình từ quý thầy cô, sự giúp đỡ và hỗ trợ từ gia đình cũng như bạn bè trong và ngoài trường, các anh tại công ty Em xin được gửi lời cảm ơn chân thành đến: Các thầy cô trường Đại học Công nghệ Thông Tin nói chung và các thầy cô trong Khoa Công nghệ Phần mềm nói riêng đã tận tình truyền đạt kiến thức tới em trong những năm học tập tại trường
Đó là tài sản quý báu đã giúp em hoàn thành khoá luận và cũng là hành trang cho con đường sự nghiệp của bản thân sau này
Em xin được gửi lời cảm ơn sâu sắc tới TS Nguyễn Lưu Thùy Ngân, ThS Lê Thanh Trọng, những người đã trực tiếp hướng dẫn, chỉ bảo, giúp đỡ em trong suốt quá trình thực hiện khóa luận, đưa ra những lời khuyên bổ ích, động viên khích lệ tinh thần em
để khoá luận được hoàn thành đúng tiến độ và đáp ứng các yêu cầu đề ra ban đầu Cảm ơn giảng viên phản biện và các thầy cô trong hội đồng chấm luận văn với những lời khuyên, góp ý quý báu và bổ ích Từ đó bài luận văn của em được trở nên hoàn thiện hơn Lời cuối cùng, em xin dành lời cảm ơn gửi tới gia đình, bạn bè đã luôn bên cạnh để động viên và đóng góp ý kiến trong quá trình hoàn thành khoá luận này
Thành phố Hồ Chí Minh, tháng 06 năm 2021
Sinh viên Mai Đăng Khoa ĐHQG TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc CÔNG NGHỆ THÔNG TIN
ĐỀ CƯƠNG CHI TIẾTTÊN ĐỀ TÀI: Xây dựng ứng dụng chia sẻ phương pháp chăm sóc cây cảnh
Cán bộ hướng dẫn: TS Nguyễn Lưu Thùy Ngân, ThS Lê Thanh Trọng
Thời gian thực hiện: Từ ngày 01/03/2021 đến ngày 30/06/2021
Trang 7Sinh viên thực hiện:
1 Mai Đăng Khoa - 15520371
Nội dung đề tài:(Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực
hiện, kết quả mong đợi của đề tài)
2 Lý do chọn đề tài
Công nghệ đã và đang thay đổi thế giới, trong số đó phải kể đến một phần ảnh hưởng không nhỏ tới đời sống xã hội của chính chúng ta Việc xuất hiện các ứng dụng hỗ trợ con người chia sẻ - kết nối đã không còn quá lạ lẫm Ứng dụng chia sẻ phương pháp chăm sóc cây cảnh được nhóm tác giả lựa chọn với mong muốn tạo ra 1 sản phẩm giúp cho những người đam mê cây cảnh được có 1 không
gian sinh hoạt ảo chung, 1 mạng xã hội thu nhỏ 3 Phạm vi
Phạm vi của đề tài là các tính năng chính xoay quanh việc chia sẻ phương pháp chăm sóc cây cảnh Đây sẽ là ứng dụng nền tảng ứng dụng di động
Các tính năng chính
• News feed
Trang 8• Trao đổi cây cảnh
• Qui trình chăm sóc cây cảnh (theo loại cây, …)
3 Đối tượng
Đối tượng sử dụng là tất cả những người yêu cây cảnh có mong muốn tham gia 1 cộng đồng chung
4 Mục tiêu
• Hiểu rõ qui trình làm việc để tạo ra 1 ứng dụng công nghệ thông tin •
Làm quen với việc vừa học công nghệ vừa triển khai ứng dụng để tạo ra một ứng dụng sử dụng công nghệ chưa từng làm qua trước đó, ở đây là Flutter Đề tài là một trải nghiệm giúp nâng cao khả năng tự học nhanh chóng, đáp ứng được như cầu công nghệ thông tin cho các doanh nghiệp sau này
• Tạo ra 1 ứng dụng sau cùng có thể sử dụng được và đáp ứng cho nhu cầu
• Khảo sát, nghiên cứu đề tài và công nghệ
• Phân tích thiết kế hệ thống, thiết kế giao diện, API, database •
Xây dựng ứng dụng
• Kiểm thử, sửa lỗi và deploy ứng dụng
• Hoàn thiện báo cáo và chuẩn bị cho buổi phản biện và bảo vệ
Trang 9Sử dụng Github + Smartgit để quản lý code, Google Sheets để quản lý tài liệu và công việc
6 Những công nghệ sử dụng
App: Flutter
Backend: Laravel
Database: MySQL, Cloud Firestore
7 Kết quả mong muốn
• Ứng dụng có tính thực tiễn
• Có thể mở rộng phát triển thêm các tính năng khác trong tương lai •
Hoàn thành tốt các tính năng đề ra
Kế hoạch thực hiện:(Mô tả kế hoạch làm việc và phân công công việc cho từng
sinh viên tham gia)
Giai đoạn Thời gian Mô tả Thành viên: Đăng Khoa
1 Khảo sát,
nghiên cứu
1/3/2021 – 7/3/2021
- Lựa chọn đề tài
- Khảo sát ứng dụng tương tự
- Lựa chọn côngnghệ và tìm hiểu,nghiên cứu sửdụng
- Khảo sát các ứng dụng
- Nghiên cứu công nghệ app di động, backend
2 Phân tích
thiết kế hệ
thống và
8/3/2021 –
21/3/2021
- Phân tích, xác định, đặc
tả chức năng
- Phân tích, xác định, đặc
tả chức năng
Trang 10chuẩn bị xây
dựng ứng dụng
- Vẽ các lưu đồ, các luồng xử lý
- Thiết kế CSDL, API
- Thiết kế UI
- Nghiên cứu công nghệ, xây dựng base source
- Vẽ các lưu đồ, các luồng xử lý
- Thiết kế CSDL, API - Thiết kế UI
- Nghiên cứu công nghệ, xây dựng base source cho app di động + backend api
- Liên tục sử dụng, kiểm thử
và sửa lỗi
- Xây dựng ứng dụng
ở nền tảng app và backend
- Liên tục sử dụng, kiểm thử và sửa lỗi
- Thực hiện kiểm thử các luồng chức năng
- Tiến hành sửa các lỗi
được tìm ra
- Thực hiện kiểm thử trên môi trường production
- Thực hiện kiểm thử các
luồng chức năng
- Tiến hành sửa các lỗi được tìm ra
- Thực hiện kiểm thử trên môi trườngproduction
- Hoàn thiện ứng dụng
- Hoàn thiện ứng dụng
Trang 11- Chuẩn bị danhsách các câu hỏicho phản biện vàbảo vệ
- Tiếp thu và sửachửa báo cáo cũngnhư sản phẩm
- Chuẩn bị slide, nội dung demo
- Chỉnh sửa báo cáo
- Chuẩn bị danh sách các câu hỏi phản biện và bảo vệ
Xác nhận của CBHD
(Ký tên và ghi rõ họ tên)
TS Nguyễn Lưu Thùy Ngân
ThS Lê Thanh Trọng
TP HCM, ngày 07 tháng 03 năm
2021 Sinh viên
(Ký tên và ghi rõ họ tên)
Mai Đăng Khoa
MỤC LỤC
ĐỀ CƯƠNG CHI TIẾT 9Chương 1 MỞ ĐẦU 211.1 Giới thiệu đề tài 21 1.2
Lý do chọn đề tài 22 1.3 Mụctiêu 22 1.4 Phạm
vi 23 1.5 Phương
Trang 12pháp thực hiện 24 1.6 Ý nghĩa thực
tiễn 24 1.7 Kết quả dựkiến 24 1.8 Hiện trạng bàitoán 25 1.8.1 Các ứng dụng liên
quan 26 1.8.1.1 Ứng dụngGardenTags 26 1.8.1.2 Ứng dụng MyJungle 27 1.8.2 Đánh giá hiện trạng và
hướng giải quyết 28 1.8.2.1 Đánh giá hiệntrạng 28 1.8.2.2 Hướng giảiquyết 28 Chương 2 KIẾN THỨC NỀNTẢNG 29 2.1 Giao thức xác thực và thuậttoán 29 2.1.1 Giao thức xác thực OAuth
2.0 29 2.1.2 Thuật toánBcrypt 31 2.2 Công nghệ sửdụng 32 2.2.1 Laravel6 32 2.2.2 Laravel
Passport 332.2.3 Bootstrap 4 34 2.2.4.AWS – Amazon RDS 36 2.2.5 AWS– S3 37 2.2.6 AWS –Elastic Beanstalk .38 2.2.7.Flutter .39 2.2.8.Firebase - Cloud Firestore .39 2.2.9.MySQL 40
Chương 3 XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP CHĂM SÓC CÂY CẢNH 42
3.1 Phân tích yêu cầu hệ thống 423.1.1 Phân tích yêu cầu chức năng 42 3.1.1.1.Yêu cầu lưu trữ 42 3.1.1.2 Yêu cầu
Trang 13tính năng 42 3.1.2 Phân tích yêu cầu phi chức năng 43 3.1.3 Phân tích yêu cầu người dùng 43 3.1.3.1 Mô hình use case toàn hệ
thống 43 3.1.3.2 Danh sách actor 45 3.1.3.3 Danh sách các Use
case 45 3.1.3.4 Mô tả một số Use case 51 3.2 Phân tích thiết kế hệ thống 53 3.2.1 Thiết kế xử lý ứng dụng di động 53 3.2.1.1 Sơ đồ tuần tự thao tác
đăng ký 54 3.2.1.2 Sơ đồ tuần tự newsfeed 55 3.2.1.3 Sơ đồ tuần tự
chat 57
3.2.2 Thiết kế xử lý ứng dụng web admin 58
3.2.2.1 Sơ đồ tuần tự thao tác admin quản lí chi tiết chỉnh sửa cây cảnh của người dùng 58
3.2.3 Thiết kế cơ sở dữ liệu .60
3.2.3.1 Sơ đồ cơ sở dữ liệu .60
3.2.3.2 Mô tả các bảng dữ liệu 60
3.2.4 Thiết kế kiến trúc hệ thống 73
3.2.4.1 Kiến trúc tổng thể .73
3.2.4.2 Kiến trúc ứng dụng di động .74
3.2.4.3 Kiến trúc ứng dụng web 75
3.2.5 Thiết kế giao diện .76
3.2.5.1 Danh sách màn hình 76
3.2.5.1 Giao diện một số màn hình của ứng dụng di động 79
3.2.5.2 Giao diện một số màn hình của ứng dụng web 83
3.3 Triển khai hệ thống 84
3.3.1 Máy chủ 84 3.3.2 Ứng dụng di động 85
Trang 14Chương 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 86 4.1 Kết quả đạt được 86 4.2
Thuận lợi và khó khăn 86
4.2.1 Thuận lợi 86 4.2.2 Khó khăn 87 4.3 Hướng phát triển 87
DANH MỤC HÌNH Hình 1.1 Một video về cây cảnh trên youtube với 11 ngàn lượt xem 26
Hình 1.2 Logo ứng dụng GardenTags 26
Hình 1.3 Logo ứng dụng My Jungle 27
Hình 2.1 Luồng xác thực cơ bản của OAuth 2.0 30
Hình 2.2 Chuỗi sau khi được Bcrypt mã hóa 31
Hình 2.3 Logo Laravel .32
Hình 2.4 Mô hình vòng đời của 1 request trên ứng dụng Laravel 32
Hình 2.5 Passport cấp access token cho client sau khi xác thực thông tin đăng nhập bằng password 33
Hình 2.6 Middleware auth:api bảo vệ các route bên trong 34
Hình 2.7 Link đường dẫn thư viện online của Bootstrap vào trang web đang phát triển 35
Hình 2.8 Sử dụng bootstrap bằng cách gọi class trong các thẻ ta muốn chỉnh sửa giao diện 35 Hình 2.9 Luồng hoạt động của Elastic Beanstalk 39 Hình 3.1 Mô hình use case 1 cho người dùng 43 Hình 3.2 Mô hình use case 2 cho người dùng 44 Hình 3.3 Mô hình use case admin 44 Hình 3.4 Sơ đồ tuần tự thao tác đăng ký 54 Hình 3.5 Sơ đồ tuần tự newsfeed 55 Hình 3.6 Sơ đồ tuần tự chat 57 Hình 3.7 Sơ đồ tuần tự thao tác admin quản lí chi tiết chỉnh sửa cây cảnh của người dùng 58
Hình 3.8 Sơ đồ cơ sở dữ liệu 60
Hình 3.9 Kiến trúc tổng thể toàn hệ thống 73
Hình 3.10 Kiến trúc ứng dụng di động 74
Hình 3.11 Kiến trúc ứng dụng web 75
Trang 15Hình 3.12 Màn hình viết bài 79
Hình 3.13 Màn hình newsfeed .79
Hình 3.14 Màn hình chi tiết bài viết 79
Hình 3.15 Màn hình phần bình luận 79
Hình 3.16 Màn hình chọn cây để trao đổi 80
Hình 3.17 Màn hình cây muốn trao đổi với bài viết 80
Hình 3.18 Màn hình đăng cây cảnh để trao đổi 80
Hình 3.19 Màn hình chi tiết cây cảnh muốn trao đổi 80
Hình 3.20 Màn hình danh sách thông tin cây cảnh 81
Hình 3.21 Màn hình chi tiết thông tin cây cảnh 81
Hình 3.22 Màn hình đóng góp chỉnh sửa thông tin cây cảnh 81
Hình 3.23 Màn hình đóng góp thông tin cây cảnh mới 81
Hình 3.24 Màn hình tường cá nhân 82
Hình 3.25 Màn hình chỉnh sửa thông tin cá nhân 82
Hình 3.26 Màn hình danh sách chat 82
Hình 3.27 Màn hình chat 82
Hình 3.28 Màn hình danh sách thông tin cây cảnh của quản trị viên 83
Hình 3.29 Màn hình chi tiết đóng góp chỉnh sửa của người dùng 83
Hình 3.30 Màn hình console chính của Elastic Beanstalk khi deploy ứng dụng web thành công .84
Hình 3.31 Sử dụng công cụ Postman để kiểm tra gọi api lên server 85
DANH MỤC BẢNG Bảng 4.1 Danh sách actor 45
Bảng 4.2 Bảng danh sách các use case 51
Bảng 4.3 Bảng dữ liệu user 61
Bảng 4.4 Bảng dữ liệu role 61
Bảng 4.5 Bảng dữ liệu user_follow_user 62
Bảng 4.6 Bảng dữ liệu image_for_user 62
Bảng 4.7 Bảng dữ liệu post 63
Bảng 4.8 Bảng dữ liệu tag 63
Bảng 4.9 Bảng dữ liệu tag_type 63
Bảng 4.10 Bảng dữ liệu post_tag 64
Bảng 4.11 Bảng dữ liệu liked_post 64
Bảng 4.12 Bảng dữ liệu saved_post 64
Bảng 4.13 Bảng dữ liệu comment 65
Trang 16Bảng 4.14 Bảng dữ liệu liked_comment 65
Bảng 4.15 Bảng dữ liệu image_for_post 66
Bảng 4.16 Bảng dữ liệu pending_expert 66
Bảng 4.17 Bảng dữ liệu image_for_pending_expert .67
Bảng 4.18 Bảng dữ liệu server_plant 68
Bảng 4.19 Bảng dữ liệu server_plant_user_id 69
Bảng 4.20 Bảng dữ liệu user_plant 70
Bảng 4.21 Bảng dữ liệu image_for_user_plant .70
Bảng 4.22 Bảng dữ liệu chat 71
Bảng 4.23 Bảng dữ liệu plant_pending_exchange 72
Bảng 4.24 Bảng dữ liệu email_activate 72
TÓM TẮT KHÓA LUẬN Khoá luận với đề tài “Xây dựng ứng dụng chia sẻ phương pháp chăm sóc cây cảnh” tập trung vào nghiên cứu, phân tích thực trạng và ứng dụng các công nghệ mới để từ đó xây dựng thành một ứng dụng di động hoàn chỉnh, chạy nên nền tảng android Đáp ứng nhu cầu tìm kiếm, chia sẻ phương pháp chăm sóc cây cảnh Đề tài được bắt đầu từ việc tìm hiểu thực trạng, đưa ra các vấn đề còn tồn đọng hoặc có thể cải thiện Xác định mục tiêu, phạm vi của đề tài cũng như các chức năng cần có của hệ thống Ngoài việc xử lý các nghiệp vụ cho hệ thống, tác giả cũng đã tìm hiểu, so sánh và lựa chọn được các công nghệ mới và phù hợp giúp nâng cao trải nghiệm người dùng
Trong giai đoạn thực hiện, client và server được phát triển song song sử dụng ngôn ngữ lập trình Dart, framework Flutter cho app client, và sử dụng ngôn ngữ lập trình PHP, framework Laravel cho server backend Trong giai đoạn vận hành, server đã được triển khai lên máy chủ Digital Ocean, hoàn toàn có thể truy cập dữ liệu thông qua api từ bất cứ thiết bị nào gửi yêu cầu có chứa trường xác thực dữ liệu hợp lệ Phần cuối cùng của khoá luận là trình bày kết quả đã thực hiện lên cuốn báo cáo, đưa ra kết luận và hướng phát triển cho hệ thống trong tương lai Nội dung khoá
luận được trình bày trong 5 chương:
- Chương 01: Mở đầu
Trình bày sơ bộ về đề tài và lý do thực hiện, xác định mục tiêu, phạm vi đề tài, nêu lên hiện trạng và hướng giải quyết
- Chương 02: Kiến thức nền tảng
Giới thiệu các công thực, giải thuật cũng như những công nghệ được đưa vào khoá luận
- Chương 03: Xây dựng ứng dụng chia sẻ phương pháp chăm sóc cây cảnh
Trang 17Phân tích yêu cầu, thiết kế, hiện thực và triển khai ứng dụng
- Chương 04: Kết luận và hướng phát triển Những thuận lợi, khó khăn trong quá trình phát triển đề tài và nêu ra hướng phát triển trong tương lai.
20
Chương 1 MỞ ĐẦU
1.1 Giới thiệu đề tài
Cây cảnh từ lâu đã là 1 thú chơi của mọi nền văn hóa trên thế giới, bao gồm cảViệt Nam Chơi cây cảnh là 1 sở thích lành mạnh, giúp con người gần gũi hơnvới thiên nhiên Nhất là trong cuộc sống ngày càng hiện đại, nơi mà các thiết bị điện tử tràn ngập Cây cảnh là 1 cách giúp cho con người ta tạm quên đi cuộcsống xô bồ, xả stress, góp phần giúp cho chất lượng cuộc sống được nâng caohơn
Nhu cầu trồng cây cảnh: theo kết quả điều tra nhu cầu thị trường hoa1, cây cảnh củaViệt Nam, giai đoạn 2000 - 2011 trung bình mỗi năm tăng 9% Giai đoạn 2011-
2015 tăng trên 11% Mức độ tiêu dùng hoa, cây cảnh trung bình của người dân đô thị năm 2000 là 25.000 đồng người/năm, đến năm 2011 tăng lên 52.000 đồng/năm, đến năm 2013 là 100.000 đồng/người/năm, năm 2014 là trên 130.000
đồng/người/năm Từ đó cho thấy, thị trường những người trồng cây cảnh ngày một gia tăng, kéo theo đó là 1 cộng đồng
Nhu cầu chia sẻ thông tin: Thú chơi cây cảnh sẽ dẫn đến nhu cầu tìm hiểu thông tin
về cây, hoặc những người đã có kinh nghiệm muốn chia sẻ kiến thức của mình chocộng đồng,… Hiện nay có nhiều kênh thông tin trên các nền tảng mạng xã hội, website,… về đề tài này
Vấn đề về chăm sóc cây cảnh: Có rất nhiều nguồn tài liệu từ khắp nơi trên mạng xãhội ở nhiều nền tảng khác nhau, dẫn đến người dùng dễ bị rối và phân tán ở nhiều nền tảng Tuy đã có giải pháp bằng các ứng dụng hoặc web chuyên về chăm sóc câycảnh ở hình thức mạng xã hội nhưng là ngôn ngữ tiếng Anh, khó tiếp cận với đa số người Việt
Trang 181 Nguồn: https://dangcongsan.vn/kinh-te-va-hoi-nhap/phat-trien-nganh-cong-nghiep-hoa cay-canh-trong-kinh-te-hoi-nhap-371659.html
21 Tận dụng lợi thế công nghệ thông tin: Theo báo cáo về “Thị trường ứng dụng di động 2021” do Appota phát hành, Việt Nam có khoảng 70% dân số sử dụng điện thoại di động, trong đó có 64% các thuê bao đã kết nối 3G và 4G2 Đây là 1 con số người dùng khổng lồ, tận dụng lợi thế công nghệ có sẵn, việc làm 1 ứng dụng di động để chạm đến người dùng tiềm năng là điều hoàn toàn có thể
Và đề tài khóa luận nhằm chia sẻ phương pháp chăm sóc cây cảnh đã được
nhen nhóm ý tưởng rồi thực hiện
1.2 Lý do chọn đề tài
Đặt bản thân mình là 1 người mới bắt đầu tập trồng cây cảnh trong nhà, tác giảthấy rằng bản thân mình cần tìm hiểu rất nhiều nguồn tài liệu từ nhiều phươngtiện thông tin khác nhau, từ chọn cây, chăm sóc cây, nơi mua cây, Và tác giảchắc chắn cũng có rất nhiều người giống như tác giả Hay chỉ đơn giản là khi mình là 1 người chơi lâu năm, sẵn sàng chia sẻ kiến thức cho những người có nhu cầu
Nhằm cung cấp 1 sân chơi, 1 cộng đồng mạng để chia sẻ kiến thức, giao lưu, traođổi cây cảnh,… dành cho người dùng, tất cả gói gọn trong 1 nền tảng duy nhất
Ý tưởng dành cho đề tài được tác giả đón nhận và thực hiện Tạo ra ứng dụng chia sẻ phương pháp chăm sóc cây cảnh
1.3 Mục tiêu
Ứng dụng được xây dựng với mục đích kết nối những người yêu cây cảnh, tạo môi trường chia sẻ, học hỏi kiến thức chăm sóc cây cảnh và khuyến khích trồng cây cảnh Các chức năng chia sẻ phương pháp chăm sóc cây cảnh của 1 mạng xã hội thu nhỏ tạo nên 1 cộng đồng online Thông qua chức năng trao đổi cây cảnh, giúp kết nối người dùng ngoài đời cũng như giúp họ có được những cây mà mình mong muốn nuôi
2 Thao kh o t : https://bnews.vn/nhung-danh-gia-ve-muc-do-su-dung-smartphone-cua-nguoi ả ừ
viet/195299.html
Trang 1922 Bên cạnh đó, đề tài cũng tạo ra cơ hội để nghiên cứu, học hỏi để nâng cao chuyên môn trong lĩnh vực phát triển phần mềm Nắm bắt các công nghệ mới và xu hướng phát triển ứng dụng trên thị trường
1.4 Phạm vi
Đề tài tập trung vào xây dựng ứng dụng trên nền tảng di động (android) với các chức năng chính:
- Viết bài: Người dùng có thể viết bài kèm hình ảnh, và bài viết của người
dùng sẽ xuất hiện lên newsfeed của những ai đang theo dõi mình - Tương tác bài viết: Bình luận và thích 1 bài viết bất kì
- Chat: Dễ dàng liên lạc với nhau bằng tin nhắn
- Trao đổi cây cảnh: Đăng bài với tag trao đổi để mọi người có thể thấy và trao đổi
- Quản lý cây cảnh trao đổi: Quản lý 1 kho cây cảnh của riêng mình nhằm
phục vụ mục đích trao đổi cây
- Thông tin chăm sóc cây cảnh: bách khoa cây cảnh từ phía server cung cấp thông tin cơ bản về 1 loại cây, người dùng cũng có thể đóng góp dữ liệu mới - Theo dõi: Người dùng có thể theo dõi lẫn nhau
- Chuyên gia cây cảnh: Người dùng có thể nâng cấp lên vai trò chuyên gia cây cảnh Bài viết của chuyên gia sẽ được gợi ý ở newsfeed của mọi người dùng - Quản lý tài khoản: tạo tài khoản, quản lý thông tin (avatar, bio, username, …)
Trang 20thừa, tổng hợp lại, sau đó đề tài sẽ được bổ sung tính năng mới, cần thiết để trở
nên hoàn thiện và đáp ứng được nhu cầu thực tế của người dùng; tổng hợp các tài
liệu các công nghệ đáp ứng được cho đề tài Thống kê các số liệu liên quan (lượng
người dùng, lượng yêu cầu,…), các tính năng sẽ xây dựng Bắt đầu xây dựng ứng
dụng bằng các công nghệ đã chọn với các tính năng đề ra Xuyên suốt quá trình xây
dựng sẽ là kiểm tra các tính năng có hoạt động đúng theo luồng đã định hay không,
và sửa lỗi nếu có Và sau cùng là triển khai ứng dụng lên server
1.6 Ý nghĩa thực tiễn
Ứng dụng sẽ cung cấp môi trường để kết nối những người yêu cây cảnh, khuyến
khích tinh thần chăm cây, xây dựng cộng đồng Người dùng cũng có thể tìm thấy
những cây mình yêu thích và trao đổi với nhau, tiếc kiệm chi phí và tạo sự gắn kết
giữa người chơi cây cảnh
1.7 Kết quả dự kiến
Hiểu rõ về cú pháp, cách hoạt động của các framework liên quan như Flutter,
Laravel, và ứng dụng một cách hợp lý vào xây dựng ứng dụng chia sẻ phương
pháp chăm sóc cây cảnh
Tạo ra ứng dụng chạy trên nền tảng android 4.4 trở về sau, có đầy đủ các tính năng
đã được thiết kế: Quản lý bài viết, khám phá bài viết, nhắn tin, trao đổi cây và quản
lý tài khoản
24
1.8 Hiện trạng bài toán
Thế giới càng ngày càng phát triển, kéo theo cuộc sống của chúng ta cũng càng ngày càng bận rộn, lo
âu hơn Ngoài giờ làm việc, học tập, con người ta hiếm có được khoảng thời gian giải trí, gần gũi với thiên nhiên Do đó, trồng cây cảnh trong nhà là 1 hình thức giúp cho ta trở nên thư thái, xả stress hiệu quả và đơn giản nhất Vì thế, nhu cầu được có môi trường để mọi người dễ dàng chia sẻ, trao đổi ý kiến về cây cảnh là vô cùng cần thiết Qua tìm hiểu trên các phương tiện online, tác giả nhận thấy có rất nhiều diễn đàn, hội nhóm chuyên về giao lưu, thảo luận về các loại cây cảnh
Trang 21Trên các nền tảng mạng xã hội, các nội dung về chủ đề cây cảnh thu hút rất nhiều lượt xem, thể hiện
sự quan tâm của người dùng về chủ đề này Vd: Clip “Bộ 3 để bàn 3 tỷ và những cây đẳng cấp nhiều người mê, sanh nam điền, si, sung quái” của kênh Youtube “CÂY CẢNH VÀ CUỘC SỐNG” với hơn
11 ngàn lượt xem
25 Hình 1.1 Một video về cây cảnh trên youtube với 11 ngàn lượt xem3
Trang 22vườn trong một ứng dụng miễn phí.”
Ưu điểm:
- Hỗ trợ mạng xã hội cho các người dùng với nhau
- Hiện có trên 2 nền tảng Android và iOS
- Quản lí cây cảnh và vườn cây
- Tính năng nhận diện cây cảnh
- Ứng dụng tải khá chậm, đôi lúc không ổn định
- Không có nguồn tài liệu chăm sóc cây cảnh
- Các tính năng quản lý cây cảnh nâng cao phải trả phí hằng tháng
1.8.1.2 Ứng dụng My Jungle
Hình 1.0.3 Logo ứng dụng My Jungle5
Ưu điểm:
- Có nhiều thông tin chăm sóc cho nhiều loại cây
- Người dùng có thể đóng góp hoặc chỉnh sửa thông tin cây cảnh -
Tự thêm cây cảnh để quản lý và đặt công việc chăm sóc
Trang 23- Đơn giản, nhanh gọn dễ sử dụng
Tuy nhiên, tất cả những cộng đồng trên bị giới hạn về mặt địa lý và cách thức thủ công Dẫn đến việc kiến thức kinh nghiệm bị lãng phí, và số lượngcộng đồng bị giới hạn
Một số ý tưởng đã được tin học hóa như tạo các kênh youtube, hội nhóm trên mxh,… Tuy nhiên tất cả đều phân bố trên quá nhiều nền tảng
1.8.2.2 Hướng giải quyết
Để hỗ trợ chia sẻ phương pháp chăm sóc, trao đổi cây cảnh và xây dựng cộng đồng tốt hơn, việc ứng dụng công nghệ thông tin vào qui trình sẽ giúpcác thủ tục được diễn ra tự động ở nhiều bước, cắt giảm chi phí, giảm bớt sai sót, tạo ra sự tiện lợi và xóa bỏ khoảng cách địa lý
Theo báo cáo Thị trường quảng cáo số Việt Nam vừa được Adsota phát hành6, thị trường Việt Nam hiện nay có đến 43,7 triệu người đang sử dụng các thiết bị smartphone trên tổng dân số 97,4 triệu dân, đạt tỷ lệ 44,9%
Trang 24Đứng top 7 trên thế giới về lượt tải ứng dụng, tổng cộng 750 triệu lượt tải app Vì lẽ đó, việc tạo 1 ứng dụng hỗ trợ chia sẻ phương pháp chăm sóc câycảnh, trao đổi cây, xây dựng 1 cộng đồng là 1 lựa chọn hợp lý trong bối cảnh hiện tại
6 Thao khảo từ: https://ictnews.vietnamnet.vn/san-pham-so/gan-45-nguoi-dan-viet-nam dang-su-dung-smartphone-40903.html
ủy nhiệm truy cập API7 Sau quá trình phát triển, OAuth 2.0 ra đời vào tháng 10/2012
OAuth là 1 bộ giao thức xác thực (có thể gọi là 1 framework) cho phép người dùng (User) trao quyền truy cập tài nguyên cá nhân trên 1 nơi (gọi là Sevice Provider), cho 1 nơi khác (gọi là Consumer)
OAuth có nhiều luồng xác thực phục vụ cho nhiều trường hợp khác nhau Sau đây là luồng cơ bản nhất:
Trang 257 Tham khảo từ: https://oauth.net/about/introduction/
authorization server và trình ra authorization grant
(D) Authorization server xác thực client và validate authorization grant, và nếu hợp lệ, cấp 1 access token
(E) Client yêu cầu sử dụng resource được bảo vệ từ phía resource server và xác thực bằng cách đưa ra access token
(F) Resource server validate access token và nếu hợp lệ, cung cấp cho
request
8 Nguồn: https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1
30
2.1.2 Thuật toán Bcrypt
Nhằm bảo mật mật khẩu của người dùng khỏi admin database và hacker khi
Trang 26database bị rò rỉ, mật khẩu phải được mã hóa trước khi lưu vào database Với các hàm mã hóa thông thường, 1 chuỗi kí tự sau khi được mã hóa sẽ luôn là 1 chuỗi xác định, dễ bị dictionary attack Tuy nhiên đối với Bcrypt, chuỗi mã hóa sau cùng sẽ luôn khác nhau kể cả chuỗi ban đầu có giống nhau đi chăng nữa
1 chuỗi sau khi được Bcrypt mã hóa sẽ có định dạng sau:
Hình 2.2 Chuỗi sau khi được Bcrypt mã hóa9
Trong đó:
Alg : phiên bản thuật toán
Cost : cost factor (2^10 => 1024 vòng)
Salt : 16-byte (128-bit) salt, base64-encoded thành 22 kí tự Salt là 1 chuỗi
tạo random
Hash : 24-byte (192-bit) hash, base64-encoded thành 31 kí tự
9 Tham khảo từ: https://en.wikipedia.org/wiki/Bcrypt
Trang 27ngôn ngữ PHP, dựa theo mô hình MVC
Laravel cho phép ta xây dựng backend api, hay thậm chí là 1 trang web với đầy đủ giao diện và kết nối với database Tất cả đều gói gọn trong 1
framework và các package được viết độc lập bởi cộng đồng Laravel
Laravel 6 được release vào ngày 3/11/2019, với cải tiến middleware, lazy collections và cải tiến sub-query Phần xây dựng fronted đã bị loại bỏ
khỏi package chính và chuyển vào laravel/ui package
Hình 2.4 Mô hình vòng đời của 1 request trên ứng dụng Laravel
10 Lấy từ: https://laravel.com
32
Mục đích sử dụng: Laravel được sử dụng để làm backend api và web
quản trị viên của đề tài
2.2.2 Laravel Passport
Như đã trình bày ở mục 3.1.1 Giao thức xác thực OAuth 2.0, để bảo vệ backend api khỏi những ai không có quyền truy cập, ta cần áp dụng OAuth làm hệ thống xác thực cho api
Passport là 1 package của Laravel, nhằm cài đặt 1 server OAuth2 đầy đủ cho ứng dụng Laravel Passport được xây dựng trên nền League OAuth2 server được bảo trì bởi Andy Millington và Simon Hamp11
Trang 28Hình 2.5 Passport cấp access token cho client sau khi xác thực thông tin đăng nhập
bằng password
11 Thao khảo từ: https://laravel.com/docs/6.x/passport
33 Sau khi đã cài đặt và config Passport thành công cho project Laravel, ta cấp access token cho client khi họ đã đăng nhập thành công và gửi token cho client bằng định dạng json
Hình 2.6 Middleware auth:api bảo vệ các route bên trong
Để bảo vệ các route cần có thông tin đăng nhập, ta đặt chúng trong
Trang 29middleware auth:api Client cần gửi kèm access token trong mỗi request mới cóthể sử dụng các route đó
Mục đích sử dụng: Laravel Passport được dùng trong đề tài để hỗ trợ xác
thực cho ứng dụng di động khi gọi backend api
Trang 30Hình 2.8 Sử dụng bootstrap bằng cách gọi class trong các thẻ ta muốn chỉnh sửa giao diện13
13 Tham khảo từ:
https://www.w3schools.com/bootstrap4/tryit.asp?filename=trybs_default&stacked=h
35 Cách sử dụng bootstrap cơ bản: ta ghi tên các class vào trong thẻ cần được chỉnh sửa giao diện, và ta sẽ có kết quả mong muốn
Mục đích sử dụng: Bootstrap dùng để viết giao diện cho web quản trị viên
của đề tài
2.2.4 AWS – Amazon RDS
Dịch vụ cơ sở dữ liệu quan hệ của Amazon (Amazon Relational Database Service - Amazon RDS) là một dịch vụ web giúp thiết lập, vận hành và mở rộng quy mô cơ sở dữ liệu quan hệ trong Đám mây AWS dễ dàng hơn14 Dịch
vụ cung cấp khả năng thay đổi kích thước, hiệu quả về chi phí cho cơ sở dữ liệu quan hệ tiêu chuẩn ngành và quản lý các tác vụ quản trị cơ sở dữ liệu chung
Thành phần cơ bản của Amazon RDS là DB Instance DB Instance là một môi trường cơ sở dữ liệu cô lập trong Đám mây AWS DB Instance của bạn có thể chứa nhiều cơ sở dữ liệu do người dùng tạo Bạn có thể truy cập cơ sở dữ liệu của mình bằng cách sử dụng các công cụ và ứng dụng tương tự mà bạn sử dụng với một cơ sở dữ liệu độc lập
RDS hỗ trợ các engine database sau15:
Trang 3136
- PostgreSQL
Mục đích sử dụng: Amazon RDS dùng để triển khai cơ sở dữ liệu MySQL
của đề tài lên server
nhanh chóng, không tốn kém mà Amazon sử dụng để điều hành mạng lưới cáctrang web toàn cầu của riêng mình Dịch vụ này nhằm mục đích tối đa hóa lợi ích theo quy mô và chuyển những lợi ích đó cho các nhà phát triển16
Sau đây là một số lợi ích của việc sử dụng Amazon S3: Tạo nhóm - Tạo bucket – bucket là bộ chứa cơ bản trong Amazon S3 để lưu trữ dữ liệu - Lưu trữ dữ liệu - Lưu trữ lượng dữ liệu vô hạn trong một nhóm
- Tải lên bao nhiêu đối tượng tùy thích vào nhóm Amazon S3 Mỗi đối tượng cóthể chứa tối đa 5 TB dữ liệu Mỗi đối tượng được lưu trữ và truy xuất bằng một khóa duy nhất do nhà phát triển chỉ định
- Tải xuống dữ liệu - Tải xuống dữ liệu của bạn hoặc cho phép người khác tải
Trang 32Tải xuống dữ liệu của bạn bất cứ lúc nào bạn muốn hoặc cho phép người khác làm điều tương tự
- Quyền - Cấp hoặc từ chối quyền truy cập cho những người khác muốn tải lênhoặc tải xuống dữ liệu vào nhóm Amazon S3 của bạn Cấp quyền tải lên
16 Tham khảo từ: https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html
37
và tải xuống cho ba loại người dùng Cơ chế xác thực có thể giúp bảo mật dữ liệu khỏi bị truy cập trái phép
- Giao diện tiêu chuẩn - Sử dụng giao diện REST và SOAP dựa trên tiêu
chuẩn được thiết kế để hoạt động với bất kỳ bộ công cụ phát triển internet nào
Mục đích sử dụng: S3 dùng để lưu trữ tập tin hình ảnh của đề tài lên server 2.2.6 AWS – Elastic Beanstalk
AWS Elastic Beanstalk là một dịch vụ dễ sử dụng để triển khai và mở rộng các ứng dụng web và dịch vụ được phát triển bằng Java, NET, PHP, Node.js, Python, Ruby, Go và Docker trên những máy chủ quen thuộc như Apache, Nginx, Passenger và IIS
Bạn có thể dễ dàng tải code của bạn lên và Elastic Beanstalk sẽ tự động xử lý việc triển khai, từ cung cấp công suất, cân bằng tải, tự động điều chỉnh quy mô đến giám sát trạng thái ứng dụng Đồng thời, bạn vẫn có toàn quyền kiểm nhữngtài nguyên AWS vận hành ứng dụng của bạn và có thể truy cập các tài nguyên quan trọng vào bất kỳ lúc nào17
Khi bạn triển khai ứng dụng của mình, Elastic Beanstalk xây dựng phiên bản nền tảng được hỗ trợ đã chọn và cung cấp một hoặc nhiều tài nguyên AWS, chẳng hạn như các phiên bản Amazon EC2, để chạy ứng dụng của bạn Bạn có thể tương tác với Elastic Beanstalk bằng cách sử dụng bảng điều khiển
Trang 3317 Tham khảo: https://aws.amazon.com/vi/elasticbeanstalk/
38 Elastic Beanstalk, Giao diện dòng lệnh AWS (AWS CLI) hoặc eb, một CLI cấp cao được thiết kế đặc biệt cho Elastic Beanstalk18
Hình 2.9 Luồng hoạt động của Elastic Beanstalk
Mục đích sử dụng: Elastic Beanstalk dùng để triển khai ứng dụng Laravel của
đề tài lên server
Thời gian phát triển app Flutter nhanh chóng dựa vào tính năng Stateful hot loading, giúp ta có thể nhận thấy sự thay đổi ngay lập tức khi chỉnh sửa code
Mục đích sử dụng: Flutter dùng để viết ứng dụng di động của đề tài
2.2.8 Firebase - Cloud Firestore
Firebase là 1 nền tảng phục vụ cho phát triển web và app của Google
Sản phẩm đầu tiên của Firebase là Firebase Realtime Database của Firebase, một API đồng bộ hóa dữ liệu ứng dụng trên các thiết bị iOS, Android và Web, đồng thời lưu trữ trên đám mây của Firebase Sản phẩm hỗ trợ các nhà phát triển phần mềm trong việc xây dựng các ứng dụng đồng hợp tác, theo thời gian
Trang 34thực
18 Tham khảo: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html
39 Cloud Firestore là một cơ sở dữ liệu linh hoạt, có thể mở rộng dành cho việc phát triển các thiết bị di động, web và máy chủ đến từ Firebase và Google Cloud Giống như Firebase Realtime Database, nó giữ cho dữ liệu của ta được đồng bộ hóa trên các ứng dụng client thông qua trình xử lý thời gian thực và cung cấp hỗ trợ ngoại tuyến cho thiết bị di động và web để bạn có thể tạo các ứng dụng đáp ứng hoạt động bất kể độ trễ mạng hoặc kết nối Internet Cloud Firestore cũng cung cấp khả năng tích hợp liền mạch với các sản phẩm
Firebase và Google Cloud khác, bao gồm cả Chức năng đám mây19
Cloud Firestore là cơ sở dữ liệu NoSQL, được lưu trữ trên đám mây và cácứng dụng web iOS, Android và web của bạn có thể truy cập trực tiếp thôngqua SDK native
Mục đích sử dụng: Cloud Firestore dùng để lưu trữ và làm việc với tính
năng chat cho ứng dụng di động của đề tài
19 Tham khảo từ: https://firebase.google.com/docs/firestore
20 Tham khảo từ: https://dev.mysql.com/doc/refman/8.0/en/what-is-mysql.html
Trang 3540 MySQL sử dụng ngôn ngữ SQL – Ngôn ngữ dùng để truy vấn dữ liệu phổ biến nhất hiện nay MySQL có tốc độ truy vấn nhanh, dễ dàng sử dụng và được tải về miễn phí tại trang chủ21, khiến nhiều lập trình viên ưa thích sử dụng để lưu trữ dữ liệu
Mục đích sử dụng: MySQL dùng để lưu trữ dữ liệu cho đề tài 21 Tải MySQL tại:
https://www.mysql.com/downloads/
Trang 3641
Chương 3 XÂY DỰNG ỨNG DỤNG CHIA SẺ PHƯƠNG PHÁP
CHĂM SÓC CÂY CẢNH
3.1 Phân tích yêu cầu hệ thống
3.1.1 Phân tích yêu cầu chức năng
3.1.1.1 Yêu cầu lưu trữ
Bản chất là 1 mạng xã hội thu nhỏ, việc lưu trữ dữ liệu là 1 trong những tínhnăng quan trọng nhất của ứng dụng Để đáp ứng nhu cầu người dùng, ứng dụng cần lưu trữ những dữ liệu sau:
- Thông tin về cây cảnh: tên thường gọi, tên khoa học, lượng nước tưới, thânthiện vật nuôi, yêu cầu ánh sáng,…
- Thông tin cây cảnh cho mỗi người dùng để phục vụ trao đổi cây: tên thường gọi, tên khoa học, mô tả cây,…
- Thông tin cá nhân: họ tên, tên người dùng, bio, ảnh đại diện,… - Thông tin bài viết đăng tải: tiêu đề, nội dung, thời gian viết, bình luận, lượt thích, thẻ,
- Thông tin cuộc trò chuyện: nội dung trò chuyện
3.1.1.2 Yêu cầu tính năng
Ứng dụng di động chạy trên hệ điều hành Android, truy cập được mọi lúc khi có kết nối internet Một số chức năng cơ bản mà ứng dụng phải có:
- Chức năng tìm kiếm: Người dùng tìm kiếm được bài viết, người dùng, cây cảnh
- Chức năng cập nhật: Thông tin cây cảnh được cập nhật bởi quản trị
viên và tự động hiện ở phía người dùng
42
3.1.2 Phân tích yêu cầu phi chức năng
Ngôn ngữ của ứng dụng là tiếng Việt, giao diện thân thiện dễ dàng sử dụng
Trang 37cho người dùng Giao diện nhập liệu trực quan cơ bản, hạn chế sai sót cho người dùng khi nhập liệu Hoạt động ổn định trên môi trường Android Các công cụ và tài nguyên miễn phí hoặc với mức giá phải chăng được sử dụng để tối ưu hóa chi phí
Thông tin người dùng phải được bảo mật và chỉ được truy cập bởi chính người dùng hoặc người có quyền hạn quản lý hệ thống
3.1.3 Phân tích yêu cầu người dùng
3.1.3.1 Mô hình use case toàn hệ thống
Hình 3.1 Mô hình use case 1 cho người dùng
43