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

Trong bối cảnh công nghệ thông tin và Internet toàn cầu phát triển mạnh mẽ, các ứng dụng tin học đã trở thành công cụ đắc lực hỗ trợ công tác quản lý, điều hành và xử lý dữ liệu trong nhiều lĩnh vực kinh tế - xã hội. Đối với ngành du lịch, sự phong phú của các danh lam thắng cảnh và điểm đến du lịch trong nước cũng như quốc tế tạo ra nhu cầu di chuyển và trải nghiệm ngày càng cao của du khách.

Tuy nhiên, nhóm tác giả khóa luận chỉ ra một số vấn đề thực tiễn:

  • Phần lớn khách du lịch chưa tiếp cận được nguồn thông tin cơ bản, đầy đủ và chuẩn xác về địa điểm trong chuyến đi để chủ động chuẩn bị các trang thiết bị, đồ dùng thiết yếu.
  • Người dùng thiếu một không gian kết nối để chia sẻ trải nghiệm, cảm xúc, hình ảnh thực tế, cũng như đánh giá các điểm đến và sản phẩm du lịch.
  • Nhu cầu tự lập lịch trình chi tiết cho chuyến đi cá nhân và tìm mua trực tiếp các sản phẩm du lịch phù hợp trên cùng một nền tảng chưa được đáp ứng đồng bộ.

Xuất phát từ thực tế đó, đề tài "Website du lịch và dịch vụ bán sản phẩm" được thực hiện nhằm giải quyết các nhiệm vụ và mục tiêu cụ thể:

  1. Xây dựng website cung cấp thông tin điểm đến du lịch và dịch vụ bán các sản phẩm/đồ dùng du lịch cần thiết.
  2. Tích hợp diễn đàn cho phép người dùng đăng bài viết, tương tác, bình luận, chia sẻ kinh nghiệm và đánh giá chất lượng điểm đến cũng như sản phẩm.
  3. Cung cấp công cụ cho phép người dùng tự thiết lập lịch trình chuyến đi cá nhân và nhận thông báo lịch trình tự động qua thư điện tử (Gmail).
  4. Xây dựng hệ thống quản trị hỗ trợ quản lý sản phẩm, kiểm duyệt bài đăng cộng đồng, thống kê doanh thu và phân tích các sản phẩm bán chạy.

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

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và hiện thực hóa hệ thống ứng dụng web kết hợp giữa nền tảng cẩm nang/mạng xã hội du lịch và sàn thương mại điện tử chuyên ngành.
  • Phạm vi chức năng: Phân quyền và hiện thực hóa chức năng cho 3 nhóm tác nhân (Khách vãng lai, Thành viên, Quản trị viên - Admin) cùng các tương tác hệ thống tự động (gửi email, liên kết mạng xã hội, tích hợp cổng thanh toán trực tuyến, công cụ trích xuất dữ liệu tự động).
  • Phạm vi triển khai và thời gian: Đồ án được nghiên cứu, phát triển và bảo vệ vào tháng 07/2020 tại Khoa Công nghệ thông tin, Trường Đại học Công nghiệp Thành phố Hồ Chí Minh.

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

Đồ án áp dụng các cơ sở lý thuyết công nghệ phần mềm hiện đại và phương pháp phát triển hệ thống hướng đối tượng:

1. Khung công nghệ và nền tảng lý thuyết

  • ReactJS (Giao diện người dùng - Front-end): Thư viện mã nguồn mở do Facebook phát triển, ứng dụng cơ chế Virtual DOM (DOM ảo) giúp tối ưu hóa hiệu năng render giao diện khi dữ liệu thay đổi; sử dụng luồng dữ liệu một chiều (one-way data binding) truyền qua Props; kiến trúc phân rã thành các Component độc lập, tái sử dụng; kết hợp cú pháp JSX nhằm tối ưu hóa quá trình biên dịch mã JavaScript.
  • Node.js & Express Framework (Xử lý máy chủ - Back-end): Nền tảng xây dựng trên nền tảng V8 JavaScript Engine của Google Chrome, vận hành theo mô hình đơn luồng (Single-Threaded) kết hợp cơ chế vào/ra không chặn (Non-blocking I/O) hướng sự kiện (Event-driven). Express framework cung cấp hệ thống định tuyến (routing) và các tầng xử lý trung gian (middleware) để xây dựng hệ thống RESTful API phục vụ kết nối dữ liệu.
  • MongoDB (Hệ quản trị cơ sở dữ liệu NoSQL): Cơ sở dữ liệu hướng tài liệu (Document-oriented database), lưu trữ dữ liệu dưới định dạng JSON/BSON theo các Collection thay vì bảng quan hệ (RDBMS). Hệ thống tận dụng cấu trúc linh hoạt không bắt buộc ràng buộc khóa ngoại (no JOIN), tự động đánh chỉ mục (index) trên trường _id nhằm tăng tốc độ truy vấn và ghi dữ liệu.
  • Socket.io Library: Thư viện hỗ trợ thiết lập kênh giao tiếp hai chiều thời gian thực (real-time interaction) giữa máy khách và máy chủ.
  • Điện toán đám mây Heroku (Cloud Platform - PaaS): Nền tảng triển khai ứng dụng sử dụng mô hình smart container (Dynos) cho phép mở rộng quy mô linh hoạt theo chiều dọc và chiều ngang; tích hợp quy trình triển khai liên tục CI/CD thông qua Heroku Flow và liên kết kho mã nguồn GitHub.

2. Phương pháp nghiên cứu và phát triển

  • Phương pháp phân tích và mô hình hóa: Sử dụng ngôn ngữ mô hình hóa hợp nhất (UML) để xây dựng sơ đồ ca sử dụng tổng quát (Use Case Diagram), sơ đồ hoạt động (Activity Diagram), sơ đồ tuần tự (Sequence Diagram) và sơ đồ thực thể lớp (Class Entity Diagram).
  • Phương pháp thu thập dữ liệu: Xây dựng công cụ thu thập dữ liệu tự động (Bot Crawl Data) để tổng hợp thông tin về các địa điểm và sản phẩm du lịch từ các nguồn trực tuyến liên quan.
  • Phương pháp tích hợp dịch vụ bên thứ ba: Tích hợp giao diện lập trình ứng dụng (API) của Facebook và Google để hỗ trợ xác thực đăng nhập; tích hợp API cổng thanh toán PayPal cho giao dịch trực tuyến; tích hợp dịch vụ SMTP gửi email thông báo tự động.

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

1. Phân tích tác nhân và kiến trúc chức năng

Hệ thống được thiết kế với 3 tác nhân người dùng chính và 1 tác nhân hệ thống bên ngoài:

Tác nhân Định nghĩa quyền hạn Các nhóm chức năng chính
Khách vãng lai (Guest) Người dùng truy cập hệ thống chưa qua xác thực đăng nhập. Tìm kiếm/xem chi tiết địa điểm; tìm kiếm/xem sản phẩm; xem bài đăng và bình luận cộng đồng; quản lý giỏ hàng tạm thời; đăng ký/đăng nhập tài khoản.
Thành viên (Member) Người dùng đã đăng ký tài khoản và đăng nhập thành công. Toàn bộ quyền của khách vãng lai; cập nhật hồ sơ cá nhân; đặt hàng và thanh toán (trực tiếp hoặc PayPal); xem lịch sử mua hàng; tạo và quản lý lịch trình; đăng bài viết, bình luận, tương tác và đánh giá điểm đến/sản phẩm.
Quản trị viên (Admin) Người quản trị vận hành toàn bộ hệ thống website. Toàn bộ quyền của thành viên; quản lý danh mục sản phẩm (thêm, sửa, xóa); kiểm duyệt bài đăng của thành viên; thống kê sản phẩm bán chạy; thống kê doanh thu theo thời gian.
Hệ thống (System/External) Các dịch vụ nền và API bên ngoài kết nối với hệ thống. Tự động gửi email thông báo lịch trình; xử lý API đăng nhập qua Facebook/Google; kết nối cổng thanh toán PayPal; bot Crawl Data dữ liệu điểm đến và sản phẩm.

2. Danh mục các ca sử dụng (Use Cases)

Toàn bộ hệ thống bao gồm 26 Use Case chính được đánh mã và đặc tả chi tiết trong tài liệu:

Mã UC Tên Use Case Mã UC Tên Use Case
UC01 Đăng nhập UC13.2 Xóa bài đăng
UC02 Đăng ký tài khoản UC14 Tương tác bài đăng
UC03 Tìm kiếm địa điểm UC15 Đánh giá điểm đến du lịch
UC04 Xem danh sách địa điểm du lịch UC16.1 Tạo lịch trình cho chuyến đi
UC05 Xem chi tiết thông tin địa điểm UC16.2 Xem lịch trình đã tạo
UC06 Tìm kiếm sản phẩm UC17 Xem lịch sử đặt/thanh toán
UC07 Xem danh sách sản phẩm UC18.1 Thêm sản phẩm
UC08 Xem thông tin sản phẩm UC18.2 Cập nhật sản phẩm
UC09 Xem danh sách bài đăng UC18.3 Xóa sản phẩm
UC09.1 Xem nội dung bình luận UC19.1 Đánh giá sản phẩm
UC10.1 Xem danh sách giỏ hàng UC20 Thống kê sản phẩm bán chạy
UC10.2 Thêm sản phẩm vào giỏ hàng UC21 Thống kê doanh thu
UC10.3 Cập nhật giỏ hàng UC22 Duyệt bài đăng
UC10.4 Xóa sản phẩm trong giỏ hàng UC23 Gửi email thông báo
UC11 Đặt hàng UC24 Liên kết ví điện tử PayPal
UC12 Thanh toán sản phẩm UC25 Liên kết mạng xã hội
UC13.1 Đăng bài viết UC26 Cập nhật thông tin cá nhân

3. Kịch bản thử nghiệm chức năng (Testing)

Khóa luận tiến hành thử nghiệm giao diện thực tế và ghi nhận các luồng kiểm thử bắt lỗi (validation) trên 5 phân hệ chính:

  • Thử nghiệm Đăng nhập: Kiểm tra trường hợp nhập dữ liệu rỗng (hiển thị thông báo "Tài khoản và mật khẩu không được rỗng"); trường hợp tài khoản không tồn tại (alert "Tài khoản không tồn tại"); trường hợp sai thông tin xác thực (alert "Sai mật khẩu").
  • Thử nghiệm Tạo bài đăng: Kiểm tra ràng buộc tải ảnh (alert "Ảnh không được để rỗng"); kiểm tra tính hợp lệ của tệp tin (thông báo "File ảnh không hợp lệ"); kiểm tra văn bản (thông báo "Nội dung không được để trống"); kiểm tra đăng bài thành công (alert "Bài đã đăng thành công").
  • Thử nghiệm Cập nhật thông tin cá nhân: Bắt lỗi dữ liệu bắt buộc (thông báo "Tên và email không được rỗng"); hiển thị thông báo xác nhận (alert "Cập nhật thông tin thành công").
  • Thử nghiệm Tạo lịch trình: Ràng buộc tên hành trình (alert "Tên hành trình không rỗng"); kiểm tra tính hợp lệ của địa điểm (alert "Bạn chưa chọn địa điểm", "Chưa chọn địa điểm cho ngày đã chọn"); xác nhận thành công (alert "Tạo lịch trình thành công").
  • Thử nghiệm Mua hàng và Thanh toán: Kiểm tra giỏ hàng cho trạng thái chưa đăng nhập và đã đăng nhập; kiểm soát số lượng sản phẩm (cảnh báo "Số lượng sản phẩm không vượt quá 10"); kiểm tra tình trạng tồn tại hàng hóa ("Không tìm thấy thông tin sản phẩm"); xử lý thanh toán qua PayPal (alert thông báo hủy giao dịch hoặc "Đã đặt hàng thành công"); xử lý hủy hoặc xác nhận đơn hàng thành công.

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

Báo cáo khóa luận có dung lượng 125 trang, bao gồm 36 bảng biểu, 118 hình vẽ và 11 tài liệu tham khảo, được bố cục thành 4 chương:

Chương 1: Giới thiệu

Trình bày tổng quan về thực trạng ngành du lịch trong thời đại bùng nổ Internet và vai trò của công nghệ thông tin trong quản lý, chia sẻ dữ liệu du lịch. Xác định rõ lý do thực hiện đề tài, 4 mục tiêu cốt lõi cần đạt được, phạm vi chức năng cho 3 nhóm đối tượng người dùng (Khách vãng lai, Thành viên, Quản trị viên) và mô tả chi tiết yêu cầu kỹ thuật của hệ thống.

Chương 2: Cơ sở lý thuyết

Đi sâu phân tích các nền tảng công nghệ và lý thuyết xây dựng ứng dụng:

  • ReactJS: Trình bày nguyên lý Virtual DOM, cú pháp JSX, cấu trúc Component, cơ chế Props và State, luồng dữ liệu 1 chiều.
  • NodeJS Development & Express: Trình bày cơ chế đơn luồng, mô hình Non-blocking I/O, động cơ V8 JavaScript Engine, và cấu trúc framework Express để xây dựng API và routing.
  • MongoDB: Giới thiệu mô hình NoSQL Document, định dạng JSON, cú pháp thao tác dữ liệu cơ bản (insert, find, update, remove), phân tích ưu điểm (hiệu năng ghi/đọc, tính linh hoạt) và nhược điểm (chiếm dụng bộ nhớ, trễ ghi dữ liệu từ RAM xuống đĩa cứng).
  • Cloud Computing với Heroku: Trình bày mô hình PaaS, kiến trúc máy ảo Dynos, cơ chế mở rộng hệ thống (Scale), các Add-ons tích hợp, tính năng CI/CD với Heroku Flow và quản lý tài nguyên.

Chương 3: Phân tích và thiết kế

Đây là chương trọng tâm về mặt kỹ thuật phần mềm của khóa luận:

  • Xây dựng sơ đồ Use Case tổng quát và mô tả vai trò của từng tác nhân.
  • Lập danh mục và chi tiết hóa 36 bảng đặc tả kịch bản Use Case (từ UC01 đến UC26).
  • Xây dựng hệ thống sơ đồ hoạt động (Activity Diagram) và sơ đồ tuần tự (Sequence Diagram) tương ứng cho từng ca sử dụng.
  • Thiết kế sơ đồ thực thể lớp (Class Entity Diagram) mô tả cấu trúc dữ liệu lưu trữ trong hệ thống.

Chương 4: Hiện thực và kết luận

  • Mô tả chi tiết cấu hình và môi trường cài đặt phần mềm.
  • Minh họa thiết kế giao diện người dùng với hơn 15 màn hình chức năng (trang chủ, trang cộng đồng, trang chi tiết địa điểm, quản lý giỏ hàng, tạo lịch trình, thanh toán đơn hàng, lịch sử mua sắm...).
  • Báo cáo kết quả thử nghiệm chi tiết 5 chức năng chính kèm theo các ca kiểm thử giao diện và xử lý thông báo lỗi.
  • Đánh giá tổng kết các kết quả kỹ thuật đạt được, phân tích hạn chế của đề tài và đề xuất định hướng phát triển trong tương lai.

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

1. Kết quả chính đạt được

  • Hiện thực hóa đầy đủ các phân hệ chức năng: Hoàn thiện website du lịch full-stack tích hợp mạng xã hội và thương mại điện tử với 26 ca sử dụng vận hành hoàn chỉnh trên môi trường thực tế.
  • Đồng bộ hóa tiện ích lập kế hoạch: Xây dựng thành công tính năng tạo lịch trình cá nhân theo từng ngày/địa điểm và tự động chuyển thông tin về hộp thư Gmail của người dùng.
  • Tích hợp đa nền tảng: Kết nối thành công API đăng nhập bằng mạng xã hội (Facebook, Google), cổng thanh toán điện tử PayPal, thư viện tương tác thời gian thực Socket.io và cơ chế thu thập dữ liệu tự động.
  • Triển khai ứng dụng thực tế: Đóng gói và phát hành ứng dụng web thành công trên nền tảng đám mây Heroku.

2. Đóng góp của đề tài

  • Cung cấp mô hình kết hợp giữa việc cung cấp thông tin/kinh nghiệm du lịch cộng đồng với việc thương mại hóa các sản phẩm, vật dụng phục vụ trực tiếp cho chuyến đi trên cùng một hệ thống.
  • Đóng góp bộ tài liệu phân tích thiết kế phần mềm chi tiết (36 bảng biểu đặc tả, 118 biểu đồ UML và giao diện thực tế), tạo tài liệu tham khảo chuẩn mực cho quy trình xây dựng ứng dụng MERN stack (MongoDB, Express, ReactJS, Node.js).

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

1. Hạn chế của đồ án

  • Hạn chế về hạ tầng triển khai: Việc triển khai trên gói dịch vụ Heroku miễn phí có giới hạn thời gian chạy (550 giờ/tháng) và máy chủ tự động chuyển sang trạng thái ngủ (sleep) sau 2 đến 3 giờ không nhận được lưu lượng truy cập.
  • Hạn chế về kiến trúc lưu trữ: Do sử dụng MongoDB lưu trữ dữ liệu dạng key-value lặp lại, hệ thống có thể chiếm dụng nhiều dung lượng bộ nhớ khi mở rộng quy mô dữ liệu lớn; cơ chế ghi dữ liệu trễ từ RAM xuống đĩa cứng (chu kỳ 60 giây) tiềm ẩn rủi ro mất mát dữ liệu khi xảy ra sự cố đột ngột.
  • Giới hạn phạm vi chức năng: Chưa tích hợp sâu vào các dịch vụ phụ trợ như đặt phòng khách sạn, vận chuyển hay chia sẻ lịch trình theo nhóm nhiều người.

2. Hướng phát triển tiếp theo

Tác giả đề xuất các định hướng mở rộng hệ thống bao gồm:

  • Xây dựng thêm chức năng tạo bộ sưu tập (collection) chuyên đề cho người dùng.
  • Bổ sung module quản lý và phân loại địa điểm du lịch chuyên sâu.
  • Tích hợp chuỗi dịch vụ du lịch toàn diện: dịch vụ đặt phòng khách sạn, thuê xe du lịch, đặt vé máy bay, vé tàu hỏa và vé xe buýt.
  • Mở rộng tính năng lập kế hoạch cho phép nhiều thành viên cùng tham gia, chỉnh sửa và đóng góp vào một lịch trình chuyến đi chung đã tạo.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo chuyên môn phù hợp cho:

  • Sinh viên ngành Kỹ thuật phần mềm và Công nghệ thông tin: Tham khảo cấu trúc trình bày đồ án tốt nghiệp chuẩn; học hỏi quy trình phân tích thiết kế hệ thống phần mềm hướng đối tượng bằng UML.
  • Lập trình viên Web Full-stack: Tham khảo kiến trúc kết hợp giữa ReactJS, Node.js/Express và MongoDB; phương pháp thiết kế RESTful API; kỹ thuật tích hợp cổng thanh toán PayPal và thư viện tương tác thời gian thực Socket.io.
  • Phần đáng tham khảo nhất: Chương 3 với hệ thống 36 bảng đặc tả Use Case chi tiết, các sơ đồ tuần tự (Sequence Diagram), sơ đồ hoạt động (Activity Diagram) và kịch bản kiểm thử giao diện thực tế tại Chương 4.

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

1. Hệ thống hỗ trợ những hình thức thanh toán nào khi người dùng mua sản phẩm du lịch? Theo đặc tả tại Chương 1 và Chương 3, hệ thống hỗ trợ 2 hình thức: thanh toán trực tiếp khi nhận hàng (COD) và thanh toán trực tuyến thông qua cổng ví điện tử PayPal (UC12, UC24).

2. Công nghệ nào được tác giả sử dụng để hiện thực hóa các tương tác thời gian thực trên website? Tác giả sử dụng thư viện Socket.io kết hợp với nền tảng Node.js để xử lý và phản hồi các tác vụ tương tác thời gian thực (real-time interactions) giữa người dùng và máy chủ.

3. Chức năng lập lịch trình chuyến đi hỗ trợ người dùng theo dõi thông tin bằng cách nào? Khi thành viên tạo lịch trình chuyến đi (bao gồm tên chuyến đi, thời gian, điểm đi, điểm đến và các địa điểm theo ngày), hệ thống cho phép người dùng xem trực tiếp trên giao diện website (UC16.2), đồng thời tự động kích hoạt tiến trình gửi toàn bộ nội dung lịch trình về địa chỉ Gmail đã đăng ký của người dùng (UC23).

4. Dữ liệu ban đầu về các địa điểm và sản phẩm du lịch trên website được thu thập bằng phương thức nào? Hệ thống xây dựng các công cụ thu thập dữ liệu tự động (Bot Crawl Data) để trích xuất thông tin, hình ảnh và mô tả về các điểm đến cũng như sản phẩm liên quan từ các trang web khác về cơ sở dữ liệu MongoDB của hệ thống.

5. Hệ thống phân quyền quản trị cho tác nhân Admin bao gồm những chức năng nghiệp vụ nào? Admin có toàn quyền thực hiện các chức năng của khách vãng lai và thành viên, đồng thời được cấp quyền thực hiện các nghiệp vụ quản trị riêng biệt: quản lý sản phẩm (thêm, sửa, xóa - UC18), kiểm duyệt bài đăng của thành viên trước khi hiển thị lên cộng đồng (UC22), thống kê sản phẩm bán chạy nhất (UC20) và thống kê doanh thu theo ngày/tháng/năm (UC21).


Kết luận

Khóa luận tốt nghiệp "Website du lịch và dịch vụ bán sản phẩm" của sinh viên Phạm Thanh Duy và Trịnh Đức Duy đã giải quyết trọn vẹn yêu cầu xây dựng một nền tảng ứng dụng web tích hợp giữa cung cấp thông tin điểm đến, mạng xã hội chia sẻ trải nghiệm du lịch và sàn thương mại điện tử chuyên ngành. Báo cáo thể hiện quy trình phát triển phần mềm chặt chẽ từ khảo sát, mô hình hóa 26 ca sử dụng bằng chuẩn UML đến hiện thực hóa hệ thống trên nền tảng công nghệ ReactJS, Node.js, MongoDB và Heroku. Đây là tài liệu tham khảo có giá trị kỹ thuật cao về mặt phân tích thiết kế hệ thống và lập trình ứng dụng web full-stack.