1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật phần mềm: Hệ thống Khuyến nghị trong thương mại điện tử

109 1 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hệ thống Khuyến nghị dành cho Thương mại Điện tử
Tác giả Do Ngoc Cuong, Dang Ngoc Duy
Người hướng dẫn TS. Nguyen Trinh Dong
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Kỹ thuật phần mềm
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 109
Dung lượng 49,41 MB

Nội dung

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 3

THONG 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 6

e 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 10

LỜ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 11

1.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 12

2.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 13

4.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 14

4.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 15

Hì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 16

Hì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 17

DANH 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 18

DANH 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 19

TÓ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 20

cá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 21

CHUONG 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 22

Tiế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 23

1.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 24

https://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 25

e 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 26

nă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 27

Cá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 28

e 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 29

có 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 30

2.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 31

2.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 32

SQL 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 33

SQL 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 34

Cá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 35

Hì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 36

le) 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 37

Flask 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 38

2.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 40

RabbitMQ đó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

Ngày đăng: 03/11/2024, 18:22