Tải bản đầy đủ (.docx) (52 trang)

ĐỒ án xây DỰNG ỨNG DỤNG THU THẬP và CHIA sẻ THÔNG TIN hỗ TRỢ NGƯỜI GIAO THÔNG

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.67 MB, 52 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 2
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG THU THẬP VÀ
CHIA SẺ THÔNG TIN HỖ TRỢ NGƯỜI GIAO THÔNG

Giảng viên hướng dẫn: ThS. Trần Anh Dũng
Sinh viên thực hiện:
1. Lê Đình Phục

17520901

2. Nguyễn Việt Mỹ

17520772

Tp. Hồ Chí Minh, ngày 11 tháng 01 năm 2021


ĐẠ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 2021

NHẬN XÉT ĐỒ ÁN 2
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên đồ án:
Xây dựng ứng dụng thu thập và chia sẻ thơng tin hỗ trợ người tham gia giao hơng.
Nhóm sinh viên thực hiện:

Cán bộ hướng dẫn:

LÊ ĐÌNH PHỤC

17520901

NGUYỄN VIỆT MỸ

17520772

THS. TRẦN ANH DŨNG

Đánh giá đồ án:
1. Về cuốn báo cáo:
Số trang

Số chương

Số bảng số liệu

Số hình vẽ


Số tài liệu tham khảo

Sản phẩm

Một số nhận xét về hình thức cuốn báo cáo:

2. Về nội dung nghiên cứu:


3. Về chương trình ứng dụng:

4. Về thái độ làm việc của sinh viên:

Đánh giá chung:
Điểm từng sinh viên:
LÊ ĐÌNH PHỤC: ………../10


NGUYỄN VIỆT MỸ: ………../10

Người nhận xét
(Ký và ghi rõ họ tên)

TRẦN ANH DŨNG


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 Đồ án 2 của mình.

Chúng em xin gửi lời cảm ơn chân thành đến thầy TRẦN ANH DŨNG đã quan
tâm hướng dẫn truyền đạt những kiến thức và kinh nghiệm cho chúng em trong suốt
thời gian học tập bộ môn Đồ án 2.
Cuối cùng, chúng em xin gửi lời cảm ơn đến tất cả thầy cô trong khoa và bạn bè
đã luôn bên cạnh, chỉ bảo, truyền đạt và động viên chúng em.
Trong quá trình làm bài tập môn không tránh khỏi được những sai sót, chúng
em mong nhận được sự góp ý của quý thầy và các bạn để được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn.

Thành phố Hồ Chí Minh,

tháng năm 2021

Sinh viên
NGUYỄN VIỆT MỸ
LÊ ĐÌNH PHỤC


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NA
Độc Lập - Tự Do - Hạnh Phúc

CÔNG NGHỆ THÔNG TIN

TP. HCM, ngày….. tháng ….. năm ………

ĐỀ CƯƠNG CHI TIẾT


TÊN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG THU THẬP VÀ CHIA SẺ THÔNG TIN HỖ
TRỢ NGƯỜI THAM GIA GIAO THÔNG
TÊN ĐỀ TÀI (tiếng Anh): TRAFFIC SUPPORTING APPLICATION WITH DATA
COLLECTING AND INFORMATION SHARING
Cán bộ hướng dẫn: ThS. Trần Anh Dũng
Thời gian thực hiện: Từ ngày 02/10/2020 đến ngày 21/12/2021
Sinh viên thực hiện:
Nguyễn Việt Mỹ - 17520772
Lê Đình Phục - 17520901
Nội dung đề tài:(Mơ tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện, kết
quả mong đợi của đề tài)
1. Mục tiêu của đề tài
1.1. Bối cảnh chọn đề tài
Đi lại, tham gia giao thông là nhu cầu thiết yếu của đa số con người. Trong một
ngày, một người thường dùng từ 1 đến 2 tiếng đồng hồ dành cho việc tham gia giao
thông, một số không hề quá lớn. Một số bộ phận khác, do đặc thù công việc (giao
hàng, dịch vụ vận chuyển, xe ôm công nghệ,…) phải tham gia giao thông đến 8 –
12 tiếng/ngày.
-

Hiện nay, chính phủ các nước đang phải đương đầu với nhiều vấn đề liên quan đến
giao thông như ùn tắc, tắc nghẽn giao thông, tai nạn giao thơng, vấn đề mơi trường,
khí thải. Để giải quyết những vấn đề trên, ngày càng nhiều phương tiện giao thông
công cộng ra đời. Tuy nhiên phương tiện công cộng chưa đáp ứng đủ nhu cầu của
con người do tuyến đường cố định, dài, khơng thuận tiện, đơng người. Vì vậy, các
cơng ty trong nước và nước ngồi đã tạo ra các ứng dụng chia sẻ phương tiện tham


gia giao thông, tài xế công nghệ để tiện lợi hơn cho người dùng. Vẫn còn một vấn
đề tồn đọng mà cả 2 phương thức vẫn chưa giải quyết triệt để đó là tình trạng ùn tắc

giao thơng và làm thế nào để tránh được ùn tắc giao thông.
-

Cách để giải quyết ùn tắc giao thông, các điểm tắc nghẽn giao thơng đặc biệt vào
các giờ cao điểm đó là dùng thông tin, dữ liệu từ người dùng sẵn sàng chia sẻ để
thông báo cho những tài xế lân cận biết đang có ùn tắc giao thơng. Từ đó các tài xế
có thể chỉnh sửa tuyến đường cho phù hợp với tình trạng giao thơng hiện tại. Khi
vấn đề được giải quyết, người bình thường có thể giảm bớt thời gian di chuyển, bảo
vệ sức khỏe tốt hơn, những người có cơng việc đặc thù liên quan đến di chuyển có
thể hồn thiện cơng việc sớm hơn hoặc đạt được năng suất cao hơn.

-

Chúng em quyết định đưa phương pháp giải quyết này thành hiện thực, cho nên
chúng em chọn đề tài: “Xây dựng ứng dụng thu thập và chia sẻ thông tin hỗ trợ
người tham gia giao thông mang tên Trafficial.

-

Ứng dụng Trafficial sẽ có trên nền tảng di động để thuận tiện cho người tham gia
giao thông, đặc biệt là tài xế cơng nghệ.

1.2. Tính mới/ khác biệt về chức năng của đề tài so với một số ứng dụng tương tự
❖ Thêm ý tưởng:
Các ứng dụng liên quan đến thơng tin giao thơng đều có giao diện không bắt mắt,
không cập nhật thông tin tức thời cho người dùng khi có sự kiện giao thơng xảy ra (tai
nạn giao thơng, kẹt xe, ngập nước). Trong khi đó nhu cầu về trải nghiệm khi tham gia
giao thông là hoàn toàn cần thiết, đặc biệt đối với những người phải tham gia giao
thông để mưu sinh 8 – 12 tiếng/ngày.
⇨ Sau quá trình khảo sát, lắng nghe ý kiến người dùng, giải pháp mà nhóm đề ra

để cải thiện trải nghiệm người dùng là lấy thông tin từ các nguồn API trên mạng
làm nguồn dữ liệu thứ nhất, người trải nghiệm có thể tự đóng góp thơng tin làm
nguồn dữ liệu thứ hai để thông báo cho những người dùng cùng khu vực về tình
trạng giao thơng ở những khu xung quanh. Từ những thông tin được thông báo,
người dùng khác có thể né tránh những khu vực có tình trạng kẹt xe cao, ngập
nước cùng với những điểm tai nạn giao thông.
❖ Chọn lọc các chức năng tiện dụng nhất của top các app liên quan đến giao thơng
lớn hiện nay để đưa vào ứng dụng của mình:
Khảo sát qua các ứng dụng Thông tin giao thông Tp. Hồ Chí Minh, Grab, GoJek
nhóm nhận thấy những đặc điểm sau:
-

Một số hạn chế trong nhu cầu thông tin giao thông:
+ TTGT Tp.HCM: giao diện ứng dụng không bắt mắt, phần bản đồ bị
mờ, thông tin giao thông không lập tức, khó sử dụng, ứng dụng bị
chậm so với các ứng dụng khác,


+ Grab, GoJek: chức năng chỉ đường cho tài xế chỉ có thể chỉ đường từ
A đến B, khơng có chức năng báo điểm kẹt xe, cũng khơng hề có
thơng tin về giao thông.
⇨ Điều này đã làm dẫn đến sự hạn chế về tiếp cận thông tin của tài xế,
những người tham gia giao thông khác.
� Ứng dụng Trafficial có thêm chức năng báo cáo trực tiếp tình trạng giao
thông và chức năng thông báo trực tiếp cho người dùng đầu cuối những
thông tin về giao thông khu vực lân cận.
+ TTGT Tp.HCM: không đưa thông tin trực tiếp cho người dùng một
cách tự động mà hoạt động như một cổng thông tin, người dùng phải
yêu cầu mới nhận được thông tin cần thiết.
⇨ Điều này làm người dùng phải thao tác nhiều lần mới nhận được thông

tin cần thiết, đơi khi phải từ bỏ vì tốn thời gian để tìm thơng tin.
� Ứng dụng Trafficial cho phép người nhận thông báo trực tiếp về thông tin
giao thông ở khu vực xung quanh.
+ Grab, GoJek: chức năng chính dành cho tài xế chỉ bao gồm các
thông tin về khách đặt xe, giá tiền, tuyến đường đi từ điểm đón đến
điểm trả khách mà khơng có tuyến đường tối ưu cho tài xế.
⇨ Điều này làm mất thời gian của tài xế và cả người sử dụng, đơi khi cịn là
sức khỏe khi phải giao thơng trong tình trạng kẹt xe, tài sản khi gặp phải
tình trạng ngập nước.
� Ứng dụng Trafficial xử lý lưu địa chỉ cho người dùng miễn là người dùng
có điền, khơng bắt buộc phải là địa chỉ trong đơn hàng đã được đặt thành
công (một số ứng dụng cũng đã làm điều này là Lazada, Shopee).
1.3. Mục đích của đề tài
Ứng dụng mua bán hàng hàng Trafficial chạy trên nền iOS được thực hiện dựa
trên hai mục đích chính sau:
Thứ nhất là nghiên cứu các cơng nghệ lập trình như: lập trình ứng dụng với iOS.
Và các thuật tốn tìm đường đi, vẽ đường đi, tìm điểm tắc nghẽn giao thơng với
GoogleMaps. Có thể áp dụng trong ứng dụng Trafficial cũng như những dự án khác
sau này.
Thứ hai là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai ứng
dụng vào thực tế, giúp những người có nhu cầu mua đi lại nhiều có thể tối ưu hóa
đường đi của mình một cách tiện lợn.
Nhóm hi vọng dựa trên nền tảng lý thuyết đã được thầy cô truyền thụ lại, kết hợp
với sự tìm hiểu cơng nghệ của nhóm, luận văn tốt nghiệp của nhóm sẽ đạt được mục
đích mong đợi.


1.4. Ý nghĩa của đề tài
Trước hết, đề tài “Xây dựng ứng dụng thu thập và chia sẻ thông tin hỗ trợ người
tham gia giao thông” là một ứng dụng được xây dựng như một đề tài thể hiện việc áp

dụng những kiến thức quý báu đã được các thầy cô của trường Đại học Công nghệ
Thông tin – Đại học Quốc gia thành phố Hồ Chí Minh đã nhiệt tình truyền thụ lại cho
chúng em. Và đặc biệt là sự theo dõi và quan tâm giúp đỡ của thầy Trần Anh Dũng
trong suốt thời gian nhóm chúng em thực hiện đề tài này.
Thứ hai là những kinh nghiệm quý báu mà nhóm có được trong q trình thực
hiện đề tài sẽ là hành trang tuyệt vời giúp ích rất nhiều cho công việc sau này của mỗi
thành viên trong nhóm.
Thứ ba, nhu cầu về lập trình viên iOS và lập trình viên Android hiện đang ở mức
ngang bằng, tuy nhiên, mức cung về lập trình viên ở cả 2 nền tảng lại đang khơng cân
bằng. Lập trình viên Android ln có nhiều hơn so với lập trình viên iOS, nhưng một
ứng dụng thường khơng chỉ có trên nền tảng Android mà phải phục vụ cho cả 2 nền
tảng Android và iOS. Quy trình phát triển ứng dụng của cả 2 nền tảng có những sự
khác biệt, lập trình iOS thường gặp nhiều khó khăn hơn, kín đáo hơn, việc review ứng
dụng bởi App Store cũng khó và lâu hơn so với Google Play Store. Cho nên, việc đảm
nhận xây dựng ứng dụng trên môi trường iOS vừa là một thử thách, vừa là một trải
nghiệm mới, vừa có thể đáp ứng nhu cầu công việc cho xã hội.
1.5. Nhiệm vụ của đề tài
Đề tài “Xây dựng ứng dụng thu thập và chia sẻ thông tin giao thông” là một ứng
dụng chạy trên điện thoại sử dụng hệ điều hành iOS.
Ứng dụng gồm có 2 phần: Ứng dụng Trafficial viết cho iOS và Firebase quản trị
dữ liệu.
-

Ứng dụng Trafficial: Dành cho người tiêu dùng
+ Hiện thông tin giao thông
+ Người dùng có thể ping vị trí của mình để cảnh báo tắc đường
+ Nhận thông báo cảnh báo tắc đường từ người xung quanh
+ Tìm kiếm đường đi
+ Gợi ý các đường đi: khi bạn tìm đường, ứng dụng sẽ gợi ý cho bạn
con đường tối ưu để đi


-

Ứng dụng Trafficial: Dành cho người quản trị
+ Lưu cảnh báo khi có người thơng báo
+ Thơng báo notification cho người xung quanh

Mục tiêu của đề tài này là:


- Giải quyết một phần vấn đề giao thông hiện nay ở những thành phố lớn.
- Tìm hiều cách thức xây dựng một ứng dụng trên iOS.
- Xây dựng hệ thông giúp thu thập và chia sẻ thông tin giao thơng
- Tối ưu hố việc tham gia giao thơng
- Hệ thống có khả năng ứng dụng và triển khai vào thực tiễn nhanh chóng
- Áp dụng Firebase realtime cho thời gian thực và tức thì sử dụng app
- Sử dụng Gooogle Map Api cho tìm kiếm đường đi
2. Phạm vi nghiên cứu
Ứng dụng Trafficial được nhóm xây dựng bằng ngơn ngữ swift trên mơi trường iOS
(mobile)
Tìm hiểu về hệ thống gợi ý sản phẩm đối với google map api với google, bài toán
đường đi trong Map, sử dựng firebase realtime cho dữ liệu
-

Ý tưởng về giải pháp giao thông

-

Phương thức


-

Ưu, nhược điểm khi sử dụng app, đánh giá về firebase làm cơ sở dữ liệu

Triển khai, đánh giá độ chính xác của từng phương pháp dựa trên dữ liệu thử nghiệm.
Áp dụng hệ thống gợi ý sản phẩm vào ứng dụng Trafficial để gợi ý đường đi cho người
dùng.
3. Đối tượng nghiên cứu
-

Các công nghệ:
+ Swift
+ Google Maps API
+ Google Places API
+ Firebase
+ Design mobile
+ Google AdMob

-

Đối tượng trong phạm vi đề tài hướng đến:
+ Những người dùng tham gia giao thơng
+ Người dùng cần tìm kiếm thơng tin

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 iOS.
Nhóm đã sử dụng các phương pháp nghiên cứu:


-


Phương pháp đọc tài liệu Google map API

-

Phương pháp phân tích các ứng dụng hiện có cùng chủ đề

-

Phương pháp thực nghiệm nhạy ứng dụng

Qua khảo sát tìm hiểu, các ứng dụng thu thập và chia sẻ thông tin giao thơng hiện
nay nói chung và ứng dụng Trafficial nói riêng, nhóm nhận thấy các ứng dụng đều có
chức năng cơ bản sau:

-

Sử dụng API được cung cấp:
+ Sẽ sử dụng API về tình trạng giao thơng để hiện lên
+ Cho phép tìm kiếm đường đi với Google map

-

Sử dụng thơng tin người dùng app:
+ Khi người dùng đăng nhập vào app thì sẽ cho phép truy cập vào vị trí
hiện tại của họ để có thêm thơng tin giao thơng
+ Khi người dùng đang đi trên đường, họ có thể cảnh báo cho những
người xung quanh.

-


Chia sẻ thông tin cho những người xung quanh:
+ Người dùng app có thể nhận được thông tin cảnh báo từ những người
xung quanh
+ Người sử dụng app sẽ thấy được tình trạng giao thơng tin google map

5. Kết quả dự kiến


Sau khi xác định đề tài và nghiên cứu, tìm hiểu thực tế, nhóm đã xây dựng ý tưởng
thiết kế ứng dụng thu thập và chia sẻ thông tin giao thông cần đạt được những mục tiêu
sau:
5.1. Đối với người dùng:
Người dùng có thể biết được tình trạng giao thơng, từ đó chọn đường đi thuận lợi
cho mình.
Người dùng có thể nắm bắt được tình trạng giao thơng, giảm ùn tắc.
Chia sẻ thông tin cho những người xung quanh từ đó cảnh báo họ về đường đi.
Giúp tìm kiếm đường đi.
5.2. Các tiêu chí khác
Tính thẩm mỹ
-

Ứng dụng có giao diện đẹp, dễ sử dụng tâm lý thoải mái cuốn hút khách
hàng khi sử dụng.

Tính tiện lợi
-

Ứng dụng tiện lợi, realtime thuận lợi cập nhật tức thì.


Kế hoạch thực hiện: (Mô tả kế hoạch làm việc và phân chia công việc các thành viên
tham gia)
Với thời gian thực hiện từ 02/10/2020 tới 30/12/2020, nhóm chia thành 6 sprint với 2
giai đoạn cụ thể:
-

Giai đoạn 1: Hoàn thiện ứng dụng Trafficial với các chức năng dành cho
người tìm kiếm đường đi, tích hợp google map api
+ Sprint 1: tìm hiểu về Swift, UIKit in iOS, tìm hiểu nghiệp vụ, quy
trình xử lý thơng tin với google map
+ Sprint 2: tìm API về traffic để tích hợp với google map tạo ra một
danh sách realtime.
+ Sprint 3: Xây dựng cơ bản về giao diện
+ Sprint 4: tạo firebase project cơ bản

Sprint

Lê Đình Phục

Nguyễn Việt Mỹ


1

Tìm hiểu về Swift

(02/10/2020 –
14/10/2020)

2


Tìm hiểu về Swift, UIkit

Quy trình nghiệp vụ về xây dựng
ứng dụng

Tìm kiếm api về traffic

(14/10/2020 –
28/10/2020)
3

Tích hợp google map

Tích hợp api với app để triển khai
với google map.

Xây dựng giao diện

Xây dựng giao diện

Tạo firebase cơ bản project để
lưu dữ liệu người dùng

Xây dựng giao diện, chức năng:
tìm kiếm đường đi, thơng báo.

(28/10/2020 –
12/11/2020)
4

(12/11/2020 –
26/11/2020)

-

Giai đoạn 2: Hoàn thành app, triển khai chạy thử để fix bug
+ Sprint 5: tìm hiểu về hệ thống tìm đường đi, giải quyết bài toán đường
đi, cảnh báo cho tốt nhất
+ Sprint 6: áp dụng hệ thống gợi ý sản phẩm vào ứng dụng Trafficial,
đánh giá hiệu năng.

Sprint
5
(26/11/2020 –
10/12/2020)
6

Lê Đình Phục

Nguyễn Việt Mỹ

tìm hiểu về hệ thống tìm đường đi, Nghiên cứu các app liên quan và
tìm đường đi ngắn nhất, đường đưa ra đánh giá về app
thuận lợi

Chạy demo sản phẩm

Chỉnh sửa hoàn thiện app

(12/12/2020 –

21/01/2021)

Xác nhận của CBHD

TP. HCM, ngày 28 tháng 10 năm 2020

(Ký tên và ghi rõ họ tên)

Sinh viên


(Ký tên và ghi rõ họ tên)


Mục lục

Danh sách hình ảnh


Chương 1. GIỚI THIỆU CHUNG
1.1. Lý do chọn đề tài:
Xã hội ngày càng phát triển, ở một số thành phố lớn, mật độ xe cộ tham gia giao thông ngày
càng tăng dẫn đến sự ùn tắc giao thông. Đối với nền kinh tế nói riêng và giao thơng vận tải nói
chung thì bị ảnh hưởng rất nhiều từ sự ùn tắc này. Việc giảm thiểu tình trạng ùn tắc này sẽ giúp phát
triển một phần nền kinh tễ.
Hiện nay, để nói về cơng nghệ tin thì là một trong những ngành phát triển nhanh trong xã hội,
nhiều người dùng sử dụng các thiết bị công nghệ ngày càng tăng, công nghiệp hố đang phát triển
thì một việc ứng dụng cơng nghệ thông tin vào giảm thiểu ùn tắc giao thông sẽ giải quyết một phần
của vấn đề.
Với đề tài thu thập và chia sẻ thông tin giao thông sẽ giúp người dùng tham gia giao thơng

nắm bắt được tình hình giao thơng. Từ đó có thể đưa ra lựa chọn đường đi cho phù hợp khi tham gia
giao thông để giảm thiểu ùn tắc, bên cạnh đó cũng có thể cảnh báo những người xung quanh về tình
trạng giao thơng.
1.2. Tính mới/ khác biệt về chức năng của đề tài so với một số ứng dụng:
Hiện nay trên thị tường để nói về những ứng dụng giao thơng thì rất là ít vì nó khơng dùng làm
mục đích kinh doanh mà với mục đích xã hội nên chưa được phát triển nhiều và những ứng dụng có
thể kể đến như TTGT tp Hồ Chí Minh và các ứng dụng chia sẻ camera của đô thị để quan sát.
Với ứng dụng traffic app, nó có những tính năng cơ bản như xem được tình trạng giao thơng
những tuyến đường xung quanh tìm kiếm đường đi, bên cạnh đó cịn có cho phép người dùng cảnh
bảo tuyến đường cho những người xung quanh bạn, xem được ảnh 3D về đường đi của bạn, la bàn
chỉ phương hướng:
− Tính năng cơ bản:
• Xem tình trạng tuyến đường của bạn: hiện tình trạng mật độ giao thông bằng màu sắc
đường đi

15


Hình 1. Tình trạng giao thơng
Màu xanh thể hiện tuyến đường an tồn khơng bị kẹt xe, màu vàng là cảnh báo, cịn màu đỏ
thể hiện tình trạng kẹt xe.
• Cho phép tìm kiếm đường đi, người dùng có thể tìm kiếm đường đi, bạn có thể tìm đường
đi và cho phép hiện lên trình trạng giao thơng của mình để có thể có cái nhìn trực quan về
việc đi lại.

Hình 2. Tìm kiếm đường đi
− Tinh năng mới:
16



• Xem hình ảnh 3D về đường đi, giúp người dùng có thể hình dung một cách trực quan hơn
về đường đi
• Bật cảnh báo, người xử dụng có thể ping vị trí truyến đường mình đang đi về tình trạng
của nó
• Có la bàn cho phép xem phương hướng
• Xem tình hình thời tiết, cảnh báo thời tiết của bạn cho ngày hơm đó
1.3. Đối tượng nghiên cứu:
Đồ án này hướng đến nghiên cứu các đối tượng sau:
Các công nghệ:



o

Xcode

o

Swift

o

Google Maps

o

Google Places

o


Firebase

o

Google AdMob

Đối tượng trong phạm vị đề tài hướng đến: hướng đến đối tượng người sử dụng giao
thông, tập trung chủ yếu vào xã hội, cho trải nghiệm tốt nhất tới người dùng.



1.4. Phạm vi nghiên cứu:
Ứng dụng Traffic được xây dựng bằng Swift và sử dụng firebase làm nơi lưu dữ liệu, tìm hiểu
về cấu trúc dữ liệu lưu trên firebase.
Tìm hiểu đối tượng chủ yếu về Google map, vẽ đường đi, hiện mật độ, tìm kiếm đường đi,
ping vị trí lên map.
1.5. 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 iOS.
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 u cầu trải nghiệm



Phương pháp thực nghiệm

17


1.6. Bố cục của đồ án
Đồ án gồm có 4 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. Cuối chương 1 là phần bố cục của đồ án.
Chương 2 trình bày các kiến thức nền tảng, các cơng nghệ được sử dụng để xây dựng ứng
dụng thu thập và chia sẻ thơng tin giao thơng.
Chương 3 trình bày chi tiết quy trình xây dựng hệ thống, từ xây dựng kiến trúc tổng quát, phân
tích yêu thiết kế hệ thống đến thiết kế giao diện
Chương 4 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.

18


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à viết tắt của Model-View-Controller. Trong đó, Model xử lý dữ liệu.
Controller xử lý logic. Còn View là phần hiển thị và tiếp nhận request từ phía user (người
dùng).

Hình 3. Sơ đồ hoạt động MVC


Trong MVC, Controller đóng vai trị cầu nối giữa Model và View. Giữa ControllerView và Controller-Model đều là tương tác 2 chiều. Mỗi phần trong đó sẽ bao gồm các đoạn
code xử lý độc lập theo vai trị của mình. Mục đích chính của mơ hình này nhằm chia nhỏ
code để dễ phát triển và bảo trì.
Khi có một action từ phía user, ví dụ như submit form, action đó sẽ đi qua một Controller
chính. Controller này gọi đến các Controller phụ và các Model cần thiết để xử lý. Sau đó, nó
sẽ quyết định gọi đến phần View nào cần hiển thị và cập nhật lại. Đặc tính này cũng nâng
cao tính tái sử dụng của code. Trong đó, View và Model khơng cần phải quan tâm mình
được gọi như thế nào và ở đâu.

2.1.2.

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

2.1.2.1.

Tầng Model:

Là đối tượng có vai trị định nghĩa, tổ chức trữ và thao tác trực tiếp với dữ liệu.

19


2.1.2.2.

Tầng điều khiển – Controller:

Là bộ điều kiển trung gian có vai trị quản lý, điều phối tất cả cơng việc. Nó truy cập dữ
liệu từ Model và quyết định hiển thị nó trên View. Khi có một sự kiện được truyền
xuống từ View, Controllerquyết định cách thức xử lý: có thể là tương tác với dữ liệu,
thay đổi giao diện trên View.

2.1.2.3.

Tầng giao diện – View:

Là đối tượng chịu trách nhiệm về hiển thị giao diện hay nói cách khác đó là tầng mà
người dùng quan sát và tương tác trực tiếp.
2.1.3. Ưu điểm của mơ hình MVC:
• Hỗ trợ q trình phát triển nhanh chóng: Với đặc điểm hoạt động độc lập của từng
thành phần, các lập trình viên có thể làm việc đồng thời trên từng bộ phận khác
nhau của mơ hình này. MVC giúp bạn tiết kiệm rất nhiều thời gian.
• Khả năng cung cấp đồng thời nhiều khung View: Với mơ hình MVC, bạn có thể
tạo ra đồng thời nhiều khung View cho Model..
• Dễ dàng thao tác chỉnh sửa: Bộ phận Model hoạt động tách biệt với View đồng
nghĩa với việc bạn có thể đưa ra các thay đổi, chỉnh sửa hoặc cập nhật dễ dàng ở
từng bộ phận.
• Giữ nguyên trạng thái data: Mơ hình MVC truyền lại dữ liệu nhưng khơng định
dạng lại dữ liệu. Do đó, các dữ liệu này có thể được dùng lại cho các thay đổi sau
này.
2.1.4. Triển khai MVC trên iOS:
Phân chia các project thành các folder riêng biệt để chứa chứa các lớp thực hiện theo mơ hình
MVC với 3 tầng chính là model-view-controller:

20


Hình 4. Cấu trúc thư mục project theo mơ hình MVC
Có 3 folder chính:
Tầng model: chứa các định nghĩa object sẽ sử dụng trong project như định nghĩa đối tượng
user, đối tượng khơng khí,…
Tầng view sẽ chứa các view sử dụng trong giao diện, bổ trợ xây dựng lớp giao diện.

Tầng controller chứa logic xử lý các đối tượng logic trong prject của chúng ta.
Ngoài ra tuỳ theo dự án cần gì mà chúng ta sẽ thêm các folder cho phù hợp giúp hỗ trợ
project của chúng ta:
+ Tầng networking sẽ chứa các lệnh gọi API để trả về giá trị, kết nối với các cơ sở dữ liệu
khác như firebase, và api bên ngoài.
+ Tầng extension là tầng giúp chúng ta mở rộng các tính năng so với những tính năng cơ bản
mà swift cung cấp.

21


2.1.5. So sánh MVC và MVVM:

Hình 5. Mơ hình MVC

Hình 6. Mơ hình MVVM

MVVM 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. MVVM với data binding sẽ ít code
hơn.
Data binding là cơ chế ràng buộc data được thiết lập giữa View và ViewModel, nó cho
phép ViewModel thực thi thay đổi tới Model, sau đó lại update lại ViewModel, và tự động
update lên View.

2.2.

Tổng quan về Swift:
2.2.1. Khái niệm:
Swift là một ngôn ngữ thiết lập hướng đối tượng cho iOS và macOS phát triển, watchOS,

tvOS, Linux và z / OS. được giới thiệu bởi Apple tại hội nghị WWDC 2014. Swift được
mong đợi sẽ tồn tại song song cùng Objective-C, hiện tại ngôn ngữ thiết lập dành cho các hệ
điều hành của Apple. Swift được thiết kế để hoạt động với khuôn khổ Cocoa và Cocoa Touch
của Apple và các phần mã Objective-C lớn hiện có được viết cho các sản phẩm của Apple.
Nó được biên dịch với LLVM biên dịch và được đưa vào Xcode trong phiên bản 6, phát hành
22


năm 2014. Trên nền tảng của Apple, nó sử dụng thời gian chạy thư viện Objective-C cho
phép mã hóa C, Objective-C , C ++ và Swift cùng chạy trong một chương trình.
2.2.2. Lịch sử phát triển:
Sự phát triển của Swift bắt đầu vào tháng 7 năm 2010 bởi Chris Lattner, với sự kết hợp cuối
cùng của nhiều thành viên khác thiết lập tại Apple. Swift lấy ý tưởng ngôn ngữ từ ObjectiveC, Rust, Haskell, Ruby, Python, C #, CLU, và quá nhiều thứ khác để liệt kê ". Ngày 2/6/2014
ứng dụng Apple Worldwide Developers Conference (WWDC) đã trở thành ứng dụng được
phát hành công khai đầu tiên được viết bằng Swift. Phiên bản beta của ngơn ngữ lập trình đã
được phát hành cho các nhà phát triển Apple đã đăng ký tại hội nghị, nhưng công ty không
tuyên bố rằng cuối cùng của phiên bản Swift sẽ tương thích với nguồn mã với phiên bản thử
nghiệm. Apple đã lên kế hoạch để làm cho các bộ chuyển đổi nguồn mã có sẵn nếu cần để
phát hành đầy đủ.
Ngơn ngữ lập trình Swift, Một tài liệu 500 trang về Swift cũng được phát hành tại WWDC,
miễn phí trên iBooks Store và trang web chính thức.
Swift đạt mốc 1.0 ngày 9 tháng 9 năm 2014, với Gold Master cho Xcode 6.0 cho iOS. Swift
1.1 phát hành ngày 22 tháng 10 năm 2014, cùng với mắt của Xcode 6.1. Swift 1.2 được phát
hành ngày 8 tháng 4 năm 2015, cùng với Xcode 6.3. Swift 2.0 đã được công bố tại WWDC
2015 và được cung cấp để xuất bản ứng dụng trong App Store ngày 21 tháng 9 năm 2015.
Swift 3.0 được phát hành ngày 13 tháng 9 năm 2016. Swift 4.0 được phát hành ngày 19
tháng 9 năm 2017. Swift 4.1 được phát hành ngày 29 tháng 3 năm 2018.
Ngày 3 tháng 12 năm 2015, ngơn ngữ Swift, hỗ trợ thư viện, trình gỡ lỗi và gói quản lý đã
được mở nguồn theo giấy phép Apache 2.0 với một ngoại lệ thư viện thời gian chạy và
Swift.org được tạo để lưu trữ dự án . Nguồn mã được lưu trữ trên GitHub mọi người có thể

dễ dàng lấy mã, tự dựng mã và thậm chí tạo các u cầu để đóng góp trở lại dự án.
Tháng 12 năm 2015, IBM đã công bố web Swift Sandbox của mình, cho phép các nhà phát
triển viết mã Swift trong một khung và hiển thị đầu tiên trong một khung khác. has not used
to be used to 1 year 2018.
Trong WWDC 2016, Apple đã công bố một độc quyền ứng dụng cho iPad, có Swift
Playgrounds tên, dạy mọi người cách viết mã trong Swift. Ứng dụng được hiển thị trong giao
diện trò chơi video 3D cung cấp phản hồi khi mã dòng được thiết lập theo định định thứ nhất
và được thực thi.
23


Tháng 1 2017, Chris Lattner tuyên bố rời khỏi Apple để định vị mới với Tesla Motors, với
vai trò lãnh đạo dự án Swift sẽ thuộc về nhân vật cựu Ted Kremenek.

Hình 7. Lịch sử phát triển swift
2.2.3. Ưu điểm của Swift:





Khả năng phát triển ứng dụng di động nhanh và dễ dàng
Code của ngôn ngữ Swift ngắn, gọn và dễ đọc
Swift làm việc liền mạch với Objective-C, ta có thể viết ứng dụng bằng cả 2 ngôn ngữ.
Thi thực tốc độ của Swift code đoạn mã rất nhanh
Theo Apple, Swift nhanh gần gấp 3 lần obj-C và nhanh hơn 8 lần với ngôn ngữ Python.

Không những nhanh, mà Swift cịn rất mạnh mẽ, giúp các nhà thiết lập có thể viết được
những đoạn mã nâng cao, phân loại hơn như: generics, Closeures, Tuples, multiple return,
iterator, các chức năng lập trình mẫu có sẵn and more more than. Bên cạnh đó, Swift bảo mật

và an tồn hơn Objective-C rất nhiều.
2.2.4. Chức năng chính của Google Firebase
2.2.4.1.

Realtime Database – Cơ sở dữ liệu thời gian thực

Là một là một cơ sở dữ liệu NoSQL lưu và đồng bộ dữ liệu trên mây. Dữ liệu được

đồng bộ trên tất cả clients trong thời gian thực, và vẫn khả dụng khi ứng dụng offline .


Realtime:
24


Firebase Realtime Database sử dụng đồng bộ dữ liệu mối khi dữ liệu có thay đổi, mọi
thiết bị được kết nối sẽ nhận được thay đổi trong vài mili giây.


Offline:

Khi người dùng ngoại tuyến, dữ liệu sẽ được lưu trên bộ nhớ cache của thiết bị và tự động
đồng bộ khi bạn trực tuyến. Tất cả là tự động


Accessible from Client Devices

Firebase Realtime Database có thể truy cập từ một thiết bị mobile hoặc trình duyệt web.
Nó khơng cần một ứng dụng server nào cả. Bảo mật và xác thực dữ liệu có thể thơng qua
các Rule bảo mật của Firebase Realtime Database, các rule được thực thi khi dữ liệu được

đọc hoặc ghi.
2.2.4.2.

Firebase Authentication – Hệ thống xác thực của Firebase

Firebase dễ dàng tích hợp các cơng nghệ xác thực của các ông lớn trên internet như
Google, Facebook,…hoặc một hệ thống xác thực tự xây dựng trong ứng dụng ở bất kỳ
nền tảng nào như Android, iOS.
Firebase cho phép bạn đăng kí tài khoản bằng gmail mà sẽ lưu lại tài khoản của bạn với
Firebase ID, nó rất tiện cho hệ thống khi tiến hành đăng kí đăng nhập, Firebase
Authentication cũng cấp gân như đầy đủ các tính năng kiểm tra khi tiến hành đăng kí hay
đăng nhập với tài khoản, Firebase Authentication sẽ trả về các lỗi như không đúng format
tài khoản, hay là tài khoản đã tồn tại,…
2.2.4.3.

Firebase storage

Firebase storage lưu trữ được nhiều dạng dữ liệu như tập tin, hình ảnh, video một cách dễ
dàng. Ngồi ra nó cịn tích hợp Google security giúp tải lên và tải về các ứng dụng
firebase một cách tiện lợi.
2.2.4.4.

Firebase Cloud Firestore

Bên cạnh các tính liên quan đến lưu trữ dữ liệu, Firebase còn cung cấp thêm Firebase
Cloud Firestore với các tính năng mới, đặc biệt là tính năng báo về thiết bị khi có dữ liệu
bị thay đổi trên cơ sở dữ liệu

25



×