BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
DO AN
TOT NGHIEP DAI HOC
Dé tài: “Tim hiếu Java Spring boot và áp dung dé phát triển ứng dung theo dõi thai kỳ va khám chữa bệnh cho trẻ sơ sinh”?
Người hướng dẫn: ThS Vũ Thị Tú Anh
Sinh viên thực hiện: Trần Trung Hiếu
Lớp: D19PTDPT
He: Dai hoc chinh quy
HÀ NỘI - 2023
Trang 2Đồ án tốt nghiệp Đại học Đề cương đề tài
PHÊ DUYỆT, GIAO NHIỆM VỤ ĐỀ TÀI
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THONG CONG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐA PHƯƠNG TIỆN Độc lập - Tự do - Hạnh phúc
Họ và tên sinh viên: TRẦN TRUNG HIẾU
Lớp B19PTDPTKhéa 2019-2023
Ngành đào tạo Công nghệ đa phương tiện Hệ đào tạo Đại học chính quy
1 Tên đồ án/Khóa luận tốt nghiệp:
Tìm hiểu Java Spring boot và áp dụng để phát triển ứng dụng theo dõi thai kỳ
và khám chữa bệnh cho trẻ sơ sinh
2 Ly do chọn đề tài:
Trẻ sơ sinh đang trong giai đoạn phát triển quan trọng, và việc theo dõi thai kỳ
và chăm sóc y tế cho họ là điều cực kỳ quan trọng Ứng dụng này giúp bố mẹ theo dõi
sát sao sự phát triển của thai kỳ và đảm bảo rằng trẻ được chăm sóc tốt từ khi mới
Việc quản lý lịch khám, theo dõi sổ khám và đăng ký khám cho thai phụ, trẻ sơ
sinh thường gây ra nhiều phiền toái cho phụ huynh Ứng dụng này giúp đơn giản hóa
quá trình này, giúp thai phụ có thể đăng ký khám, theo dõi thai kỳ nhanh chóng, đơn giản hơn, phụ huynh quản lý sức khỏe của trẻ dễ dàng hơn, tiết kiệm thời gian và giảm bớt căng thang.
Ứng dụng này cung cấp cơ hội cho các chuyên gia y tế theo dõi tình trạng thai
kỳ và sức khỏe của trẻ sơ sinh một cách hiệu quả hơn Điều này có thể giúp phát hiện và giải quyết vấn đề sức khỏe sớm hơn, đảm bảo sự phát triển toàn diện cho cả mẹ và
Xây dựng ứng dụng sẽ tích hợp công nghệ và thông tin, tạo cơ hội cho việc thu
thập dữ liệu quan trọng về sức khỏe trẻ sơ sinh và thai kỳ Những dữ liệu này có thể được sử dụng cho nghiên cứu y tế và cải thiện chăm sóc sức khỏe trẻ trong tương lai.
Trần Trung Hiếu - DI9PTDPT 2
Trang 3Đồ án tốt nghiệp Đại học Đề cương đề tài
Đặc biệt trong thời đại số hóa, việc có một ứng dụng giúp truy cập thông tin liên quan đến sức khỏe trẻ một cách nhanh chóng và dễ dàng Nó giúp phụ huynh và người tham gia quá trình chăm sóc sức khỏe tiếp cận thông tin quan trọng một cách
thuận tiện.
Vì vậy, đề tai “Tim hiểu Java Spring boot và áp dung để phát triển ứng dụng theo dõi thai kỳ và khám chữa bệnh cho trẻ sơ sinh” có tiềm năng cải thiện chất lượng
chăm sóc sức khỏe cho trẻ sơ sinh và giúp thai phụ thêm thoải mái trong quá trình theo dõi và quản lý sức khỏe của con cái mình.
3 Nội dung chính của đồ án:
Đồ án được chia làm các chương như sau:
Chương 1: Tống quan về đề tài Chương này miêu tả bài toán và các chức năng của hệ thống.
Chương 2: Phương pháp tiếp cận và giải quyết vấn đề.
Chương này sẽ trình bày phương pháp xây dựng hệ thống bằng việc ứng dụng các
công nghệ
Chương 3:Xây dựng hệ thống.
Chương này sẽ trình bày theo thứ tự các bước trong quá trình phát triển phần mềm để xây dựng hệ thống, bao gồm:
- Mô tả hệ thống bằng ngôn ngữ tự nhiên (Các tác nhân tham gia hệ thống và danh sách các chức năng có thể sử dụng tương ứng)
- Mô tả hệ thống bằng UML( biểu đồ use case) - _ Xây dựng cơ sở dữ liệu
- Kịch bản chuẩn và ngoại lệ - _ Thiết kế lớp thực thé
- _ Thiết kế động: biểu đồ tuần tự
- _ Thiết kế, xây dựng giao diện
Trần Trung Hiếu - DI9PTDPT 3
Trang 4Đồ án tốt nghiệp Đại học Đề cương đề tài
Kết luận: Đưa ra kết quả, hướng phát triển tiếp theo và kết luận của việc xây dựng hệ thống.
GIẢNG VIÊN HƯỚNG DẪN SINH VIÊN THỰC HIỆN(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)
Trang 5Đồ án tốt nghiệp Đại học Lời cảm ơn
LỜI CẢM ƠN
Để hoàn thành khóa luận này, em xin chân thành cảm ơn các thầy cô đã
tận tình hướng dẫn, giảng dạy trong suốt quá trình 4 năm học tập, nghiên cứu và rèn luyện tại Học viện Công nghệ Bưu Chính Viễn Thông.
Đặc biệt, em xin chân thành cảm ơn cô Vũ Thị Tú Anh, người đã tận tình
giúp đỡ, hướng dẫn em trong suốt quá trình hoàn thành khóa luận này.
Mặc dù em đã cố gắng để thực hiện khóa luận một cách hoàn chỉnh nhất
có thể, song vì kiến thức của bản thân còn hạn chế, trong quá trình hoàn thiện khóa luận này em không thể tránh khỏi nhiều sai sót Vậy em mong nhận được
sự góp ý của quý thầy cô và bạn bè để giúp khóa luận của em hoàn thiện hơn
Trang 6LOT CAM ƠNN s< sen HH H700718 718007140118 07100708 778007182780 0709 2782781 07082780 0709020807010
10/08 05/0554 ÔÔÔÔÔÔ 0.0 ):800i909.(09.7.) c7 Ô
MỞ ĐẦU 5< 4H 0T 070 7Đ4 7744 02940794 0724072440944 0794 0294102711 021E CHUONG I: TONG QUAN VỀ HEALTHHUB SCHEDUL/E - 5-5 5° ssssesseseseesss
1 Giới thiệu bài tOáh: - c2 1 112223011111 2530 11111893011 1H 11g KT ng SE
"ˆÄ\ n8: 211117 2.1 Pham vi hé 0 1n 2.2 So đồ tổng quát chức năng của hệ thOng? ce eceesesscessesseeseeseeeeeseceseesseesecseeseseeeeeessessneeesgs 2.3 Các tác nhân tham gia hệ thỐng: - - 2c 3133213311121 3931 31151111111 111 1 T1 11 H1 g1 nà re 2.4 Các chức năng của hệ thống - - ¿tt E112 E 1E E91 191 9111 91 1111 111 HT Hàn Hàn nàng
2.4.1 Đăng nhập - Quản lý thông tin cá nhân: - - - 5 11 11191011211 911191 1v ng ng.
2.4.2 Nhóm chức năng: Người quản lý hệ thống: - - - 5+2 ++2*+2£+2£+E+EssErsrrrrrrrkreo
2.4.3 Nhóm chức năng thai phỤ: - - - c1 22 3221132113311 3351 1183111111 11181111 111811 g1 vn kg
2.4.4, NhOm 09/)(.20 i50 cà: 1n ea
2.4.5 Nhom chic nang bénh VIN! 0n e
Trần Trung Hiếu - DI9PTDPT 6
Trang 7Đồ án tốt nghiệp Đại học Mục lục
- Quản lý danh sách thai phụ: cho phép Cơ sở y tế quản lý thông tin của thai
phụ có thể thêm, sửa, xóa, tìm kiếm thông tin thai phụ - 5 5c +25 * 3+ *+vxvexsexeersesres
Trần Trung Hiếu - DI9PTDPT 7
Trang 82.1 Kịch bản chuẩn và ngoại lỆ - - c5 2 S1 21121121 133111 111111111111 11 111111111 11 T1 HH Hà Hàn ri,
2.1.1 Nhóm chức năng của “Quản trị hệ thống”” - +22 +22 23 2111121111111 1111111111111 re
2.1.2 Nhóm chức năng của “Bệnh VIỆP” - ¿c2 21121181211 11311111 111111111 11101118111 11 ng 2.1.3 Nhóm chức năng của “Người dùng thƯỜng” - . - + 1323113 3135115111111.
Trang 9Đồ án tốt nghiệp Đại học Danh mục các bảng
DANH MỤC CÁC BẢNG
BANG 3.1: Kịch bản chuẩn tạo mới tài khoủn -c ccc ca 45 BANG 3.2: Kịch bản chuẩn cập nhật tài khoản -.- 25c 25+ c5 s246 BANG 3.3: Kịch bản chuẩn xóa tài khoản che 47
BANG 3.4: Kịch bản chuẩn tạo mới sỞ y FẾ -.S c2 S se 48
BANG 3.5: Kịch bản chuẩn cập nhật sO y tẾ -cc {2S S22 S221 c% 49 BANG 3.6: Kịch bản chuẩn xóa sởỞ y Ế - 2S c⁄ 221221323 xs2 50 BANG 3.7: Kịch bản chuẩn Tạo mới bệnh viện -cccc s25 cccscsSss s2 51
BANG 3.8: Kịch bản chuẩn cập nhật bệnh viện -<<cc<<5 << 52
BANG 3.9: Kịch bản chuẩn xóa bệnh viỆn cece eect ntneene ee eeetane 53 BANG 3.10: Kịch bản chuẩn tạo mới bác sĩ cĂ ket 54 BANG 3.11: Kịch bản chuẩn cập nhật bác sĩ -Ặ c2 c2 ees 56
BANG 3.12: Kịch bản chuẩn xóa DGC sĩ cc Sex sei 57
BANG 3.13: Kịch bản chuẩn tạo mới ca [FỰC ke se 58 BANG 3.14: Kịch bản chuẩn cập nhật ca trực ccccccsccSSSs se 59 BANG 3.15: Kịch bản chuẩn xóa ca fFỰC cv Sky 60
BANG 3.16; Kịch bản chuẩn tạo mới sổ khám -.-.- << Sex seẻ 61 BANG 3.17: Kịch bản chuẩn cập nhật sổ khá Ặ << 2c 2c +4 62
BANG 3.18: Kịch bản chuẩn xóa sổ khám -ĂẶ xe 63 BANG 3.19: Kịch bản chuẩn cập nhật tài khoản << c2 SS 64
BANG 3.20: Kịch bản chuẩn theo dõi thông tin 86 khám cues65 BANG 3.21: Kịch bản chuẩn liên kết tegram tới tài khoản - 66
BANG 3.22: Kịch bản chuẩn đặt lich online 55c c+< s2 S2 67
BANG 3.23: Các lớp thực thỂ cece cece eee ec eaten eee nh re 70 BANG 3.24: Thuộc tính của các thực thể ccằẰ 72 BANG 3.25: Bảng thiết kế API chỉ tiẾT Ặ Ăn sen 78
Trần Trung Hiếu - DI9PTDPT 9
Trang 10Đồ án tốt nghiệp Đại học Danh mục các hình vẽ
DANH MỤC CÁC HÌNH VẼ
HÌNH 1.1: Biểu đồ usecase tỔng qUÁT Ă 2222566111251 1 1111111151111 xe 14
HÌNH 2.1: Sơ đồ mô hình của hệ thỐng, - c5 S222 33+ zei 22 HÌNH 2.2: Ví dụ không sử dung Dependency ÏnjeCfiOH 55555552 26 HÌNH 2.3: Định nghĩa iHt€T[WC€ c2 E E521 1111111111311 1 11 11k te 27 HÌNH 2.4: Hiện thực ( Implement) IHÍ€TƒQC€ cv vê 27 HÌNH 2.5: Spring MOdiHles Ặ c2 6111111111111 11 11 11511111111 1551k ưe 28 HÌNH 2.6: Ví du publish Spring RE.ST Ă c2 S112 S S1 xxx vn 31 HÌNH 2.7: Xác thực qua HTTP Basic (Ì) Ác S121 sec33 HÌNH 2.8: Xác thực qua HTTP BASIC (2) - SE re 33 HÌNH 2.9: Mô hình lazy loading - - Sc 11221111111 1151 1111111 55tr rờ35
HÌNH 2.10: OAuth 2.0 FÏOW 1111113 11 E111 1kg HÌNH 3.2: Màn hình đăng ký tài khoủi -c c2 SE sưên 68
HÌNH 3.3: Màn hình quản lý thông tin sỞ y IẾ - c2 52c S S132 xe 69
HÌNH 3.4: Màn hình đặt lịch khám chinh 69
HÌNH 3.5: Mối quan hệ giữa các thực thể trong cơ sở dit liệu 76
HÌNH 3.6: Mô hình kiến trúc APÌ - ST SE S111 SE 1111k xxx ưn77
HÌNH 3.7: Biểu đồ tuần tự chức năng thêm mới sổ khám ccc c2 css2 82
HINH 3.8: Biểu đồ tuần tự chức năng cập nhật sổ khám c << cs52 83
HÌNH 3.9: Biểu đồ tuần tự chức năng xóa sổ khám -Ăc c2 84
HÌNH 3.10: Biểu đồ tuần tự chức năng tạo mới tài khoản -<<< <5: 85 HÌNH 3.11: Biểu đồ tuần tự chức năng cập nhật tài khoản -: 86
Trần Trung Hiếu - DI9PTDPT 10
Trang 11Đồ án tốt nghiệp Đại học Danh mục các hình vẽ
HINH 3.12: Biểu đồ tuần tự chức năng xóa tài khoẳn 25c: 87
Trần Trung Hiếu - DI9PTDPT 11
Trang 12Đồ án tốt nghiệp Đại học Mở đầu
MỞ ĐẦU
Trẻ sơ sinh đang trong giai đoạn phát triển quan trọng, và việc theo dõi thai kỳ và chăm sóc y tế cho họ là điều cực kỳ quan trọng Ứng dụng này giúp bố mẹ theo dõi sát sao sự phát triển của thai kỳ và đảm bảo rằng trẻ được chăm sóc tốt từ khi mới
Việc quản lý lịch khám, theo dõi sổ khám và đăng ký khám cho thai phụ, trẻ sơ
sinh thường gây ra nhiều phiền toái cho phụ huynh Ứng dụng này giúp đơn giản hóa
quá trình này, giúp thai phụ có thể đăng ký khám, theo dõi thai kỳ nhanh chóng, đơn
giản hơn, phụ huynh quản lý sức khỏe của trẻ dễ dàng hơn, tiết kiệm thời gian và giảm
bớt căng thằng.
Ứng dụng này cung cấp cơ hội cho các chuyên gia y tế theo dõi tình trạng thai
kỳ và sức khỏe của trẻ sơ sinh một cách hiệu quả hơn Điều này có thể giúp phát hiện và giải quyết vấn đề sức khỏe sớm hơn, đảm bảo sự phát triển toàn diện cho cả mẹ và
Xây dựng ứng dụng sẽ tích hợp công nghệ và thông tin, tạo cơ hội cho việc thu
thập dữ liệu quan trọng về sức khỏe trẻ sơ sinh và thai kỳ Những dữ liệu này có thể được sử dụng cho nghiên cứu y tế và cải thiện chăm sóc sức khỏe trẻ trong tương lai.
Đặc biệt trong thời đại số hóa, việc có một ứng dụng giúp truy cập thông tin
liên quan đến sức khỏe trẻ một cách nhanh chóng và dễ dàng Nó giúp phụ huynh và
người tham gia quá trình chăm sóc sức khỏe tiếp cận thông tin quan trọng một cách
thuận tiện.
Vì vậy, đề tài “Tim hiểu Java Spring boot và áp dụng để phát triển ứng dụng
theo dõi thai kỳ và khám chữa bệnh cho trẻ sơ sinh” có tiềm năng cải thiện chất lượng
chăm sóc sức khỏe cho trẻ sơ sinh và giúp thai phụ thêm thoải mái trong quá trình theo dõi và quản lý sức khỏe của con cái mình.
Đồ án được chia làm các chương như sau:
Chương 1: Tống quan về đề tài Chương này miêu tả bài toán và các chức năng của hệ thống.
Chương 2: Phương pháp tiếp cận và giải quyết vấn đề.
Chương này sẽ trình bày phương pháp xây dựng hệ thống bằng việc ứng dụng các
công nghệ
Chương 3: Xây dựng hệ thống.
Trần Trung Hiếu - DI9PTDPT 12
Trang 13Đồ án tốt nghiệp Đại học Mở đầu
Chương này sẽ trình bày theo thứ tự các bước trong quá trình phát triển phần mềm để xây dựng hệ thống, bao gồm:
- Mô tả hệ thống bằng ngôn ngữ tự nhiên (Các tác nhân tham gia hệ thống va danh sách các chức năng có thể sử dụng tương ứng)
- Mô tả hệ thống bằng UML( biểu đồ use case)
- _ Xây dựng cơ sở dữ liệu
- _ Kịch bản chuẩn và ngoại lệ
- Thiết kế lớp thực thể
- _ Thiết kế động: biểu đồ tuần tự
- _ Thiết kế, xây dựng giao diện
Trần Trung Hiếu - DI9PTDPT 13
Trang 14Đồ án tốt nghiệp Dai học Chương I
CHUONG I: TONG QUAN VE HEALTHHUB SCHEDULE
Nội dung của chương này sé giới thiệu chung về các chức năng của hệ thống HealthHub Schedule, cũng như những lợi ích của việc phát triển ứng dụng theo dõi
thai kỳ và khám chữa bệnh cho trẻ sơ sinh
1 Giới thiệu bài toán:
Hiện nay, việc quản lý thông tin trong quá trình mang thai và sinh con của
người mẹ là điều rất cần thiết Ứng dụng cung cấp những thông tin cần thiết về tình
trạng cơ thể, tình hình phát triển của thai nhi theo thời gian, đồng thời cung cấp lịch khám, lịch xét nghiệm cần thiết cho mẹ bầu giúp mẹ bầu có những chuan bị tốt nhất
cho sự chào đời của em bé Phần mềm quản lý sẽ được sử dụng nhằm hỗ trợ thai phụ
va trẻ trong suốt quá trình mang thai và sinh con đến khi em bé tròn | tuổi.
e Đối với người mẹ: sẽ là người trực tiếp đăng ký phần mềm để giúp cho việc
quản lý các thông tin trong suốt quá trình mang bầu và sau sinh được dễ dàng
e Đối với em bé: phần mềm sẽ hỗ trợ khám và theo dõi trong suốt thời kỳ mang
thai và lên lịch thăm khám, theo dõi sức khỏe, cho đến khi em bé tròn 1 tuổi Trong phần mềm, các mẹ bầu sẽ được cấp tài khoản và được phân quyền dựa theo chức năng, theo từng bộ phận riêng biệt Về hệ thống quản lý, admin được phép
quản lý với các nghiệp vụ như danh sách những người khám thai, danh sách bệnh viện,
tạo lịch khám, Người dùng sẽ được phép quản lý, xem thông tin của mình và chỉnh
sửa thông tin cá nhân Các thông báo sẽ được gửi về cho người dùng một cách kịp thời thông qua các thiết bị điện thoại di động
Phần mềm được phát triển dựa trên nền tảng website Xây dựng phần mềm quản lý sinh sản giúp cho công việc quản lý các dữ liệu được chính xác hơn đồng thời
giảm được thời gian và các thủ tục khi phải đăng ký offline, người dùng có thể dễ dàng
đăng ký lịch khám và tra cứu thông tin một cách dễ dàng.
Nói ngắn gọn, việc xây dựng và phát triển phần mềm cho quy trình trình quản lý mẹ bầu, giúp cho các dữ liệu của mẹ bầu và em bé được thông bộ trên nhiều hệ
thống y tế, dễ dàng tra cứu cho cả người dân và các đơn vị y tế.
Trần Trung Hiếu - DI9PTDPT 14
Trang 15Đồ án tốt nghiệp Đại học Chương I
2 Mô tả hệ thống:
2.1 Phạm vi hệ thong:
Hệ thống sẽ được triển khai cho cả hệ thống y tế với các loại tác nhân như sở y tế, cơ sở y tế, thai phụ nhằm mục đích chia sẻ thông tin của thai phụ và trẻ sơ sinh để
dễ dàng hơn trong việc nắm bắt thông tin của thai phụ trong các lần khám 2.2 Sơ đồ tổng quát chức năng của hệ thong:
Quản lý tai khoản
Đăng ký tai khoản
Quản lý thông tin trẻ Quản lý lịch trực của
Quan lý bác sĩ Sơ sinh bac sĩ
Trang 16Đồ án tốt nghiệp Dai học Chương I
2.3 Các tác nhân tham gia hệ thong:
- Thai phụ: là tác nhân tham gia hệ thống để có thể đăng ký khám thai, tra cứu thông tin cá nhân, thông tin hồ sơ khám của mình và thông tin về con của mình được sinh ra tại cơ sở y tế.
- _ Bệnh viện: là tác nhân tham gia vào hệ thống để quản lý thông tin của thai phụ,
hồ sơ khám thai, em bé, quản lý danh sách các đăng ký khám.
- Sở y té: là tác nhân tham gia vào hệ thống để quan lý thông tin của các cơ sở y tế trực thuộc và tài khoản của các cơ sở y tế đó.
- Nguoi quản trị hệ thống: là tác nhân tham gia vào hệ thống để quản lý thông tin của các sở y tế, ngoài ra còn quản lý thông tin tất cả các tài khoản có trong hệ thống.
2.4 _ Các chức năng của hệ thống
2.4.1 Đăng nhập - Quan lý thông tin cá nhân:
- Dang nhập: Cho phép tat cả người dùng hệ thống đăng nhập vào hệ thống
- Quan lý thông tin cá nhân: cho phép tất cả người dùng thêm, sửa thông tin cá
nhân của họ trên hệ thống.
2.4.2 Nhóm chức năng: Người quản lý hệ thống:
- Quan lý tài khoản: cho phép Người quản trị hệ thống quản lý thông tin các tài khoản của người dùng khi tham gia vào hệ thống, Người quản trị có thể thêm,
sửa, xóa, tìm kiếm thông tin của một tài khoản bất kì.
- Quản lý danh sách sở y tế: cho phép Người quản trị hệ thống quản lý thông tin của các sở y tế, có thể thêm, sửa, xóa, tìm kiếm thông tin của một sở y tế bất
Trần Trung Hiếu - DI9PTDPT 16
Trang 17Đồ án tốt nghiệp Dai học Chương I
Nhóm chức năng thai phụ:
Đăng ký khám: cho phép Thai phụ đăng ký khám thai tại một cơ sở y tế.
Đăng ký tài khoản: cho phép thai phụ đăng ký tài khoản để thực hiện các chức
Đăng ký nhận thông báo khám: cho phép thai phụ liên kết tài khoản telegram của mình với hệ thống để có thể nhận được các thông báo | cách kịp thời
Nhóm chức năng sở y tế:
Quan lý thông tin bệnh viện trong sở y tế: cho phép quản lý thông tin các bệnh viện có trong sở y tế.
Thêm tài khoản cho các bệnh viện: cho phép Sở y tế tạo tài khoản đăng nhập cho cơ sở y tế trực thuộc (nếu cơ sở y tế đó chưa có tài khoản).
Nhóm chức năng bệnh viện:
Quản lý danh sách thai phụ: cho phép Cơ sở y tế quản lý thông tin của thai phụ có thể thêm, sửa, xóa, tìm kiếm thông tin thai phụ.
Quản lý danh sách trẻ sơ sinh: cho phép Cơ sở y tế quản lý thông tin của trẻ sơ sinh được sinh ra tại cơ sở y tế đó, có thể thêm, sửa, xóa, tìm kiếm thông tin
trẻ sơ sinh.
Trần Trung Hiếu - DI9PTDPT 17
Trang 18Đồ án tốt nghiệp Dai học Chương I
- Quan lý lịch trực, lịch làm việc của các bac sĩ trong bệnh viện: Cho phép
bệnh viện có thể quản lý thông tin ca làm việc của bác sĩ bao gồm việc thêm,
sửa, xóa, tìm kiếm các thông tin về các ca trực trong ngày, trong tuần.
2.5 _ Kết luận chương:
Chương I giúp đặt nền móng cho độc giả hiểu rõ hơn về nguyên nhân và mục tiêu phát triển của HealthHub Schedule, cũng như lợi ích mà nó mang lại cho cả bệnh
viện, lẫn thai phụ.
Trần Trung Hiếu - DI9PTDPT 18
Trang 19Đồ án tốt nghiệp Dai học Chương I
Trần Trung Hiếu - DI9PTDPT 19
Trang 20Đồ án tốt nghiệp Dai học Chương II
CHƯƠNG II: PHƯƠNG PHÁP TIẾP CẬN VÀ GIẢI QUYẾT VẤN ĐỀ
Chương này sẽ trình bày các nghiên cứu về phương pháp tiếp cận, giải quyết vấn đề, cũng như trình bày về các công nghệ được sử dụng để xây dựng lên hệ thống.
1 M6 hình phat triển:
Với các yêu cầu cũng như mục tiêu của đồ án thì sản phẫm phần mềm HealthHub Schedule được phát triển theo mô hình nước chảy (Waterfall Model)
Mô hình chảy nước là một trong những mô hình phát triển phần mềm truyền
thống và tuyến tính nhất Nó được biểu diễn như một dãy các giai đoạn phát triển liên
tiếp, giống như nước chảy từ trên xuống dưới qua các giai đoạn khác nhau.
Mô hình chảy nước chia dự án thành các giai đoạn không chồng chéo, mỗi giai
đoạn được thực hiện theo thứ tự tuyến tính Mỗi giai đoạn tạo ra một tập hợp con của dự án, và tiếp theo chỉ bắt đầu khi giai đoạn trước đó hoàn thành Nguyên tắc cơ bản là từng bước phải được hoàn thành trước khi chuyển sang bước tiếp theo, giống như nước chảy từ trên xuống dưới mà không quay trở lại.
Cấu trúc giai đoạn của mô hình chảy nước bao gồm:
e Giai đoạn 1: Yêu cầu:
©_ Xác định yêu cầu: Thu thập thông tin từ khách hàng để xác định yêu cầu
chính của hệ thống Xác định và mô tả rõ rang các tính năng, chức năng
và ràng buộc của dự án.
© Tạo Tài Liệu Yêu Cầu: Viết tài liệu yêu cầu, thường được gọi là "SRS (Software Requirements Specification)" để làm cơ sở cho các giai đoạn sau Xác minh với khách hàng để đảm bảo hiểu đúng và đầy đủ về yêu
e Giai đoạn 2: Thiết kế:
Trần Trung Hiếu - DI9PTDPT 20
Trang 21Đồ án tốt nghiệp Dai học Chương II
© Thiết Kế Hệ Thống: Xây dựng kiến trúc hệ thống dựa trên yêu cầu đã
xác định Chia hệ thống thành các thành phần lớn và xác định cách
chúng tương tác với nhau.
oO Thiết kế chi tiết: Xác định cách mỗi thành phần sẽ được triển khai, bao gồm cấu trúc dữ liệu, giao diện người dùng, và các thuật toán chi tiết Tạo các tài liệu thiết kế chi tiết, thường được gọi là "High-Level Design"
và "Low-Level Design."e Giai đoạn 3: Coding:
o Viết mã nguồn: Dựa trên thiết kế đã xác định, nhóm phát triển bắt đầu viết mã nguồn Mỗi thành viên trong nhóm có thể đảm nhận các nhiệm vụ cụ thể dựa trên kỹ năng và chuyên môn của họ.
oO Kiểm thử đơn vị: Kiểm thử từng đơn vị code (hàm hoặc module) để dam
bảo tính độc lập và đúng đắn Sửa lỗi và cải thiện mã nguồn nếu cần thiết.
e Giai đoạn 4: Kiểm thử:
Oo Kiểm thử hệ thống: Tất cả các thành phần được tích hợp để tạo thành hệ
thống hoàn chỉnh Tiến hành các bài kiểm thử toàn diện để đảm bảo rằng hệ thống hoạt động đúng đắn theo yêu cầu Kiểm tra hệ thống với sự tham gia của người dùng để đảm bảo tương tác mượt mà và hiệu quả Đảm bảo sự tương thích với các môi trường thực tế.
e Giai đoạn 5: Triển khai hệ thống
© Chuẩn bị triển khai: Đảm bảo rằng hệ thống được chuẩn bị cho triển
khai, bao gồm việc kiểm tra cuối cùng và sửa lỗi cuối cùng Xác định kế
hoạch triển khai chi tiết.
©_ Triển khai hệ thống: Đưa hệ thống vào môi trường thực tế va bat đầu sử dung.Kiém tra lại để đảm bảo rằng không có vấn đề nào xảy ra sau triển
Trần Trung Hiếu - DI9PTDPT 21
Trang 22Đồ án tốt nghiệp Dai học Chương II
e Giai đoạn 6: Bảo trì hệ thống:
© Sửa lỗi và cải thiện: Xử lý bất kỳ lỗi nào xuất hiện sau triển khai.Tiếp
tục cải thiện hệ thống dựa trên phản hồi từ người dùng và hiệu suất thực
o Hỗ trợ người dùng: Cung cấp hỗ trợ và đào tạo người dùng cuối Dam
bảo rằng hệ thống đáp ứng được nhu cầu và mong muốn của người dùng Mỗi giai đoạn của mô hình chảy nước được thực hiện theo thứ tự tuyến tính và không bắt đầu cho đến khi giai đoạn trước đó hoàn thành, giúp tạo ra một quá trình
phát triển có kỷ luật và dễ kiểm soát.
Mô hình chảy nước (Waterfall Model) có những ưu điểm và hạn chế cụ thể, dưới đây là một vài điểm nổi bật cũng như hạn chế:
® Ưu điểm:
©_ Dễ quản lý: Các giai đoạn được thực hiện theo thứ tự tuyến tính, giúp dễ
quản lý và đánh giá tiến độ của dự án.
©_ Dễ hiểu, dễ sử dụng: Mô hình chảy nước đơn giản va dễ hiểu, phù hợp
cho các dự án có yêu cầu rõ ràng từ đầu.
© Tài liệu rõ ràng: Yêu cầu được xác định và tài liệu được tạo ra ở giai đoạn đầu giúp giảm rủi ro và tạo cơ sở cho các quyết định tiếp theo.
©_ Dễ kiểm soát phạm vi: Phạm vi của dự án thường được xác định rõ ràng
Ở giai đoạn yêu cầu, giúp kiểm soát rủi ro và nguy cơ biến động.
© phù hợp với các dự án nhỏ với yêu cầu đã được định rõ: Hoạt động tốt cho các dự án có quy mô nhỏ và yêu cầu đã được xác định rõ ràng từ đầu.
e Hạn chế:
© Khó thích ứng với các thay đối: Khả năng thay đối yêu cầu trong quá
trình phát triển rất hạn chế, đôi khi là không khả thi.
Trần Trung Hiếu - DI9PTDPT 22
Trang 23Đồ án tốt nghiệp Dai học Chương II
© Khó điều chỉnh kế hoạch: Nếu có bất kỳ sự thay đối nào trong yêu cầu,
việc phải điều chỉnh kế hoạch có thể phức tạp và đòi hỏi nhiều công sức.
oO Thời gian dài trong việc phản hồi: Khách hang thường phải đợi đến khi
cuối cùng để nhận phản hồi về hệ thống, điều này có thể dẫn đến việc phát hiện lỗi ở giai đoạn muộn.
© Nguy cơ lớn cho các dự án lớn và phức tạp: Đối với các dự án lớn và phức tạp, có rủi ro cao về việc không đáp ứng đúng đắn với yêu cầu thay đổi va phức tap.
O Không linh hoạt: Mô hình chảy nước không linh hoạt trong việc đáp ứng
nhanh chóng với thay đổi hoặc trong tình huống không chắc chắn.
Mô hình chảy nước thích hợp cho các dự án có yêu cầu 6n định và rõ ràng từ đầu Tuy nhiên, nó có thể gặp khó khăn khi phải đối mặt với môi trường làm việc biến động và yêu cầu thay đối liên tục Cần cân nhắc kỹ lưỡng về tính linh hoạt của mô hình để đảm bảo phù hợp với đặc điểm cụ thể của dự án.
2 Mô hình hoạt động của hệ thống:
Mô hình client-server là một kiến trúc cơ bản được sử dụng rộng rãi trong phát triển phần mềm và thiết kế hệ thống Và cũng không ngoại lệ, phần mềm HealthHub
Schedule được vận hành theo mô hình Client-Server.Trong mô hình này, hệ thống được chia thành hai thành phần chính: client (máy tính cá nhân, thiết bị di động) và
server (máy chủ).
Trần Trung Hiếu - DI9PTDPT 23
Trang 24Đồ án tốt nghiệp Đại học Chương II
SERVER SIDE
Hinh 2.1 - So d6 mé hinh cua hé thong
Dưới đây là một giới thiệu chi tiết về mô hình client-server:
e Client:
© Nhiệm Vu: Client là phần của hệ thống mà người dùng tương tác trực tiếp Nó chịu trách nhiệm cho việc hiến thi giao diện người dùng, thu
thập dữ liệu đầu vào từ người dùng và truyền thông tin đến server.
©_ Ví Du: Trình duyệt web, ứng dụng di động, ứng dụng máy tính cá nhân.
® Server:
© Nhiệm Vu: Server là nơi chứa tài nguyên và dữ liệu chính của hệ thống.
Nó thực hiện xử lý logic, lưu trữ và quản lý dữ liệu, và cung cấp thông
tin cho client khi được yêu cầu.
oO Ví Du: Máy chủ web, máy chủ cơ sở dữ liệu, máy chủ ứng dung.
e Giao Tiếp Client-Server:
© Giao Tiếp: Giao tiếp giữa client và server thường thông qua mạng, sử dụng các giao thức như HTTP, HTTPS, TCP/IP Client gửi các yêu cầu đến server, và server trả về các phản hồi hoặc dữ liệu tương ứng.
Trần Trung Hiếu - DI9PTDPT 24
Trang 25Đồ án tốt nghiệp Dai học Chương II
© Kiến Trúc Mạng: Thông thường, client và server có thể tồn tại trên các
máy tính khác nhau, kết nối thông qua internet hoặc mạng nội bộ.
e Phân chia trách nhiệm:
© Frontend (Client): Chịu trách nhiệm cho giao diện người dùng và tương
tác người dùng Thực hiện logic ở phía máy tính cá nhân.
O Backend (Server): Chịu trách nhiệm cho xử lý logic, lưu trữ dữ liệu, va
cung cấp dữ liệu cho client Thực hiện logic ở phía máy chủ.
e Lợi ích:
© Tính Tương Thích: Client và server có thể được phát triển và cập nhật độc lập mà không ảnh hưởng đến nhau.
© Phân Chia Công Việc: Cho phép phân chia công việc giữa client và
server, giúp tối wu hóa hiệu suất va quản lý tài nguyên.
e Bảo Mật:
© Bảo Mật Tập Trung: Thông thường, thông tin nhạy cảm và logic an ninh
được tập trung ở phía server để giữ cho client chỉ cần biết về thông tin cần thiết.
Mô hình client-server là một kiến trúc linh hoạt và mạnh mẽ, được sử dụng trong nhiều loại ứng dụng khác nhau, từ các trang web đơn giản đến các hệ thống phức tạp Nó cung cấp một cách tiếp cận có tổ chức cho việc phát triển phần mềm và quản
lý tài nguyên trong môi trường mạng.
3 Công nghệ sử dụng: 3.1 Server side:
3.1.1 Java:
Phía server-side được xây dung trên ngôn ngữ lập trình Java Java là một trong những ngôn ngữ lập trình máy tính quan trọng và được dùng phổ biến nhất trên thế
giới, bởi vì nó là một ngôn ngữ ưu việt của Internet Có nhiều nguồn cho rằng, khi nói
Trần Trung Hiếu - DI9PTDPT 25
Trang 26Đồ án tốt nghiệp Dai học Chương II
tới các nhà phát triển Web chuyên nghiệp chính là nói đến những người thành thạo ngôn ngữ Java Java cũng là một phần của “cuộc cách mạng” điện thoại thông minh bởi vì Java được dùng cho lập trình Android Có thể nói rằng Java là nền tảng của lập
trình hiện nay.
Sự kỳ diệu của Java: Bytecode
Chìa khóa giúp Java giải quyết tất cả vấn đề bảo mật và tính khả chuyển là mã
do trình biên dịch Java tạo ra không phải là mã thực thi Thay vì vậy, nó là mã
bytecode Bytecode là một tập các chỉ lệnh đã được tối ưu hóa ở mức độ cao, được thiết kế để có thể chạy trên hệ thống thực thi Java, còn gọi là máy ảo Java (JVM - Java
Virtual Machine) Việt dịch một chương trình Java thành mã bytecode giúp cho việc
chạy một chương trình trên nhiều loại môi trường khác nhau dễ dàng hơn, bởi vì người dùng chỉ cần cài đặt JVM cho từng nền tảng Sau đó khi JVM tồn tại trên một hệ điều hành, thì bất kỳ chương trình Java nào cũng có thể chạy trên đó.
Thấy được những điểm mạnh của Java cũng là lý do để em quyết định gắn bó với ngôn ngữ lập trình mạnh mẽ này trong quá trình phát triển về mặt kỹ thuật của em
trong thời gian tới.
3.1.2 Spring Framework:
Có lễ một trong những điều khó nhất của việc giải thích Spring là phân loại chính xác nó là gi Spring được mô tả là một lightweight framework để xây dựng các ứng dụng Java, tuy nhiên có 2 điểm chú ý là:
Có thể dùng Spring để xây dựng bất kỳ ứng dụng nào trong Java ( Ví dụ: stand-alone, web hay các ứng dụng Java Enterprise (JEE) ), không như nhiều ứng dụng khác
(như Apache Struts, PHP ở thời điểm hiện tai chỉ giới hạn ở các ứng dụng Web).
Spring được gọi là lightweight vì nhà phát triển không cần phải tích hợp tất cả các mô-đun của Spring để sử dụng một phần mô-đun trong hệ sinh thái của Spring Ví
Trần Trung Hiếu - DI9PTDPT 26
Trang 27Đồ án tốt nghiệp Đại học Chương II
dụ, thông thường người phát triển không thể chạy một ứng dụng Java EE mà chỉ tạo một ứng dụng nhỏ và chỉ chạy một mình mà phải cần một Java EE Server (Glassfish, WebSphere, Tomcat) để chạy ứng dụng thêm nữa là hầu hết các ứng dung server là
lớn và phức tạp do vậy không dễ dàng để install và configure.
e Inversion of Control/Dependency Injection
© Tinh năng quan trọng nhất của Spring Framework là Dependency
Injection Cốt lõi của tất cả các mô dun Spring là Dependency Injection/Inversion of Control Tại sao điều này lại quan trọng, khi DIAoC được dùng phù hợp, nhà phát triển có thể phát triển các ứng dụng
được giảm kết dính Các ứng dụng giảm kết dính dễ dàng kiểm tra unit
test hơn.
©_ Ví dụ: Nếu không sử dụng DI trong đoạn mã bên dưới thì: Class Person
sẽ phụ thuộc vào Class Email Tức là Person phải có trách nhiệm khởi
tạo một trường hợp Email Điều này tạo nên việc kết dính giữa Person và
1 package com.ocean.examples.di.part1;
3 public class Email {
4 public void sendEmail(String subject, String message){
5, // Send the email
6 }
7 }
1 package com.ocean.examples.di.part1;2.
3 public class Person {
4, private Email email = new Emaill);5.
6 public void greetFriend(){
Fé email.sendEmail("Hello", "Hello my friend :)");
Tran Trung 8, } 27
SB et
Trang 28Đồ án tốt nghiệp Đại học Chương II
Hình 2.2 - Ví dụ không sử dụng Dependency Injection
oO Khi phát triển một hệ thống lớn dần, không tránh khỏi việc class Email sẽ được sử dụng ở nhiều nơi Khi yêu cầu thay đổi hoặc do sự cố nào đó, nhu cầu cần gửi tin nhắn qua một dịch vụ khác như Tweet, Sms Vậy nên
không tránh khỏi việc sửa toàn bộ mã có sử dụng dịch vụ gửi tin Email.
Cách làm trên cho thấy việc kết dính các lớp là một ý tưởng tệ
o Áp dụng nguyên lý IoC/DI cho tình huống trên Các class sẽ giao tiếp
package com.ocean.examples.di.part2; public interface MessageService {
void sendMessage(String subject, String message);
well Sac 1.11:
với nhau thông qua interface/abstraction thay vi thông qua
Hinh 2.3 - Dinh nghia interface
Trần Trung Hiếu - DI9PTDPT 28
Trang 29Đồ án tốt nghiệp Đại học Chương II
package com.ocean.examples.di.part2;
public class SmsService implements MessageService {
public void sendMessage(String subject, String message){
System.out.printf("SMS: %s, %s9on", subject, message);
Co Re be situated ett bạc?}
package com.ocean.examples.di.part2;
public class EmailService implements MessageService {
public void sendMessage(String subject, String message){
System.out.printf("Email: %s, %s%n", subject, message);
1 eee OE Hình 2.4 - Hiện thực (Implement) interface
o Spring Framework cung cấp một đối tượng Container đảm nhiệm việc
khởi tạo dependencies qua các chú giải (annotations) cho một Class
thuận tiện hơn thay vì thông qua hàm khởi trong đoạn code trên.
Tích hợp với các framework bên ngoài: Một điều tuyệt vời ở Spring là không
nhằm giải quyết tất các vấn đề mà đã được gỡ rối Tất cả những gì Spring làm cung cấp một cách tích hợp tuyệt vời với các frameworks mà cung cấp các giải pháp tốt khác nhau:
©_ Hibernate trong ORM
oO iBatis trong Object Mapping
oO Junit và Mockito trong Unit Testing
Trần Trung Hiếu - DI9PTDPT 29
Trang 30Đồ án tốt nghiệp Đại học Chương II
Spring cung cấp một số tính năng yêu cầu cho việc phát triển các ứng dụng
doanh nghiệp Tuy nhiên nó không yêu cầu nhà phát triển phải tích hợp vào ứng dụng của họ tất cả các tính năng này Các tính năng cung cấp bởi Spring được chia thành 7 mô đun khác nhau Nhà phát triển có thé chon để tích hợp vào ứng dụng của họ với một hoặc nhiều mô đun tùy vào tính năng mà họ cần.
Nam bắt được kiến trúc mô đun của Spring va hiểu được mục đích sử dụng của
từng mô đun trên giúp cho những lập trình viên mới tiếp cận với Spring dễ dàng hơn.
Trần Trung Hiếu - DI9PTDPT 30
Trang 31Đồ án tốt nghiệp Dai học Chương II
3.1.3 Spring Boot:
La một cách mới để tạo các ứng dung Spring nhanh chóng Với Spring lập trình viên thường phải cấu hình các phụ thuộc (dependencies, jars) thủ công thông qua các
file XML hay chú giải annotations thì với Spring Boot mọi thứ được tự động hóa Một
vài tính năng nổi bật như:
- Tao ứng dung Spring sẵn sàng để phát hành;
- Tao ứng dung standalone có môi trường server Tomcat được nhúng sẵn;
- Mot trong những tinh năng là công nghệ “opinioned” giúp nhà phát triển tuân theo hướng làm tốt nhất cho việc tạo ứng dụng có khả năng mở rộng và mạnh
3.14 Spring Rest:
Được áp dung trong phần Endpoint trong mô hình lập trình Cinema MNGT.
Đây là một mô đun trong hệ sinh thái Spring Framework dùng để xây dựng RESTful
3.1.4.1 Tim hiểu về Restful:
Bản thân REST không phải là một loại công nghệ, mà là phương thức tạo API
với nguyên lý tổ chức nhất định Những nguyên lý này nhằm hướng dẫn lập trình viên
tạo môi trường xử lý API request được toàn diện hơn.
REST là viết tắt của Reppresentational State Transfer và là một kiểu kiến trúc để thiết kế các ứng dụng mạng phân tán Roy Fielding đặt ra thuật ngữ REST trong luận văn tiến sĩ của mình và đề xuất sáu trở ngại hoặc nguyên tắc dưới đây làm căn cứ
của nó:
Trần Trung Hiếu - DI9PTDPT 31
Trang 32Đồ án tốt nghiệp Dai học Chương II
- Client-Server: Những thứ liên quan nên được tách biệt giữa các máy khách và
máy chủ Điều này cho phép các thành phần máy khách và máy chủ phát triển độc lập và lần lượt cho phép hệ thống có thể mở rộng quy mô.
- Stateless: Sự giao tiếp giữa máy khách và máy chủ nên là vô trạng thái Máy
chủ không cần phải nhớ trạng thái của máy khách Thay vào đó, khách hàng phải bao gồm tất cả các thông tin cần thiết trong yêu cầu để máy chủ có thể hiểu
và xử lý nó.
- Layered System: Nhiều lớp phân cấp như cổng (gateways), tường lửa (firewalls) va proxies có thể tồn tại giữa máy khách và máy chủ Các lớp có thể được thêm, sửa đối, sắp xếp lại, hoặc xoá một cách minh bạch để cải thiện khả
năng mở rộng.
- Cache: Các phản hồi (responses) từ máy chủ phải được khai báo là có thể lưu trữ được hoặc không thể lưu trữ Điều này sẽ cho phép các client hoặc các thành phần trung gian của nó để lưu trữ phản hồi (responses) và dùng lại chúng cho các yêu cầu (requests) sau này Điều này làm giảm tải (load) trên máy chủ và
giúp cải thiện hiệu suất.
- Uniform Interface: Tất cả các tương tác giữa client, máy chủ, và các thành phần trung gian được dựa trên sự thống nhất của các giao diện của chúng Điều này đơn giản hóa kiến trúc tổng thể vì các thành phần có thể phát triển độc lập miễn là chúng thực hiện theo quy tắc đặt ra.
- Code on demand: Client có thể mở rộng chức năng của chúng bằng cách tải xuống (download) và thực thi (execute) mã theo yêu cầu Ví dụ bao gồm các
tập lệnh JavaScript, các Applet Java, Silverlight, v.v Day là một ràng buộc tùy
3.1.4.2 Xây dựng Resful API:
Thiết kế và triển khai một API RESTful tốt không chỉ là một nghệ thuật Phải
mất thời gian, nỗ lực, và một số lặp đi lặp lại Một API RESTful được thiết kế tốt cho
Trần Trung Hiếu - DI9PTDPT 32
Trang 33Đồ án tốt nghiệp Đại học Chương II
phép người dùng cuối của bạn sử dụng API một cách dễ dàng và làm cho việc áp dụng
nó trở nên dễ dàng hơn Ở mức độ cao, dưới đây là các bước liên quan đến việc xây
dựng API RESTful:
- Identify Resources: Trung tâm đến REST là các tài nguyên Ta bắt đầu tao mau
các tài nguyên khác nhau mà đến người sử dung quan tâm Thông thường, các tài nguyên này có thể là miền hoặc các thực thể của ứng dụng.
- Identify Endpoints: Bước tiếp theo là thiết kế các URI ánh xa các tài nguyên tới
các endpoints.
- Identify Actions: Xác định các phương thức HTTP có thé được sử dụng để thực
hiện các hoạt động trên các tài nguyên.
- Identify Responses: Xác định các thể hiện (reprentation) tài nguyên được hỗ trợ
cho yêu cầu và đáp ứng cùng với mã trạng thái phù hợp để được trả lại.
Identity Endpoint
RequestMapping(CommonConstants Resource REQUEST MAPPING + “/seatTypes") Identify Resource
Soi(velue = “Quản lý tài nguyễn Loại ghế”} ——
public class SeatTypeResource {
private SeatTy eService seatTypeService; ) 9 x }
pr _— Lia Identify Action identify Response
public @ResponseBody Page<SeatType> findAllSeatType(Pageable pageable) {return seatTypeservice findAl lSeatType(pageable);
Hinh 2.6 - Vi du publish Spring REST3.1.5 Spring Security Framework:
Spring Security là một lightweight security framework cung cấp xác thực và ủy quyền để hỗ trợ an ninh trong các ứng dụng Spring.
Spring Security cung cấp các dịch vụ bảo mật toàn diện cho các ứng dụng phần mềm doanh nghiệp dựa trên Java EE Hỗ trợ đặc biệt cho các dự án được xây dựng bằng Spring Framework, đây là giải pháp Java EE hàng đầu cho phát triển phần mềm
doanh nghiệp.
Trần Trung Hiếu - DI9PTDPT 33
Trang 34Đồ án tốt nghiệp Dai học Chương II
Hệ thống Cinema MNGT được bảo mật như sau:
e Mật khẩu đăng nhập của người dùng được mã hóa theo thuật toán Bcrypt.
Trước khi lưu trữ mật khẩu tài khoản người dùng vào CSDL, hệ thống Cinema
MNGT sẽ thực hiện mã hóa mật khẩu theo thuật toán Bcrypt.
oO Bcrypt là một thuật toán mã hóa mật khẩu một chiều Không thể lấy lại
mật khẩu khi biết chuỗi mật khẩu trong CSDL.
oO Bcrypt là một giải pháp được ưa chuộng trong cộng đồng an ninh hiện
nay Nó tự động tạo ra các chuỗi mã hóa ngẫu nhiên sau mỗi lần tạo ra.
Điều này làm cho nó khó khăn hơn trong việc mã hóa và tìm ra mật khẩu cho những cuộc tấn công.
e Tích hợp giao thức SSL (Secure Socket Layer) dùng để thiết lập liên kết được
mã hóa giao tiếp giữa client và server.
e Xác thực người dùng với Basic Authentication Khi Client truy cập đến tài
nguyên API yêu cầu xác thực Basic Authentication trên hệ thống Cinema MNGT thì HTTP request mà Client gửi lên Server cần phải kèm theo “chuỗi xác thực” người dùng tương ứng với tham số “Authorization” trong phần HTTP headers “Chuỗi xác thực” có được bằng việc kết hợp từ khóa “Basic” cùng với
mã hóa base64(username:password)
Trần Trung Hiếu - DI9PTDPT 34
Trang 35Đồ án tốt nghiệp Đại học Chương II
Angular là một JavaScript framework dùng để viết giao diện web (Front-end), được phát triển và duy trì bởi Google từ những năm 2019 Hiện nay, Angular đang được sử dụng bởi rất nhiều các công ty lớn: Forbes, General Motors, Upwork Với
Trần Trung Hiếu - DI9PTDPT 35
Trang 36Đồ án tốt nghiệp Dai học Chương II
những lợi ích tuyệt vời mà Angular mang lại, ban cần phải biết sử dung Angular nếu
muốn trở thành Front-end Developer giỏi.
Ưu điểm nổi bat của Angular:
- Angular được đánh giá là giải pháp dành cho các Single Page Application làm
việc dễ dàng.
- Code Front end thường rất thân thiện nhờ kha năng Binding data lên trên các nền tảng HTML để có thể tạo ra mọi thao tác rất tuyệt.
- Dé dàng Unit test.
- C6 thể tái sử dung component.
- H6 trợ cho các lập trình viên có thể viết code được ít hơn với nhiều chức năng
- _ Có thể chạy Angular trên nhiều loại trình duyệt khác nhau lẫn PC hoặc mobile.
3.2.2 Single Page Application:
Công nghệ Single Page Application (SPA) đã được áp dung trên các ứng dụng
web để làm giảm thiểu việc refresh lại trang web Theo cách thông thường, mỗi khi
chuyển hướng người dùng đến một trang khác trên websites yêu cầu trình duyệt browser phải refresh lại trang để tải trang web từ phía server (nơi đặt ứng dụng
front-end) mới có thể render được trang web, việc này khiến mất nhiều thời gian khi tải
SPA chỉ render trên một trang web HTML duy nhất từ server, khi người dùng
truy cập vào ứng dụng, không có thêm một trang HTML nào được tải về nữa trong quá
trình tương tác của người dùng Cùng với trang HTML đó, server gửi một công cụ ứng
dụng đến client là trình duyệt web browsers Công cụ này sẽ kiểm soát toàn bộ ứng dụng bao gồm việc: processing, input, output, painting, va loading của trang HTML.
Trần Trung Hiếu - DI9PTDPT 36
Trang 37Đồ án tốt nghiệp Đại học Chương II
Đặc biệt, phải đến 90-95% mã ứng dụng được chạy trên browser; phần còn lại khi
người dùng tải thêm những dữ liệu mới.
Bên cạnh đó, đa phần việc loading được chạy trên client nên gần như phía server- side không phải hoạt động nhiều Nhu cầu về tài nguyên trên server thấp làm giảm stress trên server đáng kể, giảm những chi phí tiềm năng trên server.
3.2.3 Lazy Loading:
Tai sao lại can Lazy loading? Thông thường, Angular sẽ tải tat cả các
components khi bắt đầu ứng dụng Như ví dụ dưới đây tất cả components được khai
báo được đẩy vào module gốc trong Angular Điều này sẽ yêu cầu Angular tải toàn bộ components trong mảng (array) “declarations” khi bắt đầu chạy ứng dụng.
Route change Lazy load
Trang 38Đồ án tốt nghiệp Dai học Chương II
Hình 2.9 - Mô hình lazy loading
Việc này sẽ khiến ứng dụng trở nên chậm khi người dùng ghé thăm trang web lần đầu tiên, bởi vì Angular cần tải toàn bộ components vào lúc đầu tiên nhưng có thể người dùng chỉ muốn xem mỗi trang chủ Day là ly do các ứng dụng web cần đến lazy
loading để cải thiện thời gian loading của ứng dụng.
Lazy loading hoạt động như thế nào? Lazy loading chỉ tải những gì mà nha
phát triển cần sử dụng để bắt đầu ứng dụng lần đầu Nếu người dùng chuyển sang trang khác, thi component cho trang đó sẽ load ngay lập tức Tuy nhiên, điều này không có nghĩa là nó tải mọi lúc người dùng chuyến sang trang khác Thực tế, lazy
loading chi tải cho lần đầu tiên ghé thăm một trang, lazy loading sẽ không tải lại khi
người dùng ghé thăm lại.
3.2.4 Bảo vệ tài nguyên với OAuth Framework:
Trong mô hình xác thực client-server truyền thống, client gọi một request đến
tài nguyên được bảo vệ trên server bằng cách xác thực với server sử dụng credentials (username, password) của người sỡ hữu tài nguyên (resource owner) Để cung cấp cho các ứng dụng bên thứ 3 có thể truy cập tới các tài nguyên giới hạn, người sở hữu tài nguyên sẽ cung cấp/chia sẻ credentials (username, password) của họ với ứng dụng bên thứ 3 Điều này tạo nên một số hạn chế và vấn đề sau:
e Các ứng dụng bên thứ 3 yêu cầu lưu trữ credentials của người sở hữu tai
nguyên để có thể tiếp tục sử dụng.
e Servers cần phải hỗ trợ xác thực mật khẩu, mặc dù việc bảo mật kém nhất
thường liên quan đến vấn đề mật khẩu.
Trần Trung Hiếu - DI9PTDPT 38
Trang 39Đồ án tốt nghiệp Dai học Chương II
e Các ứng dụng bên thứ 3 truy cập vào tài nguyên mà không có giới hạn về
khoảng thời gian.
e Người sở hữu tài nguyên không thể hủy bỏ truy cập cho một ứng dụng bên thứ 3 cụ thé mà không hủy bỏ các ứng dụng bên thứ 3 khác.
OAuth giải quyết những vấn đề nay bằng cách giới thiệu một lớp ủy quyền và
tách vai trò của máy khách (client) với tài nguyên của chủ sở hữu tài nguyên Trong
OAuth, client yêu cầu quyền truy cập vào tài nguyên do chủ sở hữu tài nguyên kiểm soát và được lưu trữ bởi máy chủ tài nguyên (Resource Server) và được cấp các
credentials khác với các tài nguyên của chủ sở hữu tài nguyên.
Thay vì sử dụng các credentials của chủ sở hữu tài nguyên để truy cập tài
nguyên được bảo vệ, client sẽ nhận được một mã access token - một chuỗi ký hiệu
cho một phạm vi, thời gian tồn tại và các thuộc tính truy cập cụ thể Access token
được cấp cho các clients bên thứ ba bởi một máy chủ ủy quyền (Authorization Server) với sự chấp thuận của chủ sở hữu tài nguyên Máy khách (client) sử dụng mã acess token để truy cập tài nguyên được bảo vệ bở resource server.
Trần Trung Hiếu - DI9PTDPT 39
Trang 40Đồ án tốt nghiệp Đại học Chương II
Abstract Protocol Flow
4 Access Token Server
5 Access Token ResourceServer6 Protected Resource
Service API
Hinh 2.10 - OAuth 2.0 Flow
e Application yêu cầu (request) ủy quyền truy cập tài nguyên dich vụ từ user
e Nếu user đã ủy quyền request, application sẽ nhận được một quyền
authorization grant
e Application request một mã access token từ authorization server bằng việc gửi
xác thực danh tính của application và authorization grant.
e Nếu danh tính application được xác thực và authorization grant là đúng,
authorization server sẽ trả về một mã access token đến application
e Application request đến tài nguyên từ resource server (API) và gửi access token
để xác thực
e Nếu access token là đúng, resource server (API) sẽ phục vụ tài nguyên cho
- Nhom vai trò (role) trong OAuth:
Trần Trung Hiếu - DI9PTDPT 40