Admin thực hiện được các chức năng củaphụ huynh cũng như giáo viên bên cạnh đó còn thực hiện thêm được các nghiệp vụnhư cập nhật điểm, quản lý hồ sơ học sinh, quản lý hồ sơ giáo viên và
Trang 2MỤC LỤC 1
DANH MỤC CÁC HÌNH VẼ 3
DANH MỤC CÁC BẢNG BIỂU 6
CHƯƠNG 1 : GIỚI THIỆU 7
1.1 Tổng quan 7
1.2 Mục tiêu đề tài 8
1.3 Phạm vi đề tài 9
1.4 Mô tả yêu cầu chức năng 9
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT 12
2.1 Cloud Computing với AWS 12
2.2 Node.js 19
2.3 DynamoDB 23
CHƯƠNG 3 : PHÂN TÍCH VÀ THIẾT KẾ 26
3.1 Phân tích yêu cầu bằng UML 26
3.1.1 Usecase tổng quát 26
3.1.2 Danh sách tác nhân và mô tả 26
3.1.3 Danh sách các tình huống hoạt động (Use cases) 27
3.1.4 Tình huống hoạt động 28
3.2 Class diagram 56
3.3 Thiết kế giao diện Mockup 56
3.4 Deployment diagram 63
CHƯƠNG 4 : HIỆN THỰC 64
4.1 Cấu hình phần cứng, phần mềm 64
4.2 Giao diện của hệ thống 64
4.3 Test case 68
4.4 Báo cáo kết quả test (Test report) 92
CHƯƠNG 5 : KẾT LUẬN 95
5.1 Kết quả đạt được 95
5.2 Hạn chế của đồ án 96
Trang 35.3 Hướng phát triển 96 TÀI LIỆU THAM KHẢO 97 PHỤ LỤC – TEST PLAN 98
Trang 4Hình 1 Fundamental Cloud Computing Services 13
Hình 2 Node.js Development 19
Hình 3 Socket.io trong Node.js 22
Hình 4 Usecase tổng quát 26
Hình 5 Activity diagram UC01_Xem tình hình học tập 28
Hình 6 Sequence diagram UC01_Xem tình hình học tập 29
Hình 7 Activity diagram UC02_Chat 30
Hình 8 Activity diagram UC03_Nhập điểm 31
Hình 9 Sequence diagram UC03_Nhập điểm 32
Hình 10 Activity diagram UC04_Cập nhật điểm 33
Hình 11 Sequence diagram UC04_Cập nhật điểm 34
Hình 12 Activity diagram UC05_Báo cáo thống kê xếp loại học sinh 35
Hình 13 Sequence diagram UC05_Báo cáo thống kê xếp loại học sinh 36
Hình 14 Activity diagram UC06_Báo cáo thống kê điểm học sinh 37
Hình 15 Sequence diagram UC06_Báo cáo thống kê điểm học sinh 38
Hình 16 Activity diagram UC07_Thêm học sinh 39
Hình 17 Sequence diagram UC07_Thêm học sinh 40
Hình 18 Activity diagram UC08_Cập nhật học sinh 42
Hình 19 Sequence diagram UC08_Cập nhật học sinh 43
Hình 20 Activity diagram UC09_Tìm kiếm học sinh 44
Hình 21 Sequence diagram UC09_Tìm kiếm học sinh 45
Hình 22 Activity diagram UC10_Thêm giáo viên 47
Hình 23 Sequence diagram UC10_ Thêm giáo viên 48
Hình 24 Activity diagram UC11_Cập nhật giáo viên 50
Hình 25 Sequence diagram UC11_ Cập nhật giáo viên 51
Trang 5Hình 26 Activity diagram UC12_Tìm kiếm giáo viên 52
Hình 27 Sequence diagram UC12_ Tìm kiếm giáo viên 53
Hình 28 Sequence diagram UC13_Phân công giảng dạy 54
Hình 29 Activity diagram UC13_Phân công giảng dạy 55
Hình 30 Class diagram 56
Hình 31 Mockup trang chủ 57
Hình 32 Mockup xem tình hình học tập 58
Hình 33 Mockup nhập, cập nhật điểm 59
Hình 34 Mockup báo cáo thống kê xếp loại học sinh 60
Hình 35 Mockup báo cáo thống kê điểm học sinh 61
Hình 36 Mockup quản lý hồ sơ học sinh 62
Hình 37 Mockup quản lý hồ sơ giáo viên 62
Hình 38 Mockup phân công giảng dạy 63
Hình 39 Deployment diagram 63
Hình 40 Trang chủ 64
Hình 41 Xem tình hình học tập 65
Hình 42 Nhập điểm/Cập nhật điểm 65
Hình 43 Báo cáo thống kê xếp loại học sinh 66
Hình 44 Báo cáo thống kê điểm học sinh 66
Hình 45 Quản lý hồ sơ học sinh 67
Hình 46 Quản lý hồ sơ giáo viên 67
Hình 47 Phân công giảng dạy 68
Hình 48 Cách website hoạt động 98
Trang 7Bảng 3-1 Danh sách tác nhân và mô tả 27
Bảng 3-2 Danh sách các tình huống trong hệ thống 27
Bảng 3-3 Đặc tả của use case 01 thực hiện công việc xem tình hình học tập 28
Bảng 3-4 Đặc tả của use case 02 thực hiện công việc chat 30
Bảng 3-5 Đặc tả của use case 03 thực hiện công việc nhập điểm 31
Bảng 3-6 Đặc tả của use case 04 thực hiện công việc cập nhật điểm 33
Bảng 3-7 Đặc tả của use case 05 thực hiện công việc báo cáo thống kê xếp loại học sinh 35
Bảng 3-8 Đặc tả của use case 06 thực hiện công việc báo cáo thống kê điểm học sinh 37
Bảng 3-9 Đặc tả của use case 07 thực hiện công việc thêm học sinh 39
Bảng 3-10 Đặc tả của use case 08 thực hiện công việc cập nhật học sinh 41
Bảng 3-11 Đặc tả của use case 09 thực hiện công việc tìm kiếm học sinh 44
Bảng 3-12 Đặc tả của use case 10 thực hiện công việc tìm kiếm học sinh 46
Bảng 3-13 Đặc tả của use case 11 thực hiện công việc cập nhật giáo viên 49
Bảng 3-14 Đặc tả của use case 12 thực hiện công việc tìm kiếm giáo viên 52
Bảng 3-15 Đặc tả của use case 13 thực hiện công việc phân công giảng dạy 54
Bảng 0-1 Môi trường kiểm thử 100
Bảng 0-2 Các rủi ro 101
Bảng 0-3 Danh sách các chức năng kiểm thử 106
Bảng 0-4 Kiểm thử chức năng 108
Bảng 0-5 Kiểm thử giao diện ứng dụng 109
Bảng 0-6 Kế hoạch nhân sự 110
Trang 8Cùng với sự bùng nổ internet toàn cầu cũng như sự phát triển không có điểmdừng của ngành công nghệ thông tin, đã gặt hái được vô số thành công nhất định.Mọi mặt của cuộc sống từ những thứ xa xôi như một con robot tự vận hành trênhành tinh đỏ để gửi dữ liệu thu thập tìm kiếm về sự sống mới cho con người đếnnhững thứ gần gủi nhất là chiếc điện thoại bạn đang dùng để nghe gọi hằng ngàyđều xuất phát từ công nghệ thông tin mà ra
Mạng Internet được sử dụng rộng rãi, là tiền điều kiện cho mọi hoạt động tìmkiếm, lưu trữ dữ liệu, tương tác bằng dữ liệu số Từ đó, mọi việc liên quan đếnthông tin dữ liệu được đưa đến gần hơn với người dùng Giờ đây chỉ cần một chiếcsmartphone có sử dụng internet là gần như cả thế giới mở ra trước mắt bạn
Để ứng dụng được internet vào cuộc sống, chúng ta cần phải xây dụng mộttrang web hoặc một ứng dụng (app) để lấy nó làm trung gian kết nối đến kho dữ liệukhổng lồ của nhân loại, hoặc dùng nó để lưu trữ dữ liệu, thông tin theo thời gianthực và có thể được truy xuất mọi lúc mọi nơi trên toàn cầu chỉ cần nơi đó cóInternet
Vì thế, ứng dụng công nghệ thông tin vào quản lý dữ liệu trên nền tảnginternet thực chất là bước đi không thể thiếu cho tất cả các doanh nghiêp, tổ chức,công ty, trường học, bệnh viện, có thể nói đây là một lựa chọn bắt buộc trong thờiđại số ngày nay
Trang 9Trong thực tế, nhu cầu sử dụng website của các cơ quan tổ chức, đặc biệt làtrường học thì gần như không thể thiếu, nhất là đối với trường phổ thông ở ViệtNam hiện nay Với rất nhiều dữ liệu từ học sinh, giáo viên, mà yêu cầu là có thểtruy xuất mọi nơi, mọi lúc, tương tác trực tiếp giữa nhà trường và phụ huynh, họcsinh Vì vậy việc xây dựng website hỗ trợ quản lý trường phổ thông là nhu cầu cần
thiết trong thực tế từ đó nhóm đã thực hiện website quản lý trường phổ thông.
Hệ thống quản lý trường phổ thông là một website cho phép phụ huynh có thểtra cứu tình hình học tập của học sinh và tiến hành thao tác trao đổi với giáo viênphụ trách nhà trường thông qua kênh chat Bên cạnh đó giáo viên thông qua hệthống quản lý trường phổ thông có thể thực hiện các nghiệp vụ nhập điểm, báo cáothống kê học sinh theo (điểm, xếp loại) Admin thực hiện được các chức năng củaphụ huynh cũng như giáo viên bên cạnh đó còn thực hiện thêm được các nghiệp vụnhư cập nhật điểm, quản lý hồ sơ học sinh, quản lý hồ sơ giáo viên và phân cônggiảng dạy cho từng giáo viên
1.2 Mục tiêu đề tài
Sử dụng được 3 dịch vụ trên nền tảng điện toán đám mây là EC2, S3,DynamoDB kết hợp với Node.js Platform (Express Framework) trên công cụ pháttriển ứng dụng Visual Studio Code để xây dựng và triển khai các chức năng củawebsite quản lý trường phổ thông trên nền tảng điện toán đám mây Bên cạnh đó sửdụng được SocketIO Library để thực hiện realtime trao đổi giao tiếp giữa phụhuynh và giáo viên
Mục tiêu mà website hướng đến là thực hiện các chức năng quản lý nghiệp vụcủa trường trung học phổ thông Các chức năng mà website thực hiện bao gồm:đăng nhập và đăng xuất ra vào hệ thống Các chức năng quản lý về học sinh (thêm,cập nhật, tìm kiếm học sinh), chức năng về quản lý giáo viên (thêm, cập nhật, tìmkiếm giáo viên), chức năng quản lý điểm (nhập và cập nhật điểm), ngoài ra còn cócác chức năng hỗ trợ như phân công giảng dạy, báo cáo thống kê, chức năng chatgiúp cho phụ huynh có thể dể dàng liên hệ trực tiếp với nhà trường về các vấn đề vềtình hình học tập của con em mình
Trang 10- Đề tài thực hiện các chức năng:
+ Đăng nhập vào hệ thống, đăng xuất khỏi hệ thống
+ Xem tình hình học tập của học sinh
+ Nhập điểm và cập nhật điểm cho học sinh
+ Báo cáo thống kê (điểm, xếp loại) của học sinh
+ Quản lý hồ sơ học sinh theo lớp, hồ sơ giáo viên
+ Phân công giảng dạy cho giáo viên
+ Liên hệ giữa phụ huynh với giáo viên thông qua kênh chat
1.4 Mô tả yêu cầu chức năng
Phụ huynh học sinh muốn xem thông tin của học sinh chỉ cần lên hệ thốngnhập mã học sinh sẽ hiển thị thông tin học sinh đó mà không cần phải đăng nhập vàcòn có thể chat trực tiếp với giáo viên thông qua kênh chat theo thời gian thực củanhà trường để trao đổi tình hình học tập của học sinh cũng như là để biết thêm cáchoạt động của nhà trường
Để bảo mật thông tin trong hệ thống quản lý của nhà trường thì giáo viên vàadmin muốn vào được hệ thống phải thực hiện chức năng đăng nhập Đăng nhậpyêu cầu người dùng thực hiện thao tác nhập tên đăng nhập và mật khẩu đã được cấpquyền truy cập
Trang 11Mỗi giáo viên có thể xem, nhập điểm số của bộ môn mình đang dạy cho từnghọc sinh trong lớp, báo cáo thống kê (xếp loại, điểm) cho học sinh
- Chức năng xem điểm: để thực hiện được chức năng này giáo viên cần phảiđăng nhập vào hệ thống, sau đó chọn lớp mà mình muốn xem điểm (chọntheo tên lớp, học kỳ, khóa học của lớp đó), hệ thống sẽ hiển thị bảng điểmcho giáo viên xem
- Chức năng nhập điểm: để thực hiện chức năng này giáo viên cần phải đăngnhập vào hệ thống, chọn lớp mà giáo viên muốn nhập điểm, chọn mônnhập điểm, sau đó giáo viên nhập điểm và điểm sẽ được lưu vào hệ thống,
hệ thống thông báo nhập điểm thành công
- Chức năng báo cáo thống kê: để thực hiện chức năng này giáo viên cầnđăng nhập vào hệ thống sau đó giáo chọn chức năng thống kê (thống kêtheo điểm hoặc thống kê xếp loại) Hệ thống sẽ hiển thị bảng thống kê chogiáo viên
Đối với tài khoản admin sẽ quản lý hồ sơ học sinh và hồ sơ giáo viên của toàntrường, ngoài ra còn có thể tạo tài khoản mới cho giáo viên mới vào trường và phâncông giảng dạy cho các giáo viên, bên cạnh đó admin còn có thêm chức năng cậpnhật điểm khi có sự nhầm lẫn trong quá trình nhập điểm của giáo viên
- Chức năng quản lý hồ sơ học sinh: để thực hiện chức năng này admin cầnđăng nhập vào hệ thống Sau đó admin cần chọn chức năng quản lý hồ sơhọc sinh, admin có thể thực hiện các chức năng con trong quản lý hồ sơhọc sinh như thêm học sinh vào hệ thống, chỉnh sửa thông tin học sinh
- Chức năng quản lý hồ sơ giáo viên: để thực hiện chức năng này admin cầnđăng nhập vào hệ thống Sau đó admin cần chọn chức năng quản lý hồ sơgiáo viên, admin có thể thực hiện các chức năng con trong quản lý hồ sơgiáo viên như thêm giáo viên vào hệ thống, chỉnh sửa thông tin giáo viên
- Chức năng cập nhật điểm: để thực hiện chức năng này admin cần đăngnhập vào hệ thống Sau đó admin chọn chức năng cập nhật điểm và thựchiện cập nhật điểm cho học sinh mà admin cần cập nhật
Trang 12đăng nhập vào hệ thống Sau đó admin chọn chức năng là phân công giảngdạy, tiếp đến admin cần chọn học kỳ, lớp, giờ để thực hiện phân cônggiảng dạy cho giáo viên trong trường.
Trang 13CHƯƠNG 2: CƠ SỞ LÝ THUYẾT2.1 Cloud Computing với AWS
Điện toán đám mây là việc cung cấp sức mạnh tính toán, cơ sở dữ liệu, khảnăng lưu trữ, ứng dụng và các tài nguyên CNTT khác theo yêu cầu qua internet vớichính sách thanh toán theo mức sử dụng
Điện toán đám mây cho phép bạn có quyền truy cập vào máy chủ, bộ nhớ, cơ
sở dữ liệu và hàng loạt dịch vụ ứng dụng trên Internet kết hợp với một nhà cung cấpdịch vụ đám mây như Amazon Web Services để sở hữu và duy trì phần cứng đượckết nối mạng cần thiết cho các dịch vụ ứng dụng này, trong khi bạn cung cấp và sửdụng những gì bạn cần thông qua một ứng dụng web
Trước thời đại điện toán đám mây, bạn muốn làm thứ gì cũng phải tự mìnhthực hiện và tự mình bỏ tiền ra đầu tư hầu như từ đầu tới cuối Ở vai trò người dùng
cá nhân, nếu bạn muốn lưu dữ liệu, bạn phải tự bỏ tiền mua một cái ổ cứng Bạnmuốn quản lý doanh số của cửa hàng của gia đình bạn phải tự đi mua phần mềm kếtoán hay phần mềm bán hàng rồi cài đặt nó lên máy tính của bạn
Và tất cả các chi phí không dừng lại ở đó Số tiền bạn chi ra còn đi theo bạnsau đó, tạm gọi là tiền "bảo dưỡng" hay "bảo trì" Chẳng hạn bạn có một máy tính,nếu ổ cứng hỏng bạn cần phải thay thế hoặc sửa chữa Ngoài ra để tránh các rủi ro
về mất mát dữ liệu bạn cần phải sao lưu dữ liệu của bạn thường xuyên, thôngthường các dữ liệu quan trọng cần được định kỳ sao chép sang một ổ cứng dựphòng, điều này rõ ràng sẽ làm tăng thêm chi phí cho bạn
Rồi điện toán đám mây ra đời, nó giúp giải quyết phần nàoviệc bạn phải tự quản lý phần cứng và phần mềm của mình Rõràng bạn chẳng cần quan tâm các tập tin của bạn đang lưu trêncái ổ cứng nào, nó có hỏng hay không, có cần phải sao lưu haykhông Mọi thứ đã được chăm sóc bởi các nhà cung cấp dịch vụđám mây rồi Nếu ổ cứng hỏng, tự họ sẽ thay thế, tự họ sẽ sao lưu
dữ liệu định kỳ, bạn chằng phải bận tâm gì cả
Trang 14Hình 1 Fundamental Cloud Computing Services.
chia thành 3 loại lớn như sau:
1 Infrastructure as a Service (IaaS): Hạ tầng được cung cấp như một dịch
vụ
Theo Amazon thì nó là mức cơ bản nhất của điện toán đám mây, và thường thìnhà cung cấp dịch vụ IaaS sẽ bán cho bạn các thứ về mạng, về máy tính (máy ảohoặc máy thật tùy nhu cầu), cũng như nơi lưu trữ dữ liệu Cụ thể hơn, bạn có thểthuê một cái "máy chủ trên mây" với CPU, RAM, ổ cứng ( SSD hoặc HDD) tùytheo nhu cầu Rồi, vậy là bạn đã có một cái Server, còn chuyện Server được đặt ởtrung tâm dữ liệu nào, trong đó có bao nhiêu cái máy lạnh làm mát cho nó, nó sửdụng mạng của dịch vụ viễn thông nào, thì bạn không cần quan tâm nữa Bạn đã
có Server, và bạn có thể sử dụng
Vultr hay DigitalOcean là những dịch vụ tiêu biểu cho kiểu IaaS Bạn vào đó
và chọn máy chủ, sau đó tự bạn phải chọn và cài hệ điều hành, chọn xong thì phảicài thêm các phần mềm khác cần thiết cho ứng dụng của mình Nếu bạn sử dụngmáy chủ đó cho website của bạn thì bạn phải cài các phần mềm liên quan đến WebServer,
Trang 15Như vậy, IaaS không được thiết kế cho người dùng cuối, mà chủ yếu chonhững người muốn có một nơi để triển khai phần mềm của mình, có thể là lập trìnhviên, một công ty, hay một đơn vị phát hành web chẳng hạn.
2 Platform as a Service (PaaS): Nền tảng được cung cấp như một dịch vụ
Là một mức độ cao hơn một chút so với IaaS Trong trường hợp bạn mua dịch
vụ IaaS bạn sẽ được cung cấp một máy chủ Nhưng để triển khai ứng dụng Web củabạn, bạn phải tự cài đặt nhiều thứ liên quan, chẳng hạn Web Server, Database, cáccài đặt này phụ thuộc vào ứng dụng web của bạn được phát triển trên ngôn ngữ lậptrình nào và rồi sau khi các cài đặt hoàn tất bạn mới có thể triển khai ứng dụng củabạn
Vậy tại sao bạn không sử dụng dịch vụ PaaS để có thể chọn một nền tảng(Platform) đã được cài đặt sẵn và phù hợp cho ứng dụng của bạn Trong trường hợpnày bạn sẽ được cung cấp một nền tảng cần thiết để triển khai ứng dụng Web củabạn
Có nhiều nhà cung cấp dịch vụ PaaS không cho phép bạn sở hữu máy chủ, họchỉ đơn giản là cung cấp cho bạn một nền tảng (Platform) để bạn triển khai ứngdụng của mình, trong trường hợp này bạn đang sử dụng chung 1 máy chủ (Server)với nhiều người khác Và cơ sở dữ liệu của bạn cũng được đặt trong môi trường lưutrữ với hàng trăm cơ sở dữ liệu của người khác Điều này làm giảm chi phí bạn phảitrả, tuy nhiên nó cũng gây ra các rủi ro và là mục tiêu hàng đầu của các cuộc tấncông độc hại nhằm truy cập bất hợp pháp vào dữ liệu của bạn
3 Software as a Service (SaaS): Phần mềm được cung cấp như một dịch vụ.
Đây là một mức độ cao nhất trong các loại hình dịch vụ đám mây Nó là mộtsản phẩm hoàn thiện được vận hành và quản lý bởi một nhà cung cấp Và nói đơngiản, trong hầu hết trường hợp thì dịch vụ SaaS sẽ cung cấp các phần mềm hoặcứng dụng chạy trên Internet và có thể được dùng ngay bởi người dùng cuối (end-user)
Một ví dụ rất thường thấy của SaaS là dịch vụ Web Email, ví dụnhư Gmail, Outlook hay Yahoo Mail Nó là một sản phẩm hoàn chỉnh, bạn có thể
Trang 16Tương tự, OneDrive, Dropbox cũng là SaaS Các phần mềm (trang web) nàycung cấp cho bạn mọi tính năng cần thiết như một ổ cứng và bạn có thể tải các dữliệu của bạn lên đây và lấy về thông qua Internet
Google Docs hoặc Microsoft Online cũng là SaaS, nó chính là một
bộ Office trực tuyến, và được cung cấp miễn phí Các phần mềm quản lý doanhnghiệp trực tuyến mà các công ty có thể thuê để sử dụng đều là SaaS
5 đặc tính của Cloud Computing:
- Broad network access: Người dùng có thể truy cập dịch vụ cloud từ bất
kỳ thiết bị nào có kết nối mạng như như máy tính để bàn, laptop, thiết bị diđộng,
- On-demand self-service: Người dùng có thể tự cấu hình dịch vụ theo nhucầu một cách tự động, không cần sự can thiệp từ nhà cung cấp dịch vụ
- Resource pooling: Tài nguyên trên dịch vụ cloud được điều phối và chia
sẻ linh hoạt
- Rapid elasticity: Tài nguyên trên dịch vụ cloud có thể được cung cấp mộtcách nhanh chóng, linh hoạt và có khả năng thay thay đổi theo nhu cầu sửdụng
- Measured service: Tài nguyên trên dịch vụ cloud có thể được giám sát, đolường
Một số dịch vụ Cloud Computing trên AWS:
- AWS Stograge Services (S3):
+ Là một dịch vụ lưu trữ đối tượng cung cấp khả năng thay đổi theo quy
mô, tính khả dụng của dữ liệu, bảo mật và hiệu năng hàng đầu trong lĩnhvực
+ Điều này có nghĩa là khách hàng thuộc mọi quy mô và lĩnh vực có thể
sử dụng dịch vụ này để lưu trữ và bảo vệ bất kỳ lượng dữ liệu nào chonhiều trường hợp sử dụng khác nhau, chẳng hạn như trang web, ứng dụng
Trang 17di động, sao lưu và khôi phục, lưu trữ, ứng dụng doanh nghiệp, thiết bị IoT
và phân tích dữ liệu lớn
+ Amazon S3 cung cấp các tính năng quản lý dễ sử dụng, nhờ đó, bạn cóthể tổ chức dữ liệu và cấu hình các kiểm soát truy cập được tinh chỉnh đểđáp ứng yêu cầu cụ thể của doanh nghiệp, tổ chức và yêu cầu về tuân thủ + Amazon S3 được thiết kế để đảm bảo độ bền 99,999999999% (11 9's)
và lưu trữ dữ liệu của hàng triệu ứng dụng cho các công ty trên toàn thếgiới
- AWS Compute Services (EC2):
+ Là dịch vụ web cung cấp năng lực điện toán bảo mật và có kích cỡ linhhoạt trên đám mây Dịch vụ này được thiết kế để giúp các nhà phát triển dễ
sử dụng điện toán đám mây ở quy mô web hơn
+ Dịch vụ này cung cấp cho bạn khả năng kiểm soát toàn phần các tàinguyên điện toán của bạn và giúp bạn chạy trên môi trường điện toán đãđược kiểm chứng của Amazon
+ Amazon EC2 giảm thời gian cần thiết để lấy và khởi động các phiênbản máy chủ mới xuống còn vài phút, cho phép bạn nhanh chóng tăng hoặcgiảm quy mô năng lực theo sự thay đổi trong yêu cầu điện toán
+ Amazon EC2 thay đổi bài toán kinh tế của điện toán bằng cách chophép bạn chỉ chi trả cho phần năng lực bạn sử dụng thực tế
+ Amazon EC2 cung cấp cho các nhà phát triển nhiều công cụ để dựngcác ứng dụng có khả năng chống chịu lỗi và không để chúng rơi vào cáctình huống lỗi phổ biến
- AWS Database Services:
Trang 18dữ liệu, vá lỗi và sao lưu.
Dịch vụ này cho phép bạn tập trung vào các ứng dụng của mìnhnhằm giúp ứng dụng có hiệu suất, tính sẵn sàng, mức độ bảo mậtcũng như khả năng tương thích cao như mong đợi
- AWS Networking Services (Amazon Route53):
+ Là một dịch vụ web về hệ thống tên miền (DNS) trên đám mây có tínhsẵn sàng và khả năng mở rộng cao
+ Dịch vụ này được thiết kế nhằm cung cấp cho các nhà phát triển vàdoanh nghiệp một cách cực kỳ tin cậy và chi phí hiệu quả trong việc địnhtuyến cho người dùng cuối đến các ứng dụng Internet bằng cách chuyểnđổi tên như www.example.com sang địa chỉ IP dạng số như 192.0.2.1 màcác máy tính sử dụng để kết nối với nhau
+ Amazon Route 53 cũng hoàn toàn tuân thủ IPv6
- AWS Content Delivery (CloudFront):
+ Là dịch vụ mạng phân phối nội dung (CDN) nhanh giúp phân phối dữliệu, video, ứng dụng và API đến khách hàng trên toàn cầu một cách bảomật, với độ trễ thấp, tốc độ truyền cao, tất cả trong một môi trường thânthiện với nhà phát triển
Trang 19+ CloudFront được tích hợp với AWS – cả hai vị trí vật lý được kết nốitrực tiếp với cơ sở hạ tầng toàn cầu của AWS cũng như các dịch vụ AWSkhác
+ CloudFront hoạt động liền mạch với các dịch vụ bao gồm AWSShield để giảm thiểu DDoS, Amazon S3, Elastic Load Balancing hoặcAmazon EC2 làm nguồn cho các ứng dụng của bạn và Lambda@Edge đểchạy mã tùy chỉnh gần hơn với người dùng của khách hàng và để tùychỉnh trải nghiệm người dùng
- AWS Application Services (SQS):
+ Là dịch vụ hàng đợi tin nhắn được quản lý hoàn toàn, cho phép bạnngắt liên kết và điều chỉnh quy mô của các vi dịch vụ, hệ thống phân tán
và ứng dụng serverless
+ SQS giúp loại bỏ sự phức tạp và công sức tổng thể liên quan đến việcquản lý và vận hành phần mềm trung gian định hướng tin nhắn và chophép nhà phát triển tập trung vào công việc khác
+ Khi dùng SQS, bạn có thể gửi, lưu trữ và nhận tin nhắn giữa các thànhphần của phần mềm ở bất cứ khối lượng nào, mà không làm mất tin nhắnhay bắt các dịch vụ khác phải luôn luôn trong trạng thái khả dụng
+ SQS cung cấp hai loại hàng đợi tin nhắn Hàng đợi tiêu chuẩn sẽ đemlại lưu lượng tối đa, sắp xếp thứ tự nỗ lực tối đa và phát chuyển ít nhấtmột lần Hàng đợi FIFO SQS được thiết kế để đảm bảo rằng tin nhắn sẽđược xử lý đúng một lần, theo đúng thứ tự được gửi
- AWS Deployment and Management Services (IAM):
+ Cho phép bạn quản lý truy cập vào các dịch vụ và tài nguyên AWSmột cách bảo mật
+ Khi sử dụng IAM, bạn có thể tạo, quản lý người dùng và nhóm AWS,
sử dụng các quyền để cho phép và từ chối quyền truy cập vào tài nguyênAWS của họ
Trang 20Node.js là một mã nguồn mở, đa nền tảng cho phát triển các ứng dụng phíaServer và các ứng dụng liên quan đến mạng Ứng dụng Node.js được viết bằngJavascript và có thể chạy trong môi trường Node.js trên hệ điều hành Window,Linux,
Node.js cũng cung cấp cho chúng ta các module Javascript đa dạng, có thể đơngiản hóa sự phát triển của các ứng dụng web sử dụng Node.js với các phần mở rộng.Node.js hoạt động với một luồng duy nhất và có khả năng asynchronous (bấtđồng bộ) Không giống như server được viết bằng PHP thì mỗi ông request đếnserver thì server sẽ tạo ra một thread để xử lý trong khi đó server node xử lý mọihành động trong một thread duy nhất Với cách thiết kế như vậy Node.js sẽ hỗ trợtrang web một số điều như:
Trang 21 Tối ưu hóa thời gian thực hiện tiến trình: Dựa trên V8 JavascriptEngine của Google Chrome, thư viện Node.js rất nhanh trong các quátrình thực hiện code.
Không đồng bộ và Phát sinh sự kiện (Event Driven): Tất các các APIscủa thư viện Node.js đều không đồng bộ, nghĩa là không blocking(khóa) Nó rất cần thiết vì Node.js không bao giờ đợi một API trả về dựliệu Server chuyển sang một API sau khi gọi nó và có cơ chế thông báo
về Sự kiện của Node.js giúp Server nhận đựa phản hồi từ các API gọitrước đó
Có khả năng mở rộng trong các ứng dụng web với nhiều hoạt động I/Oliên tục
Phù hợp để xây dựng các ứng dụng web stream hay các game chơi trênnền web đảm bảo việc độ trễ thời gian xử lý hành động là nhỏ nhất
Dễ dàng để xây dựng các ứng dụng real-time
Cách viết ứng dụng với Node đó là các ứng dụng được cấu tạo từ cácmodule nhỏ sau đó được kết hợp lại với nhau điều này đảm bảo choviệc sửa đổi bảo trì một cách nhanh chóng
Hiệu năng cao: Node.js sử dụng một mô hình luồng đơn (single thread)với các sự kiện lặp Các cơ chế sự kiện giúp Server trả lại các phản hồivới một cách không khóa và tạo cho Server hiệu quả cao ngược lại vớicác cách truyền thống tạo ra một số lượng luồng hữu hạn để quản lýrequest Node.js sử dụng các chương trình đơn luồng và các chươngtrình này cung cấp các dịch vụ cho số lượng request nhiều hơn so vớicác Server truyền thống như Apache HTTP Server
NodeJS core-module: Là những modules được biên dịch vào trong Node
Trang 22Node.js third-party modules:
Mình tạm hiểu nó là bên thứ ba cung cấp các sản phẩm, dịch vụ sẵn cócho mình ở đây đó là module Các module này không được cài đặt sẵnsàng cùng với node như các core module mình đã giới thiệu phía trên
Để sử dụng third-party modules trước tiên cần cài đặt những modulesmuốn sử dụng thông qua ‘npm’ (node manage package)
Để sử dụng thì ta sẽ load module vào chương trình sử dụng require nhưbình thường Express module là một third-party rất quan trọng được sửdụng rất nhiều và nó cũng đem đến rất nhiều phương thức hữu ích giúp
dễ dàng trong việc thực hiện các ứng dụng web
Tuy nhiên WebSocket mắc phải vấn đề đó là HTTP proxies, firewall vàhosting provider Khi Websocket sử dụng một phương thức giao tiếpngoài HTTP, một phần nhiều trong số đó chưa được hỗ trợ và block bất
cứ kết nối socket nào Vấn đề này chỉ được giải quyết khi sử dụng thư
Trang 23Hình 3 Socket.io trong Node.js.
viện trừu tượng mà có thể dễ dàng thay đổi giữa các giao thức dựa trênresoures có sẵn
Socket.io được xây dựng để giải quyết vấn đề này và nó luôn sẵn sàngđược sử dụng cho Node.js developer
o Socket.io là một module của Node.js.
o Được xây dựng nhằm mục đích tạo ra real time Node.js
application Socket.io cung cấp cho lập trình viên các đặc trưngnhư event, room và tự động phục hồi lại kết nối
o Khi chúng ta include Socket.io module vào trong ứng dụng của
mình nó sẽ cung cấp cho chúng ta hai object đó là: socket serverquản lý functionality phía server và socket client điều khiểnfuntionality phía client
o Khi client muốn kết nối tới Socket.io server, nó sẽ gửi cho server
một “handshake HTTP request” Server sẽ phân tích request đóvới những thông tin cần thiết trong suốt quá trình kết nối Nó sẽtìm cấu hình của middleware mà đã được đăng ký với server vàthực thi chúng trước khi đưa ra sự kiện kết nối Khi kết nối thànhcông thì connection event listener được thực thi, tạo ra mộtinstance mới của socket có thể coi như định danh của client màmỗi một client kết nối tới sẽ có 1 định danh Có thể thấy rõ khixem hình dưới đây:
Trang 24DynamoDB là môt dịch vụ quản lý NoSQL có khả năng đáp ứng hiệu suất cao
và nhanh kèm theo khả năng mở rộng Nếu bạn là một nhà phát triển, bạn có thể sửdụng DynamoDB để tạo ra một bảng có khả năng lưu trữ và truy xuất bất kỳ sốlượng dữ liệu, mà vẫn có thể phục vụ cho bất kỳ mức độ request traffic
DynamoDB tự động phân tán dữ liệu và traffic của một bảng ra một số lượngserver vừa đủ để có thể xử lý request capacity đặt ra bởi khách hàng và lượng dữ liệulưu trữ, và đồng thời đảm bảo hiệu suất nhanh và đồng nhất Tất cả dữ liệu được lưutrữ trên SSD và tự động được sao chép ra các vùng sẵn sằng trong một khu vực đểcung cấp độ sẵn sàng cao và độ bền của dữ liệu
1 Bảng trong DynamoDB:
Khi tạo một bảng trong DynamoDB thì cần cung cấp tên bảng,primary key và giá trị read write Mỗi item trong bảng có thể có baonhiêu attributes tùy ý, tuy nhiên có giới hạn 400KB cho dung lượngcủa một item
Primary key: Khi tạo một bảng ngoài việc khai báo tên bảng bạn cầnchỉ rõ primary key để đảm bảo rằng không có hai items nào trongbảng có cùng primary key DynamoDB hỗ trợ hai loại primary key đó
là hash key và range key
Trong quá trình tạo bảng, bạn chỉ rõ mức têu thụ (throughput) yêu cầutheo đơn vị là capacity unit Bạn có thể thay đổi (tăng hoặc giảm) chỉ
số này qua UpdateTable request
o Strongly consistent: đảm bảo dữ liệu lấy ra là dữ liệu mới nhất
o Eventually consistent: đảm bảo rằng sau này dữ liệu sẽ đồng
bộ hết trên phân vùng nhưng không đảm bảo dự liệu trả về vàomột thời điểm nhất định là mới nhất
o Read capacity unit - Con số phản ánh số lượng đọc stronglyconsitent của các item không quá 4KB
o Write capacity unit - Số lượng những lần ghi có dung lượng1KB mỗi giây Có nghĩa rằng nếu bạn yêu cầu 10 write
Trang 25capacity units là bạn đang yêu cầu mức tiêu thụ 10 writes vớidung lượng 1 KB mỗi giây của bảng đó.
2 Read/Write capacity:
Nếu bạn không sử dụng #batch_get_item thì không thể nhóm các itemcho 1 lần đọc dữ liệu
Tương tự với write thì cũng có hai hàm để ghi
là #put_item và #batch_write_item nhưng 1 write chỉ nhận 1KB dữ liệu
3 Secondary index:
Để giúp cho việc truy cập dữ liệu, DynamoDB tạo và quản lý index choprimary key Việc này giúp cho hệ thống truy cập dữ liệu khá nhanh khichỉ định primary key Tuy nhiên, nhiều hệ thống có lẽ sẽ hưởng lợi từviệc có một hoặc hai key thay thế (alternate) Để tăng tốc độ truy cậpbạn có thể tạo ra secondary index
Một secondary index là một cấu trúc dữ liệu chứa tập con của cácattributes trong một bảng, cùng với một key thay thế để hỗ trợ choQuery operation Với một secondary index, các query sẽ không bị giớihạn khi chỉ sử dụng được primary key; bạn có thể truy vấn dữ liệu bằngviệc sử dụng key thay thế từ secondary index Một bảng có thể có nhiềusecondary index để hỗ trợ cho nhiều query pattern
DynamoDB hỗ trợ hai loại index:
khác với hash và range key từ bảng gốc
hash key từ bảng gốc và range key là một attribute khác
4 Query/Scan:
Query:
o Để thực hiện một query operation bạn cần có primary key vàkhông bắt buộc kèm theo điều kiện cho range key Query có thểthực hiện trên một bảng hoặc secondary index Lưu ý rằng: điềukiện so sánh không thực hiện trên hash key được
Trang 26có nghĩa là với 100 1KB item thì bạn chỉ cần 100 x 1KB / 4KB =
25 reads thay vì 100 reads
Scan: Một scan operation có thể thực hiện trên cả bảng và secondaryindex Giá trị trả về mặc định của một scan operation là toàn bộ dữ liệu
Trang 27CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ 3.1 Phân tích yêu cầu bằng UML
3.1.1 Usecase tổng quát
uc Use Case Model
Hệ thống website quản lý trường phổ thông
Phụ huynh
Giáo viên
Admin
Xem tình hình học tập
Quản lý hồ sơ giáo viên
Chat
Thêm học sinh
Cập nhật học sinh
Tìm kiếm học sinh
Thêm giáo viên
Tìm kiếm giáo viên
Cập nhật giáo viên
Phân công giảng dạy
Trang 28Phụ huynh Là cha, mẹ, anh, chị hoặc người đỡ đầu của học sinh đang theo
học tại trường
Giáo viên Là giáo viên giảng dạy tại nhà trường
Admin Là người quản lý toàn bộ các chức năng của website
Bảng 3-1 Danh sách tác nhân và mô tả
3.1.3 Danh sách các tình huống hoạt động (Use cases)
UC01 Xem tình hình học tập
UC02 Chat
UC03 Nhập điểm
UC04 Cập nhật điểm
UC05 Báo cáo thống kê xếp loại học sinh
UC06 Báo cáo thống kê điểm học sinh
UC07 Thêm học sinh
UC08 Cập nhật học sinh
UC09 Tìm kiếm học sinh
UC10 Thêm giáo viên
UC11 Cập nhật giáo viên
UC12 Tìm kiếm giáo viên
UC13 Phân công giảng dạy
Bảng 3-2 Danh sách các tình huống trong hệ thống
Trang 293.1.4 Tình huống hoạt động
3.1.4.1 UC01_Xem tình hình học tập.
3.1.4.1.1 Đặc tả use case UC01
Use case: {UC01_Xem tình hình học tập}
Mục đích: Xem tình hình học tập của học sinh ở trường học.
Mô tả: Khi phụ huynh hoặc học sinh nhập mã học sinh do trường cung cấp vào ô tìm kiếm trên hệ thống Hệ thống sẽ trả về
thông tin học tập ứng với mã học sinh đó.
Tác nhân: Phụ huynh, Học sinh, Giáo viên, Admin.
Điều kiện trước: Tác nhân có mã của học sinh muốn xem tình hình học tập.
Điều kiện sau: Hiển thị thông tin, điểm từng môn học và xếp loại của học
Bảng 3-3 Đặc tả của use case 01 thực hiện công việc xem tình hình học tập
Trang 30Hình 5 Activity diagram UC01_Xem tình hình học tập.
act UC01_Xem tình hình học tập
Bắt đầu
Tác nhân chọn xem tình hình học tập hình xem tình hình học Hệ thống hiển thị màn
tập.
Tác nhân nhập mã học sinh vào ô tìm kiếm
Nếu nhập sai
Hệ thống hiển thị thông tin tình hình học tập lên màn hình.
Hệ thống hiển thị thông báo “Không tìm thấy!”
Nhấn nút "Tìm kiếm"
Kết thúc
YES NO
Trang 31docClient.scan() Nhập vào mã học sinh cần xem KQHT
/
Hình 6 Sequence diagram UC01_Xem tình hình học tập
3.1.4.2 UC02_Chat.
3.1.4.2.1 Đặc tả use case UC02
Use case: {UC02_Chat}
Mục đích: Trao đổi thông tin qua lại giữa phụ trách giáo viên của nhà trường và phụ huynh, học sinh.
Mô tả: Thực hiện việc trao đổi thông tin thông qua chatbox khi
giáo viên phụ trách của nhà trường online trên hệ thống.
Trang 32Hình 7 Activity diagram UC02_Chat.
Tác nhân: Phụ huynh, Học sinh, Giáo viên, Admin.
Điều kiện trước: Phụ trách giáo viên của nhà trường phải đăng nhập vào hệ thống.
Điều kiện sau: Trao đổi thông tin giữa phụ huynh học sinh và nhà trường được thông qua kênh chat.
2 Hệ thống hiển thị giao diện Chatbox.
3 Phụ huynh tiến hành nhập thông tin muốn trao đổi với phụ trách giáo viên của nhà trường.
4 Hệ thống kết nối với giáo viên thông qua kênh chat.
Bảng 3-4 Đặc tả của use case 02 thực hiện công việc chat
Hệ thống kết nối với giáo viên thông qua kênh chat.
nối không thành công"
End
Trang 333.1.4.3 UC03_Nhập điểm.
3.1.4.3.1 Đặc tả use case UC03
Use case: {UC03_Nhập điểm}
Mục đích: Nhập điểm môn học cho từng học sinh trong lớp vào CSDL của hệ thống.
Mô tả: Nhập điểm môn học cho từng học sinh trong danh sách học sinh theo từng lớp.
Tác nhân: Giáo viên, Admin.
Điều kiện trước: Đăng nhập thành công vào hệ thống.
Điều kiện sau: Nhập điểm môn học cho từng học sinh trong lớp thành công và lưu thông tin vào CSDL.
4 Giáo viên/Admin nhấn nút “Lưu”.
5 Hệ thống hiển thị thông báo “Lưu điểm thành công” và lưu thông tin điểm vào CSDL.
Luồng sự kiện phụ
(Alternative Flows):
3.1 Nếu giáo viên/admin nhập sai định dạng điểm thì hiển thị thông báo “Sai định dạng điểm” ngay trên ô nhập điểm.
Trang 34Hình 8 Activity diagram UC03_Nhập điểm.
4.1 Nếu giáo viên/admin nhấn nút “Hủy” thì hệ thống quay lại bước 2.
Bảng 3-5 Đặc tả của use case 03 thực hiện công việc nhập điểm
Hệ thống hiển thị thông báo “Lưu điểm thành công” và lưu thông tin điểm vào CSDL.
định dạng điểm"
Nếu nhấn nút "Lưu"
End YES
TRUE NO
FALSE
Trang 35Chọn học kì, lớp, năm học, và nhập các thông tin cần thiết
Thống báo "lưu thành công"
Hình 9 Sequence diagram UC03_Nhập điểm
3.1.4.4 UC04_Cập nhật điểm
3.1.4.4.1 Đặc tả use case UC04
Use case: {UC04_Cập nhật điểm}
Mục đích: Cập nhật điểm môn học cho học sinh vào CSDL khi có sự
nhầm lẫn trong quá trình nhập điểm của giáo viên.
Mô tả: Cập nhật điểm môn học cho học sinh trong danh sách học sinh.
Điều kiện trước: Đăng nhập thành công vào hệ thống.
Trang 36Hình 10 Activity diagram UC04_Cập nhật điểm.
Điều kiện sau: Cập nhật điểm môn học cho học sinh trong lớp thành công và lưu thông tin vào CSDL.
Luồng sự kiện chính
(Basic flows)
1 Admin chọn chức năng quản lý sổ điểm cá nhân.
2 Hệ thống hiển thị giao diện quản lý sổ điểm cá nhân.
3 Admin tiến hành chọn lớp mà có học sinh cần cập nhật điểm và chọn học kỳ để cập nhật điểm, sau đó cập nhật điểm cho học sinh đó.
quản lý sổ điểm cá nhân.
Hệ thống hiển thị giao diện quản lý sổ điểm cá nhân.
Admin tiến hành chọn lớp
mà có học sinh cần cập nhật điểm và chọn học kỳ
để cập nhật điểm, sau đó cập nhật điểm cho học sinh đó.
định dạng điểm".
Hệ thống hiển thị thông báo “Cập nhật điểm thành công” và lưu thông tin điểm vào CSDL.
Nếu nhấn nút "Cập nhật"
End YES
TRUE
FALSE NO
Trang 37Chọn chức năng cập nhật điểm
Nhấn nút cập nhật Truy cập vào hệ thống
Hình 11 Sequence diagram UC04_Cập nhật điểm
3.1.4.5 UC05_Báo cáo thống kê xếp loại học sinh.
3.1.4.5.1 Đặc tả use case UC05
Use case: {UC05_Báo cáo thống kê xếp loại học sinh}
Mục đích:
Giúp giáo viên có thể dễ dàng thống kê được xếp loại học sinh trong lớp với các tiêu chí: giỏi, khá, trung bình, yếu và kém.
Mô tả: Giáo viên chọn năm học, học kỳ và lớp Nếu là admin có
Trang 38thể chọn phạm vi thống kê là toàn trường còn giáo viên giảng dạy lớp nào thì sẽ thống kê được lớp đó.
Tác nhân: Giáo viên, Admin.
Điều kiện trước: Đăng nhập thành công vào hệ thống và chọn tab báo cáo thống kê.
Điều kiện sau: Hiển thị thông tin báo cáo thống kê xếp loại học sinh ra màn hình.
Trang 39Hình 12 Activity diagram UC05_Báo cáo thống kê xếp loại học sinh.
chức năng báo cáo thống
kê xếp loại học sinh.
Hệ thống hiển thị giao diện báo cáo thống kê xếp loại học sinh.
Giáo viên/Admin tiến hành chọn năm học, học
Trang 40getDulieu(): Lop_MonHoc
Hiển thị số liệu thống kê
Hình 13 Sequence diagram UC05_Báo cáo thống kê xếp loại học sinh
3.1.4.6 UC06_Báo cáo thống kê điểm học sinh.
3.1.4.1.6 Đặc tả use case UC06
Use case: {UC06_Báo cáo thống kê điểm học sinh}
Mục đích: Giúp giáo viên có thể dễ dàng thống kê được điểm của học sinh theo từng môn học theo từng khoảng điểm.
Mô tả:
Giáo viên chọn năm học, học kỳ, lớp và môn học Nếu là admin có thể chọn phạm vi thống kê là toàn trường còn giáo viên giảng dạy lớp nào thì sẽ thống kê được lớp đó.
Tác nhân: Giáo viên, Admin.
Điều kiện trước: Đăng nhập thành công vào hệ thống và chọn tab báo cáo thống kê.