LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành và sự tri ân đến thầy Nguyễn Công Hoan đã hướng dẫn, tạo điều kiện cho em hoàn thành đồ án 2 – Tìm hiểu công nghệ ReactJS & Nodejs Trong khoản
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
TRẦN THẾ ANH – 19521220
ĐỒ ÁN 2 – TÌM HIỂU CÔNG NGHỆ REACTJS & NODEJS
PHẦN MỀM QUẢN LÝ TRUNG TÂM NGOẠI NGỮ
(Language Center Management System)
GIẢNG VIÊN HƯỚNG DẪN ThS NGUYỄN CÔNG HOAN
Trang 2TP HỒ CHÍ MINH, THÁNG 12 NĂM 2022
ĐẠ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
TRẦN THẾ ANH - 19521220
ĐỒ ÁN 2 – TÌM HIỂU CÔNG NGHỆ REACTJS & NODEJS
PHẦN MỀM QUẢN LÝ TRUNG TÂM NGOẠI NGỮ
(Language Center Management System)
GIẢNG VIÊN HƯỚNG DẪN ThS NGUYỄN CÔNG HOAN
Trang 3LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành và sự tri ân đến thầy Nguyễn Công Hoan đã hướng dẫn, tạo điều kiện cho em hoàn thành đồ án 2 – Tìm hiểu công nghệ ReactJS & Nodejs
Trong khoảng thời gian thực hiện đồ án, em đã học hỏi thêm được nhiều kiến thức, kinh nghiệm, biết được quy trình để tạo ra một sản phẩm phần mềm
Bên cạnh đó, em xin cảm ơn các bạn bè trong lớp đã thảo luận và góp ý cho đề tài đồng thời đã khơi thêm nguồn động lực cho em trong suốt quá trình đầy khó khă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 em chắc chắn không tránh khỏi những thiếu sót, em rất mong nhận được sự thông cảm và góp ý chân thành từ thầy Em xin chân thành cảm ơn
Thành phố Hồ Chí Minh, tháng 12 năm 2022
Trần Thế Anh
Trang 4TÓM TẮT
Đồ án với đề tài “Quản lý trung tâm ngoại ngữ” tập trung vào phân tích thực trạng
và ứng dụng các công nghệ để từ đó xây dụng ứng dụng website có thể sử dụng mà không yêu cầu quá nhiều về phần cứng, phần mềm Đáp ứng được nhu cầu cơ bản
về quản lý trung tâm ngoại ngữ
Đề 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, em 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, tối ưu chi phí phát triển và triển khai
Nhờ việc phân tích các yêu cầu rõ ràng, thời gian phát triển ngắn và các yêu cầu, tính năng ít thay đổi, trong quá trình phát triển đề tài đã sử dụng mô hình V-model cho việc xây dựng hệ thống Kết quả thu được trong giai đoạn thiết kế như kiến trúc
hệ thống, cơ sở dữ liệu, giao diện được thể hiện bằng sơ đồ người dùng, sơ đồ tuần
tự và bản thiết kế sử dụng công cụ Figma và Draw.io Trong giai đoạn thực hiện, client và server được phát triển song song sử dụng thư viện React cho client và Node.js với Express framework cho server, công cụ phát triển Visual Studio Code cùng công cụ quản lý công việc Notion Công việc kiểm thử unit test được thực hiện xuyên suốt quá trình phát triển và được kiểm thử tích hợp ở cuối giai đoạn Trong giai đoạn vận hành, server đã được triển khai lên máy chủ Google Cloud, 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
Trang 5Nội dung khoá luận được trình bày trong 4 chương:
- Chương 01: Tổng quan
Trình bày sơ bộ về thực trạng, nhu cầu thực tế Xác định mục tiêu và phạm vi đề tài
- Chương 02: Cơ sở lý thuyết, tổng quan công nghệ
Giớ thiệu về giải thuật, những công nghệ, nền tảng được sử dụng trong đồ án
- Chương 03: Phân tích thiết kế ứng dụng
Phâ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
Những kết quả đạt được sau khi kết thúc đồ án Những hạn chế, khó khăn trong quá trình phát triển đồ án và nêu ra hướng phát triển trong tương lai
Trang 6MỤC LỤC
Chương 1 TỔNG QUAN 1
1.1 Hiện trạng 1
1.1.1 Nhu cầu thực tế đề tài 1
1.1.2 Hiện trạng đơn vị cần xây dựng phần mềm 1
1.1.3 Các phần mềm đang sẵn có 1
1.1.4 Các hạn chế, vấn đề tồn tại 2
1.2 Mục tiêu 2
1.2.1 Mục đích 2
1.3 Phạm vi 2
1.3.1 Đối tượng sử dụng 2
1.3.2 Yêu cầu 2
Chương 2 CƠ SỞ LÝ THUYẾT, TỔNG QUAN CÔNG NGHỆ 5
2.1 Thuật toán sử dụng 5
2.1.1 Thuật toán Bcrypt 5
2.2 Công nghệ sử dụng 8
2.2.1 React 8
2.2.2 React Redux 10
2.2.3 Ant Design 11
2.2.4 Firebase Storage 12
2.2.5 JSON Web Token 13
2.2.6 Sequelize 15
2.2.7 PostgreSQL 16
Trang 72.2.8 Vercel 18
2.2.9 Heroku 19
Chương 3 PHÂN TÍCH THIẾT KẾ ỨNG DỤNG 20
3.1 Yêu cầu nghiệp vụ 20
3.1.1 Phân loại các yêu cầu phần mềm 20
3.1.2 Bảng trách nhiệm cho các yêu cầu 44
3.2 Use case 58
3.2.1 Sơ đồ Use case 58
3.2.2 Danh sách Actors 59
3.2.3 Danh sách các Use case 59
3.2.4 Đặc tả Use case 61
3.3 Activity diagram 84
3.3.1 Lược đồ hoạt động quản lý khóa học 84
3.3.2 Lược đồ hoạt động quản lý lớp học 85
3.3.3 Lược đồ hoạt động quản lý học viên 86
3.3.4 Lược đồ hoạt động quản lý nhân sự 87
3.3.5 Lược đồ hoạt động quản lý điểm 88
3.3.6 Lược đồ hoạt động quản lý trình độ 89
3.3.7 Lược đồ hoạt động cài đặt tham số, quy định 90
3.3.8 Lược đồ hoạt động báo cáo 91
3.4 Thiết kế cơ sở dữ liệu 92
3.4.1 Sơ đồ ERD 92
3.4.2 Mô tả chi tiết 92
3.5 Thiết kế giao diện 100
Trang 83.5.1 Danh sách các màn hình 100
3.5.2 Sơ đồ liên kết màn hình 102
3.5.3 Mô tả chi tiết các màn hình 102
3.6 Component Diagram 138
3.7 Deployment Diagram 139
Chương 4 Kết luận 139
4.1 Kết quả đạt được 139
4.2 Hạn chế 140
4.3 Hướng phát triển 141
BẢNG PHÂN CÔNG CÔNG VIỆC 142
TÀI LIỆU THAM KHẢO 143
Tài liệu tiếng Anh 143
Tài liệu tiếng Việt 144
Trang 9DANH MỤC HÌNH
Hình 2.1 Tốc độ băm của 1 số thuật toán phổ biến 6
Hình 2.2 Mã giải thuật toán băm Bcrypt 7
Hình 2.3 Kết qủa cuối cùng của quá trình băm 7
Hình 2.4 Logo thư viện React 8
Hình 2.5 Logo thư viện React Redux 10
Hình 2.6 Các thành phần của Redux 11
Hình 2.7 Logo thư viện Ant Design 11
Hình 2.8 Logo Firebase Storage 12
Hình 2.9 Logo JSON Web Token (JWT) 13
Hình 2.10 Nội dung header JWT 14
Hình 2.11 Nội dung Reserved claims 15
Hình 2.12 Nguyên tắc chuỗi bí mật 15
Hình 2.13 Logo ORM Sequelize 16
Hình 2.14 Logo PostgreSQL 16
Hình 2.15 Minh hoạ bộ dữ liệu được lưu trong bảng của PostgreSQL 17
Hình 2.16 Logo Vercel 18
Hình 2.17 Logo Google Cloud Platform 19
Hình 3.1 Sơ đồ use case 59
Hình 3.2 Lược đồ hoạt động quản lý khóa học 84
Hình 3.3 Lược đồ hoạt động quản lý lớp học 85
Hình 3.4 Lược đồ hoạt động quản lý học viên 86
Hình 3.5 Lược đồ hoạt động quản lý nhân sự 87
Hình 3.6 Lược đồ hoạt động quản lý điểm 88
Hình 3.7 Lược đồ hoạt động quản lý trình độ 89
Hình 3.8 Lược đồ hoạt động cài đặt tham số, quy định 90
Hình 3.9 Lược đồ hoạt động báo cáo 91
Hình 3.10 Lược đồ quan hệ ERD 92
Hình 3.11 Sơ đồ liên kết màn hình 102
Trang 10Hình 3.12 Màn hình đăng nhập 103
Hình 3.13 Màn hình quên mật khẩu 104
Hình 3.14 Màn hình quên mật khẩu 105
Hình 3.15 Màn hình trang chủ 106
Hình 3.16 Màn hình danh sách giảng viên 107
Hình 3.17 Màn hình thêm giảng viên 109
Hình 3.18 Màn hình danh sách nhân viên 110
Hình 3.19 Màn hình thêm nhân viên 112
Hình 3.20 Màn hình danh sách học viên 113
Hình 3.21 Màn hình thêm học viên 115
Hình 3.22 Màn hình chi tiết học viên 116
Hình 3.23 Màn hình chi tiết học viên – lớp 117
Hình 3.24 Màn hình chi tiết học viên – thời khóa biểu 118
Hình 3.25 Màn hình chi tiết học viên – điểm 118
Hình 3.26 Màn hình danh sách khóa học 119
Hình 3.27 Màn hình thêm khóa học - 1 121
Hình 3.28 Màn hình thêm khóa học - 2 122
Hình 3.29 Màn hình thêm khóa học 123
Hình 3.30 Màn hình chi tiết khóa học – thông tin 124
Hình 3.31 Màn hình chi tiết khóa học – lớp 124
Hình 3.32 Màn hình loại khóa học 125
Hình 3.33 Màn hình mức độ khóa học 127
Hình 3.34 Màn hình danh sách cột điểm 128
Hình 3.35Màn hình khung giờ 129
Hình 3.36 Màn hình danh sách lớp học 130
Hình 3.37 Màn hình thêm lớp học 132
Hình 3.38 Màn hình chi tiết lớp học 133
Hình 3.39 Màn hình chi tiết lớp học – lịch 133
Hình 3.40 Màn hình chi tiết lớp học – điểm 134
Trang 11Hình 3.41Màn hình chi tiết lớp học – học viên 135
Hình 3.42 Màn hình chi tiết lớp học – bài thi 136
Hình 3.43 Màn hình chi tiết lớp học – giảng viên 137
Hình 3.44 Component diagram 138
Hình 3.45 Deployment diagram 139
Trang 12DANH MỤC BẢNG
Bảng 2.1 Bảng giới hạn kích thước của dữ liệu trong PostgreSQL 18
Bảng 3.1 Danh sách yêu cầu nghiệp vụ 22
Bảng 3.2 Biểu mẫu và quy định 1 22
Bảng 3.3 Biểu mẫu và quy định 2 22
Bảng 3.4 Biểu mẫu và quy định 3 23
Bảng 3.5 Biểu mẫu và quy định 4 23
Bảng 3.6 Biểu mẫu và quy định 5 23
Bảng 3.7 Biểu mẫu và quy định 6 24
Bảng 3.8 Biểu mẫu và quy định 7 24
Bảng 3.9 Biểu mẫu và quy định 8 25
Bảng 3.10 Biểu mẫu và quy định 9 25
Bảng 3.11 Biểu mẫu và quy định 10 25
Bảng 3.12 Biểu mẫu và quy định 11 26
Bảng 3.13 Biểu mẫu và quy định 12 26
Bảng 3.14 Biểu mẫu và quy định 13 27
Bảng 3.15 Biểu mẫu và quy định 14 27
Bảng 3.16 Biểu mẫu và quy định 15 27
Bảng 3.17 Biểu mẫu và quy định 16 28
Bảng 3.18 Biểu mẫu và quy định 17 28
Bảng 3.19 Biểu mẫu và quy định 18 29
Bảng 3.20 Biểu mẫu và quy định 19 29
Bảng 3.21 Biểu mẫu và quy định 20 29
Bảng 3.22 Biểu mẫu và quy định 21 30
Bảng 3.23 Biểu mẫu và quy định 22 30
Bảng 3.24 Biểu mẫu và quy định 23 30
Bảng 3.25 Biểu mẫu và quy định 24 31
Bảng 3.26 Biểu mẫu và quy định 25 31
Bảng 3.27 Biểu mẫu và quy định 26 32
Trang 13Bảng 3.28 Biểu mẫu và quy định 27 32
Bảng 3.29 Biểu mẫu và quy định 28 32
Bảng 3.30 Biểu mẫu và quy định 29 33
Bảng 3.31 Biểu mẫu và quy định 30 33
Bảng 3.32 Biểu mẫu và quy định 31 34
Bảng 3.33 Biểu mẫu và quy định 32 34
Bảng 3.34 Biểu mẫu và quy định 33 34
Bảng 3.35 Biểu mẫu và quy định 34 35
Bảng 3.36 Biểu mẫu và quy định 35 35
Bảng 3.37 Biểu mẫu và quy định 36 35
Bảng 3.38 Biểu mẫu và quy định 37 36
Bảng 3.39 Biểu mẫu và quy định 38 36
Bảng 3.40 Biểu mẫu và quy định 39 36
Bảng 3.41 Danh sách yêu cầu tiện dụng 40
Bảng 3.42 Danh sách yêu cầu hiệu quả 42
Bảng 3.43 Danh sách yêu cầu tiến hóa 42
Bảng 3.44 Danh sách yêu cầu tương thích 42
Bảng 3.45 Danh sách yêu cầu bảo mật 43
Bảng 3.46 Danh sách yêu cầu an toàn 44
Bảng 3.47 Danh sách yêu cầu công nghệ 44
Bảng 3.48 Bảng trách nhiệm yêu cầu nghiệp vụ 48
Bảng 3.49 Bảng trách nhiệm yêu cầu tiện dụng 51
Bảng 3.50 Bảng trách nhiệm yêu cầu hiệu quả 54
Bảng 3.51 Bảng trách nhiệm yêu cầu tiến hóa 55
Bảng 3.52 Bảng trách nhiệm yêu cầu tương thích 56
Bảng 3.53 Bảng trách nhiệm yêu cầu bảo mật 56
Bảng 3.54 Bảng trách nhiệm yêu cầu an toàn 57
Bảng 3.55 Bảng danh sách các actors 59
Bảng 3.56 Danh sách các use case 61
Trang 14Bảng 3.57 Đặc tả Use case Đăng nhập 62
Bảng 3.58 Đặc tả Use case Khôi phục mật khẩu 63
Bảng 3.59 Đặc tả Use case Cập nhật thông tin 64
Bảng 3.60 Đặc tả Use case Quản lý học viên 67
Bảng 3.61 Đặc tả Use-case Quản lý khóa học 70
Bảng 3.62 Đặc tả Use-case Quản lý lớp học 73
Bảng 3.63 Đặc tả Use-case Quản lý nhân viên 75
Bảng 3.64 Đặc tả Use-case Quản lý giảng viên 76
Bảng 3.65 Đặc tả Use-case Xem danh sách hóa đơn 77
Bảng 3.66 Đặc tả Use-case Thống kê 78
Bảng 3.67 Đặc tả Use-case Quản lý loại khóa học 79
Bảng 3.68 Đặc tả Use-case Quản lý cột điểm 80
Bảng 3.69 Đặc tả Use-case Quản lý khung giờ 81
Bảng 3.70 Đặc tả Use-case Quản lý cấp độ 82
Bảng 3.71 Đặc tả Use-case Xem thời khóa biểu giảng viên 83
Bảng 3.72 Đặc tả Use-case Cài đặt 83
Bảng 3.73 Mô tả chi tiết bảng Bill 93
Bảng 3.74 Mô tả chi tiết bảng BillInfo 93
Bảng 3.75 Mô tả chi tiết bảng Class 93
Bảng 3.76 Mô tả chi tiết bảng ClassTime 94
Bảng 3.77 Mô tả chi tiết bảng Column_Course 94
Bảng 3.78 Mô tả chi tiết bảng Column_Transcript 94
Bảng 3.79 Mô tả chi tiết bảng ConfirmCodes 94
Bảng 3.80 Mô tả chi tiết bảng Course 95
Bảng 3.81 Mô tả chi tiết bảng CourseType 95
Bảng 3.82 Mô tả chi tiết bảng Employee 96
Bảng 3.83 Mô tả chi tiết bảng Exam 96
Bảng 3.84 Mô tả chi tiết bảng Learning 96
Bảng 3.85 Mô tả chi tiết bảng Lecturer 97
Trang 15Bảng 3.86 Mô tả chi tiết bảng Level 97
Bảng 3.87 Mô tả chi tiết bảng Parameter 97
Bảng 3.88 Mô tả chi tiết bảng RefeshToken 98
Bảng 3.89 Mô tả chi tiết bảng Role 98
Bảng 3.90 Mô tả chi tiết bảng Student 98
Bảng 3.91 Mô tả chi tiết bảng Teaching 98
Bảng 3.92 Mô tả chi tiết bảng TestType 99
Bảng 3.93 Mô tả chi tiết bảng Testing 99
Bảng 3.94 Mô tả chi tiết bảng TimeFrame 99
Bảng 3.95 Mô tả chi tiết bảng User 100
Bảng 3.96 Danh sách các màn hình 102
Bảng 3.97 Mô tả đối tượng trên màn hình đăng nhập 103
Bảng 3.98 Biến cố và xử lý trên màn hình đăng nhập 104
Bảng 3.99 Mô tả đối tượng trên màn hình quên mật khẩu 104
Bảng 3.100 Biến cố và xử lý trên màn hình đăng nhập 105
Bảng 3.101 Biến cố và xử lý trên màn hình đăng nhập 106
Bảng 3.102 Biến cố và xử lý trên màn hình đăng nhập 106
Bảng 3.103 Mô tả các đối tượng trên màn hình trang chủ 107
Bảng 3.104 Biến cố và xử lý trên màn hình trang chủ 107
Bảng 3.105 Mô tả các đối tượng trên màn hình danh sách giảng viên 108
Bảng 3.106 Biến cố và xử lý trên màn hình danh sách giảng viên 108
Bảng 3.107 Mô tả các đối tượng trên màn hình thêm giảng viên 110
Bảng 3.108 Biến cố và xử lý trên màn hình thêm giảng viên 110
Bảng 3.109 Mô tả các đối tượng trên màn hình danh sách nhân viên 111
Bảng 3.110 Biến cố và xử lý trên màn hình danh sách nhân viên 111
Bảng 3.111 Mô tả các đối tượng trên màn hình thêm nhân viên 113
Bảng 3.112 Biến cố và xử lý trên màn hình thêm nhân viên 113
Bảng 3.113 Mô tả các đối tượng trên màn hình danh sách học viên 114
Bảng 3.114 Biến cố và xử lý trên màn hình danh sách học viên 114
Trang 16Bảng 3.115 Mô tả các đối tượng trên màn hình thêm học viên 115
Bảng 3.116 Biến cố và xử lý trên màn hình thêm học viên 116
Bảng 3.117 Mô tả các đối tượng trên màn hình chi tiết học viên 117
Bảng 3.118 Biến cố và xử lý trên màn hình chi tiết học viên – lớp 117
Bảng 3.119Mô tả các đối tượng trên màn hình chi tiết học viên – điểm 119
Bảng 3.120Biến cố và xử lý trên màn hình chi tiết học viên – điểm 119
Bảng 3.121 Mô tả các đối tượng trên màn hình danh sách khóa học 120
Bảng 3.122 Biến cố và xử lý cho màn hình danh sách khóa học 120
Bảng 3.123 Mô tả các đối tượng trên màn hình thêm khóa học 121
Bảng 3.124 Biến cố và xử lý trên màn hình thêm khóa học 122
Bảng 3.125 Mô tả các đối tượng trên màn hình thêm khóa học 122
Bảng 3.126 Biến cố và xử lý trên màn hình thêm khóa học 122
Bảng 3.127 Mô tả các đối tượng trên màn hình thêm khóa học 123
Bảng 3.128 Biến cố và xử lý trên màn hình thêm khóa học 123
Bảng 3.129 Mô tả các đối tượng trên màn hình chi tiết khóa học – lớp 125
Bảng 3.130 Biến cố và xử lý trên màn hình chi tiết khóa học – lớp 125
Bảng 3.131 Mô tả các đối tượng trên màn hình loại khóa học 126
Bảng 3.132 Biến cố và xử lý trên màn hình loại khóa học 126
Bảng 3.133 Mô tả các đối tượng trên màn hình mức độ khóa học 127
Bảng 3.134 Biến cố và xử lý trên màn hình mức độ khóa học 128
Bảng 3.135 Mô tả các đối tượng trên màn hình danh sách cột điểm 129
Bảng 3.136 Biến cố và xử lý trên màn hình danh sách cột điểm 129
Bảng 3.137 Mô tả các đối tượng trên màn hình khung thời gian 130
Bảng 3.138 Biến cố và xử lý trên màn hình khung thời gian 130
Bảng 3.139 Mô tả các đối tượng trên màn hình danh sách lớp học 131
Bảng 3.140 Biến cố và xử lý trên màn hình danh sách lớp học 131
Bảng 3.141 Mô tả các đối tượng trên màn hình thêm lớp học 132
Bảng 3.142 Biến cố và xử lý trên màn hình thêm lớp học 132
Bảng 3.143 Mô tả các đối tượng trên màn hình chi tiết lớp học – điểm 134
Trang 17Bảng 3.144 Biến cố và xử lý trên màn hình chi tiết lớp học – điểm 134
Bảng 3.145 Mô tả các đối tượng trên màn hình chi tiết lớp học – học viên 135
Bảng 3.146 Biến cố và xử lý trên màn hình chi tiết lớp học – học viên 135
Bảng 3.147 Mô tả các đối tượng trên màn hình chi tiết lớp học – bài thi 136
Bảng 3.148 Biến cố và xử lý trên màn hình chi tiết lớp học – bài thi 136
Bảng 3.149 Mô tả các đối tượng trên màn hình chi tiết lớp học – giảng viên 137
Bảng 3.150 Biến cố và xử lý trên màn hình chi tiết lớp học – giảng viên 137
Bảng 4.1 Bảng danh sách các tài khoảng truy cập 140
Trang 19CHƯƠNG 1 TỔNG QUAN
1.1 Hiện trạng
1.1.1 Nhu cầu thực tế đề tài
Ngày nay, đáp ứng với việc hội nhập quốc tế, việc học ngoại ngữ cũng trở thành một xu hướng tất yếu Từ đó các trung tâm ngoại ngữ ra đời ngày càng nhiều Tuy nhiên việc quản lý vận hành, dữ liệu của các trung tâm hầu hết vẫn thao tác bởi những ứng dụng cơ bản tách rời nhau, chưa có sự thống nhất và đảm bảo an toàn dữ liệu Đồng thời các trung tâm và học viên muốn tiếp cận nhau phải thông qua nhiều nguồn trung gian khác Đối mặt với những điều đó, phần mềm Quản lý trung tâm ngoại ngữ được ra đời và đã, đang và sẽ trở thành nhu cầu thiết yếu của các trung tâm ngoại ngữ
1.1.2 Hiện trạng đơn vị cần xây dựng phần mềm
Hiện trạng đơn vị:
• Cơ cấu tổ chức: các trung tâm có nhiều chi nhánh hoặc một chi nhánh, số lượng người dùng có thể đáp ứng là trên 100 người
• Quy trình nghiệp vụ: tiếp nhận học sinh, xếp các khóa học phù hợp với trình
độ, quản lý dữ liệu về tài liệu, giảng viên, nhân viên, báo cáo thống kê doanh thu
• Hiện trạng về mặt tin học: quản lý thông tin qua giấy tờ, excel, trao đổi thông tin, thông báo qua Zalo, Facebook…
1.1.3 Các phần mềm đang sẵn có
• Hệ thống quản lý trung tâm ngoại ngữ Mono eLMS
• Công cụ quản lý trung tâm ngoại ngữ Centre Online
• Phần mềm quản lý đào tạo VnResource – EBMPro
• Và rất nhiều phần mềm khác
Trang 20- Giảm thiểu số lượng công việc thủ công, tiết kiệm thời gian, công sức
- Nâng cao tính chính xác và bảo mật trong kinh doanh, quản lý thông tin học viên, nhân viên
- Kiểm soát tốt công việc sắp xếp lịch học hợp lí, thống kê báo cáo
1.3.2.1 Yêu cầu chức năng
• Quản lý tài khoản
▪ Đăng ký tài khoản
▪ Đăng nhập
▪ Quên mật khẩu
▪ Đổi mật khẩu
• Quản lý học viên
▪ Tiếp nhận và hiệu chỉnh thông tin học viên
▪ Tra cứu học viên
▪ Xếp lớp
▪ Lập thẻ học viên và in
▪ Lập hóa đơn thu học phí
▪ Xem bảng điểm
Trang 21▪ Xem thời khóa biểu
• Quản lý khoá học
▪ Tạo mới và hiệu chỉnh thông tin khóa học
▪ Tra cứu khóa học
▪ Xem thông tin chi tiết khóa học
▪ Xem danh sách lớp học thuộc khóa học
• Quản lý lớp học
▪ Tạo mới và hiệu chỉnh thông tin lớp học
▪ Tra cứu lớp học
▪ Xem chi tiết thông tin lớp học
▪ Xem thời khóa biểu lớp học
▪ Xem bảng điểm của lớp
▪ Xem danh sách học viên
▪ Thiết lập bài thi và lịch thi
▪ Bổ nhiệm giáo viên
• Quản lý nhân viên
▪ Thêm và hiệu chỉnh thông tin nhân viên
▪ Tra cứu nhân viên
• Quản lý giảng viên
▪ Thêm và hiệu chỉnh thông tin giảng viên
▪ Tra cứu giảng viên
▪ Xem thời khóa biểu giảng viên
▪ Xem danh sách lớp dạy
▪ Cập nhật điểm cho học viên
• Báo cáo, thống kê
▪ Thống kê doanh thu, chi tiêu theo tháng/quý/năm
▪ Lập danh sách top những lớp học được đăng ký nhiều nhất
▪ Xem chi tiết hóa đơn và in hóa đơn
Trang 22• Quản lý trình độ học vấn
▪ Tạo trình độ học vấn mới, hiệu chỉnh thông tin trình độ học vấn
• Quản lý loại khóa học
▪ Tạo mới, hiệu chỉnh thông tin loại khóa học
• Quản lý cột điểm
▪ Tạo mới, hiệu chỉnh thông tin cột điểm
• Quản lý khung thời gian
▪ Tạo mới, hiệu chỉnh thông tin khung thời gian
• Thiết lập chung
▪ Thay đổi quy định, tham số
▪ Thiết lập thông tin trung tâm
▪ Hiệu chỉnh thông tin tài khoản
1.3.2.2 Yêu cầu phi chức năng
• Yêu cầu về giao diện:
- Giao diện thân thiện, bố cục hợp lý, dễ sử dụng
- Giao diện thống nhất, đồng bộ, không gây bất ngờ cho người sử dụng
- Màu sắc, vị trí, hiển thị của các component có tính đồng bộ
• Yêu cầu về độ tin cậy, bảo mật:
- Có sử dụng phân quyền cho từng nhóm tài khoản
- Dữ liệu tài khoản người dùng được bảo mật
• Yêu cầu về độ tương thích:
Trang 23- Dễ dàng nâng cấp tính năng đã có nhờ vào sự hệ thống hóa trong khâu
xử lý
- Dễ dàng mở rộng khi có nhu cầu phát triển
• Yêu cầu về tính hiệu quả:
- Hệ thống quản lý dữ liệu một cách logic
- Hiệu năng ổn định tránh gây khó chịu cho người dùng
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT, TỔNG QUAN CÔNG NGHỆ2.1 Thuật toán sử dụng
2.1.1 Thuật toán Bcrypt
Để mật khẩu được an toàn ngay cả khi cơ sở dữ liệu của hệ thống bị rò rỉ, chúng ta cần băm mật khẩu trước khi sử dụng Vì tính chất của hàm băm là cùng 1 đầu vào thì kết quả sẽ luôn cho ra 1 giá trị không đổi, việc sử dụng các thuật toán băm thông thường dễ bị kẻ tấn công suy ra bằng các phương pháp như Dictionary Attack, Rainbrow Table Attack, …
Bcrypt là một thuật toán mã hoá mật khẩu đã được tạo ra bởi Niels Provos và David Mazières vào năm 1999, nó hoạt động dựa trên các thuật toán mã hóa Blowfish Nhằm tạo ra sự khó khăn, giảm tốc độ khi giải mã để tìm ra mật khẩu của các cuộc tấn công, Bcrypt sẽ tạo ra các chuỗi mã hoá ngẫu nhiên sau mỗi lần tạo ra
Bcrypt là sự kết hợp của cơ chế băm, yếu tố salt và stretching, cụ thể như sau:
Cơ chế băm:
- Giá trị băm không thể dịch ngược lại giá trị ban đầu
- Với cùng giá trị đầu vào, hàm băm luôn cho 1 kết quả đầu ra
- Đầu vào khác nhau sẽ cho các giá trị đầu ra khác nhau
Yếu tố salt: Giá trị đầu vào được thêm bởi 1 chuỗi ngẫu nhiên, giúp giảm bớt khả năng kẻ tấn công có dữ liệu được tính toán từ trước hoặc tốn nhiều thời gian để tìm
Trang 24Stretching: Các máy tính hiện nay có tốc độ xử lý rất nhanh, vì thế cơ chế này sẽ giúp làm chậm quá trình băm dữ liệu hay còn gọi là tăng tải, khiến kẻ tấn công tốn nhiều thời gian để có được dữ liệu băm
Hình 2.1 Tốc độ băm của 1 số thuật toán phổ biến 1
Bcrypt được chạy trên 2 pha:
- Pha 1: Hàm EksBlowfishSetup được gọi để chuẩn bị cho quá trình băm với chi
phí mong muốn, salt và mật khẩu dùng cho khởi tạo trạng thái của eksblowfish Trong trường hợp mật khẩu không đủ tốt hoặc quá ngắn, nó sẽ được xử lý và tạo ra mật khẩu có độ dài lớn hơn Mục đích chính của bước này là tăng cường sức mạnh của key để làm chậm tốc độ tính toán từ đó giảm tốc độ của kẻ tấn công
1 Nguồn: https://asecuritysite.com/encryption/bcrypt
Trang 25Hình 2.2 Mã giải thuật toán băm Bcrypt 2
- Pha 2: Giá trị 192 bits OrpheanBeholderScryDoubt được mã hoá 64 lần sử dụng eksblowfish với chế độ ECB3 Đầu ra của pha này là giá trị cost và 128 bits salt được ghéo với kết quả vòng lặp mã hoá
Hình 2.3 Kết qủa cuối cùng của quá trình băm 4
2 Nguồn: https://auth0.com
Trang 262.2 Công nghệ sử dụng
2.2.1 React
Hình 2.4 Logo thư viện React 5
ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản thân nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần trên website Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu không chỉ thực hiện được trên tầng Server mà còn ở dưới Client Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau React so sánh
sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM Trước khi đến cài đặt và cấu hình, chúng ta sẽ đi đến một
số khái niệm cơ bản:
- Virtual DOM:
Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý React
JS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này.Virtual DOM là một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật React sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều Dữ liệu được truyền từ parent đến child thông qua props Luồng dữ liệu đơn giản giúp chúng ta dễ dàng kiểm soát cũng như sửa lỗi Với các đặc điểm ở trên, React dùng để xây dựng các ứng dụng lớn mà dữ liệu của
5 Nguồn: https://reactjs.org/
Trang 27chúng thay đổi liên tục theo thời gian Dữ liệu thay đổi thì hầu hết kèm theo sự thay đổi về giao diện Ví dụ như Facebook: trên Newsfeed của bạn cùng lúc sẽ có các status khác nhau và mỗi status lại có số like, share, comment liên tục thay đổi Khi
đó React sẽ rất hữu ích để sử dụng
- Giới thiệu về JSX:
JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript Đặc điểm: Faster: Nhanh hơn JSX thực hiện tối ưu hóa trong khi biên dịch sang mã Javacsript Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã tương đương viết trực tiếp bằng Javascript Safer: an toàn hơn Ngược với Javascript, JSX là kiểu statically-typed, nghĩa là nó được biên dịch trước khi chạy, giống như Java, C++ Vì thế các lỗi sẽ được phát hiện ngay trong quá trình biên dịch Ngoài ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt Easier: Dễ dàng hơn JSX kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình viên Javascripts có thể sử dụng (tham khảo tại https://jsx.github.io/)
- Giới thiệu về Components:
React được xây dựng xung quanh các component, chứ không dùng template như các framework khác Trong React, chúng ta xây dựng trang web sử dụng những thành phần (component) nhỏ Chúng ta có thể tái sử dụng một component ở nhiều nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có thể chứa thành phần khác Mỗi component trong React có một trạng thái riêng, có thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi của trạng thái Mọi thứ React đều là component Chúng giúp bảo trì mã code khi làm việc với các dự án lớn Một react component đơn giản chỉ cần một method render
Có rất nhiều methods khả dụng khác, nhưng render là method chủ đạo
- Props và State:
Props: giúp các component tương tác với nhau, component nhận input gọi là props,
Trang 28thể hiện trạng thái của ứng dụng, khi state thay đồi thì component đồng thời render lại để cập nhật UI
2.2.2 React Redux
Hình 2.5 Logo thư viện React Redux 6
Redux là một predictable state management tool cho các ứng dụng Javascript Nó giúp bạn viết các ứng dụng hoạt động một cách nhất quán, chạy trong các môi trường khác nhau (client, server, and native) và dễ dàng để test Redux ra đời lấy cảm hứng từ tư tưởng của ngôn ngữ Elm và kiến trúc Flux của Facebook Do vậy Redux thường dùng kết hợp với React
Các thành phần trong Redux:
- Actions đơn giản là các events Chúng là cách mà chúng ta send data từ app đến Redux store Những data này có thể là từ sự tương tác của user vs app, API calls hoặc cũng có thể là từ form submission
- Reducers là các function nguyên thủy chúng lấy state hiện tại của app, thực hiện một action và trả về một state mới Những states này được lưu như những objects và chúng định rõ cách state của một ứng dụng thay đổi trong việc phản hồi một action được gửi đến store
- Store lưu trạng thái ứng dụng và nó là duy nhất trong bất kỳ một ứng dụng Redux nào Bạn có thể access các state được lưu, update state, và đăng ký or hủy đăng ký các listeners thông qua helper methods
6 Nguồn: https://react-redux.js.org/
Trang 29Hình 2.6 Các thành phần của Redux 7
2.2.3 Ant Design
Hình 2.7 Logo thư viện Ant Design 8
Ant là tập hợp các components của React được xây dựng theo chuẩn thiết kế của Ant UED Team Tương tự như chuẩn Material Design, Ant cung cấp hầu hết các component thông dụng trong ứng dụng web hiện đại, như Layout, Button, Icon, DatePicket, v.v…Bên cạnh đó Ant cũng có những component riêng thú vị, như LocaleProvider cho phép bạn thay đổi ngôn ngữ trên toàn ứng dụng
Ant Design hiện đang có hơn 76k star trên GitHub và hiện là thư viện UI lớn thứ 2 trên thế giới
Có thể coi Ant Design cho React là tập hợp của hầu hết các thư viện về React Dưới đây là danh sách các component mà nó cung cấp:
- General: Button, Icon
Trang 30- Layout: Grid, Layout
- Navigation: Affix, Breadcrumb, Dropdown, Menu, Pagination, Steps
- Data Entry: AutoComplete, Checkbox, Cascader, DatePicker, Form,
InputNumber, Input, Mention, Rate, Radio, Switch, Slider, Select,
TreeSelect, Transfer, TimePicker, Upload
- Data Display: Avatar, Badge, Collapse, Carousel, Card, Calendar, List, Popover, Tree, Tooltip, Timeline, Tag, Tabs, Table
- Feedback: Alert, Drawer, Modal, Message, Notification, Progress,
Popconfirm, Spin, Skeleton
- Other: Anchor, BackTop, Divider, LocaleProvider
Ngoài ra, trong hệ sinh thái của Ant Design, còn có các thư viện như Ant Design Pro, Ant Design Chart, Ant Design Mobile,…
2.2.4 Firebase Storage
Hình 2.8 Logo Firebase Storage 9
Firebase Storage là dịch vụ được xây dựng cho mục đích lưu trữ và quản lý các nội dung mà người dùng ứng dụng tạo ra như ảnh, videos hay dữ liệu dạng file
Firebase Storage cung cấp các API cho việc uploads và download các file từ app của bạn một cách bảo mật và bạn không cần quan tâm đến chất lượng đường truyền mạng
Firebase Storage được xây dựng trên nền tảng Google Cloud Platform nên có nhiều lợi thế
9 Nguồn: https://blog.angular.io/
Trang 31Một số điểm mạnh:
- Robust: Firebase Storage thực hiện việc upload và download không phụ thuộc vào chất lượng đường truyền mạng hơn nữa các quá trình đó có thể bắt đầu lại khi bị tạm dừng giúp tiết kiệm thời gian và băng thông
- Secure: Được tích hợp Firebase Authentication cho việc bảo mật nên dễ dàng quản lý quyền truy cập vào các files
- Scalable: Firebase Storage được xây dựng trên nền tảng Google Cloud
Platform nên khả năng mở rộng có thể lên đến hàng Petabyte dữ liệu
2.2.5 JSON Web Token
Hình 2.9 Logo JSON Web Token (JWT) 10
JSON Web Token (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ
ký số JWTs có thể được ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc một public / private key sử dụng mã hoá RSA
Một ví dụ về JWT Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsImlzcy I6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY3YmM 5MGM4YWI2ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE3OTdiNDYxNGI3M TkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXYAiMN dfNRw98Hw_IWuA5MaMo
Trang 32Thoạt trông phức tạp là thế nhưng nếu hiểu, cấu trúc của một JWT chỉ đơn giản như sau:
<base64-encoded header>.<base64-encoded payload>.<base64-encoded signature>
Nói một cách khác, JWT là sự kết hợp (bởi dấu ) một Object Header dưới định dạng JSON được encode base64, một payload object dưới định dạng JSON được encode base64 và một Signature cho URI cũng được mã hóa base64
Thành phần JWT:
- Header: bao gồm hai phần chính: loại token (mặc định là JWT - Thông tin này cho biết đây là một Token JWT) và thuật toán đã dùng để mã hóa
(HMAC SHA256 - HS256 hoặc RSA)
Hình 2.10 Nội dung header JWT
- Payload chứa các claims Claims là một các biểu thức về một thực thể (chẳng hạn user) và một số metadata phụ trợ Có 3 loại claims thường gặp trong Payload: reserved, public và private claims
▪ Reserved claims: Đây là một số metadata được định nghĩa trước, trong đó một số metadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông tin: iss (issuer), iat (issued-at time) exp
(expiration time), sub (subject), aud (audience), jti (Unique Identifier cho JWT
Trang 33Hình 2.11 Nội dung Reserved claims
▪ Public Claims - Claims được cộng đồng công nhận và sử dụng rộng rãi
▪ Private Claims - Claims tự định nghĩa (không được trùng với Reserved Claims và Public Claims), được tạo ra để chia sẻ thông tin giữa 2 parties đã thỏa thuận và thống nhất trước đó
- Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload cùng với một chuỗi bí mật theo nguyên tắc sau:
Hình 2.12 Nguyên tắc chuỗi bí mật
- Do bản thân Signature đã bao gồm cả header và payload nên Signature có thể dùng để kiểm tra tính toàn vẹn của dữ liệu khi truyền tải
2.2.6 Sequelize
Trang 34Hình 2.13 Logo ORM Sequelize 11
Sequelize là một ORM dành cho Node.js và io.js Nó hỗ trợ bạn truy cập một cách
dễ dàng đến PostgreSQL, MySQL, MariaDB, SQLite và MSSQL cùng với các tính năng như là relations, eager and lazy loading, read replication,…
2.2.7 PostgreSQL
Hình 2.14 Logo PostgreSQL 12
PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ-đối tượng mã nguồn mở tiên tiến nhất hiện nay được phát triển bởi Khoa Điện Toán, Đại học California – Hoa kỳ dựa trên Postgres phiên bản 4.2 Nó có thể chạy trên nhiều nền tảng khác nhau như Windows, Mac OS X, Solari
PostgreSQL là cơ sở dữ liệu quan hệ, do đó nó lưu trữ quan hệ giữa các bộ đại diện cho các thực thể và mỗi quan hệ giữa chúng Mối quan hệ và các thuộc tính của các thực thể là cố định Các thuộc tính của thể là nguyên tử (số nguyên, số thực, logic) hoặc kiểu dữ liệu có cấu trúc (mảng)
11 Nguồn: https://sequelize.org/
12 Nguồn: https://www.postgresql.org/
Trang 35Hình 2.15 Minh hoạ bộ dữ liệu được lưu trong bảng của PostgreSQL 13
PostgreSQL hỗ trợ giao dịch (transaction) với các thuộc tính ACID, cụ thể là:
- Tính nguyên tử (Atomicity): Các transaction được coi như là các đơn vị hoàn chỉnh Nó có thể được thực hiện thành công hoặc thất bại, nếu thất bại trạng thái cơ sở dữ liệu vẫn sẽ được giữ nguyên
- Tính nhất quán (Consistency): Trong cùng 1 cơ sở dữ liệu, giữa các transaction chỉ tồn tại 1 trạng thái hợp lệ duy nhất Tất cả dữ liệu được ghi đều phải tuân thủ các ràng buộc hiện có
- Tính cô lập (Isolation): Chức năng giúp kiểm soát xử lý đồng thời, bảo đảm
dữ liệu không bị hỏng bởi các transactions đồng thời hoặc không hợp pháp
- Tính lâu bền (Durability): Khi transaction đã thực hiện xong (đã commit), những cập nhật trở nên cố định và không thay đổi Khi hệ thống gặp sự cố bất ngờ, quá trình khôi phục bảo đảm những transaction đã được commit sẽ được khôi phục nguyên vẹn
Là cơ sở dữ liệu quan hệ hướng đối tượng, PostgreSQL trở nên lợi thế hơn các cơ sở
dữ liệu SQL khác như MySQL, MariaDB, FireBird Nó hỗ trợ các kiều dữ liệu người dùng tự định nghĩa và các hành vi của chúng bao gồm các kiều dữ liệu, các hàm, các
Trang 36thao tác, tên miền và chỉ mục Các kiểu dữ liệu được cung cấp sẵn cũng vô cùng phong phú: uuid, tiền tệ, kiểu liệt kê, hình học (geometric), nhị phân (binary), địa chỉ mạng, mảng
PostgreSQL có thể xử lý một lượng lớn dữ liệu, kích thước tối đa được thể hiện trong bảng dưới đây:
Kích thước tối đa của cơ sở dữ liệu Không giới hạn
Số cột tối đa trên mỗi bảng 250 - 1600 phụ thuộc vào kiểu cột
Số lượng index tối đa trên mỗi bảng Không giới hạn
Bảng 2.1 Bảng giới hạn kích thước của dữ liệu trong PostgreSQL
2.2.8 Vercel
Hình 2.16 Logo Vercel 14
14 Nguồn: https://vercel.com/
Trang 37Vercel là một nền tảng dành cho các framework giao diện người dùng và các trang
web tĩnh, được xây dựng để tích hợp với nội dung, thương mại hoặc cơ sở dữ liệu
Vercel mang đến cho nhà phát triển trải nghiệm dễ dàng giải quyết những việc khó
như: triển khai ngay lập tức, mở rộng quy mô tự động và phân phát nội dung được
cá nhân hóa trên toàn cầu Vercel còn giúp đội ngữ Front-end dễ dàng phát triển,
xem trước và cung cấp trải nghiệm người dùng thú vị, trong đó hiệu suất là mặc
định
2.2.9 Google Cloud Platform
Hình 2.17 Logo Google Cloud Platform 15
Google Cloud hay còn gọi là Google Cloud Platform (GCP) chính là một nền tảng của kỹ
thuật điện toán đám mây cho phép các cá nhân, tổ chức, các doanh nghiệp, các cơ quan có thể xây dựng, phát triển, và hoạt động các ứng dụng của mình trên hệ thống phần mềm do google tạo ra Các ứng dụng rất phổ biến hiện nay được mọi người sử dụng rất nhiều như: Trình duyệt Chrome, ứng dụng bản đồ Google Map, Google Apps, kênh Youtube…
Google Cloud cung cấp tất cả các giải pháp quản lý cho doanh nghiệp, giúp doanh nghiệp
có thể phát triển hệ thống công nghệ của mình một cách chính xác, hiện đại Bên cạnh đó,
GC còn giúp người dùng và doanh nghiệp giải quyết các vấn đề như: Developer (phát triển), Management (Quản lý), Computer Engine, Mobile, Storage, Big Data…
Trang 38Một điểm khác biệt nữa mà GC mang lại so với các dịch vụ đám mây khác đó chính là hệ thống DataCenter luôn ổn định và có độ bảo mật dữ liệu cực cao, giúp bảo vệ dữ liệu người dùng và khách hàng trước sự dòm ngó và xâm nhập trái phép của các hacker công nghệ
Những sản phẩm và dịch vụ Google Cloud cung cấp
• Big Data: BigQuery, Cloud Dataproc, Cloud Dataflow…
• Services: Translate API, Prediction API…
• Storage: Cloud Storage, Cloud Datastore, Cloud SQL…
• Compute: App Engine, Compute Engine, …
Những dịch vụ Google Cloud cấp cao
o Dịch vụ IoT (Internet of things hay còn gọi là internet vạn vật): đây chính là
dịch vụ cho phép người dùng có thể dễ dàng quản lý, sử dụng dữ liệu từ những thiết bị IoT
o Dịch vụ Cloud Machine Learning Engine (máy tìm kiếm đám mây): được
sử dụng để phát triển ứng dụng AI – trí tuệ nhân tạo AI đã cho thấy sức mạnh vượt trội của mình trong những năm gần đây, AI đã giúp con người xử
lý những dữ liệu và thông tin khổng lồ dễ dàng và đơn giản hơn bao giờ hết
o Dịch vụ Hadoop và Apache Spark: bao gồm cả Google Cloud Dataproc: giúp người dùng quản lý dữ liệu có hệ thống, bảo mật, nhanh hơn
và an toàn hơn
o Dịch vụ Google Big Query: đây là dịch vụ giúp xử lý và phân tích các tệp dữ
liệu cực kỳ lớn Nó hoạt động với chức năng truy vấn tương tự cơ sở dữ liệu SQL truyền thống Những tệp dữ liệu mà nó xử lý có thể lên đến hàng trăm triệu terabyte
Trang 39CHƯƠNG 3
PHÂN TÍCH THIẾT KẾ ỨNG DỤNG3.1 Yêu cầu nghiệp vụ
3.1.1 Phân loại các yêu cầu phần mềm
3.1.1.1 Danh sách các yêu cầu nghiệp vụ
11 Tạo mới và hiệu chỉnh thông tin
13 Xem thông tin chi tiết khóa học BM13
14 Xem danh sách lớp học thuộc khóa
15 Tạo mới và hiệu chỉnh thông tin lớp
17 Xem chi tiết thông tin lớp học BM17
Trang 4021 Thiết lập bài thi và lịch thi BM21 QĐ21
23 Thêm và hiệu chỉnh thông tin nhân
25 Thêm và hiệu chỉnh thông tin giảng
30 Thống kê doanh thu, chi tiêu theo
31 Xem chi tiết hóa đơn và in hóa đơn BM31
33 Tạo trình độ học vấn mới, hiệu chỉnh
Bảng 3.1 Danh sách yêu cầu nghiệp vụ
a Biểu mẫu và quy định 1