Về nội dung nghiên cứu: Trên cơ sở tìm hiểu các hệ thống thương mại điện tử và các thuật toán liên quan đến khuyến nghị, Khóa luận đã đưa ra giải pháp phát triển một hệ thống khuyến nghị
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Ệ PHAN MEM
DO NGỌC CƯỜNG
DANG NGỌC DUY
KHÓA LUẬN TÓT NGHIỆP
HE THONG KHUYEN NGHỊ DÀNH CHO
THUONG MAI DIEN TU
RECOMMENDATION SYSTEM FOR E-COMMERCE
KY SU NGANH KY THUAT PHAN MEM
TP HO CHi MINH, 2022
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HQC CONG NGHE THONG TIN
KHOA CONG NGHE PHAN MEM
DO NGỌC CƯỜNG - 18520542
ĐẶNG NGỌC DUY - 18520655
KHÓA LUẬN TÓT NGHIỆP
HỆ THONG KHUYÉN NGHỊ DÀNH CHO
THƯƠNG MẠI ĐIỆN TỬ RECOMMENDATION SYSTEM FOR E-COMMERCE
KY SU NGANH KY THUAT PHAN MEM
GIANG VIEN HUONG DAN
TS NGUYEN TRINH DONG
TP HO CHi MINH, 2022
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
" eeeeeeeeeeeneenees NAY của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1 TS Nguyễn Tan Tran Minh Khang - Chủ tịch
2 ThS Thái Thuy Hàn Uyên - Thư ký
3 ThS Mai Trọng Khang - Ủy viên
Trang 4ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH CONG HOA XÃ HOI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc CÔNG NGHỆ THÔNG TIN TP HCM, ngày 17 tháng 07 năm 2021
NHẬN XÉT KHÓA LUẬN TÓT NGHIỆP
(CUA CÁN BỘ HUONG DAN)
Tên khóa luận:
HE THONG KHUYEN NGHỊ DÀNH CHO THƯƠNG MẠI ĐIỆN TỬ
Nhóm SV thực hiện: Cán bô hướng dẫn:
Đỗ Ngọc Cường 18520542 TS NGUYÊN TRỊNH ĐÔNG
Đặng Ngọc Duy 18520655
Trang 5Đánh giá Khóa luân
1 Về cuôn báo cáo:
Số trang 89 Sốchương 5
Số bang số liệu 1 Số hình vẽ 27
Số tài liệu tham khảo 5 San phẩm 1l phần mềm
Một số nhận xét về hình thức cuốn báo cáo:
Cách thức trình bày khóa luận tuân thủ theo các quy định, phân bồ nội dung từng
mục rõ ràng, cụ thê, có hình ảnh trực quan Các chương mục được trình bày hợp lý
và theo thứ tự.
2 Về nội dung nghiên cứu:
Trên cơ sở tìm hiểu các hệ thống thương mại điện tử và các thuật toán liên quan
đến khuyến nghị, Khóa luận đã đưa ra giải pháp phát triển một hệ thống khuyến nghị cho các trang thương mại điện tử độc lập Các thông tin đầu vào lẫy từ các trang
thương mại điện tử, xử lý và trả kết quả đầu ra là bộ dữ liệu đã được phân tích, đánh
giá hành vi, nhận xét của khách hàng nhằm đưa ra các khuyến nghị về sản phẩm cho
người dùng trong các trang thương mại điện tử.
3 Về chương trình ứng dung:
e Ưu điểm: Ứng dụng thử nghiệm gồm 3 phan, phần xử lý khuyến nghị sử dụng các
thuật toán trong học máy, phần backend tạo các dịch vụ cung cấp cho khách hàng và cuối cùng phần ứng dụng trên mobile minh họa một ứng dụng thương mại điện tử.
Hệ thống trong khóa luận là một giải pháp tông thể việc phát triển hệ thống khuyến
nghị cho các trang thương mại điện tử Kết quả thu được có thể phát triển tiếp trong tương lại dé trở thành sản phẩm thương mại.
Trang 6e Hạn chế: Sản phẩm chỉ dừng ở mức thử nghiệm, chưa thể triển khai thành sản phẩm
thương mại.
4 Về thái độ làm việc của sinh viên:
Sinh viên chủ động tìm tòi, nghiên cứu và trao đổi với giáo viên hướng dẫn Trong
quá trình thực hiện khóa luận sinh viên đã tích cực thực hiện các yêu cầu của giáo viên hướng dẫn, cố gắng hoàn thành nhiệm vụ được giao.
Đánh giá chung:
Khóa luận đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư, xếp loại giỏi.
Điểm từng sinh viên:
Trang 7ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc
CÔNG NGHỆ THÔNG TIN TP.HCM, ngày tháng năm
NHẬN XÉT KHÓA LUẬN TÓT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN)
Tên khóa luân:
HE THONG KHUYEN NGHỊ DÀNH CHO THƯƠNG MẠI ĐIỆN TỬ
Nhóm SV thực hiện: Cán bô phản biện:
Đỗ Ngọc Cường 18520542 ThS Nguyễn Công Hoan
Dang Ngoc Duy 18520655
Trang 8Đánh giá Khóa luân
1 Về cuôn báo cáo:
Số trang II! Sốchương 5
Số bảng số liệu 6 Số hình vẽ 68
Số tài liệu tham khảo 5 San pham I
Một số nhận xét về hình thức cuốn báo cáo:
Báo cáo trình bày đầy đủ về mặt nội dung , hình thức trình bày sạch đẹp đủ các phụ
lục.
2 Về nội dung nghiên cứu:
Đề tài của nhóm là một hướng đi khá mới trong lĩnh vực áp dụng và cung cấp các công nghệ AI các mô hình doanh nghiệp vừa và nhỏ.
Cụ thé là ứng dụng các hệ thống khuyến nghị cho các trang hệ thống thương mại điện
tử Nhóm đã nghiên cứu và xây dựng được một hệ thống khá hoàn chỉnh để có thể
demo cho việc cung cấp mô hình ứng dụng Có tiềm năng phát triển.
3 Về chương trình ứng dung:
Ứng dụng đã được lên khá hoàn chỉnh cùng các tài liệu về hệ thống dé có thé tích hợp vào các hệ thông Tuy nhiên vẫn còn các bat cập về mặt công nghệ mà hệ thống
phải vượt qua mới có thé đi tới thực tế được.
4, Về thái độ làm việc của sinh viên:
Cả hai bạn đều có trách nhiệm với công việc của mình, tích cực chủ động liên hệ với giảng viên, chủ động trong các phan công việc được giao về tìm hiểu và lên kiến trúc hệ thống.
Trang 9Đánh giá chung:
Khóa luận đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư, xếp loại Giỏi
Điểm từng sinh viên:
Đỗ Ngọc Cường: 8/10
Đặng Ngọc Duy: 8/10
Người nhận xét
(Ký tên và ghi rõ họ tên)
Nguyễn Công Hoan
Trang 10LỜI CẢM ƠN
Sau khi trải qua một kỳ học tập cũng như suốt quá trình gắn bó tại trường
Đại học Công Nghệ Thông Tin, nhóm chúng em xin gửi lời cảm ơn đến tất cả các thầy cô trong trường vì đã quan tâm, giúp đỡ, hướng dẫn tận tình cho chúng em.
Đặc biệt là thay Nguyễn Trinh Đông vi đã tận tinh và trực tiếp giảng dạy nhóm chúng em, những lời góp ý cũng như truyền đạt của thầy đã góp phần ảnh hưởng rất
lớn tới định hướng đô án của nhóm em Trong quá trình thực hiện cũng như quá trình làm báo cáo, nhóm chúng em khó lòng tránh khỏi những sai sót, chúng em mong thầy
bỏ qua Cam on thay vì đã luôn động viên và sát cánh bên chúng em từ những bước
đi ban đầu cho tới những khó khăn gặp phải trong quá trình làm việc Những lời động
viên hay những kiến thức quý báu của thầy sẽ là nền tảng, hậu phương vững chắc chắp cánh cho tụi em phát triển trên con đường sự nghiệp sau này.
Chúng em xin chân thành cảm ơn!
Trang 111.2.3 Phạm vi nghiên cứu 1.2.4 Nội dung nghiên cứu
1.2.5 Kết quả hướng tới
Trang 122.5.2 Ưu điểm của Docker 20
2.5.3 Docker engine 21
2.6 RabbitMQ 21
2.6.1 Khai niệm 21 2.6.2 Ưu điểm của RabbitMQ 22
2.6.3 Các tính năng của RabbitMQ 22
CHƯƠNG 3: HE THONG KHUYEN NGHỊ 24
3.1 Giới thiệu 24 3.2 Các thông tin chung 24
3.2.1 Cách sử dụng thông tin về người dùng 24
3.2.2 Knowledge Discovery in Database (KDD) 25 3.3 Các kỹ thuật của khuyến nghị 26
3.3.1 Khuyến nghị dựa trên các luật kết hợp 26
3.3.2 Khuyến nghị dựa trên sự cộng tác 27
3.3.3 Khuyến nghị đựa trên nội dung 30
3.3.4 Khuyến nghị phối hợp 32 3.3.5 Khuyến nghị linh hoạt dựa trên các hành vi của người dùng 32
3.4 Hướng phát triển và sử dụng dữ liệu trong ứng dụng của nhóm 36
3.4.1 Tập đầu vào đữ liệu 36 3.4.2 Phương pháp phát triển của hệ thống 36
CHƯƠNG 4: PHAN TÍCH THIET KE HE THONG 38
4.1 Phân tích yêu cầu hệ thống 38
4.1.1 Xác định vấn đề 38 4.1.2 Xác định phạm vi bai toán 38
4.1.3 Xác định các bên liên quan 39
4.1.4 Xác định không gian địa lý hoạt động và các thuộc tính của không
gian 39
4.1.5 Xác định mối quan hệ giữa sự vật và sự việc trong không gian bài
toán: 39
4.1.6 Phạm vi kiến thức để giải bài toán (chuyên môn, nghiệp vụ) 39
4.1.7 Xác định loại bài toán 40
4.1.8 Tổ chức thực hiện 40
4.2 Thiết kế hệ thống thương mại điện tử 42
4.2.1 Mô tả kiến trúc 42
Trang 134.2.1.1 Scenarios 4.2.1.2 Logical views
4.2.1.3 Process views
4.2.1.4 Deployment view 4.2.1.5 Physical view
4.2.2 Cac mục tiêu và ràng buộc về kiến trúc
4.2.2.2 Phía máy chủ 4.2.2.3 Phía khách hàng 4.2.2.3 Bảo mật
43 43
43 44
44 44
44
45
45 45 45
46
46 47
48 49 49
52 55
55
56 59 63 63 65 66
66
67 68 69 69
70
Trang 144.3.10 Bảng Coupon
4.4 Thiết kế kiến trúc hệ thống
4.4.1 Docker Block 4.4.2 Dot Net Backend Block
4.6.1.3 Process views 4.6.1.4 Deployment view 4.6.1.5 Physical view
4.6.2 Cac mục tiêu và ràng buộc về hệ thống khuyến nghị
CHUONG 5: KET QUA ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIEN
74
75 76 81 81 81 81 81 81 81 82
82 82 82 85 90 91
Trang 15Hình 2.3.3: Mô hình của SQL Server
Hình 2.4.1: Khái niệm Python
Hình 4.2.5.1 Sơ đồ tuần tự “Integrate recommendation service”
Hình 4.2.5.2 Sơ đồ tuần tự “Người dùng tạo đơn hàng”
Hình 4.2.5.3 Sơ đồ tuần tự “Người dùng thanh toán giỏ hàng”
Hình 4.2.5.4 Sơ đồ tuần tự “Người dùng thêm sản phẩm”
Hình 4.2.5.5 Sơ đồ tuần tự “ Người dùng quản lý giá thành”
Hình 4.2.5 Sơ đồ hoạt động “Người dùng tạo đơn hàng”
47
54 55 55 56
57
57 58
Trang 16Hình 4.2.5 Sơ đồ hoạt động “Người dùng thanh toán”
Hình 4.2.5 Sơ đồ hoạt động “Người dùng quan lý thông tin sản phẩm” 60
Hình 4.2.5 Sơ đồ hoạt động “Người dùng quản lý giá thành”
Hình 4.3: Thiết kế cơ sở dữ liệu
Hình 4.4 Kiến trúc hệ thống
Hình 5.1.1.1: ma trận đầu vào của ứng dụng
Hình 5.1.1.2: ma trận tương quan giữa người dùng
Trang 17DANH MỤC BẢNG
Bảng 1 - Các loại dữ liệu sử dụng trong hệ thống khuyến nghị 24
Trang 18DANH MỤC TU VIET TAT
SSAS Microsoft SQL Server | Công cụ trực quan SQL database sử
Analysis Services dung trén Microsoft CSDL Co sở dữ liệu
Knowledge discovery 1n database
Framework class
library
Quá trình bao gồm việc chuẩn bị dữ
liệu và lựa chọn, làm sạch dữ liệu,
kết hợp kiến thức trước khi vào tập
hop dt liệu và giải thích các giải
pháp chính xác từ các kết quả quan
sát được.
Là một trong những thuật toán học
có giám sát đơn giản nhất được sửdụng nhiều trong khai phá dữ liệu và
học máy Ý tưởng của thuật toán này
là nó không học một điều gì từ tập
dữ liệu học
Là một khái niệm cơ sở dữ liệu mà
các chuyên gia thường tìm kiếm khiđánh giá các cơ sở đữ liệu và kiến
trúc ứng dụng Đối với một cơ sở dữliệu đáng tin cậy tất cả bốn thuộc
tính cần đạt được
Là một kỹ thuật lập trình cho phép
lập trình viên tạo ra các đối tượng
trong code trừu tượng hóa các đôi
tượng.
Visual studio code Công cụ lập trình
FCL là một tập hợp các class,
namespace, interface và các kiểu dữ
liệu (string, number ) được sử dụng
dé xây dựng nhiều chức năng và các
loại ứng dụng khác nhau như ứng
dụng web hay desktop
Trang 19TÓM TẮT KHÓA LUẬN
Hệ thống thương mại điện tử toàn cầu đã phát triển sâu rộng trong những nămgần đây, Việt Nam cũng không năm ngoài xu thế đó, đặc biệt trong giai đoạn dịchbệnh Thương mại điện tử đã khắng định vai trò to lớn trong giao thương Bên cạnh
sự những ưu điểm đó, thương mại điện tử còn một số vấn đề như thông tin hàng hóa
phụ thuộc vào sự trung thực của người bán, khách hàng không trực tiếp xem hànghóa Hàng giả và hàng thật khó phân biệt, do chưa áp dụng được truy xuất nguồn gốc
Đồng thời, quá trình vận chuyên hàng hóa cũng nảy sinh nhiều vấn đề như hàng bị
tráo, bị va đập gây sứt mẻ, trong khi đó khách hàng là người lãnh nhận rủi ro Tức là
chất lượng cung cấp dịch vụ gặp nhiều vấn đề Một khía cạnh nữa, khi xây dựng trang
web thương mại điện tử, có một số mục tiêu phải được tính đến, một trong số đó là
cách tăng hiệu quả của trang web dé dam bảo lượt truy cập của khách hang và datđược lợi nhuận cần thiết Đối với những nhà cung cấp trung thực muốn nhận phảnhồi của khách hàng để phục vụ được tốt hơn, bán được nhiều hàng hơn, với côngnghệ và chỉ phí hiện tại khó có thể thu thập các ý kiến khách hàng riêng lẻ hoặc khảo
sat trên thi trường.
Hiện nay có một phương pháp nồi bật dé phân tích các nhận định, đánh giá của khách hàng khi mua hàng trên hệ thống thương mại điện tử Dựa trên các phân tích
các dữ liệu, khách hàng có thông tin về sản phẩm và chất lượng dịch vụ nhằm mục
đích khuyến khích khách hàng lựa chọn được sản phẩm và dịch vụ chất lượng Đồng
thời, giúp cho người bán hang có một công cụ nắm bắt được thị hiéu của khách hàngtốt hơn dé gia tăng doanh thu
Bên cạnh những trang thương mại điện tử lớn như Amazon, Alibaba, Tiki,
Shopee, v.v còn có nhiều công ty, hệ thống chuỗi cũng mong muốn xây dựng các
trang thương mại điện tử của riêng họ Tuy nhiên, không phải hệ thống thương mạiđiện tử nào cũng có khả năng tài chính và nhân lực để xây dựng riêng cho họ một hệthống khuyến nghị Một bài toán đặt ra liệu có thể xây dựng một hệ thống khuyếnnghị đành cho các trang thương mại điện tử có nguồn lực hữu hạn mà vẫn có đầy đủ
Trang 20các chức năng về phân tích, đánh giá và đưa ra khuyến nghị dựa trên các hành vi và
phản hồi của khách hàng?
Xuất phát từ lý do trên chúng em lựa chọn đề tài “Hệ thống khuyến nghị dành
cho thương mại điện tử” Đề tài hướng đến xây dựng một hệ thống khuyến nghị độc
lập với các hệ thống thương mại điện tử, khi các trang thương mại điện tử có nhu cầu,
sẽ kết nối đến hệ thống này đề trao đồi thông tin Đề tài tập trung tìm hiểu các phươngpháp khuyến nghị trong hệ thống thương mại điện tử sau đó áp dụng thử nghiệm trênứng dụng bán hang di động Khóa luận được tô chức thành năm chương Chương 1giới thiệu tổng quát về đề tài, phạm vi nghiên cứu, những kiến thức áp dụng trongkhóa luận và kết quả hướng tới Chương 2 trình bày về các công nghệ và kiến thức
sử dụng trong khóa luận gồm có ngôn ngữ lập trình Dart và nền tảng Flutter để xâydựng phần frontend cho ứng dụng trong môi trường di động Phía backend, khóa luận
sử dụng công nghệ NET của Microsoft Cụ thé, khóa luận sử dụng ASP.NET dé xây
dựng các mô đun, Webservice, xử lý, truy vấn và cập nhật đữ liệu lên Cơ sở dữ liệu.Chương 3 Khóa luận trình bày các yếu tố liên quan và các cách tiếp cận cũng nhưthuật toán được triển khai trong hệ thống khuyến nghị Đề phát triển hệ thống khuyếnnghị, hiện nay có một số cách tiếp cận chính như Collaborative Recommender system,
Content-based recommender system, Demographic based recommender system,
Knowledge based recommender system va Community-based, bên cạnh đó con một
số cách tiếp cận khác [1] Trong khóa luận này chúng em sử dụng phương pháp
Collaborative Filtering dé trién khai Chương 4 Phân tích thiết kế hệ thống Trongchương này, Khóa luận phân tích các chức năng của hệ thống khuyến nghị, người
dùng và dữ liệu dé thiết kế hệ thống Cuối cùng là Chương 5 trình bày kết qua đạtđược và hướng phát triển tiếp theo
Qua quá trình thực hiện Khóa luận, chúng em đã năm được nhiều kiến thức vềlĩnh vực khai phá tri thức, quy trình phát triển phần mềm, đặc biệt phan mềm dựa trênviệc khai thác thông tin người dùng và các sản phẩm thương mại điện tử Những kiếnthức trong khóa luận giúp chúng em rất nhiều trong việc nâng cao trình độ và định
hướng công việc trong tương lai.
Trang 21CHUONG 1: GIỚI THIỆU TONG QUAN
1.1 Thông tin nhóm
1.2.1 Bài toán thực tế
Mô hình thương mại điện tử đã khăng định vai trò và ưu thế trước mô hình kinhdoanh truyền thống và đã phổ biến như Amazon, Alibaba ở phạm vi quốc tế, đối với
phạm vi trong nước các trang thương mại điện tử như Tiki, Shopee, Lazada, v.v đã
thành công và đem lại nhiều lợi ích cho người tiêu dùng Các ứng dụng này thành
công nhờ việc tối đa hóa về các mảng cung cấp các dịch vụ, hàng hóa
Cũng vì thế việc tối đa hóa các giao địch trên các ứng dụng E-Commerce cũng làmột bài toán cần phải giải quyết và cách giải quyết bài toán này có thé thông qua các
ứng dụng khuyến nghị cho hệ thống
1.2.2 Tổng quan đề tàiNhóm đã đề ra kế hoạch phát triển một ứng dụng di động dé phuc vu cho viéc
mua sam cho người dùng va ứng dung Decee là giải quyết cho van dé này
E-shop cung cap các dung cụ dé cho người dùng tương tác va sử dung dé buônban Người chủ cửa hàng có thé đưa lên các sản phẩm mong muốn, và người dùng
phổ thông có thé kiếm những mặt hang đó và mua các mặt hàng Cùng với hệ thốngadmin hệ thống dam bảo giá cả phải chăng và người dùng luôn không bi lừa đảo, kèm
theo đó là các yếu tố bảo mật đảm bảo thông tin của người dùng sẽ không bị lộ ra
ngoài.
Trang 22Tiếp theo sau giai đoạn này là việc tối đa hóa số lượng các giao dịch thông qua
hệ thống khuyến nghị tích hợp vào chương trình Hệ thống này sẽ hỗ trợ dự đoán các
sản phâm mà người dùng có thé thích hoặc sẽ mua tiếp theo dé khuyến nghị cho người
dùng.
1.2.3 Phạm vi nghiên cứu
Phạm vi bài toán chỉ bao gồm các nghiệp vụ của một ứng dụng của một ứng dụng
E-commerce hỗ trợ việc mua sắm trực tuyến Ứng dụng không di sâu vào các nghiệp
vụ nhập kho, quản lý nhân viên.
Bài toán cũng xử lý thông tin của người dùng để có thể xây dựng hệ thống
khuyến nghị đưa tới người dùng các sản phẩm mà người dùng có thé thích nhất
1.2.4 Nội dung nghiên cứu
Các dich vụ liên quan đến E-commerce với các tinh năng cơ bản của một ứngdụng buôn bán hàng hóa trực tuyến Ứng dụng này giúp cho các chủ cửa hàng trựctuyến có thé quản lý hang hóa của mình, đồng thời là nơi cho các người dùng phổthông có thể mua hàng hóa với trải nghiệm tốt nhất khi mua hàng online
Hệ thống khuyến nghị cũng là chủ đề lớn trong lần làm khóa luận lần này với
mục đích là tối ưu hóa trải nghiệm của người dùng Cùng với E-commerce app và hệthống khuyến nghị sẽ cho thay được kha năng sử dụng dữ liệu của người phát triển
cũng như là khả năng đáp ứng nhu cầu cho các ứng dụng hiện tại
1.2.5 Kết quả hướng tới
Chủ shop: ứng dụng hỗ trợ chủ cửa hàng quản lý hàng hóa một cách tiện lợi,
nhanh chóng, tạo ra các coupon dé thu hút người dùng
Về phía khách hàng phổ thông: Ung dụng hỗ trợ mua hàng trực tuyến với quytrình nhanh chóng, đơn giản, theo dõi tình trạng đơn hàng một cách chỉ tiết, nâng cao
trải nghiệm người dùng với giao diện tiện dụng và dễ sử dụng.
Về phía ứng dụng: phải cho người dùng trải nghiệm tốt và khuyến nghị cácmặt hàng đúng, hợp nhu cầu của khách hàng vào lúc hiện tại
Trang 231.3 Công cụ sử dụng
Trong quá trình xây dựng phần mềm, nhóm đã sử dụng các phần mềm sau:
e Visual Studio IDE: IDE hỗ trợ xây dựng các ứng dụng liên quan tới
.NET (server)
e Visual Studio Code: hỗ trợ xây dựng ứng dụng giao diện người dùng
(Flutter)
e Mysql server management: hỗ trợ nhóm lưu trữ dữ liệu cũng như là các
thao tác trên cơ sở dữ liệu
© Google Colab: hỗ trợ nhóm xây dựng các model, trực quan hóa dữ liệu,
training các bang dir liệu dé xây dựng hệ thống khuyến nghị
Trang 24https://colab.research.google.com/drive/1543IwPEb6_Fuj2G-CHƯƠNG 2: CÔNG NGHỆ TRIEN KHAI
Chương này Khóa luận trình bày các công nghệ nền tang dé phát triển hệ thống
Mục 2.1 giới thiệu Flutter và Dart để xây dựng ứng dụng trên thiết bị di động, ứngdụng này sẽ hiển thị các mặt hàng dé khách hàng mua hàng hóa, nhận xét, và phảnhồi thông tin về hàng hóa và chất lượng dịch vụ Mục 2.2 giới thiệu công nghệ NET
và các kiến thức liên quan, Khóa luận sử dụng ASP.NET dé xây dựng phan Backend
cho ứng dụng Tiếp theo, Mục 2.3 trình bày về SQL Server, máy chủ cơ sở dữ liệu
này lưu trữ các thông tin được lay từ khách hàng, dữ liệu đã xử lý dé phản hôi lại cho
ứng dụng di động Cuối cùng là mục Python, nhờ tính ưu việt của Python trong xử lý
dữ liệu trong lĩnh vực học máy, Khóa luận sử dụng Python để xử lý đữ liệu về hệthống khuyến nghị
2.1 Flutter và Dart
2.1.1 Giới thiệu
Flutter được Google giới thiệu là một người mới trong thế giới ứng dụng di động
Là một SDK mới của Google dành cho các thiết bị di động giúp developers vàdesigners xây dựng nhanh chóng ứng dụng dành cho các thiết bị đi động (Android,iOS) Flutter là dự án mã nguồn mở đang trong giai đoạn thử nghiệm Flutter bao gồmReactive framework và công nghệ hién thị 2D (2D rendering engine) và các công cụphát triển (development tool) Các thành phần này làm việc cùng nhau giúp ta thiết
kế, xây dựng, test, debug ứng dụng
2.1.2 Ưu nhược điểm của Flutter và DartCác nhà phát triển tại Google và các nơi khác sử dung Dart dé tạo các ứng dụngchất lượng cao, quan trọng cho 10S, Android và web Với các tính nang nhắm đến sựphát triển phía khách hàng, Dart rất phù hợp cho cả ứng dụng di động và web Dartgiúp bạn tạo ra những trải nghiệm đẹp, chất lượng cao trên tất cả các màn hình:
e_ Một ngôn ngữ được tối ưu hóa cho client
e Framework mạnh mẽ
Trang 25e Công cụ linh hoạt
2.1.3 Kiến trúc Flutter
Flutter được thiết kế như một hệ thống nhiều lớp, có thể mở rộng Nó tồn tại đưới
dạng một loạt các thư viện độc lập mà mỗi thư viện phụ thuộc vào lớp bên dưới.
Không có lớp nào có quyền truy cập đặc quyền vào lớp bên dưới và mọi phần của
mức khung được thiết kế dé trở thành tùy chọn và có thé thay thé
Framework Cupertino
Dart P
Widgets
Rendering Animation Painting Gestures
Foundation
Engine Service Protocol Composition Platform Channels
C/C++
Dart Isolate Setup System Events
Dart Runtime Mgmt Frame Scheduling Asset Resolution
Frame Pipelining Text Layout
Embedder : : :
Platform-specific Render Surface Setup Native Plugins App Packaging
Thread Setup Event Loop Interop
Hình 2.1.3 Kiến trúc hệ thống Flutter
e Embedder: Platform-specific:
Đối với hệ điều hành cơ bản, các ứng dung Flutter được đóng gói giống như bat
kỳ ứng dụng gốc nào khác Embedder Platform-specific cung cấp một đầu vào; phốihợp với hệ điều hành co bản dé truy cập vào các dịch vụ như hiển thị bề mặt, khả
Trang 26năng truy cập và đầu vào; và quản lý vòng lặp sự kiện tin nhắn Trình nhúng được
viết bằng ngôn ngữ phù hợp với nén tang: hiện tại là Java và C ++ cho Android,
Objective-C / Objective-C ++ cho iOS và macOS, và C ++ cho Windows và Linux.
Sử dụng công cụ nhúng, mã Flutter có thé được tích hợp vào ứng dụng hiện có dướidạng mô-đun hoặc mã có thể là toàn bộ nội dung của ứng dụng Flutter bao gồm một
sô trình nhúng cho các nên tảng mục tiêu chung.
e Flutter Engine:
Cốt lõi của Flutter là Flutter Engine, phan lớn được viết bằng C ++ và hỗ trợ cácnguyên tắc cần thiết để hỗ trợ tất cả các ứng dụng Flutter Động cơ chịu trách nhiệmsắp xếp các cảnh tông hợp bat cứ khi nào cần son một khung mới Nó cung cấp triểnkhai cấp thấp của API cốt lõi của Flutter, bao gồm đồ họa, bố cục văn bản, tỆp vàmạng I/O, hỗ trợ trợ năng, kiến trúc plugin và chuỗi công cụ biên dịch và thời gian
chạy Dart.
e Flutter Framework:
Flutter Framework , cung cấp một framework hiện dai được viết bằng ngôn ngữDart Nó bao gồm một bộ thư viện nền tảng, bó cục và nền tảng phong phú, bao gồmmột loạt các lớp Làm việc từ dưới lên trên, gồm:
Foundation classes và các dich vụ khối xây dựng nhu animation, painting, and
gestures cung cấp các nội dung trừu tượng thường được sử dụng trên nền tang cơ bản
Rendering layer cung cấp một sự trừu tượng dé xử lý bố cục Với lớp này, bạn
có thé xây dựng một cây các đối tượng có thể kết xuất Bạn có thé thao tác động các
đối tượng này, với cây tự động cập nhật bố cục dé phản ánh các thay đổi của bạn
Widgets layer là một phần trừu tượng hóa thành phần Mỗi đối tượng kết xuất
trong lớp kết xuất có một lớp tương ứng trong lớp vật dụng Ngoài ra, lớp vật dụng
cho phép bạn xác định tô hợp các lớp mà bạn có thé sử dụng lại Đây là lớp mà tại đó
mô hình lập trình phản ứng được giới thiệu.
Trang 27Các thư viện Material và Cupertino cung cấp các bộ điều khiển toàn diện sử dung
các thành phan native của lớp widget dé triển khai ngôn ngữ thiết kế Material hoặc
Class main extends StatefulWidget
Và dé một state cần có thé render được thì phải override các phương thức build
cua state đó với cú pháp:
@override
Widget build(buildcontext context)
Và cuối cùng dé có thé đổi state của widget thì sé cập nhật thông qua phương
thức setState() của widget
Các chức năng nên sử dụng stateful Widget là:
Stateful
Checkbox TextField
Hình 2.1.4.1 Ví dụ StatefulWidget
Trang 28e StatelessWidget
Stateless Widget là một loại widget tĩnh và không thé tự thay đổi được những gi
mà nó hiển thị sau khi render
Dé có thé tạo ra một Stateless Widget cần phải kế thừa từ lớp StateLess widgetcủa flutter và cần phải override lại một lớp build dé có thé render được widget
Class main extends StatelessWidget
@override
Widget build (buildcontext context)
Stateless widget không thê tự thay đôi được chính nó nhưng nếu widget cha thay
đổi thi stateless widget sẽ được khởi tao lại
Các trường hợp nên sử dụng StateLess Widget:
Stateless
Hình 2.1.4.2 Ví dụ StatelessWidget
2.1.5 Clean Architecture
Clean Architecture được xây dựng dựa trên tư tưởng "độc lập" kết hợp với các
nguyên lý thiết kế hướng đối tượng(đại diện tiêu biéu là Dependency Inversion) Độc
lập ở đây nghĩa là việc project không bị phụ thuộc vao framework và các công cụ sử
dụng trong quá trình kiểm thử
Kiến trúc của Clean Architecture chia thành 4 layer với một quy tắc phụ thuộc
Các layer bên trong không nên biết bất kỳ điều gì về các layer bên ngoài Điều này
10
Trang 29có nghĩa là nó có quan hệ phụ thuộc nên "hướng" vào bên trong Nhìn vao hình vẽ minh họa sau đây:
Enterprise Business Rules Application Business Rules _ | Interface Adapters
_| Frameworks & Drivers
Entities
Hinh 2.1.5 Clean Architecture
e Entities: là khái niệm dùng dé mô tả các Business Logic Đây là layer quan
trọng nhất, là nơi bạn thực hiện giải quyết các vấn đề - mục đích khi xây dựng
app Layer này không chứa bat kỳ một framework nào, bạn có thé chạy nó makhông cần emulator Nó giúp bạn dễ dàng test, maintain và develop phần
business logic.
e Usecase: chứa các rule liên quan trực tiếp tới ứng dụng cục bộ
(application-specific business rules).
e Interface Adapter: tập hợp các adapter phục vụ quá trình tương tác với các
công nghệ.
e Framework and Drivers: chứa các công cụ về cơ sở dữ liệu và các
framework, thông thường bạn sẽ không phải lập trình nhiều ở tầng này Tuy
nhiên cân chắc chăn vê mức ưu tiên sử dụng các công cụ này trong proJect.
11
Trang 302.1.5.1 Ưu điểm
@ Mạch lạc - dé xem (bản gốc ghi screaming với dụng ý là chỉ cần nhìn cau trúc
package cũng có thê hiểu được mục đích và cơ chế hoạt động của ứng dụng)
e Linh hoạt - thé hiện ở kha năng độc lập, không phụ thuộc vào framework,
database, application server.
e Indirect - quá nhiều interface.
e© Công kénh - thé hiện ở việc có quá nhiều class so với các project cùng mục
tiêu (tuy nhiên các class được thêm vào đều có chủ ý và đáp ứng đúng quy
định khi triển khai kiến trúc)
2.2 Bộ khung phất triển phần mềm NET
2.2.1 Khái niệm
NET là một nền tảng lập trình được phát triển bởi Microsoft, chạy trên hệ điềuhành Microsoft Window .NET không phải là ngôn ngữ lập trình, mà là nền tảng chophép các ngôn ngữ lập trình khác nhau như C# sử dụng dé tạo nên các website, ứng
dụng trên Internet và bao gồm một thư viện lớp lớn có tên là Framework Class Library
Trang 312.2.2 Ưu nhược điểm của NET
Theo như các ý ở trên NET là một môi trường hoàn thiện và đầy đủ đặc biệt các
các ứng dung web .NET hỗ trợ rất nhiều từ tao api va deployment kèm theo đó là các
thư viện hỗ trợ rất mạnh vì vậy nếu làm web app mà bỏ qua NET có thể là một bất
lợi lớn Và nhóm chọn NET với 2 tiêu chi:
e Thuận tiện cho việc triển khai
® Dê mo rong chiêu ngang
2.2.3 Kiến trúc MVC của NETMVC là tên gọi tắt của Model — View — Controller — một mẫu kiến trúc
(architectural pattern) lâu đời và rất phô biến trong phát triển phần mềm
Mẫu kiến trúc MVC được áp dụng rộng rãi trong ứng dụng web, desktop vàmobile Trên thực tế, mẫu MVC nguyên bản vốn được xây dựng dành cho ứng dụngvới giao diện đồ họa tương tự ứng dụng desktop chứ không phải cho ứng dụng web.Tuy nhiên, hiện nay mẫu kiến trúc này được sử dụng rộng rãi nhất trong các web
framework.
Tuy nhiên, dù van dụng ở đâu va theo cách nao, mau này cũng hướng tới phan
tách việc biéu diễn dữ liệu khỏi quản lý và xử lý dữ liệu ĐỀ tạo ra sự phân tách này,mẫu MVC phân chia ứng dụng ra 3 thành phần với nhiệm vụ cơ bản như sau:
e Model: dữ liệu và trạng thái của ứng dụng
e View: khuôn mẫu dành cho hiển thị dữ liệu
e Controller: cập nhật model và lựa chọn view
13
Trang 32SQL server (tên đầy đủ: Microsoft SQL Server) là một loại phần mềm được
phản triển bởi microsoft được sử dụng dé lưu trữ dữ liệu dựa trên tiêu chuẩn RDBMS
SQL Server cung cấp đầy đủ các công cụ cho việc quản lý từ giao diện người
dùng (GUI), đến sử dụng các câu truy vấn SQL SQL Server hỗ trợ nhiều nền tảng đi
kèm như là ASP.NET, C# để xây dựng winform và nếu dé độc lập thì cũng có thé
hoạt động riêng lẻ.
14
Trang 33SQL Server
Hình 2.3.1: Logo SQL Server
2.3.2 Ưu nhược điểm của SQL ServerKèm theo các điều kiện ở trên SQL Server hỗ trợ rất tốt từ việc phát triển sảnphẩm, vi dụ như 1a sql, hỗ trợ các framework như là entity framework ở trong các môhình NET, dễ dàng truy xuất dit liệu bang các câu SQL, v.v cho tới việc deployment
sản phẩm trên azure bằng SQL Server nhờ cùng cấu trúc nên có thể dễ dàng mua một
may chu SQL server trên azure va deploy.
Trang 34Các thành phần cơ bản của SQL server.
- Database Engine: chứa dit liệu dưới dang table, có thé tự điều chỉnh
- Integration Services: là tập hợp các đối tượng lập trình, các công cụ dé
sao chép, di chuyển và chuyền đổi dit liệu
- Analysis Services: dịch vụ phân tích dữ liệu của Microsoft
- Notification Services: nén tảng cho việc phát triển và triển khai các
ứng dụng soạn và gửi thông báo Có chức năng thông báo tới nhiều thiết
bị theo lập trình lập lịch.
- Reporting Services: tạo, quản lý , triển khai báo cáo
- Full Text Search Services: thành phan đặc biệt đánh chữ mục dir liệu
văn bản không cấu trúc được lưu trong SQL server
- Service Broker: môi trường lập trình, tao ra các ứng dụng trong việc
tao instance.
2.4 Hé thong Python
2.4.1 Khai niém
Python là ngôn ngữ lập trình hướng đối tượng da năng Ngôn ngữ nay sở hữu cau
trúc dữ liệu cấp cao mạnh mẽ và hệ thống thư viện lớn Python sử dụng cơ chế cấp
phát bộ nhớ tự động với cú pháp đơn giản và rõ ràng, giúp người học dễ tiếp cận và
làm quen, kê cả đôi với những người mới bắt đâu học lập trình.
16
Trang 35Hình 2.4.1: Khái niệm Python
e Tính năng chính của Python:
cấu trúc Python khá rõ ràng, cho phép viết mã lệnh với số lần gõ phímtối thiểu Ngày nay, Python được đánh giá là ngôn ngữ lý tưởng cho
việc bắt đầu học lập trình
Mã nguồn mở và hoàn toàn miễn phí: Khác với nhiều ngôn ngữ lậptrình bậc cao, Python cho phép sử dụng một cách miễn phí tất cả phầnmềm, chương trình được viết Mã nguồn mở sở hữu cộng đồng đôngđảo, giúp bạn giải đáp mọi thắc mắc và liên tục cập nhật, cải thiện
Tương thích nhiều nền tảng: Python dễ dàng tương thích với nhiềunên tảng như Windows, MacOS, Linux Thậm chí là di chuyền qua lại
giữa các nền tảng cũng không gặp nhiều khó khăn
Khả năng nhúng và mở rộng: Có thê kết hợp cùng các ngôn ngữ lập
trình khác đề phát triển các ứng dụng phức tạp
Tự động chuyển déi code: Khi dùng Python, người sử dụng hoàn toàn
không phải lo các vấn đề về quản lý bộ nhớ, dọn dẹp dữ liệu Python
sẽ tự động chuyên code sang ngôn ngữ máy tính có thé hiểu
Thư viện lớn: Nhờ số lượng thư viện không 16 của mình Python hoàn
toàn đáp ứng được mọi nhu cầu lập trình khác nhau
17
Trang 36le) Ngôn ngữ lập trình hướng đối tượng: Dù được đơn giản hóa cho
người mới học song Python vẫn giữ bản chất hướng đối tượng Giải
quyết các van dé trong lập trình một cách trực quan, dễ hiểu
2.4.2 Ưu nhược điểm của hệ thống Python
e Uudiém:
le) Đơn giản: Cú pháp đơn giản giúp cho người lập trình dễ dàng đọc và
tìm hiểu
Tốc độ: Python có tốc độ xử lý nhanh hơn so với ngôn ngữ PHP
Tương tác: Chế độ tương tác cho phép người lập trình thử nghiệm
tương tác sửa lỗi của các đoạn mã.
Chất lượng: Thư viện có tiêu chuẩn cao, Python có khối cơ sở dit liệukhá lớn nhằm cung cấp giao diện cho tất cả các CSDL thương mại lớn.Thuận tiện: Python được biên dịch và chạy trên tất cả các nền tảng lớn
le) Python không có các thuộc tính như :protected,private hay public,
không có vòng lặp do while và switch case.
Python mặc dù nhanh hơn so với PHP, nhưng lại không nhanh hơn so
Trang 37Flask là một micro-framework Điều này có nghĩa Flask là một môi trường độclập, ít sử dụng các thư viện khác bên ngoài Do vậy, Flask có ưu điểm là nhẹ, có rất
ít lỗi do ít bị phụ thuộc cũng như dễ dàng phát hiện và xử lý các lỗi bảo mật.
Colab: Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google
Research, nó cho phép chạy các dòng code python thông qua trình duyệt, đặc biệt phù
hợp với Data analysis, machine learning và giáo dục Colab không cần yêu cầu càiđặt hay cau hình máy tính, mọi thứ có thé chạy thông qua trình duyệt, ban có thể sửdụng tài nguyên máy tinh từ CPU tốc độ cao và cả GPUs và cả TPUs đều được cung
cấp cho bạn
CL
Old
Hinh 2.4.3: Google Colab
Ngrok: Ngrok là công cụ tao đường ham (tunnel) giữa localhost va internet Giúpngười khác mạng có thể truy cập được localhost thông qua custom domain của ngrok
19
Trang 382.5 Docker
2.5.1 Khái niệm
Docker là nền tảng phần mềm cho phép bạn xây dựng, kiêm thử và triển khai ứngdụng một cách nhanh chóng Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn
hóa được gọi là container có mọi thứ mà phần mềm cần đề chạy, trong đó có thư viện,
công cụ hệ thống, mã và thời gian chạy Bằng cách sử dụng Docker, bạn có thể nhanhchóng triển khai và thay đôi quy mô ứng dụng vào bat kỳ môi trường nào và biết chắc
răng mã của bạn sẽ chạy được.
2.5.2 Ưu điểm của Docker
e Không như máy ảo Docker start và stop chỉ trong vài giây.
e Bạn có thê khởi chạy container trên mỗi hệ thống mà bạn muốn
© Container có thé build và loại bỏ nhanh hơn máy ảo
e Dễ dàng thiết lập môi trường làm việc Chỉ cần config 1 lần duy nhất và không
bao giờ phải cài đặt lại các dependencies Nếu bạn thay đổi máy hoặc có người
mới tham gia vào project thì bạn chỉ cần lây config đó và đưa cho họ
20
Trang 39® Nó giữ cho word-space của bạn sạch sẽ hơn khi bạn xóa môi trường mà ảnh
hưởng đến các phần khác
2.5.3 Docker engine
Docker Engine cho phép phát triển, lắp ráp, vận chuyển và chạy các ứng dụngbang cách sử dụng các thành phan sau:
e Docker Daemon: Một quy trình nền liên tục quản lý Docker images,
containers, networks, và storage volumes Docker daemon liên tục lắng nghecác yêu cầu API Docker va xử lý chúng
e Docker Engine REST API: Một API được các ứng dung sử dụng dé tương
tác với Docker daemon Nó có thé được truy cập bởi một may khách HTTP
e Docker CLI: Một ứng dụng khách giao điện dòng lệnh dé tương tác với trình
nền Docker Docker đơn giản hóa đáng kế cách quản lý các phiên ban
RabbitMQ là một mô hình Message Broker sử dung các giao thức Advanced message
queue protocol-AMQP (hàng quan ly hang đợi message) Hiểu một cách đơn giản,
21
Trang 40RabbitMQ đóng vai trò như là một người vận chuyền message trung gian và quản lý
các queue Mặt khác, RabbitMQ cũng hỗ trợ lưu trữ dữ liệu một cách hiệu quả và an
toàn trước khi được gửi đi nơi khác.
Trong các hệ thông quy mô lớn, việc trao đôi message giữa các thành phân trở nên
khó nhắn và phức tap hơn Do đó, RabbitMQ được ra đời giống như một giải pháp
hữu hiệu dành cho cấu trúc hệ thống Hơn thế nữa, dung lượng của RabbitMQ không
quá nặng nên lập trình viên có thê triên khai trên cả môi trường cô định lan Cloud.
Bên cạnh đó, RabbitMQ có thé hỗ trợ các giao thức Messaging phát triển tốt trong
môi trường phân tán Từ đó liên kêt và đáp ứng nhu câu mở rộng của hệ thông.
RabbitMQ cung cấp hàng loạt công cụ khác nhau dành riêng cho các ngôn ngữ lậptrình phổ biến hiện nay là C, C++, Java, PHP, Python,
2.6.2 Ưu điểm của RabbitMQ
Phân phối xác nhận hoặc xác nhận dé tăng độ tin cậy của Message Broker
RabbitMQ là phương pháp đơn giản, an toàn dé bạn triển khai cho các đám
mây doanh nghiệp và công cộng nhờ dung lượng nhẹ.
2.6.3 Các tính năng của RabbitMQ
RabbitMQ là một trong những phần mềm được người dùng lựa chọn nhiều nhất hiện
nay với nhiêu tính năng nôi bật:
Độ tin cậy cao: RabbitMQ cho phép người dùng thao tác với nhiều tác vụ vớithời gian lưu trữ lâu dài, độ bảo mật an toàn mang đến sự yên tâm tuyệt đối.Tính linh hoạt của RabbitMQ: Trong RabbitMQ, các tin nhắn sẽ được chuyêntới route thông qua Tiếp đó, nó được chuyên qua queue
22