Tải bản đầy đủ (.pdf) (108 trang)

Xây dựng hệ thống quản lý và gợi ý dịch vụ logistic sử dụng data lake

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.39 MB, 108 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

NGÔ THỊ HUYỀN
NGUYỄN QUANG NGHĨA

KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG QUẢN LÝ VÀ GỢI Ý DỊCH VỤ LOGISTIC SỬ
DỤNG DATALAKE
Building the logistic service management and suggestion system with data
lake

KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM

TP. HỒ CHÍ MINH, <2021>


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

NGÔ THỊ HUYỀN – 16520543
NGUYỄN QUANG NGHĨA – 16520810

KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG HỆ THỐNG QUẢN LÝ VÀ GỢI Ý DỊCH VỤ LOGISTIC SỬ
DỤNG DATALAKE
Building the logistic service management and suggestion system with data


lake

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
Ths.NGUYỄN CƠNG HOAN

TP. HỒ CHÍ MINH, <2021>


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……………………
ngày ………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.


LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thông tin – ĐHQG TP.HCM chúng em đã được trang bị các kiến thức
cơ bản, các kỹ năng thực tế để có thể hồn thành Khóa luận tốt nghiệp của mình.
Để hồn thành khóa luận này, chúng em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Cơng nghệ Thơng tin – ĐHQG TP.HCM vì đã tạo
điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài
liệu thuận lợi cho việc tìm kiếm, nghiên cứu thơng tin.
Chúng em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Cơng Hoan đã tận tình
giúp đỡ, định hướng cách tư duy và cách làm việc khoa học. Đó là những góp ý hết
sức q báu khơng chỉ trong q trình thực hiện luận văn này mà cịn là hành trang
tiếp bước cho chúng em trong quá trình học tập và lập nghiệp sau này.
Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa,
bạn bè, tập thể lớp KTPM2016 là những người luôn sẵn sàng sẻ chia và giúp đỡ

trong học tập và cuộc sống. Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau.
Trong q trình làm khóa luận này chúng em khơng tránh khỏi được những sai sót,
chúng em kính mong nhận được sự chỉ dẫn và góp ý của q thầy cơ để khóa luận
được hồn thiện hơn.
Chúng em xin chân thành cảm ơn. Xin chúc những điều tốt đẹp nhất sẽ luôn đồng
hành cùng mọi người.

Thành phố Hồ Chí Minh, 10 tháng 01 năm 2021
Sinh viên
NGƠ THỊ HUYỀN
NGUYỄN QUANG NGHĨA


MỤC LỤC
Chương 1.

GIỚI THIỆU CHUNG...................................................................... 2

1.1. Lý do chọn đề tài ........................................................................................ 2
1.2. Đối tượng nghiên cứu ................................................................................. 3
1.3. Phạm vi nghiên cứu .................................................................................... 4
1.4. Phương pháp nghiên cứu ............................................................................ 4
Chương 2.

KIẾN THỨC NỀN TẢNG ............................................................... 5

2.1. Tổng quan về mơ hình MVC ...................................................................... 5
2.1.1.

Khái niệm ......................................................................................... 5


2.1.2.

Cấu trúc mơ hình MVC .................................................................... 5

2.1.3.

Luồng đi trong mơ hình MVC .......................................................... 6

2.1.4.

Tại sao dùng mơ hình MVC.............................................................. 7

2.1.5.

So sánh MVC Và MVP .................................................................... 8

2.2. Tổng quan về JAVA ................................................................................. 11
2.2.1.

Khái niệm ....................................................................................... 11

2.2.2.

Lý do chọn Java để phát triển server ............................................... 26

2.3. Hệ quản trị cơ sở dữ liệu MySQL ............................................................. 33
2.4. Tổng quan về ReactJS .............................................................................. 34
2.4.1.


Cơ chế hoạt động của Apache Kafka. ............................................. 36

2.4.2.

Tính năng của Apache Kafka .......................................................... 36

2.4.3.

Các thuật ngữ và khái niệm của Apache Kafka. .............................. 37

2.5. Tổng quan về Apache Flink ...................................................................... 39
2.5.1.

Tìm hiểu về khái niệm Batch và Real-time Processing ................... 40


2.5.2.

Hệ sinh thái trên Apache Flink ....................................................... 41

2.5.3.

Tính năng của Flink ........................................................................ 42

2.6. Tổng quan về Apache Zookeeper ............................................................. 43
2.6.1.

Giới thiệu về Hệ thống phân tán. .................................................... 43

2.6.2.


Ưu điểm của hệ thống phân tán ...................................................... 43

2.6.3.

Giới thiệu về ZooKeeper ................................................................ 43

2.6.4.

Khả năng mở rộng .......................................................................... 44

2.6.5.

Chế độ độc lập ................................................................................ 45

2.6.6.

Mơ hình dữ liệu ZooKeeper ............................................................ 45

2.6.7.

Znode ............................................................................................. 46

2.7. Tổng quan về Data Lake........................................................................... 46
2.7.1.

Giới thiệu tổng quan ....................................................................... 46

2.7.2.


Mục đích & Lợi ích sử dụng ........................................................... 50

2.7.3.

So sánh DataLake và Data Warehouse ............................................ 58

2.7.4.

Mơ hình hệ thống Data Lake của ứng dụng Mylogis....................... 69

Chương 3.

PHÂN TÍCH HỆ THỐNG .............................................................. 72

3.1. Xây dựng kiến trúc hệ thống..................................................................... 72
3.1.1.

Xác định yêu cầu hệ thống.............................................................. 72

3.1.2.

Phân tích yêu cầu hệ thống ............................................................. 73

3.2. Phân tích thiết kế hệ thống........................................................................ 74
3.2.1.

Sơ đồ use case ................................................................................ 74

3.2.2.


Sơ đồ lớp ........................................................................................ 76

3.2.3.

Phân tích và thiết kế CSDL............................................................. 77

3.2.4.

Thiết kế giao diện ........................................................................... 85


Chương 4.

MƠ TẢ CHỨC NĂNG GỢI Ý GĨI DỊCH VỤ .............................. 88

4.1. Cơ sở lý thuyết bài toán định tuyến .......................................................... 88
4.2. Thực nghiệm ............................................................................................ 91
Chương 5.

KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN .................... 93

5.1. Ưu điểm ................................................................................................... 93
5.2. Nhược điểm.............................................................................................. 94


DANH MỤC HÌNH

Hình 2.1: Mơ hình MVC ......................................................................................... 5
Hình 2.2: Mơ hình MVC pattern.............................................................................. 7
Hình 2.3: Mơ hình MVP .......................................................................................... 9

Hình 2.4: Mơ hình hệ thống Complier Java ........................................................... 13
Hình 2.5: Mơ hình các nền tảng JVM .................................................................... 15
Hình 2.6: Các ứng dụng của Java........................................................................... 16
Hình 2.7: Các phiên bản của Java .......................................................................... 16
Hình 2.8: Các JDK của Java .................................................................................. 17
Hình 2.9: Sprint Framework Runtime .................................................................... 19
Hình 2.10: Spring MVC ........................................................................................ 21
Hình 2.11: Spring Boot.......................................................................................... 23
Hình 2.12: Sự phát triển và độ phổ biến của MYSQL ............................................ 33
Hình 2.13: Mơ hình luồng dữ liệu một chiều của ReactJS...................................... 34
Hình 2.14: Mơ hình tổng quan của Apache Kafka ................................................. 35
Hình 2.15: Cơ chế hoạt động của Apache Kafka.................................................... 36
Hình 2.16: Các tính năng của Apache Kafka ......................................................... 36
Hình 2.17: Mơ hình các lớp khác nhau của hệ sinh thái Apache Flink ................... 41
Hình 2.18: Mơ hình mở rộng của Zookeeper Service ............................................. 44
Hình 2.19: Chế độ độc lập của Zookeeper Service ................................................. 45
Hình 2.20: Mơ hình dữ liệu Znode......................................................................... 46
Hình 2.21: Các đặc trưng của Big Data.................................................................. 49
Hình 2.22: Mục đích của Data Lake ...................................................................... 51
Hình 2.23: Mục tiêu của Data Lake ....................................................................... 53
Hình 2.24: Các tầng của hệ thống Data Lake ......................................................... 55
Hình 2.25: Mơ phỏng các lý do khiến cho Data Lake trở thành đầm lầy dữ liệu .... 57
Hình 2.26: So sánh Data Warehouse với Data Lake ............................................... 63
Hình 2.27: Các Schema của Data Lake và Data Warehouse .................................. 65


Hình 2.28: Mơ hình hệ thống Data Lake của ứng dụng Mylogis ............................ 69
Hình 2.29: Mơ hình chi tiết hệ thống Data Lake của Mylogis ................................ 70
Hình 3.1: Mơ hình nghiệp vụ cơ bản của Logisitc.................................................. 72
Hình 3.2: Mơ hình UseCase của hệ thống .............................................................. 74

Hình 3.3: Sơ đồ lớp của ứng dụng Mylogis ........................................................... 76
Hình 3.4: Giao diện đăng nhập .............................................................................. 86
Hình 3.5: Giao diện xem danh sách đơn hàng ........................................................ 86
Hình 3.6: Giao diện tạo đơn hàng .......................................................................... 87
Hình 3.7: Giao diện hiển thị gói dịch vụ gợi ý ....................................................... 87
Hình 3.8: Giao diện cập nhật trạng thái cho nhà vận chuyển .................................. 88
Hình 4.1: Đồ thị ví dụ của thuật tốn Dijkstra ........................................................ 91
Hình 4.2: Tạo map theo dữ liệu từ hệ thống ........................................................... 92


DANH MỤC BẢNG
Bảng 2-1: Bảng so sánh Data WareHouse và Data Lake ........................................ 68
Bảng 3-1: Bảng danh sách các Actors .................................................................... 75
Bảng 3-2: Bảng danh sách các UseCase................................................................. 75
Bảng 3-3: Bảng mô tả các lớp................................................................................ 77
Bảng 3-4: Bảng các tên bảng trong CSDL ............................................................. 78
Bảng 3-5: Bảng cmProvince .................................................................................. 79
Bảng 3-6: Bảng cmDistrict .................................................................................... 79
Bảng 3-7: Bảng cmWard ....................................................................................... 80
Bảng 3-8: Bảng cmLocation .................................................................................. 80
Bảng 3-9: Bảng cmRouting ................................................................................... 81
Bảng 3-10: Bảng cmContainer............................................................................... 81
Bảng 3-11: Bảng cmCurrency ............................................................................... 81
Bảng 3-12: Bảng cmStatus .................................................................................... 82
Bảng 3-13: Bảng Company.................................................................................... 82
Bảng 3-14: Bảng Customer.................................................................................... 83
Bảng 3-15: Bảng cmSurcharges ............................................................................. 83
Bảng 3-16: Bảng RulRate ...................................................................................... 83
Bảng 3-17: Bảng RulSurcharge ............................................................................. 84
Bảng 3-18: Bảng Orders ........................................................................................ 85

Bảng 3-19: Bảng Users .......................................................................................... 85
Bảng 4-1: Bảng mô tả các bước đi ......................................................................... 91
Bảng 4-2: Bảng thông tin của Map ....................................................................... 93
Bảng 4-3: Bảng mô tả các bước chạy của thuật toán .............................................. 93


DANH MỤC TỪ VIẾT TẮT


TĨM TẮT KHĨA LUẬN

Khóa luận “XÂY DỰNG HỆ THỐNG QUẢN LÝ VÀ GỢI Ý DỊCH VỤ

LOGISTIC SỬ DỤNG DATALAKE” gồm 05 chương:
Chương 1: Giới thiệu về đề tài, đưa ra các điểm nổi bật so với các ứng dụng trước.
Tiếp đến là đề xuất các giải pháp để giải quyết các vấn đề đã đặt ra. Ngoài ra, chương
1 cũng đề cập đến đối tượng nghiên cứu, phạm vi đề tài, phương pháp nghiên cứu.
Chương 2: Trình bày các kiến thức nền tảng, các công nghệ sử dụng để xây dựng
ứng dụng Mylogis, xây dựng mơ hình hệ thống DataLake của ứng dụng Mylogis.
Chương 3: Trình bày chi tiết quy trình xây dựng hệ thống, từ xác định và phân tích
u cầu bài tốn cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho ứng
dụng.
Chương 4: Tập trung trình bày thuật tốn định tuyến đường đi. Các kiến thức cần
nắm, đưa ra bài toán, cách chạy giải thuật, sau đó áp dụng vào ứng dụng Mylogis.
Chương 5: Kết luận, rút ra được các ưu nhược điểm của ứng dụng và hướng phát
triển trong tương lai.

1



Chương 1. GIỚI THIỆU CHUNG
1.1. Lý do chọn đề tài
Cùng với sự phát triển của lực lượng sản xuất và sự hỗ trơ đắc lực của cuộc cách
mạng khoa học kỹ thuật trên thế giới, khối lượng hàng hóa và sản phẩm vật chất
được sản xuất ngày càng nhiều.
Do khoảng cách trong các lĩnh vực cạnh tranh truyền thống như chất lượng hàng
hóa hay giá cả ngày càng thu hẹp, các nhà sản xuất đã chuyển sang cạnh tranh về
quản lý hàng tồn kho, tốc độ giao hàng, hợp lý hóa q trình lưu chuyển ngun vật
liệu và bán thành phẩm,.. trong cả hệ thống quản lý phân phối vật chất của doanh
nghiệp. Trong q trình đó, Logistic có cơ hội phát triển ngày càng mạnh mẽ hơn
trong lĩnh vực kinh doanh .
Logistic là sự phát triển cao, hoàn chỉnh của dịch vụ vận tải giao nhận, vận tải giao
nhận gắn liền và nằm trong logistics. Cùng với quá trình phát triển của mình,
logistic đã làm đa dạng hóa khái niệm vận tải giao nhận truyền thống. Từ chỗ chỉ
thay mặt khách hàng để thực hiện các khâu rời rạc nhưu thuê tài, lưu cước, chuận bị
hàng, đóng gói hàng, tái chế, làm thủ tục thông quan,..cho tới cung cấp dịch vụ trọn
gói từ kho đến kho(Door to Door). Từ chỗ đóng vai trị đại lý, người được ủy thác
trở thành một chủ thể chính trong các hoạt động vận tải giao nhận với khách hàng,
chịu trách nhiệm trước các nguồn luật điều chỉnh. Ngày nay, để có thể thực hiện
nghiệp vụ của mình, người giao nhận quản lý một hệ thống đồng bộ từ giao nhận tới
vận tải, cũng ứng nguyên vật liệu phục vụ sản xuất kinh doanh, bảo quản hàng hóa
trong kho, phân phối hàng hóa đúng nơi, đúng lúc, sử dụng thông tin điện tử để theo
dõi, kiểm tra.
Như vậy người giao nhận vận tải trở thành người cung cấp dịch vụ logistics.
Nhờ vào quy mô ngày càng lớn của tiến trình số hóa, chúng ta có thể thu được một
lượng dữ liệu khổng lồ từ nhiều nguồn khác nhau dọc theo chuỗi cũng ứng. Do đó,
các cơng ty hiện nay có xu hướng sử dụng Big Data- một hơp dữ liệu lớn và phức

2



tạp- làm nguồn dữ liệu để thực hiện các phân tích, từ đó dự đốn các giao đoạn cao
điểm, thiếu hụt nguồn cung trong tương lai và nhwuxng dự báo khác. Những dự báo
trên giúp tăng tính chính xác khi đưa ra quyết định chiến lược nhằm cải thiện vị thế
thị trường và mang lại lợi thế cạnh tranh đáng kể só với các đối thủ khác.
Việc ứng dụng Big Data và phân tích dữ liệu kinh doanh trong ngành vận tải cũng
đang giúp cho một số doanh nghiệp đưa ra quyết định thu mua kịp thời hơn. Hơn
nữa, theo Council of Supply Chain Management Professionals, hơn 90% chủ hàng
và các công ty Logistics cho rầng việc ra quyết định dựa trên dữ liệu là cực kỳ quan
trọng. Chính vì lý do đó, việc phân tích dữ liệu dựa trên Big Data sẽ cải thiện chất
lượng và hiệu suất kinh doanh qua những dự báo nhu cầu, quản lý hàng hóa tồn
kho, tối ưu hóa tuyến đường và quản lý lao động hiệu quả. Trên cơ sở các kiến thưc
được học trong nhà trường và quá trình tìm hiểu các website trong thực tết, nhóm
chúng em đã quyết định chọn đề tài “Xây dựng hệ thống quản lý và gợi ý dịch vụ
logistic sử dụng Data Lake”.
1.2. Đối tượng nghiên cứu
Các công nghệ:
ReactJS, Mobx
Java
MySQL
Kafka
Giao diện: Quy tắc thiết kế F-layout, quy tắc phối màu mono.
Đối tượng trong phạm vi đề tài hướng đến:
Những doanh nghiệp vận tải, cá nhân có xe chuyên chở hàng
Người tiêu dùng, doanh nghiệp kinh doanh có nhu cầu vận chuyển hàng hóa

3


1.3. Phạm vi nghiên cứu

Ứng dụng MyLogis được nhóm xây dựng bằng ngơn ngữ Java trên mơi trường Web
service.
Tìm hiểu về hệ thống Datalake sử dụng công nghệ Kafka
Ý tưởng
Phương thức
Ưu, nhược điểm
Giao diện của webservice sẽ được xây dựng bằng framework
ReactJS kết hợp với Mobx.
Chạy test, đánh giá độ chính xác của từng phương pháp dựa trên dữ liệu test sẵn có.
Áp dụng thuật tốn định tuyến để giải quyết bài tốn gợi ý gói dịch vụ logistic tốt
nhất cho người dùng.
1.4. Phương pháp nghiên cứu
Cách tiếp cận: ứng dụng được xây dựng dựa theo mơ hình MVC trên nền tảng
Webservice.
Nhóm đã sử dụng các phương pháp nghiên cứu:
Phương pháp đọc tài liệu
Phương pháp phân tích những website logistic hiện có
Phương pháp thực nghiệm
Nhằm giải quyết bài tốn xây dựng chức năng gợi ý các gói dịch vụ Logistic cho
khách hàng nhóm sẽ nghiên cứu và đánh giá thuật toán cây quyết định để áp dụng
vào hệ thống.

4


Chương 2. KIẾN THỨC NỀN TẢNG
2.1. Tổng quan về mô hình MVC
2.1.1.

Khái niệm


MVC là từ viết tắt bởi 3 từ Model – View – Controller. Đây là mơ hình thiết kế sử
dụng trong kỹ thuật phần mềm. Mơ hình source code thành 3 phần, tương ứng mỗi
từ. Mỗi từ tương ứng với một hoạt động tách biệt trong một mô hình.

Hình 2.1: Mơ hình MVC
2.1.2.

Cấu trúc mơ hình MVC

2.1.2.1. Tầng Model
Model (M):
Là bộ phận có chức năng lưu trữ tồn bộ dữ liệu của ứng dụng. Bộ phận này là một
cầu nối giữa 2 thành phần bên dưới là View và Controller. Model thể hiện dưới hình
thức là một cơ sở dữ liệu hoặc có khi chỉ đơn giản là một file XML bình thường.
Model thể hiện rõ các thao tác với cơ sở dữ liệu như cho phép xem, truy xuất, xử lý
dữ liệu,…
2.1.2.2. Tầng View
View (V):

5


Đây là phần giao diện (theme) dành cho người sử dụng. Nơi mà người dùng có thể
lấy được thơng tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếm
hoặc sử dụng thơng qua các website.
Thơng thường, các ứng dụng web sử dụng MVC View như một phần của hệ thống,
nơi các thành phần HTML được tạo ra. Bên cạnh đó, View cũng có chức năng ghi
nhận hoạt động của người dùng để tương tác với Controller. Tuy nhiên, View
khơng có mối quan hệ trực tiếp với Controller, cũng không được lấy dữ liệu từ

Controller mà chỉ hiển thị yêu cầu chuyển cho Controller mà thôi.
2.1.2.3. Tầng Controller
Controller (C):
Bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến thông qua view. Từ đó,
C đưa ra dữ liệu phù hợp với người dùng. Bên cạnh đó, Controller cịn có chức năng
kết nối với model.
2.1.3.

Luồng đi trong mơ hình MVC

Luồng tương tác giữa các thành phần trong MVC.
Ví dụ: Chức năng thêm bài viết mới trong trang quản trị website. Nơi đây có 2
trường nhập về tiêu đề và nội dung bài viết, thì trong đó:
View sẽ hiển thị ra phần nhập form tiêu đề và nội dung.
Controller lấy dữ liệu từ 2 trường và gửi tới Model.
Model lúc này sẽ nhận dữ liệu từ Controller để lưu trữ trong cơ sở dữ liệu.
Mỗi bộ phận thực hiện chức năng nhất định, nhưng chúng có sự thống nhất, liên kết
với nhau tạo nên mơ hình MVC. Mơ hình này tương đối nhẹ. Nó có thể tích hợp
được nhiều tính năng có trong Java hiện giờ. Ví dụ như authentication (q trình
xác thực).

6


Bạn có thể hình dung, khi một u cầu từ máy client gửi tới server, Controller sẽ
thực hiện nhiệm vụ của mình đó là tiếp nhận và xử lý u cầu. Trong trường hợp
cần thiết, nó có thể liên hệ Model – bộ phận làm việc với database để hỗ trợ.
Khi xử lý xong yêu cầu, kết quả sẽ được trả về View. Tại View sẽ tạo mã HTML
thành giao diện và trả về hiển thị trên trình duyệt.
2.1.4.


Tại sao dùng mơ hình MVC

Ưu điểm của mơ hình MVC
Nhẹ, tiết kiệm băng thông: MVC không sử dụng viewstate nên khá tiết kiệm diện
tích băng thơng. Khi sử dụng, người dùng có thể sử dụng ứng dụng trên web cần
tương tác gửi và nhận dữ liệu một cách liên tục. Do đó, việc giảm băng thơng giúp
cho website hoạt động tốt và ổn định hơn.

Hình 2.2: Mơ hình MVC pattern
Ưu – nhược điểm của mơ hình MVC:
Kiểm tra dễ dàng: Với MVC, bạn có thể dễ dàng kiểm tra, rà sốt lỗi phần mềm
trước khi tới tay người tiêu dùng, đảm bảo chất lượng và độ uy tín cao hơn.
Chức năng control: Trên các nền website thì ngơn ngữ lập trình như CSS, HTML,
Javascript có một vai trị vơ cùng quan trọng. Việc sử dụng mơ hình MVC sẽ giúp

7


bạn có một bộ control ưu việt trên nền tảng các ngơn ngữ hiện đại với nhiều hình
thức khác nhau.
View và size: View sẽ là nơi lưu trữ các dữ liệu. Càng nhiều u cầu được thực hiện
thì kích thước càng tệp càng lớn. Khi đó, đường truyền mạng cũng giảm tốc độ
load. Việc sử dụng mơ hình MVC sẽ giúp bạn tiết kiệm được diện tích băng thơng
một cách tối ưu.
Chức năng SoC (Separation of Concern): Chức năng này cho phép bạn phân tách rõ
ràng các phần như Model, giao diện, data, nghiệp vụ.
Tính kết hợp: Việc tích hợp ở mơ hình MVC cho phép bạn thoải mái viết code trên
nền tảng website. Khi đó, server của bạn sẽ được giảm tải khá nhiều.
Đơn giản: Đây là một mô hình với kết cấu tương đối đơn giản. Dù bạn khơng có

q nhiều chun mơn cũng có thể sử dụng được.
Nhược điểm của mơ hình MVC:
MVC thường được sử dụng vào những dự án lớn. Do đó, với các dự án nhỏ, mơ
hình MVC có thể gây cồng kềnh, tốn thời gian trong quá trình phát triển cũng như
thời gian trung chuyển dữ liệu.
Tóm lại, MVC đang là mơ hình được ứng dụng rất nhiều trong lập trình.
Hệ thống MVC phát triển tốt sẽ cho phép phát triển front – end, back – end cùng
trên hệ thống mà khơng có sự can thiệp, chia sẻ, chỉnh sửa các tập tin trong khi một
hoặc hai bên vẫn đang làm việc.
Việc sử dụng mơ hình tương đối đơn giản. Chỉ cần hiểu rõ quy trình vận hành, nắm
được các chức năng của từng bộ phận thì việc triển khai mơ hình MVC tương đối
dễ dàng.
2.1.5.

So sánh MVC Và MVP

Trước hết, cần làm rõ khái niệm của MVP.

8


Hình 2.3: Mơ hình MVP
MVP là một mơ hình kiến trúc lập trình gần giống như MVC. MVP có nhiều điểm
được kế thừa từ MVC nhưng Controller được thay bằng Presenter. Mơ hình này
gồm có 3 phần chính, bao gồm: Model, View, và Presenter.
-Model:
Cũng giống như MVC, Model bao gồm các lớp mô tả business logic, định nghĩa
business rules cho dữ liệu.
-View
Là thành phần mà người dùng có thể trực tiếp tương tác, gửi yêu cầu. View không

bao gồm bất kỳ hoạt động xử lý logic nào.
-Presenter
Presenter đóng vai trị như middle-man. Bộ phận này sẽ nhận input của người dùng
thông qua View, xử lý dữ liệu với sự giúp sức của Model và cuối cùng trả kết quả
lại cho View. Presenter và View giao tiếp với nhau thông qua interface.
Cách thức hoạt động của MVP là gì?

9


Trong mơ hình MVP, View là tầng duy nhất tương tác với người dùng (khác với
MVC, cả 2 tầng View và Controller đều có thể ghi nhận tương tác). Luồng đi của
mơ hình này như sau:
View nhận tương tác của người dùng. Sau đó, yêu cầu được truyền đến Presenter và
xử lý thông qua Model. Khi Model thực hiện thay đổi, xử lý dữ liệu xong, Presenter
lấy dữ liệu từ Model để truyền đến cho View.
Ưu điểm:
Các ưu điểm nổi trội của MVP có thể kể đến như:
MVP có cấu trúc code rõ ràng hơn so với MVC nên khá dễ hiểu và dễ dùng.
Dễ dàng để viết unit test cho Presenter vì nó hoạt động độc lập với View và không
gắn với bất cứ API nào của Android.
Nhược điểm:
Nhược điểm lớn nhất của mơ hình MVP là theo thời gian, Presenter sẽ dần lớn lên
do bị thêm các business logic rải rác. Người dùng sẽ rất khó để kiểm soát và chia
nhỏ code khi Presenter đã quá lớn.
Mặt hạn chế của Presenter
Khả năng duy trì - Khi view có thể gán cả biến và biểu thức, các logic không liên
quan sẽ tăng dần theo thời gian, ảnh hưởng đến việc thêm code vào XML. Để
phịng tránh điều nay, ln luôn lấy giá trị trực tiếp từ ViewModel so với việc cố
gắng tính tốn và viết lại chúng khi gán biểu thức ở view.

Kết luận:
MVP tốt hơn MVC trong việc chia nhỏ ứng dụng thành các modular, các
component đơn mục đích, nhưng chúng cũng làm ứng dụng của bạn phức tạp hơn.
Với một ứng dụng đơn giản với chỉ một hoặc hai screens, MVC sẽ ổn. MVP với
data binding sẽ ít code hơn.

10


2.2. Tổng quan về JAVA
2.2.1.

Khái niệm

Giới thiệu
Java là một trong những ngơn ngữ lập trình hướng đối tượng. Nó được sử dụng
trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động.
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm
1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm
gia dụng, và có tên là Oak.
Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từ Sun
MicroSystem.
Java được tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (Write Once,
Run Anywhere – WORA). Chương trình phần mềm viết bằng Java có thể chạy trên
mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện
có mơi trường thực thi thích hợp hỗ trợ nền tảng đó.
Đặc điểm của ngơn ngữ lập trình Java
Tương tự C++, hướng đối tượng hồn tồn
Trong q trình tạo ra một ngôn ngữ mới phục vụ cho mục đích chạy được trên
nhiều nền tảng, các kỹ sư của Sun MicroSystem muốn tạo ra một ngôn ngữ dễ học

và quen thuộc với đa số người lập trình. Vì vậy họ đã sử dụng lại các cú pháp của C
và C++.
Tuy nhiên, trong Java thao tác với con trỏ bị lược bỏ nhằm đảo bảo tính an tồn và
dễ sử dụng hơn. Các thao tác overload, goto hay các cấu trúc như struct và union
cũng được loại bỏ khỏi Java.
Độc lập phần cứng và hệ điều hành

11


Một chương trình viết bằng ngơn ngữ Java có thể chạy tốt ở nhiều môi trường khác
nhau. Gọi là khả năng “cross-platform”. Khả năng độc lập phần cứng và hệ điều
hành được thể hiện ở 2 cấp độ là cấp độ mã nguồn và cấp độ nhị phân.
Ở cấp độ mã nguồn: Kiểu dữ liệu trong Java nhất quán cho tất cả các hệ điều hành
và phần cứng khác nhau. Java có riêng một bộ thư viện để hỗ trợ vấn đề này.
Chương trình viết bằng ngơn ngữ Java có thể biên dịch trên nhiều loại máy khác
nhau mà không gặp lỗi.
Ở cấp độ nhị phân: Một mã biên dịch có thể chạy trên nhiều nền tảng khác nhau mà
khơng cần dịch lại mã nguồn. Tuy nhiên cần có Java Virtual Machine để thông dịch
đoạn mã này.
Ngôn ngữ thông dịch
Ngôn ngữ lập trình thường được chia ra làm 2 loại (tùy theo các hiện thực hóa ngơn
ngữ đó) là ngơn ngữ thông dịch và ngôn ngữ biên dịch.
Thông dịch (Interpreter) : Nó dịch từng lệnh rồi chạy từng lệnh, lần sau muốn chạy
lại thì phải dịch lại.
Biên dịch (Compiler): Code sau khi được biên dịch sẽ tạo ra 1 file thường là .exe,
và file .exe này có thể đem sử dụng lại khơng cần biên dịch nữa.
Ngơn ngữ lập trình Java thuộc loại ngơn ngữ thơng dịch. Chính xác hơn, Java là loại
ngôn ngữ vừa biên dịch vừa thông dịch. Cụ thể như sau
Khi viết mã, hệ thống tạo ra một tệp .java. Khi biên dịch mã nguồn của chương

trình sẽ được biên dịch ra mã byte code. Máy ảo Java (Java Virtual Machine) sẽ
thông dịch mã byte code này thành machine code (hay native code) khi nhận được
yêu cầu chạy chương trình.

12


Hình 2.4: Mơ hình hệ thống Complier Java
Ưu điểm : Phương pháp này giúp các đoạn mã viết bằng Java có thể chạy được trên
nhiều nền tảng khác nhau. Với điều kiện là JVM có hỗ trợ chạy trên nền tảng này.
Nhược điểm : Cũng như các ngôn ngữ thông dịch khác, quá trình chạy các đoạn mã
Java là chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên vẫn ở trong một mức chấp
nhận được).
Cơ chế thu gom rác tự động
Khi tạo ra các đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho
các đối tượng ở trên heap.
Với ngôn ngữ như C \ C++, bạn sẽ phải yêu cầu hủy vùng nhớ mà bạn đã cấp phát,
để tránh việc thất thoát vùng nhớ. Tuy nhiên vì một lý do nào đó, bạn khơng hủy
một vài vùng nhớ, dẫn đến việc thất thoát và làm giảm hiệu năng chương trình.
Ngơn ngữ lập trình Java hỗ trợ cho bạn điều đó, nghĩa là bạn khơng phải tự gọi hủy
các vùng nhớ. Bộ thu dọn rác của Java sẽ theo vết các tài nguyên đã được cấp. Khi
khơng có tham chiếu nào đến vùng nhớ, bộ thu dọn rác sẽ tiến hành thu hồi vùng
nhớ đã được cấp phát.
Đa luồng
Java hỗ trợ lập trình đa tiến trình (multithread) để thực thi các cơng việc đồng thời.
Đồng thời cũng cung cấp giải pháp đồng bộ giữa các tiến trình (giải pháp sử dụng
priority…).

13



Tính an tồn và bảo mật
Tính an tồn
Ngơn ngữ lập trình Java yêu cầu chặt chẽ về kiểu dữ liệu.
Dữ liệu phải được khai báo tường minh.
Không sử dụng con trỏ và các phép toán với con trỏ.
Java kiểm soát chặt chẽ việc truy nhập đến mảng, chuỗi. Không cho phép sử dụng
các kỹ thuật tràn. Do đó các truy nhập sẽ khơng vượt q kích thước của mảng hoặc
chuỗi.
Q trình cấp phát và giải phóng bộ nhớ được thực hiện tự động.
Cơ chế xử lý lỗi giúp việc xử lý và phục hồi lỗi dễ dàng hơn.
Tính bảo mật
Java cung cấp một mơi trường quản lý chương trình với nhiều mức khác nhau.
Mức 1 : Chỉ có thể truy xuất dữ liệu cũng như phương phức thông qua giao diện mà
lớp cung cấp.
Mức 2 : Trình biên dịch kiểm soát các đoạn mã sao cho tuân thủ các quy tắc của
ngơn ngữ lập trình Java trước khi thơng dịch.
Mức 3 : Trình thơng dịch sẽ kiểm tra mã byte code xem các đoạn mã này có đảm
bảo được các quy định, quy tắc trước khi thực thi.
Mức 4: Java kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới
hạn truy xuất trước khi nạp vào hệ thống.
Máy ảo Java (JVM – Java Virtual Machine)
Để đảm bảo tính đa nền, Java sử dụng cơ chế Máy ảo của Java.
ByteCode là ngôn ngữ máy của Máy ảo Java tương tự như các lệnh nhị phân của
các máy tính thực.

14



×