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

Trong bối cảnh công nghệ thông tin và truyền thông phát triển mạnh mẽ, nhu cầu kết nối, trao đổi thông tin trực tuyến giữa các cá nhân và trong tổ chức ngày càng trở nên thiết yếu. Đề tài "Xây dựng phần mềm chat qua mạng: Phân tích, đặc tả và triển khai dự án [v1.0]" được thực hiện bởi nhóm sinh viên lớp 21DTH2C (Khoa Công nghệ Thông tin, Trường Đại học Nguyễn Tất Thành) vào tháng 12/2023. Dự án được triển khai nhằm thiết kế và xây dựng một hệ thống phần mềm nhắn tin đa chức năng, kết hợp giữa việc gửi/nhận tin nhắn thời gian thực và mạng xã hội chia sẻ trạng thái cá nhân.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Xác định, khảo sát và đặc tả chi tiết các yêu cầu chức năng (Functional Requirements) và yêu cầu phi chức năng (Non-Functional Requirements) của hệ thống phần mềm nhắn tin.
  2. Xây dựng mô hình tương tác hệ thống bằng phương pháp mô hình hóa Use Case, phân tích các tác nhân tham gia và chi tiết hóa kịch bản xử lý cho từng ca sử dụng.
  3. Thiết kế cấu trúc cơ sở dữ liệu trên nền tảng đám mây NoSQL (Google Firebase), tổ chức các bảng dữ liệu (Collections) phục vụ quản lý người dùng, tin nhắn, bài viết và tương tác xã hội.
  4. Thiết kế hệ thống giao diện người dùng (UI) đảm bảo các nguyên lý trải nghiệm người dùng (UX), tính thích ứng (Responsiveness) và công thái học cảm ứng (Touch Ergonomics).
  5. Hiện thực hóa và kết nối hệ thống phần mềm trên các nền tảng di động và web thông qua bộ công cụ lập trình Flutter và hệ sinh thái Firebase.

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

  • Đối tượng sử dụng: Phần mềm hướng tới phục vụ hai nhóm đối tượng chính gồm người dùng cá nhân (giao tiếp giữa bạn bè, gia đình, đồng nghiệp) và người dùng doanh nghiệp (trao đổi thông tin nội bộ giữa các thành viên trong tổ chức).
  • Phạm vi nền tảng: Ứng dụng tập trung triển khai trên hệ điều hành di động Android (phiên bản từ 5.0 trở lên) và giao diện Website.

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

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

Đồ án tổng hợp và ứng dụng các nền tảng công nghệ, khái niệm kỹ thuật phần mềm cốt lõi bao gồm:

  • Ngôn ngữ lập trình Dart: Ngôn ngữ mã nguồn mở đa năng do Google phát triển (bản ổn định ra đời năm 2013, phiên bản Dart 2), hỗ trợ lập trình hướng đối tượng với cơ chế kế thừa (extends, super, @override), callable classes và mô hình lập trình bất đồng bộ (Asynchronous Programming) sử dụng đối tượng Future cùng cú pháp async/await. Bộ công cụ Dart SDK cung cấp các tiện ích dòng lệnh như dart, dartaotruntime, dartdoc, trình quản lý gói pub và các công cụ web (dart2js, webdev, dartdevc).
  • Framework Flutter: Khung phát triển ứng dụng đa nền tảng (Cross-Platform SDK) cho thiết bị di động và web. Hệ thống kiến trúc của Flutter bao gồm tầng Engine (C/C++) xử lý đồ họa thông qua Skia, text layout, hệ thống I/O và Dart runtime; tầng Embedder truy xuất dịch vụ nền tảng. Giao diện được xây dựng dựa trên cây Widget (Widget tree), chuyển đổi qua cây phần tử (Element tree) và cây kết xuất (RenderTree với các RenderObjects) theo phương thức kết xuất pixel-perfect. Hệ thống hỗ trợ hai loại widget cơ bản là StatelessWidget và StatefulWidget (kèm phương thức setState(), initState(), dispose()), cùng các giải pháp quản lý trạng thái ứng dụng như InheritedWidget, Provider Package, BLoC (flutter_bloc), Redux.
  • Nền tảng Google Firebase: Dịch vụ đám mây hỗ trợ phát triển ứng dụng bao gồm Firebase Authentication (xác thực qua Email/Password, số điện thoại, mạng xã hội, xác thực dựa trên phiên và token), Firebase Realtime Database / Cloud Firestore (lưu trữ dữ liệu thời gian thực với cơ chế phân quyền dựa trên luật Security Rules), Firebase Storage và truyền tải bảo mật qua giao thức HTTPS.
  • Nguyên lý thiết kế UI/UX: Triển khai phương pháp thiết kế lấy người dùng làm trung tâm (User-Centered Design - UCD), tuân thủ hướng dẫn thiết kế Material Design và Human Interface Guidelines (HIG). Áp dụng các nguyên tắc bố cục đáp ứng (Responsive Layouts, Responsive Widgets, Responsive Content) và thiết kế thân thiện với ngón tay (Finger-Friendly Design / Touch Ergonomics) với kích thước mục tiêu cảm ứng khuyến nghị từ 7 mm đến 10 mm vuông, khoảng cách tối thiểu giữa các mục tiêu từ 1–2 mm. Sử dụng các kỹ thuật tạo nguyên mẫu độ trung thực thấp (Low-Fidelity Prototypes: sketches, wireframes) và độ trung thực cao (High-Fidelity Prototypes).

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

Đồ án sử dụng phương pháp phân tích thiết kế hệ thống hướng đối tượng thông qua mô hình hóa UML (Use Case Modeling), phân tích đặc tả yêu cầu phần mềm theo tiêu chuẩn công nghiệp, thiết kế cơ sở dữ liệu dạng tài liệu (Document-based NoSQL) và lập trình triển khai thực tế trên môi trường tích hợp.


Nội dung chính theo từng phần của đồ án

Phần I: Giới thiệu chung và khảo sát công nghệ

Phần này trình bày bối cảnh, mục đích, phạm vi của phần mềm Chat App và tổng quan các định nghĩa, thuật ngữ chuyên ngành. Tài liệu thiết lập các yêu cầu phi chức năng bao gồm:

  • Giao diện người dùng: Thiết kế đơn giản, thân thiện với tông màu chủ đạo là xanh dương trung tính, bố cục phân chia theo các trang chuyên biệt (Login/Register, Hội thoại, Bạn bè/Nhóm, Tìm kiếm, Bảng tin bài đăng, Hồ sơ cá nhân).
  • Bảo mật và an toàn thông tin: Bảo vệ thông tin trên Firebase qua các phương thức của Google, mã hóa mật khẩu, kiểm soát phiên bằng token, thiết lập kết nối HTTPS.
  • Hiệu suất và khả năng mở rộng: Tối ưu thời gian phản hồi tin nhắn tức thì, đồng bộ tương tác theo thời gian thực và kiến trúc sẵn sàng mở rộng khi lượng người dùng gia tăng.
  • Khảo sát công nghệ: Trình bày chi tiết lý thuyết về Dart, Flutter, vòng đời Widget, cơ chế quản lý trạng thái (Local State, Application State), cấu trúc RenderTree và các thành phần giao diện cơ bản (SizedBox, Expanded, Spacer, GridView, ListView, Stack, Listener, GestureDetector, điều hướng Navigator.push/pop).

Phần II: Phân tích yêu cầu hệ thống

Nội dung tập trung phân rã và mô tả chi tiết các yêu cầu chức năng của phần mềm:

  • Nhắn tin trực tuyến: Gửi/nhận tin nhắn văn bản, tin nhắn đa phương tiện (hình ảnh, video, âm thanh, tệp đính kèm), lưu trữ và tìm kiếm lịch sử tin nhắn.
  • Quản lý nhóm chat: Tạo nhóm, thêm/xóa thành viên, đổi tên nhóm và tương tác tập thể.
  • Tính năng mạng xã hội/nhật ký: Đăng bài viết, tải ảnh/video lên trang cá nhân, thích (like), bình luận và phản hồi bình luận.
  • Quản lý tài khoản & Danh bạ: Đăng ký, đăng nhập, chỉnh sửa thông tin cá nhân, đổi mật khẩu, tìm kiếm người dùng qua tên hoặc email, quản lý danh sách bạn bè và người theo dõi.
  • Thông báo và hỗ trợ: Thông báo đẩy (Push Notification) khi có tin nhắn mới ngoài ứng dụng, hệ thống hỗ trợ giải đáp thắc mắc của người dùng.
  • Phân chia 6 hệ thống con: Hệ thống gửi/nhận tin nhắn, Hệ thống quản lý tài khoản, Hệ thống quản lý danh bạ, Hệ thống quản lý nhóm chat, Hệ thống quản lý bài viết, và Hệ thống gọi video.

Phần III: Thiết kế dữ liệu

Tài liệu định nghĩa lược đồ tổng quát và danh mục chi tiết 5 Collections cơ sở dữ liệu trên Firebase:

  1. Collection User: Lưu trữ thông tin định danh, tài khoản và hồ sơ người dùng.
  2. Collection Chatroom: Lưu trữ thông tin phòng chat đơn (1-1) và chat nhóm.
  3. Collection message: Quản lý nội dung tin nhắn, tệp đính kèm, định danh người gửi/nhận, trạng thái và mốc thời gian.
  4. Collection Post: Quản lý các bài đăng trên trang cá nhân kèm hình ảnh, video và nội dung văn bản.
  5. Collection comments: Lưu trữ nội dung bình luận, phản hồi và lượt thích theo từng bài viết.

Phần IV: Mô tả tổng quan hệ thống và mô hình Use Case

Phần này định nghĩa các tác nhân tham gia hệ thống và bảng danh mục ca sử dụng tổng quát:

  • Tác nhân hệ thống:
    • Người dùng (User): Tương tác với giao diện, thực hiện các thao tác gửi/nhận tin nhắn, đăng bài, quản lý bạn bè.
    • Hệ thống (System): Xử lý logic nghiệp vụ, quản lý dữ liệu, điều phối tin nhắn, bảo mật và lưu trữ.
    • Nhà phát triển (Developer): Xây dựng tính năng, duy trì ứng dụng, tối ưu hiệu suất và bảo mật.
  • Danh mục Use Case: Hệ thống hóa 18 ca sử dụng chính (UC_001 đến UC_018).
  • Điều kiện phụ thuộc: Cấu hình phần cứng máy chủ lưu trữ, hạ tầng mạng ổn định; yêu cầu hệ điều hành Android từ 5.0 trở lên; các công cụ phát triển gồm Visual Studio Code, Android Studio, Git.

Phần V: Đặc tả các yêu cầu chức năng (Functional Specifications)

Tài liệu mô tả chi tiết luồng nghiệp vụ của các ca sử dụng. Cụ thể với hai ca sử dụng nền tảng:

  • UC_001: Đăng ký tài khoản mới: Người dùng cung cấp thông tin cá nhân (tên, email, số điện thoại, mật khẩu) -> Hệ thống kiểm tra tính hợp lệ -> Tạo tài khoản mới nếu hợp lệ; trường hợp không hợp lệ sẽ trả về thông báo lỗi và yêu cầu nhập lại -> Điều kiện sau: Tài khoản được khởi tạo thành công để đăng nhập.
  • UC_002: Đăng nhập tài khoản: Người dùng cung cấp email/số điện thoại và mật khẩu -> Hệ thống xác thực dữ liệu -> Cho phép truy cập vào không gian ứng dụng nếu khớp; từ chối và báo lỗi nếu sai thông tin -> Điều kiện sau: Người dùng đăng nhập thành công và có quyền truy cập các chức năng.

Phần VI & VII: Thiết kế giao diện và kiểm thử

  • Thiết kế hệ thống 7 màn hình người dùng chính: Trang đăng nhập (Page Login), Trang đăng ký (Page Sign up), Trang danh sách tin nhắn (Page List Message), Trang chat chi tiết (Page Chat), Trang bạn bè (Page Friend), Trang tìm kiếm (Page Search), và Trang thông tin tài khoản (Page Account).
  • Kế hoạch kiểm thử và demo kết quả vận hành thực tế của phần mềm trên thiết bị.

Thiết kế và triển khai

Bảng phân công nhân sự dự án

Đồ án ghi nhận sự tham gia của 5 thành viên nhóm 21DTH2C-Nhóm_3 với các trách nhiệm cụ thể:

STT Mã sinh viên Họ và tên Chức danh / Vai trò đảm nhiệm Nội dung phụ trách
1 2100001919 Trần Hữu Nhân Trưởng nhóm, Người xem xét Module bài viết (tạo bài đăng, tải ảnh); Module tin nhắn (danh sách tin nhắn, màn hình chat); Module bạn bè (danh sách theo dõi, tìm kiếm bạn bè, hồ sơ); Tìm kiếm; Đăng nhập & Đăng xuất
2 2100006370 Trần Đinh Hồng Hưng Thành viên, Người lập tài liệu Module bài viết (tạo bài viết mới, tải ảnh lên)
3 2100006250 Trần Minh Ngữ Thành viên Kết nối hệ thống Firebase và ứng dụng Flutter
4 2100009764 Bùi Văn Phúc Thành viên Module bạn bè (danh sách người theo dõi, tìm kiếm bạn bè, hồ sơ); Tìm kiếm
5 2100003332 Nguyễn Nhật Hải Thành viên, Người lập tài liệu Module tin nhắn (danh sách tin nhắn, màn hình chat)

Người duyệt tài liệu: Đặng Như Phú (12/2023).
Đại diện khách hàng duyệt: Khoa Công nghệ Thông tin, Đại học Nguyễn Tất Thành (12/2023).

Bảng danh mục Use Case hệ thống

Mã Use Case Tên Use Case Mô tả ngắn Mục đích chức năng Ghi chú nghiệp vụ
UC_001 Đăng ký tài khoản mới Người dùng tạo tài khoản mới qua thông tin cá nhân Cho phép tạo tài khoản mới Xác nhận qua email hoặc số điện thoại
UC_002 Đăng nhập Truy cập tài khoản bằng thông tin đã đăng ký Cho phép truy cập vào tài khoản Yêu cầu thông tin chính xác
UC_003 Gửi tin nhắn văn bản Gửi tin nhắn chữ tới người dùng khác Gửi tin nhắn văn bản Hỗ trợ chat 1-1 hoặc chat nhóm
UC_004 Gửi hình ảnh Chia sẻ hình ảnh từ thư viện/camera Chia sẻ hình ảnh với người khác Hỗ trợ gửi trong tin nhắn hoặc nhóm
UC_005 Nhận tin nhắn Nhận và đọc tin nhắn mới từ người khác Tiếp nhận tin nhắn trong hộp thư Hiển thị thông báo khi có tin mới
UC_006 Ghi âm cuộc gọi video Ghi âm nội dung cuộc gọi video đang diễn ra Lưu lại âm thanh cuộc gọi Cần sự đồng ý của các bên tham gia
UC_007 Bình luận bài viết Viết nội dung phản hồi trên bài viết Tương tác xã hội trên bài đăng Hỗ trợ trên nhóm hoặc trang cá nhân
UC_008 Xóa bình luận Xóa bình luận do chính mình đã đăng Loại bỏ bình luận khỏi bài viết Yêu cầu xác nhận trước khi xóa
UC_009 Thích bình luận Thể hiện cảm xúc đối với bình luận Tạo tương tác tích cực Hiển thị số lượt thích
UC_010 Báo cáo bình luận Báo cáo bình luận vi phạm quy định Duy trì an toàn cộng đồng Gửi lý do vi phạm đến hệ thống
UC_011 Xem thông tin cá nhân Xem hồ sơ của chính mình hoặc người khác Hiển thị tên, avatar, email Bảo mật thông tin theo quy định
UC_012 Chỉnh sửa thông tin cá nhân Cập nhật tên, địa chỉ, số điện thoại Chỉnh sửa hồ sơ cá nhân Cần chức năng xác thực bảo vệ
UC_013 Thay đổi ảnh đại diện Đổi ảnh đại diện từ thư viện/chụp mới Cập nhật ảnh hiển thị cá nhân Hỗ trợ tùy chỉnh hồ sơ
UC_014 Đổi mật khẩu Thay đổi mật khẩu truy cập tài khoản Đổi mật khẩu đăng nhập Xác thực mật khẩu cũ trước khi đổi
UC_015 Tìm kiếm tổng hợp Tìm kiếm người dùng, bài viết, nhóm, tin Kết nối và tìm thông tin Tìm theo từ khóa hoặc tiêu chí
UC_016 Tìm kiếm bài viết Tìm kiếm bài viết theo từ khóa/chủ đề Lọc nội dung bài đăng Hỗ trợ tìm nội dung nhanh chóng
UC_017 Tìm kiếm nhóm chat Tìm nhóm chat theo tên hoặc sở thích Tham gia cộng đồng chung sở thích Tìm kiếm theo từ khóa liên quan
UC_018 Tìm kiếm tin nhắn Tìm tin nhắn cũ trong hộp thư Tra cứu lịch sử hội thoại Tìm theo nội dung, người gửi, thời gian

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

Kết quả chính

  • Bộ hồ sơ đặc tả phần mềm hoàn chỉnh: Xây dựng đầy đủ tài liệu phân tích, đặc tả yêu cầu chức năng, phi chức năng và tài liệu hướng dẫn sử dụng phiên bản v1.0.
  • Thiết kế kiến trúc hệ thống và dữ liệu: Chuẩn hóa mô hình dữ liệu NoSQL với 5 collections trên Google Firebase, đáp ứng đồng thời hai mảng nghiệp vụ: truyền thông tin nhắn thời gian thực và mạng xã hội cá nhân.
  • Mô hình hóa nghiệp vụ: Thiết lập 18 Use Cases chuẩn cho 3 nhóm tác nhân, chi tiết hóa luồng sự kiện chính/phụ và điều kiện tiên quyết/hậu quyết định cho các chức năng xác thực và tương tác.
  • Bộ giao diện chuẩn hóa: Thiết kế 7 giao diện người dùng trên nền tảng Flutter đáp ứng tính công thái học cảm ứng (Touch Ergonomics) và độ tương thích đa màn hình.

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

Đề tài cung cấp giải pháp tích hợp giữa dịch vụ nhắn tin tức thời và bảng tin xã hội trên nền tảng Flutter và Firebase, giúp rút ngắn thời gian phát triển ứng dụng di động đa nền tảng nhờ tận dụng cơ chế Hot Reload, kiến trúc Widget tái sử dụng và dịch vụ dữ liệu đám mây không cần quản trị hạ tầng phức tạp.


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

  • Hạn chế: Bản tài liệu v1.0 tập trung chính vào nền tảng Android (yêu cầu từ phiên bản 5.0 trở lên) và Web; các tính năng nâng cao như gọi video call, chia sẻ màn hình và ghi âm cuộc gọi mới dừng lại ở mức mô hình hóa phân tích use case và đặc tả yêu cầu, chưa hoàn thiện kiểm thử sâu trên môi trường đa hệ điều hành khác (như iOS, macOS, Windows).
  • Hướng phát triển: Mở rộng khả năng chịu tải và nâng cấp thêm các tính năng mới khi lượng người dùng tăng trưởng theo đúng yêu cầu mở rộng của hệ thống; tối ưu hóa các quy tắc bảo mật (Security Rules) trên Firebase và nâng cấp các giải pháp quản lý trạng thái nâng cao (BLoC, Redux) khi quy mô ứng dụng mở rộng.

Giá trị tham khảo

Tài liệu đồ án là nguồn tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Nắm bắt quy trình lập tài liệu đặc tả yêu cầu phần mềm (SRS), cách thức phân rã use case, xây dựng bảng kịch bản sự kiện và thiết kế lược đồ NoSQL.
  • Lập trình viên phát triển ứng dụng Flutter & Firebase: Tham khảo cơ sở lý thuyết về vòng đời Widget, các mô hình quản lý trạng thái (setState, Provider, BLoC), cách kết nối Firebase Authentication, Cloud Firestore và quy chuẩn thiết kế UI thân thiện với cảm ứng (Finger-Friendly Design).

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

1. Phần mềm Chat App sử dụng công nghệ và ngôn ngữ lập trình nào để phát triển?

Phần mềm được phát triển dựa trên ngôn ngữ lập trình Dart kết hợp với framework đa nền tảng Flutter (hỗ trợ Android từ 5.0 trở lên và nền tảng Web). Hệ thống backend và cơ sở dữ liệu sử dụng nền tảng đám mây Google Firebase.

2. Cơ sở dữ liệu của hệ thống được tổ chức như thế nào trên Firebase?

Hệ thống sử dụng cơ sở dữ liệu NoSQL với 5 collections chính: User (thông tin người dùng), Chatroom (phòng chat đơn và nhóm), message (nội dung và tệp tin nhắn), Post (bài đăng cá nhân), và comments (bình luận bài viết).

3. Hệ thống phân chia những tác nhân nào và bao gồm bao nhiêu Use Case?

Hệ thống xác định 3 tác nhân chính gồm: Người dùng (User), Hệ thống (System), và Nhà phát triển (Developer); quản lý tổng cộng 18 Use Cases chức năng được đánh mã từ UC_001 đến UC_018.

4. Tiêu chuẩn thiết kế giao diện người dùng của ứng dụng được quy định ra sao?

Giao diện sử dụng gam màu xanh dương trung tính chủ đạo, tuân thủ nguyên lý thiết kế lấy người dùng làm trung tâm (UCD), Material Design, HIG và Touch Ergonomics với kích thước mục tiêu cảm ứng từ 7–10 mm², khoảng cách tối thiểu 1–2 mm để tối ưu thao tác ngón tay trên màn hình cảm ứng.

5. Dự án được phân công thực hiện bởi nhóm tác giả nào?

Dự án được thực hiện bởi nhóm 3 (lớp 21DTH2C, Khoa CNTT - Trường Đại học Nguyễn Tất Thành) gồm 5 thành viên: Trần Hữu Nhân (Trưởng nhóm), Trần Đinh Hồng Hưng, Trần Minh Ngữ, Bùi Văn Phúc, và Nguyễn Nhật Hải; được xem xét và phê duyệt vào tháng 12/2023.


Kết luận

Đồ án "Xây dựng phần mềm chat qua mạng: Phân tích, đặc tả và triển khai dự án [v1.0]" đã trình bày một quy trình phân tích, thiết kế và đặc tả kỹ thuật chi tiết cho ứng dụng nhắn tin và mạng xã hội đa nền tảng. Hệ thống kết hợp giữa framework Flutter và nền tảng đám mây Google Firebase, tổ chức dữ liệu qua 5 collections NoSQL và quản lý 18 ca sử dụng nghiệp vụ rõ ràng. Kết quả đồ án cung cấp tài liệu kỹ thuật có cấu trúc bài bản, phục vụ thiết thực cho quá trình triển khai, kiểm thử và phát triển các hệ thống truyền thông trực tuyến trên thiết bị di động và môi trường web.