Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghệ thông tin và thiết bị di động thông minh phát triển mạnh mẽ, nhu cầu du lịch, nghỉ dưỡng và khám phá của con người ngày càng gia tăng. Phương thức tìm kiếm địa điểm và đặt chỗ nghỉ truyền thống bộc lộ nhiều bất cập: khách du lịch thường phải tìm kiếm thông tin qua người quen hoặc đến tận nơi mới tìm phòng, dẫn đến rủi ro hết phòng, lỡ kế hoạch và tốn kém thời gian; trong khi đó, các chủ nhà nghỉ, homestay phải chờ đợi khách vãng lai, gây lãng phí thời gian và tiềm ẩn nguy cơ cạnh tranh không lành mạnh. Xuất phát từ thực tiễn đó, đồ án tốt nghiệp "Phát triển ứng dụng đặt phòng dịch vụ du lịch Homestay trên nền tảng Android" của sinh viên Bùi Văn Phúc (ngành Công nghệ thông tin, Học viện Kỹ thuật Mật mã, khóa 2022) được thực hiện nhằm giải quyết bài toán kết nối trực tiếp giữa khách du lịch và chủ homestay qua môi trường mạng.
Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:
- Mục tiêu nghiên cứu: Xây dựng giải pháp ứng dụng di động giúp tối ưu hóa thời gian, công sức cho cả khách du lịch và chủ cơ sở lưu trú; đáp ứng nhu cầu du lịch, nghỉ dưỡng thông qua các thao tác trực tuyến trên điện thoại thông minh.
- Nhiệm vụ nghiên cứu:
- Khảo sát thực tế thị trường cho thuê phòng và nhu cầu của khách du lịch.
- Phân tích và xác định yêu cầu chức năng, phi chức năng cho hệ thống quản lý và đặt phòng.
- Thiết kế hệ thống, bao gồm xây dựng biểu đồ Use Case, biểu đồ tuần tự và cấu trúc cơ sở dữ liệu phi quan hệ (NoSQL).
- Lập trình triển khai hệ thống gồm hai ứng dụng di động (ứng dụng người dùng và ứng dụng quản trị) trên nền tảng Android bằng ngôn ngữ Kotlin, kết nối nền tảng Firebase và tích hợp các giải pháp an toàn thông tin (mã hóa mật khẩu, bảo vệ khóa API).
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình nghiệp vụ đặt phòng homestay, quản lý dịch vụ du lịch và quy trình phát triển ứng dụng di động trên nền tảng Android.
- Phạm vi không gian/công nghệ: Hệ điều hành Android (hỗ trợ từ Android 7.0 trở lên) và các ứng dụng phân phối trên CH Play.
- Phạm vi thời gian: Đồ án được thực hiện trong thời gian 6 tháng.
Cơ sở lý thuyết và phương pháp
Đồ án xây dựng dựa trên nền tảng kiến thức công nghệ phần mềm di động và an toàn thông tin với các công nghệ, công cụ cụ thể:
- Nền tảng hệ điều hành Android: Hệ điều hành di động mã nguồn mở dựa trên nhân Linux, sử dụng kiến trúc phần cứng ARM và x86/x86-64. Hệ thống khai thác 4 thành phần cốt lõi của Android: Activity (giao diện tương tác), Service (tiến trình chạy ngầm), Broadcast Receiver (lắng nghe sự kiện hệ thống/ứng dụng) và Content Provider (chia sẻ dữ liệu giữa các ứng dụng).
- Ngôn ngữ lập trình Kotlin: Ngôn ngữ kiểu tĩnh chạy trên máy ảo Java (JVM), hỗ trợ đầy đủ bởi Google từ Android Studio 3.0. Ngôn ngữ cung cấp các tính năng an toàn tránh lỗi
NullPointerException, hỗ trợ phương thức mở rộng (Extension Functions) và hàm lồng nhau (Local Functions).
- Hệ sinh thái dịch vụ Firebase:
- Firebase Realtime Database: Cơ sở dữ liệu NoSQL lưu trữ và đồng bộ dữ liệu theo thời gian thực dưới dạng cây JSON (JSON Tree).
- Firebase Authentication: Hệ thống xác thực người dùng qua Email & Password, kết hợp gửi thư xác minh điện tử.
- Firebase Cloud Messaging (FCM): Dịch vụ đẩy thông báo (Push Notification) đến thiết bị với gói tin thông báo tối đa 2KB và tin nhắn dữ liệu 4KB.
- Firebase Storage và Remote Config: Lưu trữ tệp tin đa phương tiện (hình ảnh phòng, địa điểm) và quản lý cấu hình giao diện từ xa.
- Thư viện lập trình Reactive và Dependency Injection:
- RxJava / RxKotlin / RxAndroid: Triển khai mô hình Observer Pattern thông qua các thành phần Observable, Observer, Subscription, Schedulers và các toán tử (Operators) để xử lý các luồng dữ liệu bất đồng bộ.
- Dagger 2: Thư viện tiêm phụ thuộc (Dependency Injection) sử dụng cơ chế tiền biên dịch (pre-compiler) với các chú thích
@Module, @Provides, @Inject, @Component.
- Mô hình kiến trúc MVVM (Model - View - ViewModel) & LiveData: Phân tách giao diện và logic xử lý dữ liệu, sử dụng LiveData theo Observer Pattern để tự động cập nhật trạng thái UI khi dữ liệu trong ViewModel biến động.
- Giải pháp an toàn thông tin: Thuật toán băm một chiều MD5 cho việc lưu trữ chuỗi hash mật khẩu; thuật toán mã hóa đối xứng AES để bảo vệ khóa API dịch vụ thời tiết; công cụ ProGuard để tối ưu hóa và làm mờ mã nguồn.
Phương pháp nghiên cứu và nguồn dữ liệu:
- Phương pháp nghiên cứu: Phương pháp phân tích - tổng hợp tài liệu chuyên ngành; phương pháp khảo sát thực tế hành vi khách du lịch và chủ phòng; phương pháp phân tích thiết kế hướng đối tượng (UML) và phương pháp thực nghiệm phát triển phần mềm trên môi trường Android Studio.
- Nguồn dữ liệu: Dữ liệu địa lý hành chính Việt Nam (danh mục Tỉnh/Thành phố và Quận/Huyện), dữ liệu địa điểm du lịch, dữ liệu thông tin phòng và tài khoản người dùng được lưu trữ trên Firebase Realtime Database.
Thiết kế và triển khai hệ thống
1. Kiến trúc phân quyền và triển khai hệ thống
Hệ thống được thiết kế và đóng gói thành 2 ứng dụng độc lập:
- App HomeStay (Client): Dành cho 2 nhóm đối tượng là Khách du lịch (tìm kiếm điểm đến, tra cứu thông tin phòng, xem bản đồ/thời tiết, đặt/hủy phòng, bình luận) và Chủ nhà (đăng tải phòng, quản lý trạng thái phòng, xác nhận đặt/trả phòng, gửi báo cáo vi phạm về khách hàng).
- App Admin (AdminHomeStay): Dành cho Quản trị viên hệ thống (quản lý danh sách tài khoản, kiểm duyệt báo cáo, khóa/mở khóa tài khoản vi phạm, cập nhật danh mục địa điểm du lịch toàn quốc). Để đăng ký tài khoản Admin, hệ thống yêu cầu xác thực thêm chuỗi văn bản bí mật (
IntroductorySentence).
2. Thiết kế cơ sở dữ liệu Firebase Realtime Database
Cơ sở dữ liệu được tổ chức theo mô hình JSON Tree với cấu trúc phân cấp không ràng buộc khóa ngoại:
| Nhóm Node |
Tên Node |
Thuộc tính chính |
Mục đích lưu trữ |
| Admin |
Account |
mail, phone, uid |
Lưu thông tin định danh quản trị viên hệ thống. |
|
IntroductorySentence |
admin |
Lưu câu giới thiệu bảo mật dùng để xác thực quyền đăng ký Admin. |
| Client |
Account |
mail, permission, phone, token, uid, userName |
Lưu hồ sơ người dùng, quyền truy cập và token FCM nhận thông báo. |
|
Comment |
comment, idRoom, nameClient |
Lưu nội dung đánh giá của khách về từng phòng cụ thể. |
|
Report |
contentReport, idClient, idHost |
Lưu biên bản báo cáo vi phạm do chủ nhà gửi về khách hàng. |
|
TravelList |
address, detail, id, img |
Danh mục địa điểm du lịch do Admin biên tập và hiển thị cho người dùng. |
| Host |
ListProvinces |
Danh sách tên các Tỉnh/Thành phố |
Cung cấp danh mục địa giới hành chính cấp tỉnh tại Việt Nam. |
|
DetailProvince |
Danh mục Quận/Huyện theo Tỉnh |
Cung cấp danh mục địa giới hành chính cấp huyện tương ứng. |
|
ListRoom |
address, convenient, id, imgaRoom1, imgaRoom2, introduce, nameRoom, numberSleepRoom, price, s_room, status, typeRoom, uid |
Thông tin chi tiết phòng cho thuê (loại phòng: Biệt thự/Nhà nghỉ/Nhà riêng, diện tích, giá, tiện ích, trạng thái). |
3. Tích hợp giải pháp an toàn và bảo mật
- Băm mật khẩu (MD5): Hệ thống sử dụng thuật toán băm một chiều MD5 để biến đổi mật khẩu thành chuỗi hash trước khi lưu trữ và so khớp với cơ sở dữ liệu, loại trừ việc lưu mật khẩu dạng bản rõ (plaintext).
- Mã hóa khóa API (AES): Khóa truy cập API thời tiết được mã hóa bằng thuật toán đối xứng AES với khóa bí mật (
secret key) nhằm ngăn chặn việc rò rỉ khóa, tránh bị bên thứ ba khai thác trái phép gây phát sinh chi phí request từ Google.
- Chống tài khoản ảo & làm mờ mã nguồn: Áp dụng quy trình xác thực email bắt buộc qua Firebase Authentication và cấu hình ProGuard trong tệp xây dựng ứng dụng để gây khó khăn cho việc dịch ngược mã nguồn (reverse engineering).
Nội dung chính theo từng chương
CHƯƠNG 1. PHÂN TÍCH YÊU CẦU HỆ THỐNG
- Trình bày tổng quan thực trạng du lịch và sự phát triển của công nghệ thông tin; chỉ ra hạn chế của phương thức đặt phòng truyền thống đối với khách du lịch và chủ nhà.
- Xác định mô hình triển khai hệ thống gồm 2 ứng dụng: App HomeStay (phân quyền Khách du lịch và Chủ nhà) và App Admin.
- Đặc tả yêu cầu chức năng cho từng nhóm người dùng:
- Khách du lịch: Tìm kiếm địa điểm, tìm kiếm phòng, thực hiện đặt phòng, hủy phòng, gửi bình luận đánh giá, tra cứu bản đồ và thời tiết.
- Chủ nhà: Đăng phòng cho thuê, quản lý phòng theo tình trạng, gửi báo cáo vi phạm của khách hàng lên hệ thống.
- Quản trị viên (Admin): Quản lý danh sách người dùng, xem xét lịch sử đánh giá/báo cáo, khóa hoặc mở khóa tài khoản, cập nhật địa điểm du lịch.
- Xác định yêu cầu phi chức năng: Tương thích từ Android 7.0 trở lên, giao diện thân thiện, đảm bảo an toàn thông tin người dùng.
- Trình bày cơ sở lý thuyết về hệ điều hành Android, ngôn ngữ lập trình Kotlin, nền tảng Firebase (Realtime Database, Authentication, FCM, Remote Config) và các thư viện hỗ trợ (RxJava/RxKotlin/RxAndroid, Dagger 2).
CHƯƠNG 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG
- Xây dựng hệ thống biểu đồ Use Case tổng quát và biểu đồ phân rã chi tiết cho từng tác nhân: Quản lý tài khoản, Quản lý đặt phòng, Quản lý phòng của chủ nhà và Quản lý người dùng của Admin.
- Xây dựng các biểu đồ tuần tự (Sequence Diagram) mô tả luồng tương tác thực thi của 3 chức năng chính:
- Biểu đồ tuần tự chức năng đăng nhập tài khoản.
- Biểu đồ tuần tự chức năng chỉnh sửa thông tin cá nhân.
- Biểu đồ tuần tự chức năng đánh giá dịch vụ phòng.
- Thiết kế cơ sở dữ liệu phi quan hệ Firebase Realtime Database dạng JSON Tree, phân định rõ các nút lưu trữ dữ liệu dành cho Admin (
Account, IntroductorySentence), Client (Account, Comment, Report, TravelList) và Host (ListProvinces, DetailProvince, ListRoom).
- Thiết kế kho lưu trữ hình ảnh Firebase Storage, cấu hình quy trình xác thực tài khoản qua Firebase Authentication và kiến trúc đẩy thông báo tức thời Firebase Cloud Messaging.
CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG
- Trình bày quy trình cài đặt và tổ chức mã nguồn trên Android Studio theo kiến trúc MVVM kết hợp LiveData.
- Chi tiết cấu trúc thư mục của 2 dự án phần mềm:
- Dự án
AdminHomeStay: Phân chia các gói logic phục vụ quản trị, đăng ký xác thực qua IntroductorySentence, xử lý khóa và mở tài khoản người dùng, thêm địa điểm du lịch.
- Dự án
HomeStay: Phân chia module thành các gói chính gồm all_login (xử lý đăng ký, đăng nhập chung), client (chức năng đặt/hủy phòng, bình luận, tra cứu của khách) và host (chức năng thêm phòng, đổi trạng thái phòng thành "Đã Đặt" hoặc "Còn Trống", gửi report).
- Hiện thực hóa các giải pháp bảo mật:
- Cài đặt hàm băm MD5 cho chuỗi mật khẩu người dùng (yêu cầu mật khẩu lớn hơn 6 ký tự).
- Cài đặt thuật toán mã hóa đối xứng AES để mã hóa và giải mã khóa API thời tiết.
- Tích hợp công cụ ProGuard bảo vệ mã nguồn ứng dụng.
- Giới thiệu các giao diện hệ thống hoàn chỉnh: Đăng ký, đăng nhập, trang chủ khách hàng, danh sách phòng, danh sách địa điểm du lịch, đặt phòng, thêm/sửa phòng của chủ nhà, nhận thông báo FCM, bản đồ Google Map, tra cứu thời tiết và quản lý tài khoản cá nhân.
Kết quả và đóng góp
1. Kết quả chính
- Hoàn thiện 2 ứng dụng Android độc lập (
HomeStay và AdminHomeStay) đáp ứng đầy đủ các yêu cầu chức năng và phi chức năng đã đề ra, chạy ổn định trên môi trường Android 7.0 trở lên.
- Xây dựng thành công cơ chế quản lý dữ liệu thời gian thực và lưu trữ đám mây không cần máy chủ backend truyền thống (Serverless) thông qua Firebase Realtime Database và Firebase Storage.
- Triển khai thành công kiến trúc phần mềm MVVM kết hợp các công nghệ bất đồng bộ (Rx) và tiêm phụ thuộc (Dagger 2).
- Tích hợp giải pháp an toàn thông tin gồm xác thực email hai lớp, băm mật khẩu MD5, mã hóa khóa API bằng AES và làm mờ mã nguồn bằng ProGuard.
2. Giải pháp và đề xuất của tác giả
- Đề xuất cơ chế phối hợp ba bên (Khách du lịch - Chủ nhà - Admin) thông qua quy trình: Chủ nhà tạo và cập nhật trạng thái phòng -> Khách đặt phòng và nhận thông báo -> Khách đánh giá/chủ nhà report khi có tranh chấp -> Admin căn cứ dữ liệu để khóa hoặc mở tài khoản.
- Đề xuất giải pháp bảo vệ tài nguyên API trả phí bằng cơ chế mã hóa đối xứng cục bộ trên thiết bị di động.
3. Đóng góp khoa học và thực tiễn
- Về mặt khoa học: Đồ án tổng kết và thực nghiệm quy trình chuẩn về phân tích, thiết kế và phát triển ứng dụng di động Android bằng ngôn ngữ Kotlin kết hợp hệ sinh thái Firebase và kiến trúc MVVM.
- Về mặt thực tiễn: Cung cấp một sản phẩm phần mềm có tính ứng dụng cao, giúp giải quyết bài toán tiếp cận thị trường cho các hộ kinh doanh homestay vừa và nhỏ, đồng thời tạo công cụ tra cứu, đặt phòng an toàn, tiện lợi cho khách du lịch.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế của đồ án:
- Thời gian thực hiện đồ án có hạn (trong vòng 6 tháng) nên phạm vi triển khai mới dừng lại ở các chức năng cốt lõi của bài toán đặt phòng và quản lý homestay.
- Ứng dụng chỉ mới được phát triển và tối ưu hóa trên nền tảng hệ điều hành Android, chưa hỗ trợ nền tảng iOS hay giao diện Web.
- Cơ sở dữ liệu NoSQL dạng cây JSON có thể gặp thách thức trong việc tối ưu hóa truy vấn phức tạp khi khối lượng người dùng và dữ liệu giao dịch tăng cao.
- Hướng nghiên cứu tiếp theo:
- Mở rộng ứng dụng sang nền tảng iOS hoặc phát triển ứng dụng đa nền tảng (Cross-platform).
- Tích hợp thêm dịch vụ phân tích hành vi người dùng Firebase Analytics để phục vụ phân tích dữ liệu và đề xuất chiến lược tiếp thị.
- Nâng cấp các thuật toán mã hóa mật khẩu sang các hàm băm bảo mật hơn thuộc họ SHA-2/SHA-3 theo khuyến nghị an toàn thông tin hiện đại.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho các đối tượng sau:
- Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Tham khảo toàn diện về cấu trúc một đồ án tốt nghiệp kỹ thuật, từ khâu khảo sát yêu cầu, vẽ biểu đồ phân tích UML (Use Case, Sequence Diagram) đến lập trình ứng dụng di động Android bằng Kotlin.
- Lập trình viên phát triển ứng dụng Android: Tham khảo cách thức tổ chức mã nguồn theo mô hình kiến trúc MVVM, cách ứng dụng LiveData, thư viện Rx (RxJava/RxKotlin/RxAndroid), thư viện Dagger 2 và tích hợp toàn diện các dịch vụ Firebase (Realtime Database, Authentication, FCM, Storage).
- Nhà phát triển giải pháp dịch vụ du lịch: Tham khảo mô hình phân quyền và thiết kế cơ sở dữ liệu NoSQL JSON Tree cho bài toán đặt phòng và kiểm duyệt nội dung người dùng giữa ba nhóm tác nhân Khách hàng - Chủ cơ sở - Quản trị viên.
Câu hỏi thường gặp
1. Hệ thống trong đồ án gồm những ứng dụng nào và phân quyền người dùng ra sao?
Hệ thống gồm 2 ứng dụng di động chạy trên Android: ứng dụng HomeStay (dành cho Client, phân quyền thành 2 vai trò là Khách du lịch và Chủ nhà) và ứng dụng AdminHomeStay (dành riêng cho Quản trị viên quản lý tài khoản, xử lý report và cập nhật địa điểm du lịch).
2. Kiến trúc mã nguồn và các công nghệ chính được sử dụng để phát triển ứng dụng là gì?
Ứng dụng được viết bằng ngôn ngữ Kotlin trên môi trường Android Studio theo mô hình kiến trúc MVVM (Model - View - ViewModel) kết hợp LiveData. Các công nghệ và thư viện hỗ trợ bao gồm Firebase (Realtime Database, Auth, FCM, Storage, Remote Config), RxJava/RxKotlin/RxAndroid và Dagger 2.
3. Cơ sở dữ liệu Firebase Realtime Database của dự án được tổ chức như thế nào?
Cơ sở dữ liệu được thiết kế theo mô hình cây JSON (JSON Tree) chia làm 3 nhánh chính: nhánh Admin (chứa node Account, IntroductorySentence), nhánh Client (chứa node Account, Comment, Report, TravelList) và nhánh Host (chứa node ListProvinces, DetailProvince, ListRoom).
4. Đồ án áp dụng những biện pháp nào để bảo đảm an toàn thông tin cho ứng dụng?
Đồ án tích hợp 4 giải pháp an toàn: bắt buộc xác thực tài khoản qua email để chống tài khoản ảo; băm mật khẩu người dùng bằng thuật toán MD5 trước khi lưu trữ; mã hóa khóa API thời tiết bằng thuật toán đối xứng AES; cấu hình ProGuard để làm mờ mã nguồn và chống dịch ngược.
5. Quy trình xử lý vi phạm giữa chủ nhà và khách du lịch được thực hiện ra sao?
Khi khách hàng vi phạm nội quy hoặc đặt phòng nhưng không nhận, chủ nhà sẽ gửi báo cáo (chứa contentReport, idClient, idHost) vào node Report. Quản trị viên tại ứng dụng Admin sẽ tiếp nhận thông tin, xem xét các phản hồi và lịch sử đánh giá để đưa ra quyết định khóa tài khoản vi phạm hoặc mở lại tài khoản khi có phản hồi hợp lệ.
Kết luận
Đồ án tốt nghiệp "Phát triển ứng dụng đặt phòng dịch vụ du lịch Homestay trên nền tảng Android" của tác giả Bùi Văn Phúc đã hoàn thành việc xây dựng một hệ thống phần mềm di động hoàn chỉnh phục vụ nhu cầu kết nối giữa khách du lịch, chủ cơ sở lưu trú và nhà quản trị. Thông qua việc kết hợp ngôn ngữ Kotlin, kiến trúc MVVM, các dịch vụ đám mây của Firebase cùng các biện pháp bảo mật dữ liệu, đồ án đã giải quyết hiệu quả bài toán quản lý và đặt phòng homestay theo thời gian thực. Kết quả nghiên cứu có giá trị thực tiễn cao trong lĩnh vực tin học hóa dịch vụ du lịch và là tài liệu tham khảo kỹ thuật hữu ích cho việc xây dựng ứng dụng di động trên nền tảng Android.