Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin và mạng internet phát triển mạnh mẽ, phương thức tìm kiếm và đặt chỗ ở truyền thống đã có sự chuyển dịch sâu sắc sang các nền tảng trực tuyến. Các hệ thống đặt phòng trực tuyến đóng vai trò then chốt trong việc tổng hợp đa dạng các loại hình lưu trú như khách sạn, khu nghỉ dưỡng (resort), nhà khách, biệt thự (villa) và nhà phố (townhouse), giúp người dùng dễ dàng so sánh giá cả, tiện ích và lựa chọn dịch vụ phù hợp với ngân sách cá nhân. Bên cạnh đó, khả năng cập nhật tình trạng phòng trống theo thời gian thực (real-time availability) giúp giảm thiểu rủi ro quá tải (overbooking), đồng thời hệ thống đánh giá và phản hồi thực tế từ khách hàng trước đó mang lại tính minh bạch cao, tạo dựng niềm tin cho người dùng khi đưa ra quyết định đặt chỗ.

Đề tài khóa luận tốt nghiệp ngành Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (Khoa Đào tạo Chất lượng cao) do nhóm sinh viên Khúc Nguyễn Huy Cường, Nguyễn Đan Trường và Đặng Ngọc Trường Giang thực hiện dưới sự hướng dẫn của TS. Nguyễn Thiên Bảo, với thời gian triển khai từ ngày 07/03/2023 đến ngày 15/07/2023.

Mục tiêu cụ thể của đề tài được xác định gồm:

  1. Xây dựng một website đặt phòng lưu trú thuận tiện, trực quan cho người sử dụng.
  2. Tích hợp đầy đủ các chức năng cơ bản và những tính năng nổi bật của một nền tảng đặt chỗ lưu trú hiện đại.
  3. Đảm bảo tính ổn định và an toàn bảo mật cho toàn bộ hệ thống cũng như người dùng.

Về đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Khóa luận hướng đến hai nhóm đối tượng sử dụng chính là nhóm người có hiểu biết về công nghệ và nhóm người ít có kiến thức về công nghệ. Về mặt công nghệ, nhóm tập trung nghiên cứu 4 thành phần cốt lõi: thư viện ReactJS, nền tảng Next.js, cơ sở dữ liệu MongoDB và framework Beego (Go), cùng một số thư viện JavaScript hỗ trợ giao diện.
  • Phạm vi nghiên cứu: Đề tài tập trung vào việc tiếp thu và ứng dụng kiến thức kỹ thuật vào xây dựng sản phẩm thực tế, không đặt nặng lý thuyết hàn lâm. Về mặt dữ liệu và vị trí địa lý, phạm vi chỗ ở hiện chỉ áp dụng và phục vụ tại thị trường Việt Nam.

Cơ sở lý thuyết và phương pháp

Khóa luận kết hợp nghiên cứu lý thuyết nền tảng về quy trình nghiệp vụ đặt chỗ ở trực tuyến và phương pháp thiết kế, phát triển phần mềm theo hướng module hóa:

  • Phương pháp khảo sát hiện trạng: Khảo sát, phân tích các nền tảng thương mại điện tử du lịch hàng đầu hiện nay như Agoda và Airbnb để đúc kết yêu cầu thực tế về trải nghiệm người dùng, bộ lọc tìm kiếm, thanh toán an toàn, chính sách phòng và khả năng tối ưu hóa trên thiết bị di động.
  • Khung công nghệ và kiến trúc:
    • Frontend Web/Mobile: Sử dụng ReactJS với mô hình Virtual DOM và luồng dữ liệu một chiều (one-way data flow), kết hợp Next.js hỗ trợ kết xuất phía máy chủ (Server-Side Rendering - SSR) và tạo trang tĩnh (Static Site Generation - SSG) nhằm tối ưu SEO và tốc độ tải trang. Quản lý trạng thái thông qua React Redux và Next Redux Wrapper.
    • Backend API: Sử dụng ngôn ngữ Go với framework Beego theo mô hình kiến trúc MVC (Model-View-Controller), tận dụng cơ chế Goroutines và Channels để xử lý đồng thời lượng truy cập lớn.
    • Cơ sở dữ liệu: Sử dụng MongoDB - hệ quản trị cơ sở dữ liệu NoSQL hướng tài liệu (Document-oriented), cho phép lưu trữ cấu trúc dữ liệu dạng JSON linh hoạt, hỗ trợ mở rộng theo chiều ngang (horizontal scalability) và cơ chế Replica Sets đảm bảo khả năng chịu lỗi.
Nền tảng mẫu Ưu điểm ghi nhận Nhược điểm ghi nhận
Agoda Hiển thị thông tin đầy đủ; bộ lọc tìm kiếm đa dạng; hỗ trợ đa ngôn ngữ, đa tiền tệ; cho phép đặt phòng trên phạm vi đa quốc gia. Giao diện hiển thị quá nhiều thông tin chi tiết cùng lúc, dễ gây rối mắt và bối rối cho người dùng.
Airbnb Thông tin hiển thị được chọn lọc kỹ lưỡng; hệ thống đánh giá uy tín; cho phép chủ nhà (host) tự đăng tải khách sạn, biệt thự, nhà phố. Giao diện người dùng có phần tối giản, chưa tận dụng hết các không gian trực quan.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo kiến trúc phân tầng rõ ràng, tách biệt hoàn toàn giữa giao diện người dùng (Client/Admin Frontend) và tầng xử lý nghiệp vụ (Backend API), kết nối thông qua giao thức HTTP RESTful API.

Kiến trúc phân tầng và thư viện sử dụng

  • Admin & Client Frontend: Cấu trúc mã nguồn được phân chia thành các thư mục chuyên biệt gồm components, pages, redux/store, public, styles và utils. Tích hợp các gói phụ thuộc: React Redux (v8.2), Next Redux Wrapper (v8.4), React Image Gallery (v1.11), React Flag Kit (v1.0), Embla Carousel React (v7.2).
  • Backend Service: Xây dựng trên nền Beego với các thành phần điều hướng (routers), bộ điều khiển (controllers), mô hình dữ liệu (models) và tiện ích kết nối (database connection). Tích hợp các gói thư viện Go như godotenv (v1.0), goconvey (v1.1), stringprep (v1.7).

Mô hình thực thể và cơ sở dữ liệu (Data Models)

Cơ sở dữ liệu MongoDB lưu trữ 13 thực thể chính phục vụ đầy đủ vòng đời nghiệp vụ đặt phòng:

  1. User & Account: Lưu trữ thông tin cá nhân, định danh, mật khẩu phân quyền.
  2. Hotel, Room: Quản lý thông tin địa điểm, mô tả, hình ảnh 360 độ, giá niêm yết, chính sách phụ phí.
  3. VillaTownhouse: Quản lý danh mục loại hình lưu trú biệt thự và nhà phố nguyên căn.
  4. RoomOrder & VillaTownhouseOrder: Lưu vết giao dịch đặt phòng, ngày check-in/check-out, tổng tiền, trạng thái thanh toán.
  5. Comment, Contact, Holiday, MonthlyFee, News, News content: Lưu trữ phản hồi khách hàng, biểu phí định kỳ, chính sách ngày lễ, tin tức quảng bá và hỗ trợ khách hàng.

Nội dung chính theo từng chương

Chương 1: Tổng quan (Overview)

Trình bày tính cấp thiết của việc số hóa dịch vụ lưu trú du lịch. Phân tích sự chuyển dịch của hành vi người tiêu dùng từ đặt phòng truyền thống sang sử dụng ứng dụng web và di động. Xác định rõ mục đích đồ án, giới hạn phạm vi nghiên cứu công nghệ (ReactJS, Next.js, Beego, MongoDB) và đối tượng người dùng cuối.

Chương 2: Khảo sát hiện trạng và xác định yêu cầu (Status Survey and Determination of Requirements)

Phân tích hiện trạng thị trường thông qua 5 tiêu chí: trải nghiệm người dùng (UX), tính năng nền tảng, khả năng tiếp cận trên thiết bị di động, hệ thống đánh giá của khách hàng và xu hướng công nghệ (AI, đặt phòng bền vững). Đánh giá chi tiết ưu và nhược điểm của hai website điển hình là Agoda và Airbnb để xác định bộ yêu cầu thực tế cho dự án.

Chương 3: Kiến trúc hệ thống và công nghệ sử dụng (System Architecture and Used Technology)

Mô tả chi tiết cấu trúc thư mục của Admin Frontend, Client Frontend và Backend API. Đi sâu vào lý thuyết định nghĩa, mục đích sử dụng, ưu điểm và nhược điểm của 4 công nghệ trụ cột: ReactJS (thư viện UI hướng component), Next.js (framework hỗ trợ SSR/SSG), Beego (framework Go hiệu năng cao chuẩn MVC) và MongoDB (NoSQL linh hoạt schema). Liệt kê danh mục các gói thư viện phụ trợ cho cả Client và Server.

Chương 4: Mô hình hóa yêu cầu (Requirement Modeling)

Phân tích chi tiết các yêu cầu chức năng nghiệp vụ, yêu cầu hệ thống và yêu cầu phi chức năng. Xác định 3 tác nhân chính (Actors) và danh mục Use Case tương ứng:

Tác nhân (Actor) Phạm vi quyền hạn và Use Case chính
Quản trị viên (Admin) Quản lý toàn bộ tài khoản người dùng, phê duyệt/quản lý khách sạn, phòng nghỉ, bình luận, đơn đặt phòng, bài viết tin tức, quản lý bảng giá/khuyến mãi, theo dõi và xuất báo cáo thống kê doanh thu (Excel).
Chủ chỗ ở (Host) Đăng ký, đăng nhập tài khoản; quản lý thông tin khách sạn/biệt thự/phòng thuộc sở hữu; phản hồi bình luận; quản lý đơn đặt phòng; đăng tin tức; theo dõi và xuất thống kê doanh thu theo ngày/tháng.
Khách hàng (Customer) Tìm kiếm chỗ ở theo địa điểm, thời gian, số lượng khách; xem danh sách và chi tiết phòng; xem tin tức; thực hiện quy trình đặt phòng và thanh toán trực tuyến; gửi đánh giá/bình luận.

Chương này cũng thiết lập 13 bảng đặc tả ca sử dụng (Use case specifications) chi tiết từng bước tương tác (các bước thực hiện, tiền điều kiện, luồng xử lý chính và thông báo lỗi).

Chương 5: Thiết kế hệ thống (System Design)

Chi tiết hóa thiết kế cơ sở dữ liệu qua sơ đồ quan hệ thực thể (ERD) và cấu trúc các trường thông tin trong từng model. Trình bày thiết kế giao diện người dùng cùng sơ đồ sự kiện (Event diagrams) cho 11 phân hệ màn hình chính: Đăng nhập, Đăng ký, Quản trị tổng quan, Quản lý khách sạn, Quản lý biệt thự, Quản lý nhà phố, Quản lý tin tức, Quản lý tài khoản, Hóa đơn phòng, Trang đặt phòng và Trang thanh toán. Đi kèm là hệ thống 12 sơ đồ tuần tự (Sequence diagrams) mô tả luồng dữ liệu tương tác giữa Actor, Giao diện và Máy chủ.

Chương 6: Hiện thực hóa và kiểm thử (Implementation and Testing)

Trình bày quá trình cài đặt chương trình và phương pháp bảo đảm chất lượng phần mềm. Tiến hành cả hai kỹ thuật kiểm thử: Kiểm thử hộp trắng (White Box Testing) và Kiểm thử hộp đen (Black Box Testing). Thiết lập quy trình phân loại lỗi (Error classification) và quy trình theo dõi, khắc phục khuyết tật phần mềm (Defect tracking process). Đánh giá khách quan các ưu điểm và mặt còn tồn tại của hệ thống.


Kết quả và đóng góp

Kết quả kỹ thuật và chức năng đạt được

  • Xây dựng hoàn chỉnh hệ thống đặt chỗ lưu trú bao gồm website cho người dùng, website quản trị cho Admin/Host và tích hợp giao diện ứng dụng di động.
  • Triển khai thành công hệ thống đặt phòng hỗ trợ thanh toán trực tuyến đa ngân hàng.
  • Tích hợp tính năng hiển thị hình ảnh 360 độ (360-degree image), giúp khách hàng quan sát trực quan không gian phòng nghỉ trước khi quyết định đặt.
  • Cung cấp danh mục loại hình lưu trú đa dạng: khách sạn truyền thống, phòng đơn/đôi, biệt thự nghỉ dưỡng và nhà phố nguyên căn.
  • Xây dựng hoàn chỉnh mô-đun tính toán thống kê doanh thu theo ngày, tháng và hỗ trợ trích xuất dữ liệu ra tệp tin Excel cho chủ cơ sở lưu trú.

Đóng góp thực tiễn

  • Cung cấp một giải pháp phần mềm hoàn chỉnh, có khả năng áp dụng trực tiếp cho các cơ sở kinh doanh dịch vụ du lịch, lưu trú vừa và nhỏ tại Việt Nam.
  • Kết hợp thành công kiến trúc công nghệ hiện đại giữa Golang (Beego) ở phía máy chủ để tối ưu tốc độ xử lý đồng thời, cùng Next.js/ReactJS ở phía giao diện nhằm tối ưu hóa công cụ tìm kiếm và nâng cao trải nghiệm khách hàng.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên đánh giá của giảng viên hướng dẫn và quá trình tự đánh giá của nhóm tác giả:

  • Phạm vi dữ liệu: Danh mục cơ sở lưu trú và đối tác mới chỉ hỗ trợ trong phạm vi lãnh thổ Việt Nam, chưa mở rộng ra các điểm đến quốc tế.
  • Hiệu năng hệ thống: Tốc độ tải trang ở một số phân hệ còn chậm do khối lượng tài nguyên hình ảnh (đặc biệt là ảnh 360 độ) tương đối lớn.
  • Hạn chế trong triển khai nhóm: Quá trình phối hợp làm việc nhóm còn xảy ra độ trễ trong chia sẻ thông tin và phong cách giao tiếp; một số thành viên phải vừa học vừa làm ảnh hưởng đến tiến độ trao đổi công việc.
  • Hướng mở: Tiếp tục tối ưu hóa thuật toán nén và phân phối ảnh để cải thiện tốc độ tải trang, mở rộng quy mô dữ liệu cho các khu vực quốc tế và hoàn thiện sâu hơn các tính năng cá nhân hóa đề xuất chỗ ở.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo giá trị cho sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và các nhà phát triển hệ thống web/mobile:

  • Tham khảo kiến trúc Full-stack hiện đại: Tài liệu cung cấp chi tiết cách thức tổ chức mã nguồn khi kết hợp backend viết bằng Go (Beego framework) và frontend viết bằng ReactJS / Next.js.
  • Tham khảo tài liệu phân tích thiết kế: Hệ thống biểu mẫu phân tích yêu cầu, bảng đặc tả Use Case, sơ đồ tuần tự (Sequence Diagrams) và thiết kế thực thể NoSQL MongoDB được trình bày rất mạch lạc, chuẩn mực theo quy trình kỹ thuật phần mềm.
  • Tham khảo quy trình kiểm thử: Quy trình phân loại khuyết tật (Defect Tracking) và thiết kế ca kiểm thử hộp đen, hộp trắng phù hợp cho các đồ án tốt nghiệp ứng dụng thực tế.

Câu hỏi thường gặp

1. Hệ thống sử dụng công nghệ nào cho phần Backend và Frontend?
Backend được phát triển bằng ngôn ngữ Go sử dụng framework Beego, kết hợp cơ sở dữ liệu NoSQL MongoDB. Frontend được xây dựng bằng ReactJS kết hợp framework Next.js cùng hệ thống quản lý trạng thái Redux.

2. Điểm nổi bật nhất về mặt tính năng của website đặt phòng này là gì?
Website hỗ trợ thanh toán trực tuyến qua nhiều ngân hàng, cung cấp tính năng xem ảnh 360 độ giúp khách hàng hình dung không gian thực tế của phòng trước khi đặt, và hỗ trợ đa dạng loại hình chỗ ở từ khách sạn, biệt thự (villa) đến nhà phố (townhouse).

3. Hệ thống phân quyền cho những nhóm người dùng nào?
Hệ thống xác định 3 tác nhân (Actors) chính: Quản trị viên (Admin - quản lý toàn bộ hệ thống, tài khoản, khách sạn, báo cáo), Chủ chỗ ở (Host - quản lý phòng, phản hồi đánh giá, xem doanh thu và xuất Excel) và Khách hàng (Customer - tìm kiếm, xem tin tức, đặt phòng, bình luận).

4. Khóa luận sử dụng các phương pháp kiểm thử nào để bảo đảm chất lượng phần mềm?
Nhóm tác giả đã áp dụng đồng thời hai phương pháp: Kiểm thử hộp trắng (White Box Testing) và Kiểm thử hộp đen (Black Box Testing), kết hợp bảng phân loại lỗi và quy trình theo dõi khuyết tật (Defect tracking process).

5. Nhược điểm chính của hệ thống được chỉ ra trong báo cáo là gì?
Hệ thống hiện mới chỉ hỗ trợ các cơ sở lưu trú tại Việt Nam và tốc độ tải trang vẫn còn khá chậm.


Kết luận

Khóa luận tốt nghiệp của nhóm sinh viên Khúc Nguyễn Huy Cường, Nguyễn Đan Trường và Đặng Ngọc Trường Giang đã giải quyết trọn vẹn bài toán xây dựng nền tảng đặt chỗ lưu trú trực tuyến đáp ứng đầy đủ yêu cầu nghiệp vụ thực tế. Đồ án thể hiện quy trình phát triển phần mềm chặt chẽ từ khảo sát hiện trạng, mô hình hóa yêu cầu, thiết kế kiến trúc phân tầng đến hiện thực hóa và kiểm thử. Mặc dù còn hạn chế về phạm vi địa lý và tốc độ tải trang, sản phẩm đã chứng minh tính ứng dụng thực tiễn cao và là tài liệu tham khảo hữu ích cho các dự án phát triển ứng dụng thương mại điện tử du lịch.