Bối cảnh và vấn đề nghiên cứu
Sự phổ biến của điện thoại thông minh cùng các ứng dụng di động đã thay đổi phương thức sinh hoạt và giao dịch hàng ngày của người dùng, từ các dịch vụ thanh toán điện nước, chuyển khoản đến quản lý học tập. Trong đời sống đô thị, nhu cầu thuê phòng trọ gần nơi làm việc hoặc cơ sở đào tạo là một vấn đề thiết thực. Việc tiếp cận phòng trọ trong bán kính từ 1–2 km giúp người lao động và sinh viên tiết kiệm thời gian, công sức, giảm chi phí di chuyển, đồng thời hạn chế tình trạng ùn tắc giao thông vào giờ cao điểm và tình trạng quá tải của các phương tiện công cộng.
Đối với sinh viên tại các đô thị lớn như Hà Nội và Thành phố Hồ Chí Minh, nhu cầu thuê nhà trọ gia tăng đột biến vào mỗi mùa tựu trường. Mặc dù các loại hình nhà trọ, dãy trọ và chung cư mini phát triển nhanh chóng quanh các trường đại học, mặt bằng giá thuê tại các khu vực này thường bị đẩy lên cao. Những người lần đầu tìm phòng trọ thường gặp nhiều trở ngại trong việc khảo sát giá cả, kiểm định tính xác thực của thông tin và định vị các địa điểm phù hợp với điều kiện kinh tế. Từ thực tiễn đó, đồ án tốt nghiệp kỹ sư Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh của hai sinh viên Nguyễn Thành Đồng và Hồ Ngọc Sơn Hà (dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn) đã lựa chọn đề tài "Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động".
Đề tài xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:
- Nghiên cứu cơ sở lý thuyết và tài liệu chuyên ngành về Flutter, ngôn ngữ Dart, Google Firebase, Google Maps Platform, Server-Side Rendering (SSR), Next.js, ReactJS, TypeScript và kiến trúc Redux.
- Phân tích, thiết kế và xây dựng ứng dụng di động tìm phòng trọ với các chức năng chính:
- Đăng ký, đăng nhập và đăng xuất tài khoản.
- Xem danh sách các phòng trọ còn phòng trống.
- Xem thông tin chi tiết của từng phòng trọ.
- Tìm kiếm phòng trọ xung quanh vị trí địa lý hiện tại của người dùng.
- So sánh thông tin chi tiết giữa hai phòng trọ.
- Thêm và xóa thông tin phòng trọ (dành cho chủ trọ).
- Đăng tải và xóa bài viết trong diễn đàn cộng đồng.
- Bình luận và đánh giá dưới các bài viết trong diễn đàn.
- Xây dựng trang web quản trị (Admin Web) phục vụ công tác quản lý hệ thống:
- Đăng nhập và đăng xuất tài khoản quản trị viên.
- Chỉnh sửa và kiểm duyệt thông tin các phòng trọ đã đăng ký trên ứng dụng.
- Quản lý và chỉnh sửa thông tin tài khoản người dùng trong hệ thống.
- Thêm mới, chỉnh sửa và quản lý các bài viết trên diễn đàn.
Về đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Ứng dụng di động tìm kiếm phòng trọ và hệ thống trang web quản lý thông tin phòng trọ, người dùng và diễn đàn, hướng tới phục vụ đa dạng nhóm người dùng ở các độ tuổi khác nhau.
- Phạm vi nghiên cứu:
- Về công nghệ: Tập trung vào bộ công cụ phát triển phần mềm Flutter (Dart SDK), hệ sinh thái Google Firebase (Cloud Firestore, Authentication, Storage, RemoteConfig), Google Maps Platform (Maps SDK cho Android/iOS, Direction API, Distance Matrix API, Geolocation API, Geocoding API), và nền tảng web quản trị xây dựng bằng TypeScript, Next.js, Redux, ReactJS.
- Về nền tảng triển khai: Ứng dụng di động hỗ trợ hệ điều hành Android; trang web quản trị vận hành trên môi trường trình duyệt tương thích với các hệ điều hành Windows, Linux và macOS.
- Về thời gian thực hiện: Khóa luận được tiến hành trong 15 tuần (từ ngày 30/03/2020 đến ngày 12/07/2020).
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng trên khung lý thuyết kỹ thuật phần mềm hiện đại, kiến trúc ứng dụng di động đa nền tảng và mô hình quản trị dữ liệu thời gian thực trên nền tảng đám mây:
- Bộ công cụ Flutter và ngôn ngữ Dart: Flutter là SDK của Google cho phép xây dựng ứng dụng native đa nền tảng. Ứng dụng chạy trên nền tảng engine render viết bằng C++ kết hợp Flutter Framework viết bằng Dart. Dart là ngôn ngữ lập trình hướng đối tượng (OOP), hỗ trợ cơ chế biên dịch AOT (Ahead of Time) nhằm tối ưu hiệu năng native khi đóng gói ứng dụng và JIT (Just in Time) để phục vụ tính năng Hot-reload trong quá trình phát triển. Về cấu hình tác vụ, Flutter phân tách độc lập 4 luồng xử lý không chia sẻ bộ nhớ (Platform Task Runner, UI Task Runner, GPU Task Runner và IO Task Runner) và giao tiếp qua các kênh truyền thông điệp (channels).
- Hệ thống Google Firebase: Nền tảng Backend-as-a-Service cung cấp cơ sở dữ liệu phi quan hệ NoSQL Cloud Firestore tổ chức dữ liệu dưới dạng cây (trees, parent-children), tài liệu (documents) và tập hợp (collections), hỗ trợ đồng bộ dữ liệu thời gian thực và lưu trữ ngoại tuyến. Đi kèm là các dịch vụ Firebase Authentication (xác thực đa kênh), Firebase Storage (lưu trữ tập tin hình ảnh phòng trọ với bảo mật SSL) và Firebase RemoteConfig.
- Dịch vụ bản đồ Google Maps Platform: Tích hợp bộ Maps SDK cho Android và iOS nhằm trực quan hóa vị trí phòng trọ thông qua các điểm đánh dấu (Markers), đường đa giác (Polylines), lớp phủ (Overlays). Đi kèm là các API dịch vụ: Direction API (tính toán tuyến đường di chuyển tối ưu), Distance Matrix API (tính khoảng cách và thời gian di chuyển giữa các điểm), Geolocation API (xác định tọa độ vị trí người dùng qua mạng di động/WiFi) và Geocoding API (chuyển đổi tọa độ địa lý sang địa chỉ văn bản và ngược lại).
- Kiến trúc quản lý trạng thái Redux: Áp dụng mô hình một chiều cho trang quản trị web gồm View Provider, Action (đối tượng chứa dữ liệu sự kiện), Middleware (xử lý bất đồng bộ, ghi log), Store (nơi lưu trữ trạng thái tập trung) và Reducer (hàm thuần túy tạo trạng thái mới từ bản sao trạng thái ban đầu).
- Nền tảng Next.js và TypeScript: Next.js hỗ trợ Server-Side Rendering (SSR) giải quyết nhược điểm SEO và tốc độ tải trang ban đầu của các ứng dụng Single Page JavaScript truyền thống; tích hợp tính năng Hot code reloading, Automatic Routing và Automatic Code Splitting. TypeScript bổ sung hệ thống kiểu tĩnh (static typing) và cú pháp hướng đối tượng của ECMAScript 2015 (ES6) cho mã nguồn JavaScript.
Phương pháp nghiên cứu thực tế được nhóm tác giả áp dụng bao gồm:
- Phương pháp tổng hợp lý thuyết: Thu thập, phân tích và hệ thống hóa tài liệu kỹ thuật từ các nguồn chính thức của Google, Flutter.dev, Firebase Documentation, Redux.js và Nextjs.org.
- Phương pháp chuyên gia: Tham khảo và tiếp thu ý kiến hướng dẫn định kỳ từ giảng viên hướng dẫn (ThS. Nguyễn Trần Thi Văn) cùng các chuyên gia phát triển phần mềm để hoàn thiện quy trình thiết kế.
- Phương pháp mô hình hóa: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng sơ đồ Use Case tổng quan và chi tiết, sơ đồ luồng dữ liệu (Data Flow), sơ đồ tuần tự (Sequence Diagram), thiết kế cơ sở dữ liệu quan hệ và phi quan hệ dạng node, cùng biểu đồ lớp (Class Diagram).
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo cấu trúc phân tầng kết hợp giữa ứng dụng di động phía người dùng cuối và cổng thông tin quản trị web phía quản trị viên:
- Phân hệ Ứng dụng Di động (Mobile App): Xây dựng trên nền tảng Flutter/Dart, kết nối trực tiếp với Firebase Cloud Firestore và Google Maps SDK. Phân hệ cung cấp giao diện tương tác cho 3 nhóm đối tượng: Khách vãng lai (Guess), Người tìm trọ (Finder) và Chủ nhà trọ (Innkeeper).
- Phân hệ Quản trị Web (Admin Web): Phát triển bằng ReactJS, Next.js và TypeScript, quản lý trạng thái luồng dữ liệu thông qua Redux, tích hợp trình soạn thảo nội dung TinyMCE (Tinyrcm) phục vụ công tác biên tập bài viết diễn đàn và điều hành cơ sở dữ liệu phòng trọ, tài khoản.
- Phân hệ Lưu trữ và Dịch vụ nền tảng (Cloud Infrastructure): Sử dụng Firebase Authentication để xác thực định danh, Cloud Firestore để quản lý dữ liệu đối tượng dưới dạng cấu trúc Node-tree, Firebase Storage để lưu trữ hình ảnh phòng trọ và hạ tầng Google Cloud Platform phục vụ các lệnh gọi API bản đồ.
| Tiêu chí phi chức năng |
Yêu cầu kỹ thuật và chỉ số cam kết trong đồ án |
| Môi trường vận hành |
Ứng dụng di động hoạt động trên hệ điều hành Android; Trang quản trị hoạt động trên các hệ điều hành Windows, Linux, macOS |
| Thời gian chuyển đổi màn hình |
Không quá 2 giây trên ứng dụng di động |
| Thời gian tìm kiếm / tải dữ liệu |
Không quá 5 giây trên ứng dụng di động |
| Thời gian thêm thông tin phòng |
Không quá 5 giây trên ứng dụng di động |
| Thời gian xử lý trang Admin |
Thời gian chỉnh sửa, thêm mới dữ liệu, tải ảnh không quá 10 giây |
| An toàn và bảo mật |
Kết nối mã hóa qua giao thức SSL, cơ chế phân quyền tài khoản chặt chẽ, bảo toàn tính toàn vẹn dữ liệu |
| Tính định danh hệ thống |
Mọi đối tượng dữ liệu trong hệ thống đều được gán một mã định danh duy nhất (Unique ID) |
Nội dung chính theo từng chương
Chương 1. Cơ sở lý thuyết
Chương 1 trình bày chi tiết nền tảng công nghệ phục vụ việc xây dựng đồ án. Nhóm tác giả tổng thuật lịch sử phát triển của Flutter từ dự án "Sky" năm 2015 đến phiên bản ổn định Flutter 1.0 (phát hành ngày 04/12/2018 tại sự kiện Flutter Live), phân tích cấu trúc 4 Task Runner (Platform, UI, GPU, IO) và so sánh ưu thế hiệu năng của Flutter so với React Native. Tiếp đó, chương phân tích lịch sử Firebase từ tiền thân Evolve (2011) đến khi gia nhập Google (10/2014), cấu trúc NoSQL của Cloud Firestore, dịch vụ xác thực Firebase Authentication và lưu trữ Firebase Storage. Chương cũng cung cấp tổng quan về 5 nhóm dịch vụ chính của Google Maps API (Maps SDK Android/iOS, Direction API, Distance Matrix API, Geolocation API, Geocoding API), kiến trúc quản lý trạng thái Redux (View Provider, Action, Store, Middleware, Reducer), các đặc tính kiểu tĩnh của TypeScript và cơ chế Server-Side Rendering cùng các tính năng tối ưu hóa của Next.js.
Chương 2. Khảo sát hiện trạng và xác định yêu cầu
Chương này tiến hành đánh giá thực nghiệm 4 ứng dụng tìm phòng trọ phổ biến trên thị trường tại thời điểm nghiên cứu nhằm xác định các khoảng trống kỹ thuật và trải nghiệm người dùng:
| Ứng dụng khảo sát |
Ưu điểm ghi nhận |
Nhược điểm còn tồn tại |
| Hello Rent |
Giao diện thân thiện, dễ sử dụng; có hình ảnh phòng trọ; hỗ trợ tìm kiếm trên bản đồ và có bộ lọc theo nhu cầu. |
Giao diện chưa thực sự cuốn hút; quy trình tìm trọ còn phức tạp và phải trải qua nhiều bước. |
| Doong |
Tốc độ xử lý nhanh; quy trình tìm trọ đơn giản; có hình ảnh thực tế và chức năng tìm kiếm trên bản đồ. |
Giao diện chưa thân thiện; bố cục và màu sắc chưa hợp lý; dữ liệu phòng trọ chưa được cập nhật thường xuyên. |
| Landber |
Giao diện thân thiện; quy trình tìm kiếm đơn giản; tích hợp hình ảnh phòng và bản đồ định vị vị trí. |
Bố cục giao diện chưa tối ưu, khó cuốn hút người dùng; dữ liệu phòng trọ chưa duy trì tần suất cập nhật liên tục. |
| Tìm Trọ |
Giao diện thân thiện; quy trình đơn giản; có ảnh phòng, bản đồ định vị; dữ liệu phòng trọ được cập nhật thường xuyên. |
Bố cục giao diện hiển thị vẫn chưa thực sự hợp lý để thu hút người dùng. |
Từ kết quả khảo sát, chương thiết lập hệ thống yêu cầu chức năng, phi chức năng, yêu cầu hệ thống và phân rã 4 sơ đồ Use Case cho 4 nhóm tác nhân:
- Finder (Người tìm trọ): Tìm kiếm phòng theo bộ lọc, tìm kiếm theo bản đồ, so sánh phòng trọ, xem chi tiết phòng, bình luận bài viết diễn đàn.
- Innkeeper (Chủ trọ): Thêm phòng trọ mới, xóa/sửa thông tin phòng, đăng tải hình ảnh thực tế của phòng, đăng bài viết lên diễn đàn.
- Guess (Khách vãng lai): Đăng ký tài khoản, đăng nhập hệ thống, xem thông tin giới thiệu và điều khoản.
- Admin (Quản trị viên): Quản lý người dùng, quản lý phòng trọ, quản lý bài đăng diễn đàn.
Chương 3. Phân tích, mô hình hoá yêu cầu và thiết kế cơ sở dữ liệu
Chương 3 đi sâu vào phân tích luồng dữ liệu (Data Flow) và xây dựng sơ đồ xử lý nghiệp vụ cho 5 tác vụ cốt lõi:
- Xét nghiệp vụ Tìm kiếm phòng (Search Rooms): Mô tả quá trình tiếp nhận tham số lọc (giá, diện tích, tiện ích, vị trí), truy vấn cơ sở dữ liệu và trả về tập kết quả.
- Xét nghiệp vụ Thêm phòng (Add Rooms): Quy trình nhập liệu thông tin, kiểm tra tính hợp lệ, tải ảnh lên Storage và ghi dữ liệu phòng mới.
- Xét nghiệp vụ Sửa phòng (Edit Rooms): Quy trình cập nhật thông tin phòng trọ của chủ nhà và đồng bộ trạng thái dữ liệu.
- Xét nghiệp vụ Đăng bài viết (Add Post): Tiếp nhận nội dung văn bản, phân loại chủ đề và lưu trữ vào phân hệ diễn đàn.
- Xét nghiệp vụ Sửa bài viết (Edit Post): Cập nhật nội dung thảo luận và quản lý lịch sử chỉnh sửa.
Chương cũng hoàn thiện lược đồ quan hệ và mô tả cấu trúc cơ sở dữ liệu Firebase dạng Node cho hai thực thể trung tâm là User (lưu trữ mã người dùng, tên, số điện thoại, quyền hạn) và Room (lưu trữ thông tin chi tiết phòng, địa chỉ, tọa độ định vị, giá thuê, tiền điện, tiền nước, ban công, phòng ghép, trạng thái phòng, danh sách URL hình ảnh).
Chương 4. Thiết kế giao diện và xử lý
Chương 4 cung cấp chi tiết thiết kế giao diện đồ họa kèm danh sách các bước xử lý sự kiện (Event Handlers) cho hơn 22 màn hình chức năng của cả hai phân hệ:
- Giao diện ứng dụng di động: Màn hình Đăng nhập (Sign In), Đăng ký (Sign Up), Thanh điều hướng Sidebar, Trang About và Contact Us, Trang chủ (Homepage với thanh tìm kiếm), Danh sách phòng (ListRoom), Bộ lọc tìm kiếm nâng cao (Filter), Bản đồ định vị và tìm kiếm theo địa chỉ (Google Maps Location), Màn hình so sánh thông số hai phòng trọ (CompareRooms), Màn hình thêm phòng mới, Màn hình đăng tải ảnh phòng trọ (Upload Image), Màn hình chi tiết phòng (DetailRoom), Danh sách bài đăng diễn đàn và Màn hình chi tiết bài đăng kèm khu vực bình luận.
- Giao diện trang quản trị Admin: Màn hình Đăng nhập quản trị, Màn hình danh sách phòng trọ, Màn hình cập nhật thông tin phòng trọ, Màn hình danh sách bài viết diễn đàn, Màn hình cập nhật nội dung bài viết và Màn hình quản lý thông tin tài khoản người dùng.
Chương 5. Cài đặt và kiểm thử ứng dụng
Chương 5 mô tả quy trình hiện thực hóa mã nguồn trên môi trường thực tế (Android Studio, Visual Studio Code, Node.js) và tích hợp các thư viện liên quan. Tác giả trình bày biểu đồ lớp (Class Diagram) cho ứng dụng di động tìm phòng trọ và trang quản trị Admin; xây dựng các sơ đồ tuần tự (Sequence Diagram) cho các nghiệp vụ Edit User, Add Room, Edit Room. Chương kết thúc bằng bảng tổng hợp kiểm thử ứng dụng (Testing), kiểm tra tính chính xác của các ca kiểm thử chức năng, tính ổn định của luồng dữ liệu thời gian thực và thời gian phản hồi của hệ thống.
Kết quả và đóng góp
Đồ án đã đạt được các kết quả kỹ thuật và sản phẩm cụ thể theo đúng tiến độ kế hoạch 15 tuần:
- Xây dựng hoàn chỉnh ứng dụng di động chạy trên hệ điều hành Android bằng Flutter/Dart với giao diện hỗ trợ tìm kiếm phòng trọ, định vị vị trí trực quan qua Google Maps, và tích hợp diễn đàn trao đổi thông tin giữa người thuê và chủ nhà.
- Xây dựng hoàn chỉnh trang web quản trị hệ thống bằng Next.js, ReactJS, TypeScript và Redux, hỗ trợ quản trị viên quản lý, cập nhật và kiểm duyệt danh mục phòng trọ, bài đăng và dữ liệu người dùng.
- Thiết kế và tích hợp thành công hệ thống cơ sở dữ liệu phi quan hệ thời gian thực Firebase Cloud Firestore dạng node, giải pháp xác thực Firebase Authentication và kho lưu trữ hình ảnh Firebase Storage.
- Hiện thực hóa tính năng so sánh trực tiếp chi tiết thông số giữa 2 phòng trọ trên ứng dụng di động, giúp người tìm trọ dễ dàng đánh giá sự khác biệt về giá thành, diện tích, chi phí điện nước và các tiện ích đi kèm (ban công, ở ghép).
- Tích hợp bộ công cụ lọc phòng trọ đa tiêu chí và dịch vụ bản đồ số (Google Maps Platform) cho phép tính toán khoảng cách và hiển thị đường đi trực quan.
Về giải pháp và đóng góp so với các hệ thống đã khảo sát:
- Khắc phục nhược điểm thao tác rườm rà của các ứng dụng hiện hành (như Hello Rent) bằng cách tối ưu hóa luồng tương tác tìm kiếm trên ứng dụng di động.
- Giải quyết bài toán cập nhật thông tin chậm của các ứng dụng tiền nhiệm (Doong, Landber) thông qua cơ chế đồng bộ dữ liệu thời gian thực (Realtime Data) của Firebase Cloud Firestore.
- Bổ sung công cụ so sánh trực quan và diễn đàn đánh giá thực tế giúp tăng cường tính minh bạch của thông tin phòng trọ cho đối tượng sinh viên và người lao động.
Hạn chế và hướng nghiên cứu tiếp
Theo đánh giá của nhóm tác giả trong báo cáo khóa luận:
- Hạn chế:
- Trong phạm vi thời gian 15 tuần, ứng dụng di động mới được tập trung đóng gói, cài đặt và kiểm thử trên nền tảng Android, chưa hoàn thiện việc kiểm thử và triển khai toàn diện trên hệ điều hành iOS.
- Các tính năng nâng cao trong hệ sinh thái Firebase như Firebase RemoteConfig và A/B Testing mới dừng lại ở bước nghiên cứu lý thuyết và tích hợp thử nghiệm cơ bản, chưa được khai thác tối đa trong môi trường vận hành quy mô lớn.
- Hệ thống dữ liệu phòng trọ chủ yếu dựa trên thông tin người dùng và quản trị viên nhập thủ công, chưa có cơ chế tự động hóa kiểm tra tính xác thực của hình ảnh phòng trọ.
- Hướng phát triển trong tương lai:
- Hoàn thiện việc đóng gói và triển khai ứng dụng trên hệ điều hành iOS để tận dụng tối đa khả năng đa nền tảng của Flutter.
- Tích hợp đầy đủ các dịch vụ Firebase RemoteConfig và A/B Testing vào quy trình phát hành nhằm nâng cao khả năng cá nhân hóa trải nghiệm và tối ưu hóa hiệu năng ứng dụng.
- Phát triển thêm các thuật toán gợi ý phòng trọ thông minh dựa trên lịch sử tìm kiếm và sở thích của người dùng; tích hợp cổng thanh toán trực tuyến tiền cọc và phòng trọ.
Giá trị tham khảo
Báo cáo khóa luận cung cấp nguồn tài liệu kỹ thuật có giá trị tham khảo cho:
- Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Tài liệu tham khảo hữu ích về phương pháp phân tích yêu cầu, mô hình hóa hệ thống bằng UML (Use Case, Data Flow, Sequence Diagram, Class Diagram) và quy trình thực hiện một đồ án tốt nghiệp kỹ sư CNTT trong khung thời gian 15 tuần.
- Lập trình viên phát triển ứng dụng di động và web: Tham khảo kiến trúc kết hợp giữa mobile frontend (Flutter/Dart), web admin (Next.js/ReactJS/TypeScript/Redux) và cloud backend (Firebase NoSQL, Cloud Firestore, Storage, Authentication).
- Các đề tài ứng dụng dịch vụ bản đồ số: Tham khảo cách thức cấu hình, tích hợp và xử lý dữ liệu từ Google Maps Platform (Maps SDK, Direction API, Distance Matrix API, Geolocation API, Geocoding API) phục vụ các bài toán định vị vị trí và tìm kiếm không gian.
Câu hỏi thường gặp
1. Khóa luận sử dụng các công nghệ chính nào để xây dựng ứng dụng di động và trang quản trị web?
Ứng dụng di động được xây dựng bằng bộ công cụ Flutter sử dụng ngôn ngữ lập trình Dart, kết hợp với các dịch vụ đám mây của Google Firebase và Google Maps Platform. Trang quản trị web dành cho Admin được phát triển bằng Next.js, ReactJS, TypeScript và quản lý trạng thái bằng kiến trúc Redux (Redux Thunk, Redux Saga), tích hợp trình soạn thảo TinyMCE (Tinyrcm).
2. Cơ sở dữ liệu của hệ thống được thiết kế theo mô hình nào?
Hệ thống sử dụng cơ sở dữ liệu NoSQL Cloud Firestore của Firebase được tổ chức theo cấu trúc dạng cây (Node-tree, parent-children), tài liệu (documents) và tập hợp (collections). Hai thực thể dữ liệu chính được định nghĩa là User (thông tin người dùng, quyền hạn) và Room (thông tin phòng, giá thuê, diện tích, điện, nước, tiện ích, vị trí tọa độ, hình ảnh liên kết).
3. Các dịch vụ Google Maps API nào được tích hợp vào hệ thống và giữ vai trò gì?
Hệ thống tích hợp 5 dịch vụ Google Maps API gồm: Maps SDK cho Android và iOS (hiển thị bản đồ tương tác, thêm markers, polylines), Direction API (tính toán chỉ đường giữa các vị trí), Distance Matrix API (tính toán khoảng cách và thời gian di chuyển), Geolocation API (xác định tọa độ vị trí người dùng qua mạng di động/WiFi) và Geocoding API (chuyển đổi qua lại giữa tọa độ địa lý và chuỗi địa chỉ văn bản).
4. Hệ thống phân chia quyền hạn cho những nhóm tác nhân (Actors) nào trong sơ đồ Use Case?
Hệ thống xác định 4 nhóm tác nhân chính: Khách vãng lai (Guess - đăng ký, đăng nhập), Người tìm trọ (Finder - tìm kiếm theo bộ lọc/bản đồ, so sánh phòng, bình luận bài viết), Chủ nhà trọ (Innkeeper - đăng tin, sửa/xóa phòng, đăng tải ảnh phòng, đăng bài diễn đàn) và Quản trị viên (Admin - quản lý người dùng, duyệt/sửa phòng trọ và bài viết diễn đàn).
5. Các yêu cầu phi chức năng về hiệu năng của ứng dụng được quy định như thế nào?
Khóa luận quy định thời gian chuyển đổi giữa các cửa sổ không quá 2 giây; các tính năng tìm kiếm, tải dữ liệu và thêm mới thông tin trên ứng dụng di động không quá 5 giây; các thao tác chỉnh sửa, thêm mới và đăng tải hình ảnh trên trang quản trị web không quá 10 giây.
Kết luận
Đồ án tốt nghiệp "Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động" của sinh viên Nguyễn Thành Đồng và Hồ Ngọc Sơn Hà (Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) đã hoàn thành đầy đủ các mục tiêu nghiên cứu và phát triển phần mềm đề ra trong 15 tuần. Bằng việc kết hợp các công nghệ Flutter, Google Firebase, Google Maps Platform và Next.js, đồ án đã giải quyết bài toán tìm kiếm, định vị và so sánh phòng trọ một cách trực quan, đáp ứng nhu cầu thực tế của sinh viên và người lao động. Báo cáo khóa luận được trình bày mạch lạc từ cơ sở lý thuyết, khảo sát hiện trạng, mô hình hóa yêu cầu đến thiết kế giao diện, cài đặt và kiểm thử, tạo nên một tài liệu tham khảo kỹ thuật hoàn chỉnh cho các nghiên cứu phát triển ứng dụng đa nền tảng.