1. Trang chủ
  2. » Cao đẳng - Đại học

KHÓA LUẬN tốt NGHIỆP xây DỰNG ỨNG DỤNG hỗ TRỢ THEO dõi THỊ TRƯỜNG CHỨNG KHOÁN CHO NGƯỜI MUA bán CHỨNG KHOÁN

117 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 117
Dung lượng 11,01 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lý do chọn đề tài Ngày nay chứng khoán và thị trường chứng khoán đang ngày càng mở rộng và pháttriển, đi kèm với tốc độ phát triển nhanh chóng của chứng khoán thì công nghệ làmột phần kh

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

NGUYỄN HỮU THẮNG

KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG ỨNG DỤNG HỖ TRỢ THEO DÕI THỊ TRƯỜNG CHỨNG KHOÁN CHO NGƯỜI MUA BÁN

CHỨNG KHOÁN

BUILD A STOCK TRACKING APPLICATION TO HELP

INVESTORS TRADE STOCK BETTER

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

Trang 2

ĐẠ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

NGUYỄN HỮU THẮNG – 16521103

KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG ỨNG DỤNG HỖ TRỢ THEO DÕI THỊ TRƯỜNG CHỨNG KHOÁN CHO NGƯỜI MUA BÁN

CHỨNG KHOÁN

BUILD A STOCK TRACKING APPLICATION TO HELP

INVESTORS TRADE STOCK BETTER

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN THS TRẦN ANH DŨNG

Trang 3

THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP

Hộ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ọcCông nghệ Thông tin

Trang 4

LỜI CẢM ƠN

Sau hơn 4, 5 năm học tập và rèn luyện tại Trường Đại học Công nghệ Thông tin, được

sự giảng dạy và hướng dẫn tận tình của quý thầy cô, đặc biệt là quý thầy cô trong khoaCông nghệ Phần mềm, em đã gặt hái được những kiến thức bổ ích, có thể áp dụng vàoluận văn cũng như áp dụng trong những chặn đường tương lai

Chúng em xin chân thành cảm ơn các quý thầy cô của Trường Đại học Công nghệthông tin, quý thầy cô của Khoa Công nghệ Phần mềm, đặc biệt là thầy Trần AnhDũng đã hướng dẫn tận tình, và đóng góp ý kiến để em có thể hoàn thành khóa luậntốt nghiệp một cách tốt nhất

Bên cạnh đó, em cũng xin gửi lời cảm ơn đến các bạn cùng khóa, đã có những lời góp

ý, động viên em có thêm động lực thực hiện khóa luận trong khoảng thời gian qua

Trong suốt quá trình em tìm hiểu và thực hiện khóa luận, do sử dụng công nghệ cònkhá mới, thời gian và nhân lực của nhóm có hạn, nên không thể tránh những sai sót

Do đó em rất mong nhận được sự thông cảm và những ý kiến đóng góp chân thành từquý thầy cô và các bạn Một lần nữa, em xin chân thành cảm ơn mọi người

Thành phố Hồ Chí Minh, ngày tháng năm 2021

Nguyễn Hữu Thắng

Trang 5

MỤC LỤC

TÓM TẮT KHÓA LUẬN 1

Chương 1 MỞ ĐẦU 2

1.1 Lý do chọn đề tài 2

1.2 Mục tiêu 2

1.3 Phạm vi 2

Chương 2 TỔNG QUAN ĐỀ TÀI 4

2.1 Phương pháp thực hiện 4

2.1.1 Tìm hiểu 4

2.1.2 Đối sánh 4

2.1.3 Phân tích 4

2.1.4 Xây dựng 4

2.2 Kết quả mong đợi 5

2.2.1 Kĩ năng 5

2.2.2 Kiến thức 5

2.2.3 Kết quả 5

2.3 Tìm hiểu đề tài 7

2.3.1 Một số ứng dụng theo dõi chứng khoán 7

2.3.2 Đối sánh 11

2.3.3 Tính khác biệt của đề tài 11

Chương 3 GOOGLE CLOUD PLATFORM & FIREBASE 13

3.1 Google Cloud Platform 13

3.1.1 Tổng quan Google Cloud Platform 13

Trang 6

3.2 Firebase 15

3.2.1 Tổng quan Firebase 15

3.2.2 Ưu nhược điểm 17

3.2.3 Một số tính năng cung cấp 17

Chương 4 FLUTTER 19

4.1 Flutter tổng quát 19

4.1.1 Giới thiệu 19

4.1.2 Ưu nhược điểm 21

4.1.3 Ngôn ngữ Dart 21

4.2 Bên dưới Flutter 23

4.2.1 Các tầng kiến trúc 23

4.2.2 Cơ chế render 25

Chương 5 XÂY DỰNG HỆ THỐNG 28

5.1 Xác định và phân tích yêu cầu 28

5.1.1 Danh sách các Actor 28

5.1.2 Danh sách các Usecase 28

5.2 Thiết kế cơ sở dữ liệu 42

5.3 Thiết kế kiến trúc hệ thống 57

5.3.1 Kiến trúc ứng dụng Server 59

5.3.2 Kiến trúc ứng dụng Client 63

5.4 Thiết kế giao diện 67

5.4.1 Các màn hình đăng nhập 67

5.4.2 Các màn hình liên kết sàn giao dịch 70

5.4.3 Các màn hình theo dõi chứng khoán 73

Trang 7

5.4.5 Các màn hình thông báo 87

5.4.6 Màn hình tin nhắn 95

5.4.7 Các màn hình khác 96

5.5 Triển khai hệ thống 99

5.5.1 Server 99

5.5.2 Client 99

Chương 6 KẾT LUẬN 101

6.1 Kết quả đạt được 101

6.2 Thuận lợi và khó khăn 102

6.2.1 Thuận lợi 102

6.2.2 Khó khăn 102

6.3 Hướng phát triển 102

Tài liệu Tiếng Việt 104

Tài liệu Tiếng Anh 104

Trang 8

DANH MỤC HÌNH

Hình 2.1 Ứng dụng Stock Alarm 7

Hình 2.2 Ứng dụng Investing.com 8

Hình 2.3 Ứng dụng TradingView 10

Hình 3.1 Google Cloud Platform 13

Hình 3.2 So sánh giữa Backend truyền thống và Firebase 16

Hình 3.3 Firebase 17

Hình 4.1 Flutter - framework hỗ trợ đa nền tảng 20

Hình 4.2 Ngôn ngữ lập trình Dart 22

Hình 4.3 Các tầng kiến trúc của Flutter 24

Hình 4.4 Thư viện đồ họa Skia 26

Hình 5.1 Sơ đồ Use case tổng quát 1 28

Hình 5.2 Sơ đồ Use case tổng quát 2 29

Hình 5.3 Use case về tài khoản 30

Hình 5.4 Use case về nhật ký 32

Hình 5.5 Use case về thông báo 34

Hình 5.6 Use case danh sách theo dõi 36

Hình 5.7 Use case liên kết sàn giao dịch 38

Hình 5.8 Use case xem thông tin cổ phiếu 40

Hình 5.9 Entity Relationship Diagram 42

Hình 5.10 Kiến trúc hệ thống 57

Hình 5.11 Kiến trúc backend cloud functions 59

Hình 5.12 Kiến trúc tổng quan của project Client 63

Trang 9

Hình 5.13 Kiến trúc của ứng dụng client 64

Hình 5.14 Màn hình đăng nhập 67

Hình 5.15 Màn hình đăng ký 68

Hình 5.16 Màn hình reset mật khẩu 69

Hình 5.17 Màn hình sàn giao dịch - chưa liên kết 70

Hình 5.18 Màn hình sàn giao dịch - đã liên kết 71

Hình 5.19 Màn hình xem giao dịch của sàn 72

Hình 5.20 Màn hình thông tin S&P 500 trên 73

Hình 5.21 Màn hình thông tin S&P 500 dưới 74

Hình 5.22 Màn hình lọc tin tức 75

Hình 5.23 Màn hình cổ phiếu cụ thể 1 76

Hình 5.24 Màn hình cổ phiếu cụ thể 2 77

Hình 5.25 Màn hình tìm cổ phiếu 78

Hình 5.26 Màn hình danh sách nhật ký 79

Hình 5.27 Màn hình chi tiết nhật ký 1 80

Hình 5.28 Màn hình chi tiết nhật ký 2 81

Hình 5.29 Màn hình chỉnh sửa nhật ký 82

Hình 5.30 Màn hình thêm giao dịch thủ công 83

Hình 5.31 Màn hình thêm giao dịch thông qua sàn 85

Hình 5.32 Màn hình thêm giao dịch thông qua file excel 85

Hình 5.33 Màn hình đính kèm thông báo 86

Hình 5.34 Màn hình thông báo 87

Hình 5.35 Màn hình các thông báo chi tiết 88

Trang 10

Hình 5.36 Màn hình tạo thông báo - chọn kiểu thông báo 89

Hình 5.37 Màn hình tạo điều kiện - bước 1 90

Hình 5.38 Màn hình tạo điều kiện - bước 2 91

Hình 5.39 Màn hình tạo điều kiện - bước 3 92

Hình 5.40 Màn hình tạo thông báo - tổng kết 93

Hình 5.41 Màn hình tạo thông báo thành công 94

Hình 5.42 Màn hình tin nhắn 95

Hình 5.43 Màn hình quản lý tài khoản 96

Hình 5.44 Màn hình đăng ký gói thành viên 97

Hình 5.45 Màn hình theme tối 98

Trang 11

DANH MỤC BẢNG

Bảng 2.1 Ưu nhược điểm ứng dụng Stock Alarm 8

Bảng 2.2 Ưu nhược điểm ứng dụng Investing.com 9

Bảng 2.3 Ưu nhược điểm ứng dụng TradingView 10

Bảng 3.1 Ưu nhược điểm Google Cloud Platform 14

Bảng 3.2 Ưu nhược điểm Firebase 17

Bảng 4.1 Ưu nhược điểm Flutter 21

Bảng 5.1 Danh sách các Actor 28

Bảng 5.2 Bảng mô tả Use case về tài khoản 31

Bảng 5.3 Bảng mô tả Use case về nhật ký 33

Bảng 5.4 Bảng mô tả Use case về thông báo 35

Bảng 5.5 Bảng mô tả Use case danh sách theo dõi 37

Bảng 5.6 Bảng mô tả Use case liên kết sàn giao dịch 39

Bảng 5.7 Bảng mô tả Use case xem thông tin cổ phiếu 41

Bảng 5.8 Collection User 43

Bảng 5.9 Collection Journal 44

Bảng 5.10 Collection Stock Transaction 45

Bảng 5.11 Collection Option Transaction 46

Bảng 5.12 Collection Alert 47

Bảng 5.13 Collection Price Condition 48

Bảng 5.14 Collection Market Cap Condition 48

Bảng 5.15 Collection P/E Ratio Condition 49

Bảng 5.16 Collection Volume Condition 50

Trang 12

Bảng 5.17 Collection Fifty Two Week Condition 50

Bảng 5.18 Collection Percent Change Condition 51

Bảng 5.19 Collection Brokerage 52

Bảng 5.20 Collection Institution 52

Bảng 5.21 Collection Purchase Invoice 53

Bảng 5.22 Collection Subscription Product 54

Bảng 5.23 Collection Product Feature 54

Bảng 5.24 Collection Notification 55

Bảng 5.25 Collection Message 56

Bảng 5.26 Bảng mô tả chi tiết kiến trúc backend cloud functions 62

Bảng 5.27 Bảng mô tả chi tiết kiến trúc ứng dụng client 66

Trang 13

DANH MỤC TỪ VIẾT TẮT

STT Từ viết tắt Từ đầy đủ Ý nghĩa

1 STT Số thứ tự Số thứ tự trong bảng

2 API Application

Programming Interface Là phần mềm trung gian để 2ứng dụng giao tiếp với nhau

3 REST Representational State

Transfer Một giao thức giao tiếp giữaclient và server

4 GCP Google Cloud Platform Là một nền tảng đám mây của

Google, cung cấp nhiều dịch vụđám mây hữu ích

Trang 14

TÓM TẮT KHÓA LUẬN

Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài, mục tiêu và phạm vi tiếp cận của đềtài

Tìm hiểu, khảo sát các ứng dụng theo dõi thị trường chứng khoán hiện có, so sánh,

và rút ra các điểm mạnh, điểm yếu

Phân tích, lựa chọn các nghiệp vụ cần có của 1 ứng dụng theo dõi thị trường chứngkhoán

Tìm hiểu về ngôn ngữ lập trình Dart, các ưu nhược điểm của Firebase Cloud

Functions, Flutter để áp dụng vào hệ thống

Tìm hiểu về Google Cloud Platform, Firebase để có thể triển khai ứng dụng cũngnhư bảo trì, và phát triển thêm các tính năng về sau

Phân tích, thiết kế kiến trúc hệ thống, thiết kế cơ sở dữ liệu và giao diện ứng dụng

Trang 15

Chương 1 MỞ ĐẦU

1.1 Lý do chọn đề tài

Ngày nay chứng khoán và thị trường chứng khoán đang ngày càng mở rộng và pháttriển, đi kèm với tốc độ phát triển nhanh chóng của chứng khoán thì công nghệ làmột phần không thể thiếu với các sàn giao dịch online, website theo dõi và đầu tưchứng khoán, thậm chí là các phần mềm chứng khoán trên các nền tảng di động…Với ý tưởng đem lại sự tiện dụng tối đa cho người chơi chứng khoán, nhóm đã lên ýtưởng xây dựng một ứng dụng theo dõi chứng khoán cho người giao dịch chứngkhoán

1.2 Mục tiêu

Ứng dụng các kiến thức đã có và nghiên cứu thêm về các công nghệ, kỹ thuật lậptrình mới như Flutter, Machine Learning, và mô hình phát triển phần mềm.Hiểu về quy trình phát triển phần mềm thông qua quá trình xây dựng ứng dụng từcác bước viết yêu cầu đến hiện thực ứng dụng

Hiểu thêm về nghiệp vụ của các hệ thống theo dõi chứng khoán

Tạo ra sản phẩm có tính ứng dụng cao và góp phần vào sự phát triển của việc ứngdụng công nghệ trong thực tiễn

Trang 16

● Theo dõi các thông số của thị trường chứng khoán mới nhất

● Gợi ý hoạt động mua bán dựa trên thị trường

● Hiển thị trang tin tức cho từng công ty bao gồm cả đánh giá (tích cực haytiêu cực)

● Tạo Alert (thông báo) cho cổ phiếu với các điều kiện để hệ thống thông báotới người dùng (thông qua Email, App notification, Tin nhắn điện thoại) khithỏa điều kiện (ví dụ thông báo khi giá trị cổ phiếu của công ty đạt một mứcnào đó)

● Import thông tin các sàn giao dịch (Brokerage) từ các hệ thống khác(Robinhood) hoặc từ file csv

● Tạo Journal - một tính năng giúp người dùng theo dõi các transaction đã thựchiện (trên các sàn giao dịch khác) và ghi chú vào đó

Trang 17

Chương 2 TỔNG QUAN ĐỀ TÀI

o Firebase Cloud Functions

o Google Cloud Platform

o Firestore

Trang 18

− Frontend Mobile Application:

Ôn luyện toàn bộ các kiến thức đã được dạy trên trường

Áp dụng những lý thuyết vào thực tiễn, xây dựng một ứng dụng hoàn chỉnh, toàndiện nhất

Học hỏi thêm được những công nghệ mới, làm hành trang chuẩn bị cho tương lai

2.2.3 Kết quả

Hiểu rõ nghiệp vụ của 1 ứng dụng theo dõi chứng khoán

Trang 19

Thực hiện đúng với tên gọi đề tài, đủ với những yêu cầu giảng viên đề ra

Đáp ứng được yêu cầu đặt ra khi lên kế hoạch thực hiện

Đáp ứng được yêu cầu nghiệp vụ do sinh viên và giảng viên hướng dẫn cùng thảoluận, trao đổi

Ứng dụng được tạo ra với mức độ hoàn thiện, có thể sử dụng được trong thực tếKiến trúc ứng dụng phải rõ ràng, hợp lý Để sau này ứng dụng dễ bảo trì, phát triểnthêm các tính năng

Quy trình phát triển ứng dụng phù hợp với thực tiễn bên ngoài (Agile, V-model,…)Ứng dụng có độ chịu tải tốt, hiệu năng tốt

Trang 20

2.3 Tìm hiểu đề tài

2.3.1 Một số ứng dụng theo dõi chứng khoán

2.3.1.1 Stock Alarm

Hình 2.1 Ứng dụng Stock AlarmỨng dụng Stock Alarm cung cấp các tiện ích giúp người dùng có thể cập nhật thịtrường chứng khoán nhanh nhất, ngay cả khi họ không sử dụng ứng dụng thông quatính năng đặt thông báo

Bao gồm các tính năng:

● Theo dõi các thông số chi tiết của các stock trên sàn như giá cổ phiếu, phầntrăm biến động, …

● Theo dõi tin tức mới nhất của các công ty cổ phần trên thị trường

● Đặt điều kiện về thông số cổ phần để ứng dụng thông báo ngay khi đạt tiêuchí

● Thông báo qua cuộc gọi, tin nhắn, email hoặc push notification

Trang 21

Ưu điểm Nhược điểm

Đầy đủ các tính năng cơ bản của một

ứng dụng theo dõi chứng khoán

Thông tin cung cấp khá đầy đủ

Giao diện đơn giản, dễ dùng

Là ứng dụng di động nên rất tiện dụng

đối với nhiều đối tượng người dùng

Giao diện chưa được chỉn chu tỉ mỉ,còn nhiều lỗi tồn đọng làm giảm tínhchuyên nghiệp

Số lượng điều kiện cho Alert còn rấthạn chế nên chưa đáp ứng được nhucầu nâng cao

Chỉ có trên nền tảng iOSBảng 2.1 Ưu nhược điểm ứng dụng Stock Alarm

2.3.1.2 Investing.com

Hình 2.2 Ứng dụng Investing.com

Trang 22

Ứng dụng Investing.com cung cấp hoàn chỉnh tất cả thông tin cần thiết về thị trườngchứng khoán.

Bao gồm các tính năng:

● Theo dõi gần như toàn bộ các thông tin cần thiết về thị trường chứng khoán

● Hỗ trợ biểu đồ nến chi tiết, phù hợp cho người giao dịch nâng cao

● Hỗ trợ cả thị trường tiền điện tử (cryptocurrency)

● Có tính năng đặt thông báo

Có hỗ trợ theo dõi cả tiền điện tử

Có thể tạo danh sách theo dõi

Có tính năng đặt thông báo

Tính năng đặt thông báo còn khá đơngiản

Quá nhiều quảng cáoBảng 2.2 Ưu nhược điểm ứng dụng Investing.com

Trang 23

2.3.1.3 TradingView

Hình 2.3 Ứng dụng TradingViewỨng dụng TradingView giúp người dùng có thể xem thông tin thị trường chứngkhoán một cách nhanh nhất, tiện dụng nhất với giao diện và tính năng tối giản.Bao gồm các tính năng:

● Theo dõi thị trường chứng khoán theo thời gian thực

● Hiển thị biểu đồ nến nâng cao với các tính năng phức tạp phù hợp với ngườidùng chuyên gia

Ưu điểm Nhược điểm

Giao diện đẹp, thân thiện với người

Bảng 2.3 Ưu nhược điểm ứng dụng TradingView

Trang 24

● Tính năng đặt thông báo là một tính năng quan trọng vì cuộc sống bận rộn,không phải ai trong chúng ta cũng có thể ngồi theo dõi thị trường sát sao Đặtthông báo sẽ giúp người dùng yên tâm đi làm những công việc khác mà vẫnkhông bỏ lỡ những thời điểm quan trọng để đầu cơ Tuy nhiên tính năng nàylại chưa được các ứng dụng khác tập trung nhiều.

● Chỉ là những ứng dụng theo dõi thông tin đơn thuần Trên thực tế, ngườidùng sẽ còn phải dùng những ứng dụng sản giao dịch khác để giao dịchchứng khoán Việc chuyển đổi qua lại giữa ứng dụng giao dịch và ứng dụngtheo dõi có phần gây cản trở cho người dùng

2.3.3 Tính khác biệt của đề tài

Ứng dụng sẽ hướng tới cả 2 đối tượng người dùng đầu cơ là cơ bản và nâng cao.Ứng dụng sẽ là một nơi để người dùng có thể theo dõi tất cả các thông tin cần thiết

về thị trường chứng khoán một cách sát sao nhất

Tập trung hơn vào tính năng đặt thông báo (alert) cổ phiếu bằng cách thêm nhiềuđiều kiện thông báo từ cơ bản đến nâng cao

Thêm tính năng thông báo từ nhiều điều kiện (chained alert), mục đích để ngườidùng đặt nhiều điều kiện cùng lúc cho một thông báo, và chỉ thông báo cho ngườidùng khi tất cả điều kiện được thỏa Phù hợp cho người dùng nâng cao

Trang 25

Thêm tính năng viết nhật ký (journal), giúp người dùng có thể ghi chép lại thông tinchứng khoán, lịch sử giao dịch, … Tính năng này được tích hợp để tương tác vớicác tính năng khác của app như đính kèm thông báo (alert) đã tạo, đính kèm giaodịch (transaction).

Tính năng theo dõi danh sách các công ty cổ phần cá nhân kèm theo biểu đồ đườngthu nhỏ (sparkline chart) để tiện việc theo dõi cho người dùng

Tính năng theo dõi các thông tin chi tiết của từng công ty cổ phần, bao gồm biểu đồgiá, bảng báo giá cổ phiếu, tin tức liên quan kèm theo đánh giá, …

Tính năng liên kết tài khoản tới các trang sàn giao dịch để lấy được các thông tin vềgiao dịch, cổ phiếu đang nắm giữ, … Qua đó, việc theo dõi cổ phiếu, giao dịch hiện

có cũng được tập trung ở 1 ứng dụng, mang lại tiện lợi cho người dùng Ngoài ra,các giao dịch được liên kết cũng có thể được thêm vào nhật ký (journal)

Các tính năng tuy nhiều nhưng phải được đơn giản hóa bằng cách chia bố cục hợp

lý trên giao diện, để phù hợp với cả 2 đối tượng người dùng cơ bản và người dùngnâng cao

Trang 26

Chương 3 GOOGLE CLOUD PLATFORM & FIREBASE

3.1 Google Cloud Platform

3.1.1 Tổng quan Google Cloud Platform

Google Cloud Platform (GCP), được cung cấp bởi Google, là một bộ dịch vụ điệntoán đám mây chạy trên cùng một cơ sở hạ tầng mà Google sử dụng nội bộ cho cácsản phẩm dành cho user của mình, như Google Search và Youtube

Đúng như tên gọi, GCP cung cấp rất nhiều dịch vụ đám mây (cloud services) nhưcloud computing, data storage, phân tích data (data analysis) và machine learning.GCP, cũng giống như các nhà cung cấp dịch vụ cloud khác (Amazon Web Services,Azure), cung cấp cho ta máy ảo (Virtual Machine - VM) & phần cứng, chứa bêntrong các trung tâm dữ liệu trải rộng khắp thế giới Việc được đặt server ở khắp thếgiới cho phép chúng ta truy cập các dịch vụ với độ trễ và rủi ro thấp

Hình 3.1 Google Cloud Platform

Trang 27

3.1.2 Ưu nhược điểm

Ưu điểm Nhược điểm

Có tiếng tăm tốt trong cộng đồng

Cam kết chất lượng dịch vụ cao

Được tài trợ bởi Google

Nhiều data center khắp thế giới nên rủi

ro và độ trễ thấp

Google không tập trung cho đối tượngcác dự án lớn và dự án doanh nghiệp nếuđem đi so sánh với các công ty nhưMicrosoft

Các chức năng thiếu sự đổi mới nếu sosánh với Azure hay Amazon WebServices

Bảng 3.1 Ưu nhược điểm Google Cloud Platform

3.1.3 Một số dịch vụ cung cấp

Có rất nhiều lý do ảnh hưởng tới việc tại sao ta nên chọn GCP để làm nhà cung cấpcác dịch vụ đám mây Một trong những lý do chính nhất là số lượng dịch vụ(service) đồ sộ của nó

Một số dịch vụ mà Google Cloud Platform cung cấp

● Compute Engine: Một dịch vụ rất bảo mật và có tính tùy chỉnh, giúp ta tạo

và chạy máy ảo ngay trên cơ sở hạ tầng của Google Cung cấp những loạimáy ảo đã dựng sẵn (pre-built) để có thể bắt tay vào sử dụng nhanh nhất.Những máy ảo này sẽ có số lượng CPU và memory tối ưu nhất, nhưng cũngđồng thời cân bằng chi phí vận hành Ngoài ra chi phí cũng được giảm lênđến 80% nhờ vào việc dùng các instance máy ảo tồn tại ngắn hạn (các máy

ảo chỉ được khởi tạo khi được sử dụng, và sử dụng xong sẽ tự tắt)

● Cloud Databases: Dịch vụ cung cấp các database trên đám mây với số

lượng các loại database đa dạng, phù hợp với mọi nhu cầu sử dụng Nhữngdatabase hỗ trợ bao gồm database quan hệ (Cloud SQL - MySQL,

Trang 28

PostgreSQL, SQL Server), database key-value (Cloud Bigtable), databasedocument (Firestore), database in-memory (MemoryStore).

● Cloud Functions: Một dịch vụ Functions as a Service (FaaS) với tính mở

rộng rất cao Mô hình pay-as-you-go cũng tiết kiệm rất nhiều chi phí donhững dự án vừa và nhỏ Điểm đặc biệt của Cloud Functions là không cầnquản lý server do nó là serverless, không cần lo những thứ như độ chịu tảiserver, nâng cấp server Cloud Functions tự động scale theo độ chịu tải Nócòn hỗ trợ sẵn các tính năng giám sát (monitoring), log và debug

● Cloud Storage: Thường bị nhầm với Google Drive, Cloud Storage là một

dịch vụ lưu trữ file với nhiều loại khác nhau phù hợp với nhu cầu củadeveloper Được đặt máy chủ ở khắp nơi trên thế giới nên khả năng tiếp cận,

độ trễ lẫn chi phí đều được tối ưu nhất Ngoài ra độ bền còn đạt mức cực kìcao (99.999% độ bền hằng năm theo tài liệu của Google)

3.2 Firebase

3.2.1 Tổng quan Firebase

Firebase, cũng nằm trong hệ sinh thái của GCP, là một platform hỗ trợ cho mobile

và web applications rất mạnh bằng cách cung cấp cho các ứng dụng một nền tảngbackend với đầy đủ các tính năng như database, data storage, user authentication,analytics, push notification,…

Thông thường, một ứng dụng sẽ có cả Frontend và Backend Phía trên Frontend sẽgọi các API endpoints được cung cấp bởi Backend, và dưới Backend sẽ xử lý côngviệc Tuy nhiên, đối với các ứng dụng sử dụng Firebase, ta có thể loại bỏ hoàn toàntầng Backend, đưa tất cả xử lý lên phía client thông qua Firebase SDK

Trang 29

Hình 3.2 So sánh giữa Backend truyền thống và FirebaseFirebase, nếu được tận dụng đúng cách, có thể thay thế hoàn toàn backend serverthông thường với độ scale lên tới hàng triệu users.

Trang 30

Hình 3.3 Firebase

3.2.2 Ưu nhược điểm

Ưu điểm Nhược điểm

Đa phần là miễn phí cho nhu cầu sử

dụng cơ bản

Cộng đồng rất lớn mạnh, với số lượng

ứng dụng đang sử dụng Firebase lên tới

hàng triệu

Có nhiều loại database để lựa chọn, bao

gồm Firestore và Realtime Database

Cả 2 đều rất linh hoạt và độ mở rộng

cực kì lớn

Rất dễ để setup những tính năng cơ bản

như user authentication, query database

Hỗ trợ query database còn chưa tốt,nhiều query phức tạp chưa thể thựchiện được đối với Firestore hayRealtime Database

Hỗ trợ Migrate data còn bị hạn chế dodata không được host do ta mà đượchost trên cloud

Tập trung nhiều hơn vào nền tảngAndroid Một số tính năng, ví dụ TestLab, chạy tốt trên Android, nhưng vớiiOS thì mới chỉ ở giai đoạn betaBảng 3.2 Ưu nhược điểm Firebase

3.2.3 Một số tính năng cung cấp

● Authentication: Hệ thống đăng nhập, đăng ký đã được phát triển sẵn, với tất

cả những tính năng cần thiết của một hệ thống xác thực user như đăng nhập

Trang 31

bằng điện thoại, đăng nhập qua bên thứ 3 (như Google, Facebook, …), xácthực email, reset mật khẩu,

● Firestore: Database phi quan hệ được tích hợp sẵn, các record được ghi dưới

dạng collection (tương đương với 1 table) và document (tương đương với 1row)

● Cloud Storage: Dùng để chứa những content do người dùng tạo, như hình

ảnh và video Firebase SDK tích hợp thêm lớp bảo vệ của Google khi upload

và download file từ Firebase apps

● Cloud Functions: Là một framework theo dạng serverless, giúp ta định

nghĩa hàm và HTTP requests ở một nơi tương tự như Backend Code sẽ đượclưu ở cloud của Google và chạy trong những môi trường ảo dựng sẵn Takhông cần phải tự quản lý và scale như Backend server thông thường

● Hosting: Cung cấp dịch vụ hosting cho các trang web Chỉ với một lệnh đơn

giản, ta có thể deploy các web apps lên các máy chủ của Google

● Test Lab: Là dịch vụ cloud cung cấp những thiết bị di động được host trên

data center của Google, giúp ta có thể chạy test trên đó bất kì lúc nào Ta cóthể test app trên nhiều điện thoại cùng lúc, ở nhiều config cùng lúc

● Cloud Messaging: Là một giải pháp gửi message cross-platform (Android,

iOS, Web) giúp ta gửi message tới các thiết bị của người dùng miễn phí Sửdụng Cloud Messaging, ta có thể notify tới người dùng dưới nhiều dạng, cóthể là gửi notifications, hoặc cũng có thể là gửi data để ứng dụng xử lý, vìdata của message của thể lên đến 4000 bytes

● Google Analytics: Tính năng miễn phí để cung cấp thông tin chi tiết về việc

sử dụng ứng dụng và mức độ tương tác của người dùng Có thể định nghĩatới 500 events khác nhau để thống kê các loại tương tác của người dùng, từ

đó giúp ta suy ra được hành vi của người dùng, giúp ta đưa ra các quyết địnhkinh doanh chính xác hơn

Trang 32

Mục tiêu của Flutter là giúp lập trình viên có thể đưa những sản phẩm ứng dụng vớihiệu suất cao nhất, cùng cảm giác tự nhiên nhất trên từng platform, trong khi vẫnchia sẻ code nhiều nhất có thể.

Trong lúc phát triển ở môi trường development, ứng dụng Flutter được chạy trongmột môi trường ảo (Virtual Machine) cung cấp cơ chế hot reload mà không cầnrecompile hoàn toàn lại Trong môi trường release, ứng dụng Flutter biên dịch trựctiếp qua mã máy, dù là kiến trúc Intel x64 hay ARM, hay cũng có thể là Javascriptnếu được target sang ứng dụng Web Flutter là framework open source cùng giấyphép BSD, với một hệ sinh thái rất mạnh gồm các thư viện bên thứ ba do ngườidùng phát triển để hỗ trợ cho thư viện gốc

Trang 33

Hình 4.1 Flutter - framework hỗ trợ đa nền tảng

Trang 34

4.1.2 Ưu nhược điểm

Ưu điểm Nhược điểm

Giảm tối đa thời gian phát triển ứng

dụng với việc sử dụng cùng codebase

cho nhiều nền tảng Đồng thời giảm

tiền bạc và công sức vì chỉ cần một

team phát triển, thay vì chia ra 2 team

iOS và Android

Tính năng hot reload mạnh mẽ, giúp ta

xem thay đổi sau khi sửa code mà

không cần recompile cả app, giúp rất

nhiều trong việc phát triển, sửa chữa

bug và bảo trì dự án

Render nhanh và hoàn toàn tự do

customize nhờ vào kiến trúc đằng sau

Flutter Flutter giúp ta kiểm soát từng

pixel trên màn hình, xóa bỏ mọi rào cản

giới hạn về render đồ họa

Cộng đồng phát triển mạnh mẽ từng

ngày, framework cũng đang trên đà

phát triển, ví dụ như việc support ổn

định cho website và desktop app thông

qua phiên bản Flutter 2.0 ra mắt đầu

năm 2021

Cả Flutter và ngôn ngữ Dart đều vẫncòn rất mới, chưa hoàn toàn ổn địnhỨng dụng dùng Flutter chưa tối ưuhoàn toàn về mặt dung lượng nên sảnphẩm ứng dụng có phần hơi nặngCảm nhận của ứng dụng Flutter khôngđược hoàn toàn 100% native, vì cơ bảnFlutter không tạo ra các componentnative mà chỉ giả native, do đó vẫn sẽ

có những khác biệt nhỏ so với ứngdụng native

Không có một kiến trúc cụ thể nàotrong việc phát triển ứng dụng Flutter.Điều này có thể tốt với lập trình viênlâu năm nhờ tính tự do, nhưng cũng sẽ

là trở ngại cho người mới khi khôngbiết phải theo kiến trúc chuẩn nào

Cả Flutter và Dart đều được phát triển

và đổi mới thường xuyên Trở ngại củađiều này là việc ta phải bảo trì code liêntục nếu muốn bắt kịp sự phát triển củaFlutter

Bảng 4.1 Ưu nhược điểm Flutter

4.1.3 Ngôn ngữ Dart

Dart, ngôn ngữ lập trình của Flutter, là một ngôn ngữ lập trình hướng đối tượngđược tối ưu cho phía client, giúp phát triển app nhanh chóng trên nhiều nền tảng.Mục tiêu của Dart là mang tới một cung cụ phát triển hiệu quả nhất trong việc pháttriển các ứng dụng đa nền tảng

Dart còn là nền tảng của Flutter Dart cung cấp giải pháp ngôn ngữ lập trình cho cácứng dụng Flutter với rất nhiều chức năng cốt lõi như format, phân tích và kiểm thửcode

Trang 35

Hình 4.2 Ngôn ngữ lập trình DartNgôn ngữ Dart là loại ngôn ngữ có kiểu cứng (type safe), sử dụng cách kiểm trakiểu dữ liệu tĩnh (static type checking) để chắc chắn rằng giá trị của biến luôn khớpvới kiểu dữ liệu tĩnh của biến đó Tuy nhiên, cơ chế kiểu dữ liệu của Dart cũng rất

linh hoạt, cho phép ta khai báo kiểu động dạng dynamic, nghĩa là kiểu dữ liệu của

biến lúc này sẽ được kiểm tra ở runtime, thay vì compile time như kiểu dữ liệu tĩnh

Dart còn hỗ trợ sound null safety, nghĩa là giá trị của biến sẽ không thể null trừ khi

ta khai báo nó có thể null Với tính năng này, Dart có thể giảm thiểu tối đa các lỗinull exception khi chạy ở runtime Điểm đặc biệt là, không giống với các ngôn ngữlập trình hỗ trợ null-safe khác, khi biến nào trong Dart được khai báo là không thể

null, thì biến đó sẽ chắc chắn luôn luôn không thể null (đây là ý nghĩa của chữ sound trong cụm từ sound null safety).

Dart có một bộ thư viện gốc rất mạnh mẽ, đáp ứng mọi nhu cầu cơ bản về lập trình:

- Bộ kiểu dữ liệu, danh sách và các hàm chính cho mọi chương trình Dart

(dart:core)

Trang 36

- Bộ danh sách hỗ trợ mạnh hơn, gồm queue, linked list, hashmap, và cây nhị

phân (dart:collection)

- Bộ dịch encoder và decoder giúp chuyển đổi giữa các dạng dữ liệu khác nhau,

bao gồm JSON và UTF-8 (dart:convert)

- Bộ hỗ trợ hằng số, hàm và các công thức toán học (dart:math)

- Hỗ trợ xử lý file, socket, HTTP, và đọc ghi (I/O) cho các ứng dụng không

phải web (dart:io)

- Hỗ trợ lập trình bất đồng bộ, với các lớp như Future (tương tự Promise trong

ES6) và Stream (tương tự Observable trong rxjs) (dart:async)

- Hỗ trợ giao tiếp với các ngôn ngữ kiểu C (ví dụ C++) (dart:ffi)

- Lập trình song song sử dụng isolate - các worker độc lập tương tự như

threads nhưng không chia sẻ bộ nhớ, giao tiếp với nhau chỉ thông qua các

message (dart:isolate)

- Cung cấp các element HTML và các công cụ khác để tương tác với trình

duyệt và với DOM (Document Object Model) (dart:html)

4.2 Bên dưới Flutter

4.2.1 Các tầng kiến trúc

Flutter được thiết kế như một kiến trúc phân tầng dễ mở rộng Flutter tồn tại dướidạng một loạt các thư viện độc lập mà mỗi thư viện tương ứng với một tầng Khôngtầng nào có đặt quyền truy cập trực tiếp vào tầng dưới, và mọi phần của frameworkđều là optional và dễ dàng thay thế

Trang 37

Hình 4.3 Các tầng kiến trúc của FlutterĐối với các hệ điều hành, các ứng dụng Flutter đều được đóng gói tương tự như cácứng dụng native Một trình nhúng (Embedder) của hệ điều hành cung cấp mộtentrypoint, phối hợp với hệ điều hành để truy cập vào các service như render giaodiện, input và quản lý event loop Trình nhúng được viết bằng các ngôn ngữ tươngứng của hệ điều hành: Java và C++ cho Android, Objective-C/Objective-C++ choiOS và macOS, và C++ cho Windows và Linux Sử dụng trình nhúng, code Flutter

có thể được tích hợp vào các ứng dụng sẵn có dưới dạng một module con, hoặccũng có thể được dùng như một ứng dụng riêng Flutter đã tích hợp sẵn các trìnhnhúng gốc cho từng nền tảng, tuy nhiên vẫn có các trình nhúng khác được phát triển,

ví dụ như go-flutter, một trình nhúng giúp chạy ứng dụng Flutter trên Windows, sử

Trang 38

Lõi của Flutter, được gọi làFlutter engine, được viết chủ yếu bằng ngôn ngữ C++

và hỗ trợ các nhu cầu thiết yếu để hỗ trợ đa số các ứng dụng Flutter Engine nàychịu trách nhiệm vẽ tất cả mọi thứ lên màn hình mỗi khi có frame mới cần render

Flutter framework có thể gọi tới engine thông qua thư viện dart:ui (thư viện này

đóng gói các code C++ tương ứng dưới dạng các class của Dart, ví dụ như các class

hỗ trợ việc nhận input, đồ họa và render text)

Thông thường, lập trình viên có thể tương tác với Flutter thông quaFlutter

framework một cách hiện đại và dễ hiểu hơn các tầng dưới, được viết bằng ngôn

ngữ Dart Framework bao gồm một bộ thư viện phong phú về platform, layout, …cũng được phân tầng Đi từ dưới lên, ta sẽ có:

- Tầngfoundation, gồm các class nền tảng như về animation (để animate),

painting (để vẽ đồ họa) và gesture (để nhận tương tác).

- Tầngrendering, gồm các class hỗ trợ cho việc hệ thống layout Với tầng này,

ta có thể xây dựng một cây layout gồm các render object

- Tầngwidget, gồm các class tượng trưng cho những component trên giao

diện Mỗi render object dưới tầng rendering đều có một class tương ứng trêntầng widget Ngoài ra, tầng widget còn giúp ta định nghĩa các class mangtính tái sử dụng, tương tự như Component của React

- Thư việnMaterial và Cupertino, từ các thành phần của tầng widget, giúp ta

gọi và render các thành phần trên giao diện theo chuẩn Material design hoặciOS design

Framework Flutter tương đối nhỏ và cơ bản Nhiều tính năng cao hơn mà ta haydùng đều được đóng gói dưới dạng các package (tương tự các thư viện), bao gồm

các plugin về nền tảng như camera và webview, hay các tính năng chung như http.

Các package này được xây dựng dựa trên phần gốc của Dart và Flutter

4.2.2 Cơ chế render

Điểm đặc biệt nhất của Flutter, là dù đây là một framework chạy đa nền tảng, nhưng

về hiệu năng thì Flutter vẫn sánh ngang với các ứng dụng native Để đạt được điều

Trang 39

này, Flutter có một cơ chế render rất đặc biệt, khác với các framework đa nền tảngkhác như React Native.

Các framework đa nền tảng khác như React Native thông thường sẽ render bằngcách tạo ra một tầng abstract bên trên các thư viện UI của Android và iOS để giaotiếp với các thư viện UI đó Code thông thường sẽ được viết bằng các ngôn ngữthông dịch như Javascript, từ đó ngôn ngữ này phải tương tác với các thư viện Javacủa Android hoặc Objective-C của iOS để hiển thị giao diện Việc này dần dần sẽtăng đáng kể chi phí render, đặc biệt là khi sự tương tác giữa UI và app logic trở nênphức tạp

Ngược lại, Flutter giảm thiểu tối đa, thậm chí là hoàn toàn không cần giao tiếp vớithư native để render giao diện Code để render của Flutter sẽ được compile về dạngcode native, rồi từ đó dùng thư việnSkia (một thư viện đồ họa được viết bằng

C/C++, dùng trực tiếp CPU hoặc GPU để vẽ lên giao diện) để render giao diện.Điều này đồng nghĩa với việc, từng pixel trên màn hình giao diện của ứng dụngFlutter đều sẽ được do Flutter quản lý và lập trình viên có thể toàn quyền kiểm soátchúng

Trang 40

Flutter còn nhúng một bản sao của Skia vào engine, cho phép lập trình viên có thểnâng cấp ứng dụng sử dụng Flutter để có thể bắt kịp những cập nhật hiệu năng mớinhất, ngay cả khi điện thoại của người dùng chưa nâng cấp phiên bản Android mới.Điều này được áp dụng tương tự với các ứng dụng Flutter trên các platform khácnhư iOS, Windows hay macOS.

Ngày đăng: 05/09/2021, 20:54

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w