GIỚI THIỆU CHUNG
Lý do chọn đề tài
Hiện nay, Internet đã trở thành một phần không thể thiếu trong cuộc sống của chúng ta Internet hiện hữu ở mọi mặt trong xã hội, ảnh hưởng hoàn toàn đến cách chúng ta sống, bao gồm việc mua sắm, tìm hiểu thông tin, phương pháp học tập, làm việc,… và đặc biệt là cách chúng ta giao tiếp Trước thời kỳ Internet, chúng ta thông thường cần phải gặp trực tiếp, gọi điện thoại hoặc gửi thư để có thể trao đổi thông tin cho nhau Mỗi cách trong ba cách trên đều có điểm lợi và hại, tỉ như việc gặp trực tiếp cần phải sắp xếp thời gian phù hợp cho cả hai, hay là gửi thư sẽ tốn rất nhiều thời gian, Sau khi Internet phổ biến, Chat và Video call trở thành phương tiện giao tiếp chính trong cuộc sống của chúng ta, chúng ta có thể Chat mọi lúc và mọi nơi, chỉ cần có một chiếc điện thoại và Internet, chúng ta cũng có thể lưu trữ thông tin bởi vì mọi nội dung Chat của chúng ta sẽ được lưu lại, hơn nữa, chúng ta có thể trao đổi thông tin với nhiều người hơn, thông qua tính năng Group Chat Khi chúng ta cần trao đổi trực tiếp, chúng ta có thể Video call mà không cần phải sắp xếp thời gian Những lý do này là lý do khiến cho việc giao tiếp ngày càng dễ dàng và nhanh chóng hơn
Bên cạnh đó, chúng ta đã trải qua một đại dịch COVID-19 Trong quá trình chống lại đại dịch, việc phong tỏa, làm việc Online tại nhà đã trở nên phổ biến và thay đổi nhận thức của chúng ta về cách giao tiếp trong công việc và cuộc sống Nhu cầu trao đổi thông tin qua Internet ngày càng trở nên thiết yếu Đó là lý do nhóm quyết định tiếp tục phát triển phần mềm Chat nhằm giúp việc trao đổi thông tin qua Chat và Video call trở nên dễ dàng, thuận tiện hơn.
Phạm vi nghiên cứu
- CS Messenger App là phần mềm Chat và Video Call được phát triển dựa trên công nghệ Flutter cho Mobile và Golang, NodeJS cho phần Backend.
- Các bài toán về hệ thống thời gian thực, Full-text search và quản lý người dùng.
- Các bài toán về Push Notification trên thiết bị Mobile.
- Các bài toán về Pagination trong hệ thống và ứng dụng Mobile App.
- Chức năng Video call được nhóm tự xây dựng hoàn toàn dựa trên công nghệ tự do và mã nguồn mở WebRTC
- Chức năng Realtime Chat được nhóm tự xây dựng hoàn toàn dựa trên thư việnSocket IO.
Đối tượng nghiên cứu
- Ngôn ngữ lập trình: Dart, Golang, TypeScript.
- Socket.IO, Web RTC, Firebase, OneSignal. Đối tượng trong phạm vi đề tài hướng đến:
- Người dùng có nhu cầu trao đổi thông tin, thực hiện Video call qua phần mềm.
Phương pháp nghiên cứu
- Nghiên cứu từ các ứng dụng hiện có trên thị trường, quan sát và rút ra những ưu, nhược điểm của các ứng dụng đó (Messenger, Zalo, Telegram,…).
- Tìm hiểu các công nghệ liên quan đến Chat, thử nghiệm và chọn ra những công nghệ phù hợp nhất với khả năng của nhóm.
- Tham khảo ý kiến của giảng viên hướng dẫn để đạt được kết quả tốt nhất cho đề tài.
CÔNG NGHỆ SỬ DỤNG
Flutter
Flutter là một UI Framework di động mã nguồn mở và hoàn toàn miễn phí do Google phát triển, và được công bố vào năm 2015 nhưng đến tháng 5 năm 2017 mới chính thức phát hành Flutter cho phép các nhà phát triển có thể tạo ra các bộ giao diện native chất lượng cao trong thời gian rất ngắn Ngoài ra, việc sử dụng Flutter cho phép các nhà phát triển với một Codebase có thể phát triển ứng dụng có trải nghiệm tốt trên đa nền tảng bao gồm: Mobile (Android và IOS), Web, Desktop App, Linux, giúp cho các Team phát triển có thể tiết kiệm nhân lực và chi phí.
Flutter có 2 phần quan trọng:
+ SDK (Software Development Kit): là một bộ tập hợp các công cụ hỗ trợ các nhà phát triển bao gồm công cụ biên dịch Code thành mã máy Native.
+ Framework: Flutter cung cấp một số lượng lớn các Widget (Button, ListView,Text Input, ScrollBar, ), giúp cho các nhà phát triển có thể xây dựng giao diện nhanh chóng, tiện lợi, đẹp mắt.
OneSignal
Hình 2.2 Logo OneSignal Đối với các ứng dụng Mobile, tính năng Notification được xem là tính năng cực kỳ quan trọng trong ứng dụng, nó đóng vai trò quan trọng trong việc tương tác và giữ chân người dùng trong một ứng dụng Có rất nhiều cách để thực hiện được tính năng này trên một ứng dụng di động tuy nhiên cách phổ biến đang được áp dụng hiện nay là sử dụng dịch vụ Firebase Cloud Messaging (FCM) của Google,… Trong thời gian triển khai dịch vụ FCM ở Đồ án 1, nhóm nhận ra những bất cập tồn đọng khi triển khai dịch vụ này với một ứng dụng Flutter nói riêng và ứng dụng di động nói chung, một trong những vấn đề có thể kể đến như: quá trình cài đặt phức tạp, không thể tùy chỉnh thông báo theo nhu cầu, hạn chế về tính năng được hỗ trợ, khó kiểm soát số lượng thông báo đã đến thiết bị người dùng Sau thời gian tìm hiểu các cách có thể cải tiến vấn đề trên, thì nhóm đã tiến hành đánh giá và khảo sát một dịch vụ khá nổi tiếng hiện nay đó là OneSignal.
OneSignal là một dịch vụ tạo Push Notifications được sử dụng rộng rãi và ưa chuộng bởi các công ty lớn như: Với việc sử dụng công nghệ này, chúng ta có thể dễ dàng tạo thông báo đẩy không chỉ ứng dụng di động mà còn có thể trên Website Tất cả những số liệu như người dùng tương tác với thông báo đẩy đều sẽ được dịch vụ ghi lại và phân tích, từ đó có thể giúp nhà phát triển đưa ra các chiến lược phù hợp hơn cho khách hàng của mình Các dịch vụ mà hiện nay OneSignal đang cung cấp như: Thông báo đẩy trên Web, thông báo đẩy trên điện thoại, thông báo trong ứng dụng, hỗ trợ tương tác bằng Email, hỗ trợ tương tác bằng SMS.
NodeJS
- NodeJS là một môi trường thực thi JavaScript đa nền tảng mã nguồn mở.
- NodeJS ra mắt vào năm 2009, bởi Ryan Dahl.
- Phần core của Node.js hầu hết được viết bằng C++ Chính vì thế mà tốc độ xử lý và hiệu năng khá cao.
- Bên cạnh đó, Node.js còn tạo ra ứng dụng có tốc độ xử lý nhanh với thời gian thực.
- Node.js cũng được áp dụng để tạo các sản phẩm có lượng truy cập lớn, mở rộng nhanh và đổi mới công nghệ hoặc tạo dự án Startup tiết kiệm thời gian nhất.
- NodeJS tương thích tốt với Socket.IO, có cộng đồng lớn, vì thế phù hợp để xây dựng một service Chat.
Golang
Golang, hay còn được gọi là Go, là một ngôn ngữ lập trình hiện đại được phát triển bởi Google và được giới thiệu lần đầu tiên vào năm 2009 Với sự đơn giản, hiệu suất cao, và khả năng mở rộng, Golang nhanh chóng trở thành một lựa chọn phổ biến cho việc phát triển ứng dụng web, hệ thống và các dự án công nghiệp khác
- Hiệu suất cao và đồng thời xử lý: Golang được thiết kế với mục tiêu tối ưu hiệu suất và khả năng đồng thời xử lý Cơ chế xử lý đồng thời (concurrency) tích hợp sẵn và có cú pháp rõ ràng giúp các nhà phát triển dễ dàng tận dụng tối đa sức mạnh của hệ thống
- Cú pháp đơn giản: Cú pháp của Golang đơn giản và dễ đọc, giúp giảm bớt lỗi trong quá trình phát triển và bảo trì mã nguồn Điều này làm cho Golang trở thành một lựa chọn tốt cho những dự án lớn và phức tạp
- Bảo trì dễ dàng: Thiết kế của Golang với sự tập trung vào đơn giản và rõ ràng giúp ích cho việc bảo trì mã nguồn Việc theo dõi, sửa lỗi, và mở rộng hệ thống trở nên thuận tiện và tiết kiệm thời gian
- Hệ sinh thái mạnh mẽ: Golang có một hệ sinh thái mạnh mẽ với nhiều thư viện và công cụ hỗ trợ Điều này giúp nhà phát triển nhanh chóng triển khai ứng dụng mà không cần phải xây dựng lại nhiều từ đầu
- Phát triển ứng dụng đám mây: Golang được sử dụng rộng rãi cho phát triển các ứng dụng đám mây, đặc biệt là khi cần tận dụng tính năng đồng thời xử lý và hiệu suất cao.
PostgreSQL
PostgreSQL, hay Postgres, là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến.Với tính mở rộng linh hoạt, tính ACID-compliant, và khả năng tùy chỉnh cao, nó là lựa chọn ưa thích cho ứng dụng yêu cầu hiệu suất và độ ổn định PostgreSQL hỗ trợ nhiều ngôn ngữ và nền tảng, cung cấp indexing mạnh mẽ và có cộng đồng người dùng rộng lớn Được sử dụng rộng rãi trong phát triển web, quản lý doanh nghiệp, GIS và các ứng dụng nghiên cứu, PostgreSQL đóng vai trò quan trọng trong thế giới công nghệ thông tin
- Mở rộng và hiệu suất: Hỗ trợ mô hình mở rộng linh hoạt và xử lý lượng dữ liệu lớn
- ACID-Compliant: Tuân theo nguyên tắc ACID, đảm bảo tính nhất quán và an toàn dữ liệu
- Hỗ trợ đa dạng dữ liệu: Hỗ trợ nhiều loại dữ liệu phức tạp, từ hình học đến văn bản đầy đủ
- Indexing mạnh mẽ: Cung cấp nhiều loại Index để tối ưu hóa truy vấn và tìm kiếm
- Đa ngôn ngữ và đa nền tảng: Hỗ trợ nhiều ngôn ngữ lập trình và nền tảng, tạo sự linh hoạt cho việc tích hợp
- Cộng đồng hỗ trợ mạnh mẽ: Được hỗ trợ bởi cộng đồng người dùng và phát triển đông đảo
- Ứng dụng rộng rãi: Sử dụng phổ biến trong phát triển Web, quản lý doanh nghiệp và nghiên cứu
- Ổn Định và Tin Cậy: PostgreSQL là giải pháp ổn định và tin cậy cho nhiều dự án lớn.
Firebase
Firebase là một nền tảng được phát triển bởi Google, cung cấp rất nhiều công cụ và dịch vụ tiện ích để giúp các nhà phát triển có thể xây dựng nhanh các ứng dụng, trò chơi bằng cách đơn giản hóa thao tác thực hiện.
Firebase cung cấp cho người sử dụng một cơ sở dữ liệu hoạt động trên nền tảng đám mây với hệ thống máy chủ của Google.
Các dịch vụ của Firebase có những tính năng là miễn phí, tuy nhiên khi có nhu cầu hơn, một số tính năng sẽ yêu cầu trả phí.
Các chức năng của Firebase đã được áp dụng trong đồ án:
- Firebase Authentication: Firebase Authentication giúp người sử dụng có thể dễ dàng, nhanh chóng trong việc triển khai các tính năng xác thực người dùng với Google, Facebook, Apple,
- Firebase Storage: Firebase storage dùng để lưu trữ được nhiều dạng dữ liệu bao gồm tập tin, hình ảnh, Video Google còn tích hợp Google security vào Firebase storage giúp tải lên hoặc tải về các ứng dụng, phần mềm một cách tiện lợi, đơn giản.
- Xây dựng các tính năng xác thực người dùng, lưu trữ hình ảnh, … một cách dễ dàng, nhanh chóng, giúp nhóm có thể tiết kiệm thời gian, đảm bảo tiến độ.
- Các tính năng lớn trong đồ án như Firebase Authentication trong lượng người dùng không quá lớn sẽ không phát sinh thêm chi phí trong quá trình triển khai và sử dụng.
Socket.IO
- Khi làm việc về vấn đề giao tiếp giữa Server và Client, đặc biệt là vấn đề Server, Client có thể nhận biết sự thay đổi của đối phương, những nhà phát triển thường sử dụng rất nhiều phương pháp mà có thể kể đến như: AJAX, HTML5 server-sent events, Tuy nhiên các phương pháp này đều tồn tại nhiều nhược điểm như chậm, tốn tài nguyên Do đó, Socket.IO đã được phát triển để giải quyết vấn đề này, đặc biệt là các ứng dụng có yêu cầu tính thời gian thực.
- Socket.IO là 1 module trong NodeJS, được phát triển vào năm 2010 Mục đích lớn nhất để Socket.io ra đời là việc giao tiếp ngay tức khắc giữa Client và Server.
- Đồ án của nhóm là việc xây dựng phần mềm Chat nên yêu cầu quan trọng nhất của phần mềm là Real-time, do đó Socket.IO là lựa chọn hợp lý vì đây là công nghệ mã nguồn mở do đó sẽ không bị các vấn đề liên quan đến chi phí như các bên cung cấp ở bên thứ 3 như Firebase,
- Bảo mật cao: SocketIO được xây dựng dựa trên Engine.IO, nó sẽ khởi chạy phương thức Long-polling đầu tiên, sau đó sẽ tới những phương thức kết nối tốt hơn Bên cạnh việc thiết lập chặt chẽ đó, Socket.IO còn tự tạo các kết nối bảo mật như: Proxy,
WebRTC
Hình 2.8 Mô phỏng cách hoạt động của WebRTC
- WebRTC (Web Real-Time Communication) cho phép kết nối, giao tiếp với nhau giữa các trình duyệt theo thời gian thực.
- WebRTC được các kỹ sư của Google hình thành ý tưởng vào năm 2009 nhằm thay thế Flash và đến năm 2011, WebRTC chính thức ra mắt.
- Tính năng nổi bật của WebRTC là khả năng truyền tải hình ảnh, âm thanh, dữ liệu giữa 2 máy mà không cần qua trung gian hoặc cài thêm bất kỳ 1 plugin nào.
- Mã nguồn mở miễn phí: WebRTC là dự án mã nguồn mở hoàn toàn miễn phí và có sẵn trên mọi nền tảng Vì nó là mã nguồn mở miễn phí, do đó khi nhóm triển khai tính năng Video call giữa 2 người với nhau sẽ không bị giới hạn thời gian, chi phí như các bên cung cấp bên thứ 3 khác.
- Bảo mật: Giao thức SRTP (Secure Real-time Transport Protocol) được dùng để mã hoá các dữ liệu, chống lại các việc nghe trộm khi thực hiện Call.
- Không cần cài thêm plugin: Đây chính là một điểm nổi bật của WebRTC mang lại, vì không cần phải cài thêm plugin do đó nó mang lại sự tiện lợi cũng như tiết kiệm chi phí, tối ưu tốc độ,
THIẾT KẾ HỆ THỐNG
Xây dựng hệ thống
3.1.1 Kiến trúc hệ thống ứng dụng di động
Hình 3.9 Kiến trúc hệ thống ứng dụng di động
3.1.2 Mô tả các thành phần trong hệ thống ứng dụng di động
Bảng 3.1 Mô tả các thành phần hệ thống di động
STT Tầng Thành phần Diễn giải
Hiển thị các thành phần giao diện của ứng dụng.
- Nơi xử lý Logic, quản lý State của tầng giao diện
Sẽ tiếp nhận Event từ các thành phần giao diện và tiến hành cập nhật State.
- Làm việc với UseCases của tầng Domain.
- Khai báo các quy tắc Business Logic của ứng dụng
- Tiếp nhận các yêu cầu từ tầng Presentation và gọi đến các Repository phù hợp để thực hiện yêu cầu và trả kết quả lại cho tầng Presentation.
4 Repositories - Khai báo các Busniess Logic của ứng dụng.
- Hiện thực các khai báo Business Logic đã được khai báo ở tầng Domain.
- Tổng hợp và xử lý dữ liệu từ các nguồn khác nhau ở Data Sources và trả kết quả về cho tầng phía trên.
6 Data Sources Các nguồn dữ liệu được sử dụng trong ứng dụng.
7 Remote Nguồn dữ liệu từ Service (Backend).
8 Local Nguồn dữ liệu từ Local Storage của thiết bị.
Nguồn dữ liệu từ các dịch vụ bên thứ 3 được sử dụng trong ứng dụng như Firebase,
10 Socket.IO Nơi lắng nghe các thông báo sự kiện, nguồn dữ liệu
3.1.3 Kiến trúc hệ thống Microservices Backend
Hình 3.10 Kiến trúc hệ thống Microservices Backend
3.1.4 Mô tả các thành phần trong hệ thống Microservices Backend
Bảng 3.2 Mô tả các thành phần trong hệ thống Microservices Backend
Backend For Frontend (BFF) là một service cung cấp Restful API cho hệ thống bên ngoài Nơi này chịu trách nhiệm xử lý Business Logic và kết nối giữa các Service Service được viết bằng Golang.
2 BFF Cache Redis database cho BFF nhằm cache dữ liệu, tăng hiệu năng xử lý.
Identity and Access Management (IAM) là một service quản lý thông tin người dùng và dữ liệu đăng nhập của họ Service được viết bằng Golang.
4 IAM Cache Redis database cho IAM nhằm cache dữ liệu, tăng hiệu năng xử lý.
5 IAM DB Database cho IAM Service sử dụng PostgreSQL.
Connection là một service quản lý liên kết giữa các người dùng Nơi này tập trung xử lý các yêu cầu, mối quan hệ giữa các người dùng và nhóm người dùng (Group) Service được viết bằng Golang.
7 Connection DB Database cho Connection Service sử dụng
8 Message Service Message Service là service quản lý thông tin tin nhắn,
Chatroom,… Service được viết bằng Golang.
9 Message DB Database cho Message Service sử dụng PostgreSQL.
Realtime Service chịu trách nhiệm quản lý kết nối Socket đến người dùng và xử lý các thông tin được gửi đến Service được viết bằng NodeJS.
Phân tích yêu cầu
Người dùng có 2 cách để tạo mới một tài khoản trên App:
- Đăng ký thông qua Email và Password Với phương thức này sau khi hoàn thành Form điền Email và Password, Confirm Password, người dùng sẽ được chuyển đến trang “Xác thực Email”, đồng thời sẽ có một Email gửi đến Gmail của người dùng để xác thực Người dùng có thể yêu cầu gửi lại “Xác thức Email” tuy nhiên mỗi lần sẽ cách nhau 30s để tránh tình trạng Spam.
- Đăng ký qua tài khoản Google.
- Để có thể vào trong ứng dụng, người dùng cần phải tiến hành đăng nhập Người dùng cũng sẽ có 2 cách để đăng nhập là thông qua Email và Password hoặc đăng nhập với Google.
- Đối với phương thức Đăng nhập thông qua Email và Password, nếu người dùng chưa xác nhận Email trước đó, hệ thống sẽ tiến hành chuyển người dùng đến trang Verify Email, sau khi quá trình Verify Email hoàn tất, người dùng sẽ được chuyển đến trang chủ và có thể sử dụng ứng dụng như bình thường.
3.2.3 Xem danh sách phòng Chat
Người dùng sau khi đăng nhập có thể thấy được danh sách phòng Chat mà mình đang tham gia bao gồm phòng Chat cá nhân và phòng Chat nhóm Đồng thời có thể xem khái quát thông tin của phòng Chat như ảnh phòng Chat (ảnh của bạn bè nếu đó là phòng Chat cá nhân, ảnh nhóm nếu đó là phòng Chat nhóm), tên phòng Chat, tin nhắn mới nhất, thời gian mới nhất Khi có tin nhắn mới ở một phòng Chat, phòng Chat này sẽ được đẩy lên đầu danh sách tin nhắn của người dùng theo thời gian thực Nếu có những sự kiện trong phòng Chat đó như tin nhắn mới, đang có cuộc gọi cũng sẽ được hiển thị nổi bật như dấu chấm tròn xanh, Button tham gia cuộc gọi cho người dùng nhanh chóng phân biệt.
3.2.4 Nhắn tin trong phòng Chat
Người dùng chọn phòng Chat và có thể thực hiện nhắn tin với nhiều loại tin nhắn như Text, hình ảnh, Video , Emoji, Sticker, Gif, ghi âm giọng nói và chia sẻ vị trí hiện tại Để tối ưu hiệu năng và tiết kiệm thời gian Load tin nhắn, danh sách tin nhắn sẽ được hỗ trợ Lazy load theo kiểu Offset, người dùng kéo tới đâu thì mới Load những tin nhắn tiếp theo thay vì Load hết từ đầu Khi người dùng kéo lên để xem các tin nhắn cũ, giao diện sẽ xuất hiện một nút để giúp người dùng có thể kéo đến tin nhắn mới nhất nhanh chóng.
3.2.5 Xem thông tin phòng Chat
Người dùng có thể xem thông tin phòng Chat bao gồm hình ảnh, tên phòngChat Ngoài ra, người dùng có thể xem nhanh những hình ảnh, Video, File đã gửi trong phòng Chat đó và có thể lựa chọn các thao tác như rời nhóm, sửa đổi thông tin nhóm đối với phòng Chat nhóm,…
Người dùng có thể tạo những nhóm Chat và mời bạn bè tham gia nhóm Sau khi nhóm được tạo, người dùng có thể cập nhật tên, hình ảnh nhóm, mời thêm bạn bè vào nhóm, rời nhóm.
Người dùng có thể xem danh sách, thêm, xoá bạn bè Sau khi kết bạn sẽ tự động tạo phòng Chat cá nhân bao gồm bản thân người dùng và bạn bè Sau khi xoá kết bạn sẽ xoá toàn bộ dữ liệu phòng Chat.
3.2.8 Quản lý chặn người dùng
Người dùng có thể tiến hành chặn bạn bè và người lạ nếu họ có nhu cầu Sau khi chặn, người bị chặn sẽ không thể tìm kiếm người đã chặn mình Người dùng có thể xem lại danh sách người dùng đã chặn và có thể gỡ chặn.
Người dùng có thể tìm kiếm tin nhắn, bạn bè, tên phòng Chat trên thanh tìm kiếm Để có thể tìm người lạ để gửi lời mời kết bạn, người dùng chỉ cần nhập chính xác địa chỉ Email của người đó trên thanh tìm kiếm, nếu hệ thống tìm thấy sẽ hiển thị thông tin người dùng ấy và người dùng có thể gửi lời mời tới người đó.
Người dùng sẽ nhận được thông báo khi có yêu cầu kết bạn, lời mời tham gia nhóm Chat, cuộc gọi mới và có thể xem các thông báo này.
3.2.11 Quản lý thông tin cá nhân
Người dùng có thể cập nhật thông tin cá nhân của mình bao gồm thay đổi Avatar, các thông tin như họ tên, hình đại diện, số điện thoại và giới thiệu bản thân.
Người dùng có thể thực hiện Call Video với bạn bè của mình Khi thực hiện cuộc gọi, người bên kia sẽ nhận được thông báo có người gọi tới Nếu người bên kia từ chối,cuộc gọi sẽ bị huỷ Nếu người bên kia chấp nhận, cả hai sẽ tiến hành Video call với nhau, ngoài ra còn có một số chức năng như ngắt Camera, đổi Camera trước hoặc sau,tắt âm thanh của đối phương, tắt Mic.
Thiết kế hệ thống
Hình 3.11 Sơ đồ Use Case đối với người dùng chưa đăng nhập
Hình 3.12 Sơ đồ Use Case đối với người dùng đã đăng nhập
Hình 3.13 Sơ đồ Use Case với Chat Room
STT Tên Actor Mô tả ngắn/ Ghi chú
1 Người dùng chưa đăng nhập Người dùng sử dụng phần mềm nhưng chưa đăng nhập
2 Người dùng đăng nhập Người dùng sử dụng phần mềm đã đăng nhập
3 Thành viên phòng Chat Người dùng tham gia phòng Chat
Bảng 3.4 Danh sách Use Case
Tên của Use Case Actor Mô tả/ Ghi chú
1 Đăng nhập Người dùng chưa đăng nhập Đăng nhập bằng tài khoản đã đăng ký
2 Đăng ký Người dùng chưa đăng nhập Tạo tài khoản mới để sử dụng App
3 Quên mật khẩu Người dùng chưa đăng nhập Cấp lại mật khẩu mứi cho người dùng
4 Xác thực Email Người dùng chưa đăng nhập Xác thực Email của tài khoản mới
5 Xem danh sách bạn bè
Người dùng đã đăng nhập
Xem danh sách bạn bè của người dùng hiện tại
6 Quản lý danh sách lời mời kết bạn Người dùng đã đăng nhập Quản lý danh sách lời mời kết bạn của người dùng
7 Thêm bạn bè Người dùng đã đăng nhập
Người dùng gửi lời mời kết bạn đến người dùng khác
8 Tạo nhóm Người dùng đã đăng nhập Người dùng tạo một nhóm Chat mới
9 Quản lý nhóm Người dùng đã đăng nhập
Quản lý danh sách nhóm đã tham gia
10 Quản lý danh sách lời mời nhóm Người dùng đã đăng nhập Quản lý danh sách lời mời nhóm của người dùng
11 Xem danh sách phòng Chat
Người dùng đã đăng nhập
Xem danh sách phòng Chat của người dùng hiện tại
12 Chỉnh sửa thông tin cá nhân Người dùng đã đăng nhập Sửa đổi thông tin người dùng.
13 Nhận thông báo Người dùng đã đăng nhập
Nhận thông báo đẩy trong ứng dụng
14 Xem danh sách thông báo Người dùng đã đăng nhập Xem thông báo mà người dùng nhận được
15 Cài đặt thông báo Người dùng đã đăng nhập
Bật hoặc tắt việc nhận thông báo trong ứng dụng
16 Tìm kiếm Người dùng đã đăng nhập Người dùng tìm kiếm bạn bè, nhóm
17 Đăng xuất Người dùng đã đăng nhập
Người dùng thoát khỏi tài khoản đang sử dụng
18 Quản lý thiết bị Người dùng đã đăng nhập Quản lý các thiết bị đã đăng nhập vào ứng dụng
19 Quản lý chủ đề và ngôn ngữ
Người dùng đã đăng nhập
Quản lý chủ đề và ngôn ngữ của ứng dụng
20 Quản lý chặn người dùng Người dùng đã đăng nhập Quản lý danh sách người dùng mà mình đã chặn
21 Cập nhật mật khẩu Người dùng đã đăng nhập
Cập nhật mật khẩu mới cho tài khoản
22 Thực hiện Chat Thành viên phòng
Chat Thực hiện Chat trong một phòng Chat.
23 Xem thông tin phòng Chat
Người dùng muốn xem thông tin của phòng Chat.
Chat Người dùng muốn thực hiện Video Call trong phòng Chat
3.3.4 Danh sách đặc tả Use Case
Bảng 3.5 Use Case Đăng nhập
Tên Use Case Đăng nhập
Mục đích Đăng nhập bằng tài khoản đã đăng ký
Người dùng Người dùng chưa đăng nhập Điều kiện kích hoạt Người dùng ấn nút đăng nhập với Email hoặc đăng nhập với
Google ở màn hình “Chào mừng người dùng”
Tiền điều kiện Người dùng chưa đăng nhập trước đó hoặc đã đăng xuất Hậu điều kiện Người dùng đăng nhập ứng dụng thành công
1 Người dùng truy cập vào ứng dụng và hệ thống chuyển người dùng đến màn hình “Chào mừng người dùng”.
2 Người dùng chọn lệnh đăng nhập với Email.
4 Ứng dụng chuyển người dùng đến trang “Đăng nhập”.
5 Người dùng nhập Email, mật khẩu và bấm nút đăng nhập.
6 Hệ thống xác thực thông tin đăng nhập thành công và chuyển người dùng đến trang chủ của ứng dụng.
2.a Người dùng chọn lệnh đăng nhập với Google 3.a Người dùng lựa chọn tài khoản liên kết với Google và bắt đầu thực hiện xác thực
Mở rộng - Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo.
+ TH1: Người dùng hủy đăng nhập.
- Người dùng chưa hoàn thành việc xác thực Email.
+ TH1: Người dùng chưa hoàn thành việc xác thực Email Use Case quay lại 02.4.
Bảng 3.6 Use Case Đăng ký
Tên Use Case Đăng ký
Mục đích Tạo tài khoản mới để sử dụng ứng dụng
Người dùng Người dùng chưa đăng nhập Điều kiện kích hoạt Người dùng nhấn vào nút “Đăng ký” ở màn hình “Chào mừng người dùng”
Tiền điều kiện Người dùng chưa có tài khoản
Hậu điều kiện - Người dùng đăng ký tài khoản mới thành công.
- Hệ thống lưu thông tin tài khoản mới vào dữ liệu.
1 Người dùng truy cập vào ứng dụng và hệ thống chuyển người dùng đến màn hình “Chào mừng người dùng”.
2 Người dùng chọn lệnh đăng ký tài khoản bằng Email.
3 Ứng dụng chuyển người dùng đến trang “Đăng ký”
4 Người dùng nhập Email, mật khẩu, xác nhận mật khẩu và chọn lệnh đăng ký.
5 Sau khi nhấn lệnh đăng ký, hệ thống tự động chuyển người dùng đến trang “Xác thực Email”.
6 Hệ thống tiến hành xác thực Email và gửi một Email xác nhận đến người dùng.
7 Sau khi người dùng xác nhận Email thành công, hệ thống tự động chuyển người dùng vào trang chủ của ứng dụng.Luồng sự kiện phụ 2.a Người dùng chọn đăng nhập vào Google nhưng tài khoản
Google này chưa đăng ký trước với hệ thống.
- Người dùng đăng ký tạo tài khoản và thoát App nhưng chưa hoàn thành bước xác thực Email Người dùng truy cập lại vào App ở lần sau:
+ TH1: Người dùng chưa xác thực Email.
3.3.4.3 Use Case Quên mật khẩu
Bảng 3.7 Use Case Quên mật khẩu
Tên Use Case Quên mật khẩu
Mục đích Cấp lại mật khẩu mới cho người dùng.
Người dùng Người dùng chưa đăng nhập Điều kiện kích hoạt Người dùng nhấn vào nút quên mật khẩu ở trang “Quên mật khẩu”.
Tiền điều kiện Người dùng chưa đăng nhập.
Hậu điều kiện - Người dùng đổi mật khẩu cho tài khoản thành công.
- Hệ thống lưu thông tin mật khẩu mới vào dữ liệu.
Luồng sự kiện chính 1 Người dùng chọn lệnh quên mật khẩu ở trang “Đăng nhập”
2 Ứng dụng chuyển người dùng đến trang “Quên mật khẩu”
3 Người dùng nhập Email tài khoản và chọn lệnh cấp lại mật khẩu.
4 Hệ thống kiểm tra tính hợp lệ của Email, đảm bảo Email này đã được đăng ký tài khoản trước đó, sau đó hệ thống tiến hành gửi tới Email đó tới địa chỉ đã được đăng ký.
5 Người dùng bấm vào đường dẫn trong Email và dẫn đến trang Web thay đổi mật khẩu.
6 Người dùng thay đổi mật khẩu.
7 Trang Web thông báo thay đổi mật khẩu thành công. Luồng sự kiện phụ Không
- Hệ thống xác thực thông tin Email không thành công và hiển thị thông báo
+ TH1: Người dùng hủy quên mật khẩu.
+ TH2: Người dùng nhập lại thông tin Use Case quay lại 03.3.
3.3.4.4 Use Case Xác thực Email
Bảng 3.8 Use Case Xác thực Email
Tên Use Case Xác thực Email
Mục đích Xác thực Email của tài khoản mới
Người dùng Người dùng chưa đăng nhập Điều kiện kích hoạt Người dùng đang đăng nhập bằng tài khoản chưa xác thực
Email Tiền điều kiện Tài khoản chưa xác thực Email
Hậu điều kiện Tài khoản đã được xác thực Email
Luồng sự kiện chính 1 Người dùng đăng nhập vào hệ thống bằng tài khoản chưa xác thực Email.
2 Hệ thống thông báo tài khoản chưa xác thực và ứng dụng chuyển người dùng đến trang “Xác thực Email”.
3 Hệ thống kiểm tra tính hợp lệ của Email, đảm bảo Email này đã được đăng ký tài khoản trước đó và hiện tại chưa xác thực, sau đó hệ thống gửi một Email xác thực chứa đường Link xác thực đến Email của người dùng.
4 Người dùng bấm vào đường dẫn trong Email và dẫn đến trang Web xác thực Email.
5 Trang Web thông báo thay đổi mật khẩu thành công.
6 Hệ thống ghi nhận tài khoản đã xác thực và chuyển người dùng đến trang chủ của ứng dụng.
Luồng sự kiện phụ Không
- Hệ thống xác thực thông tin Email không thành công và hiển thị thông báo
+ TH1: Người dùng chọn lệnh đăng xuất.
+ TH2: Người dùng chọn lệnh gửi lại mật khẩu.
3.3.4.5 Use Case Xem danh sách bạn bè
Bảng 3.9 Use Case Xem danh sách bạn bè
Tên Use Case Xem danh sách bạn bè
Mục đích Xem danh sách bạn bè của người dùng hiện tại.
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn xem danh sách bạn bè của mình
Tiền điều kiện Người dùng đã đăng nhập thành công.
Hậu điều kiện Danh sách bạn bè hiển thị trên màn hình người dùng.
Luồng sự kiện chính 1 Người dùng chọn tab “Friends” (Bạn bè).
2 Hệ thống trả về danh sách bạn bè của người dùng và thể hiện số lượng bạn bè hiện tại.
Luồng sự kiện phụ 2.a Người dùng có thể chọn lệnh xóa kết bạn để xóa kết bạn.
- Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo
+ TH1: Người dùng chọn lệnh thử lại.
3.3.4.6 Use Case Quản lý danh sách lời mời kết bạn
Bảng 3.10 Quản lý danh sách lời mời kết bạn
Tên Use Case Quản lý danh sách lời mời kết bạn
Mục đích Quản lý danh sách lời mời kết bạn của người dùng
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn xem danh sách lời mời kết bạn
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trong trang “Danh sách lời mời kết bạn”.
Hậu điều kiện Màn hình hiển thị danh sách lời mời người dùng đã nhận bao gồm đã gửi và đã nhận
1 Người dùng chọn tab “Friends” (Bạn bè).
2 Người dùng nhấn nút “Request Friend”
3 Người dùng chọn loại lời mời muốn xem, nhấn lệnh đã gửi để xem danh sách lời mời mình đã gửi và nhấn lệnh nhận để xem danh sách lời mời kết bạn mình đã nhận.
4 Hệ thống trả về danh sách lời mời kết bạn theo lệnh người dùng đã chọn trước đó.
Luồng sự kiện phụ 4.a Người dùng nhấn lệnh thu hồi lời mời đã gửi Hệ thống tiến hành thu hồi lời mời và xóa lời mời đó khỏi danh sách. 4.b Người dùng nhấn lệnh chấp nhận, hoặc từ chối lời mời đã nhận Hệ thống sẽ xóa lời mời đó khỏi danh sách, đối với lệnh chấp nhận sẽ thêm người gưi lời mời vào danh sách bạn bè.
- Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo
+ TH1: Người dùng chọn lệnh thử lại.
3.3.4.7 Use Case Thêm bạn bè
Bảng 3.11 Use Case Thêm bạn bè
Tên Use Case Thêm bạn bè
Mục đích Người dùng gửi lời mời kết bạn đến người dùng khác
Người dùng - Người dùng đã đăng nhập. Điều kiện kích hoạt Người dùng lựa chọn gửi lời mời kết bạn.
- Người dùng đã đăng nhập.
- Người dùng đang ở trong trang “Tìm kiếm”, hệ thống ghi nhận người dùng đã tìm kiếm chính xác một Email của người dùng khác và trả về kết quả ở mục người dùng.
- Người dùng không phải là bạn bè của người mình muốn gửi lời mời.
- Lời mời kết bạn chưa được gửi đến người dùng.
Hậu điều kiện Lời mời kết bạn được gửi đến người dùng khác
Luồng sự kiện chính 1 Người dùng nhấn vào ô tìm kiếm ở trên thanh App Bar của ứng dụng và hệ thống chuyển người dùng đến trang “Tìm kiếm”.
2 Người dùng nhập chính xác Email của người mà mình cần tìm kiếm.
3 Hệ thống tìm tài khoản tương ứng với Email người dùng đã nhập và tài khoản này không phải là bạn bè hiện tại của người dùng, sau đó trả kết quả về cho người dùng ở mục người dùng.
3 Người dùng chọn lệnh kết bạn.
4 Ứng dụng hiển thị Dialog xác nhận kết bạn.
5 Người dùng xác nhận muốn thực hiện kết bạn.
6 Hệ thống thông báo gửi mời mời kết bạn thành công.
Luồng sự kiện phụ Không
Mở rộng 3.a Nếu không tìm thấy người dùng, hệ thống sẽ không trả về tài khoản nào trong mục người dùng
Bảng 3.12 Use Case Tạo nhóm
Tên Use Case Tạo nhóm
Mục đích Người dùng tạo một nhóm Chat mới
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn tạo một nhóm Chat mới
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở Tab “Groups” (Nhóm).
Hậu điều kiện Hệ thống lưu lại thông tin nhóm mới, cập nhập danh sách nhóm đã tham gia và tạo một phòng Chat nhóm mới Luồng sự kiện chính 1 Người dùng nhấn vào nút “Create new group”.
2 Hệ thống chuyển người dùng đến trang “Tạo nhóm”.
3 Người dùng nhập thông tin tên nhóm muốn đặt.
4 Hệ thống lưu lại thông tin nhóm mới và thông báo tạo thành công cho người dùng.
5 Phần mềm chuyển người dùng về lại trang chủ ở Tab “Groups” với danh sách đã được cập nhập thêm nhóm mà người dùng vừa mới tạo.
3.a Người dùng nhấn vào nút ảnh nhóm để chọn ảnh làm Avatar cho nhóm từ thư viện ảnh trong máy.
3.b Người dùng chọn lệnh thêm thành viên.
4.b Ứng dụng hiển thị danh sách bạn bè của người dùng hiện tại. 5.b Người dùng chọn bạn bè mà mình muốn thêm vào sau đó chọn lệnh thêm thành viên.
3.3.4.9 Use Case Quản lý nhóm
Bảng 3.13 Use Case Quản lý nhóm
Tên Use Case Quản lý nhóm
Mục đích Quản lý danh sách nhóm đã tham gia
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn quản lý danh sách nhóm đã tham gia
Tiền điều kiện Người dùng đã đăng nhập thành công
Hậu điều kiện Hệ thống hiển thị danh sách các nhóm mà người dùng đã tham gia.
Luồng sự kiện chính 1 Người dùng chọn tab “Groups” (Nhóm).
2 Hệ thống sẽ hiển thị danh sách nhóm mà người dùng đã tham gia và số lượng nhóm đã tham gia hiện tại.
3 Người dùng có thể chọn một nhóm và nhấn vào để xem chi tiết nhóm.
3a Người dùng có thể chọn lệnh chỉnh sửa thông tin để tiến hành cập nhập thông tin nhóm.
3b Người dùng có thể chọn lệnh thêm thành viên để mời thành viên mới vào nhóm.
3c Người dùng có thể chọn lệnh rời nhóm nếu cần thiết.
- Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo + TH1: Người dùng chọn lệnh thử lại.
Use Case quay lại bước 09.02.
3.3.4.10 Use Case Quản lý danh sách lời mời nhóm
Bảng 3.14 Quản lý danh sách lời mời nhóm
Tên Use Case Quản lý danh sách lời mời nhóm
Mục đích Quản lý danh sách lời nhóm của người dùng
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn xem danh sách lời mời nhóm
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trong trang “Danh sách lời mời nhóm”.
Hậu điều kiện Màn hình hiển thị danh sách lời mời vào nhóm đã nhận bao gồm đã gửi và đã nhận.
Luồng sự kiện chính 1 Người dùng chọn tab “Group” (Bạn bè).
2 Người dùng nhấn nút “Request Group”
3 Người dùng chọn loại lời mời muốn xem, nhấn lệnh đã gửi để xem danh sách lời mời mình đã gửi và nhấn lệnh nhận để xem danh sách lời mời kết bạn mình đã nhận.
4 Hệ thống trả về danh sách lời mời vào nhóm theo lệnh người dùng đã chọn trước đó.
4.a Người dùng nhấn lệnh thu hồi lời mời đã gửi Hệ thống tiến hành thu hồi lời mời và xóa lời mời đó khỏi danh sách. 4.b Người dùng nhấn lệnh chấp nhận, hoặc từ chối lời mời đã nhận Hệ thống sẽ xóa lời mời đó khỏi danh sách, đối với lệnh chấp nhận sẽ thêm nhóm mới vào danh sách nhóm.
- Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo
+ TH1: Người dùng chọn lệnh thử lại.
3.3.4.11 Use Case Xem danh sách phòng Chat
Bảng 3.15 Use Case Xem danh sách phòng Chat
Tên Use Case Xem danh sách phòng Chat
Mục đích Xem danh sách phòng Chat của người dùng hiện tại
Người dùng Người dùng đã đăng nhập. Điều kiện kích hoạt Người dùng muốn xem danh sách phòng Chat hiện tại.
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trang tab “Home”.
Danh sách phòng Chat hiển thị trên màn hình người dùng, bao gồm hình đại diện phòng Chat, tên phòng Chat, tin nhắn mới nhất và thời gian hoặc sự kiện Video nếu có trong phòng Chat.
1 Người dùng lựa chọn tab “Home” ở thanh điều hướng dưới.
2 Hệ thống hiển thị danh sách phòng Chat hiện tại của người dùng.
Luồng sự kiện phụ Không
Mở rộng 1.a Người dùng có thể kéo giữ lên trên để cập nhập lại danh sách phòng Chat.
3.3.4.12 Use Case Chỉnh sửa thông tin cá nhân
Bảng 3.16 Use Case Chỉnh sửa thông tin cá nhân
Tên Use Case Chỉnh sửa thông tin cá nhân.
Mục đích Sửa đổi thông tin người dùng.
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn sửa đổi thông tin cá nhân
Tiền điều kiện - Người dùng đã đăng nhập thành công
- Người dùng ở trang “Edit Profile”.
Hậu điều kiện - Người dùng thay đổi thông tin thành công.
- Hệ thống lưu lại thông tin mới của người dùng.
Luồng sự kiện chính 1 Ngườn dùng chọn Tab “Setting” và chọn lệnh thay đổi thông tin cá nhân.
2 Ứng dụng chuyển người dùng vào trang “Edit Profile”.
3 Người dùng cập nhật các trường mong muốn thay đổi.
4 Người dùng chọn lệnh cập nhật.
5 Hệ thống sẽ tiến hành cập nhập thông tin mới của người dùng và sẽ thông báo trạng thái cập nhập thành công hay chưa cho người dùng.
Luồng sự kiện phụ 1.a Người dùng chọn lệnh cập nhập ảnh đại diện.
1.b Người dùng chọn ảnh mà mình muốn cập nhật.
3.3.4.13 Use Case Nhận Thông báo
Bảng 3.17 Use Case Nhận thông báo
Tên Use Case Thông báo
Mục đích Nhận thông báo đẩy trong ứng dụng
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Server gửi thông báo mới đến người dùng.
- Người dùng đã đăng nhập thành công vào ứng dụng.
- Ứng dụng đã được cấp quyền thông báo.
- Người dùng đang bật tính năng nhận thông báo trong ứng dụng
Hậu điều kiện Phần mềm hiển thị các thông báo mới cho người dùng ở trong phần mềm, ngoài phần mềm.
1 Server gửi thông báo đến máy của người dùng.
2 Phần mềm sẽ hiển thị thông báo ở trong phần mềm và ngoài phần mềm.
Luồng sự kiện phụ Không.
3.3.4.14 Use Case Xem danh sách thông báo
Bảng 3.18 Use Case Xem danh sách thông báo
Tên Use Case Xem danh sách thông báo.
Mục đích Xem thông báo mà người dùng nhận được
Người dùng Người dùng đã đăng nhập. Điều kiện kích hoạt Người dùng muốn xem danh sách thông báo đã nhận Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trong trang “Thông báo”.
Hậu điều kiện Phần mềm hiển thị danh sách thông báo mà người dùng nhận được.
Luồng sự kiện chính 1 Người dùng chọn Icon “Thông báo” trên thanh App
Bar để điều hướng đến trang “Thông báo”.
2 Hệ thống sẽ hiển thị danh sách thông báo mà người dùng nhận được.
3 Người dùng có thể nhấn hoặc thao tác với thông báo.
Luồng sự kiện phụ 3.a Người dùng có thể vuốt phải để hiển thị nút xóa thông báo.
3.b Người dùng có thể chọn lệnh xóa tất cả thông báo
Mở rộng - Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo.
+ TH1: Người dùng chọn lệnh thử lạiUse Case quay lại 14.2
3.3.4.15 Use Case Cài đặt thông báo
Bảng 3.19 Use Case Cài đặt thông báo
Tên Use Case Cài đặt thông báo
Mục đích Bật hoặc tắt việc nhận thông báo trong ứng dụng
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn bật hoặc tắt việc nhận thông báo trong ứng dụng.
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng ở trong trang “Cài đặt thông báo”.
Hậu điều kiện - Người dùng thay đổi cài đặt thông báo thành công.
- Hệ thống ghi nhận lại trạng thái nhận thông báo của ứng dụng.
Luồng sự kiện chính 1 Ngườn dùng chọn lệnh cài đặt thông báo
2 Ứng dụng chuyển người dùng đến trang “Cài đặt thông báo”
3 Người dùng chọn bật/ tắt thông báo theo mong muốn.
4 Hệ thống sẽ tiến hành ghi nhận lại trạng thái nhận thông báo của ứng dụng.
Luồng sự kiện phụ Không
Bảng 3.20 Use Case Tìm kiếm
Tên Use Case Tìm kiếm
Mục đích Người dùng tìm kiếm người dùng, bạn bè, nhóm hoặc tin nhắn
Người dùng Người dùng đã đăng nhập. Điều kiện kích hoạt
- Người dùng mong muốn tìm kiếm người dùng, bạn bè, nhóm hoặc tin nhắn.
- Người dùng nhấn nút tìm kiếm trên thanh App Bar của ứng dụng.
Tiền điều kiện - Người dùng đã đăng nhập thành công.
Hậu điều kiện Danh sách kết quả tìm kiếm được hiển thị lên màn hình
1 Người dùng bấm vào nút “Tìm kiếm” thanh App Bar của ứng dụng.
2 Người dùng nhập từ khóa cần tìm.
3 Hệ thống hiển thị kết quả tìm kiếm lên màn hình.
Luồng sự kiện phụ Không
2.a Người dùng nhập chính xác một Email của một tài khoản chưa kết bạn.
3.a Kết quả trả về là tài khoản của người dùng chưa kết bạn.
2.b Hệ thống có thể trả về danh sách đề xuất kết bạn nếu người dùng nhập từ khóa là tên của người dùng khác.
Bảng 3.21 Use Case Đăng xuất
Tên Use Case Đăng xuất
Mục đích Người dùng thoát khỏi tài khoản đang sử dụng.
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng nhấn nút đăng xuất trong trang “Cài đặt”.
Tiền điều kiện - Người dùng đăng nhập thành công.
- Người dùng đang ở trong Tab “Setting”
Hậu điều kiện Người dùng đã đăng xuất và không còn xác thực khi mở phần mềm.
Luồng sự kiện chính 1 Người dùng chọn Tab “Setting”.
2 Người dùng chọn lệnh đăng xuất.
3 Phần mềm hiển thị thông báo yêu cầu người dùng xác nhận muốn đăng xuất khỏi phần mềm.
3 Hệ thống quay trở lại màn hình “Chào mừng người dùng”.
Luồng sự kiện phụ Không
3.3.4.18 Use Case Quản lý thiết bị
Bảng 3.22 Use Case Quản lý thiết bị
Tên Use Case Quản lý thiết bị
Mục đích Quản lý các thiết bị đã đăng nhập vào ứng dụng
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn quản lý các thiết bị.
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trong trang “Quản lý thiết bị”. Hậu điều kiện Hệ thống hiển thị danh sách thiết bị trên màn hình. Luồng sự kiện chính 1 Người dùng chọn Tab “Setting”.
2 Người dùng chọn lệnh quản lý thiết bị.
3 Phần mềm hiển thị danh sách thiết bị hiện tại của người dùng.
Luồng sự kiện phụ 3.a Người dùng xóa thiết bị.
4.a Ứng dụng hiển thị Dialog xác nhận.
5.a Người dùng xác nhận muốn xóa thiết bị.
4.a Hệ thống loại bỏ thiết bị khỏi danh sách thiết bị và tiến hành đăng xuất trên thiết bị đó.
Mở rộng - Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo.
+ TH1: Người dùng chọn lệnh thử lại Use Case quay lại 18.3.
3.3.4.19 Use Case Quản lý chủ đề và ngôn ngữ
Bảng 3.23 Quản lý chủ đề và ngôn ngữ
Tên Use Case Quản lý chủ đề và ngôn ngữ
Mục đích Quản lý chủ đề và ngôn ngữ của ứng dụng
Người dùng Người dùng đã đăng nhập Điều kiện kích hoạt Người dùng muốn quản lý chủ đề ngôn ngữ của ứng dụng.
Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trong trang “Cài đặt chủ đề và ngôn ngữ”.
Hậu điều kiện Hệ thống hiển thị danh sách thiết bị trên màn hình. Luồng sự kiện chính 1 Người dùng chọn Tab “Setting”.
2 Người dùng chọn lệnh quản lý chủ đề và ngôn ngữ.
3 Ứng dụng chuyển đến trang “Quản lý chủ đề và ngôn ngữ”.
4 Người dùng tiến hành thao tác với tùy chọn ngôn ngữ hoặc chủ đề của ứng dụng.
Luồng sự kiện phụ Không
3.3.4.20 Use Case Quản lý chặn người dùng
Bảng 3.24 Use Case Quản lý chặn người dùng
Tên Use Case Quản lý chặn người dùng.
Mục đích Quản lý danh sách người dùng mà mình đã chặn
Người dùng Người dùng đã đăng nhập. Điều kiện kích hoạt Người dùng muốn quản lý danh sách người dùng mà mình đã chặn Tiền điều kiện - Người dùng đã đăng nhập thành công.
- Người dùng đang ở trong trang “Quản lý chặn người dùng”.
Hậu điều kiện Phần mềm hiển thị danh người dùng đã chặn.
Luồng sự kiện chính 1 Người dùng chọn Tab “Setting”.
2 Người dùng chọn lệnh quản lý chặn người dùng.
3 Ứng dụng chuyển đến trang “Quản lý chặn người dùng”.
4 Ứng dụng hiển thị danh sách đã chặn của người dùng.
Luồng sự kiện phụ 4.a Người dùng chọn lệnh gỡ chặn trong danh sách đã chặn.
Mở rộng - Ứng dụng ghi nhận kết nối với hệ thống thất bại và thông báo.
+ TH1: Người dùng chọn lệnh thử lại
3.3.4.21 Use Case Cập nhật mật khẩu
Bảng 3.25 Use Case Cập nhập mật khẩu
Tên Use Case Cập nhật mật khẩu
Mục đích Cập nhật mật khẩu mới cho tài khoản
Thiết kế dữ liệu
Bảng 3.29 Bảng diễn giải các thành phần trong sơ đồ Logic
1 IAM device Lưu trữ thông tin thiết bị người dùng.
2 IAM email_account Lưu trữ thông tin tài khoản email.
3 IAM firebase_account Lưu trữ thông tin tài khoản firebase.
4 IAM user Lưu trữ thông tin người dùng.
5 Connectio n connection Lưu trữ thông tin kết nối, mối quan hệ người dùng, nhóm người dùng.
6 Connectio n group Lưu trữ thông tin nhóm.
7 Connectio n request Lưu trữ thông tin yêu cầu.
8 Message chatroom Lưu trữ thông tin chatroom.
9 Message chat_room_messag e Lưu trữ thông tin tin nhắn.
10 Message chat_room_user Lưu trữ thông tin thành viên trong nhóm.
11 Message notifications Lưu trữ các thông báo.
3.4.2 Mô tả chi tiết bảng dữ liệu
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã thiết bị.
2 model varchar Model thiết bị.
3 os varchar Hệ điều hành thiết bị.
4 app_version varchar Phiên bản ứng dụng.
5 user_id varchar FK Mã người dùng.
6 last_active bigint Thời điểm cuối cùng hoạt động.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã tài khoản.
3 password varchar Not Null Mật khẩu tài khoản.
4 verified bool Tài khoản đã được xác thực hay chưa.
5 user_id varchar FK Mã người dùng.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 firebase_uid varchar PK Mã người dùng trên Firebase.
2 user_id varchar PK, FK Mã người dùng.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã người dùng.
2 name varchar Tên người dùng.
3 phone varchar Số điện thoại người dùng.
4 date_of_birth bigint Ngày sinh người dùng.
5 gender smallint Giới tính người dùng.
6 bio text Bio người dùng.
7 email varchar Unique Email người dùng.
8 avatar varchar Avatar người dùng.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 subject varchar PK Mã chủ thể.
2 object varchar PK Mã khách thể.
3 connection_type varchar Not Null Loại kết nối.
4 request_id varchar Mã yêu cầu.
5 Room_id varchar Mã phòng chat.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã nhóm.
2 name varchar Not Null Tên nhóm.
3 avatar varchar Not Null Avatar nhóm.
4 room_id varchar Not Null Mã phòng chat.
T Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã yêu cầu.
2 sender varchar Not Null Mã người gửi.
3 receiver varchar Not Null Mã người nhận.
4 created_at bigint Thời điểm yêu cầu được tạo.
5 group_id varchar Mã nhóm.
T Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã phòng chat.
2 type varchar Not Null Loại phòng chat (p2p, group)
Bảng 3.38 Bảng chat_room_message
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Mã tin nhắn.
2 room_id varchar Mã phòng chat.
4 type varchar Loại tin nhắn.
5 created_at varchar Thời điểm nhắn.
6 sender_id varchar Người gửi.
Bảng 3.39 Bảng chat_room_user
T Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 room_id varchar PK Mã phòng.
2 user_id varchar PK Mã người dùng thành viên.
STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
1 id varchar PK Id thông báo.
2 owner varchar Not Null Người nhận thông báo.
3 subject varchar Đối tượng hành động.
4 subject_type varchar Loại đối tượng hành động.
5 direct varchar Đối tượng bị tác động trực tiếp.
6 direct_type varchar Loại đối tượng bị tác động trực tiếp.
7 indirect varchar Đối tượng bị tác động gián tiếp.
Loại đối tượng bị tác động gián tiếp.
9 prep varchar Đối tượng bối cảnh.
10 prep_type varchar Loại đối tượng bối cảnh.
12 created_at bigint Thời điểm hành động.
XÂY DỰNG ỨNG DỤNG
Danh sách màn hình
Bảng 4.41 Danh sách Màn hình
T Tên màn hình Ý nghĩa/ Ghi chú
1 Onboarding Màn hình giới thiệu các tính năng, đặc biệt của ứng dụng khi người dùng lần đầu tiên sử dụng ứng dụng
2 Chào mừng người dùng Màn hình chào mừng người dùng sử dụng ứng dụng
3 Đăng nhập Màn hình Đăng nhập bằng Email và Password.
4 Đăng ký Màn hình tạo tài khoản mới
5 Quên mật khẩu Khôi phục mật khẩu
6 Xác thực Email Xác nhận Email người dùng đã đăng ký
7 Trang chủ Trang chủ của phần mềm, hiển thị danh sách phòng Chat và các Bottom Tab như bạn bè, nhóm, cài đặt
8 Chat Hiển thị danh sách tin nhắn và ô nhập, thao tác tin nhắn
9 Thông tin phòng Chat Hiển thị thông tin phòng Chat
10 Danh sách thành viên nhóm Hiển thị danh sách thành viên trong phòng Chat
11 Thông tin nhóm Hiển thị thông tin nhóm
12 Danh sách các loại Tệp trong phòng Chat
Quản lý các loại tệp như hình ảnh, Video, File đã gửi trong phòng Chat
13 Danh sách bạn bè Hiển thị danh sách bạn bè
14 Thông tin người dùng Hiển thị thông tin người dùng
15 Danh sách lời mời Hiển thị danh sách lời mời kết bạn
16 Danh sách nhóm Hiển thị danh sách nhóm
17 Tạo nhóm mới Tạo một nhóm mới
18 Danh sách lời mời nhóm đã nhận Hiển thị danh sách lời mời vào nhóm
19 Cài đặt Hiển thị cài đặt liên quan đến tài khoản và ứng dụng
20 Chỉnh sửa thông tin cá nhân Chỉnh sửa thông tin cá nhân của người dùng
21 Thay đổi mật khẩu Thay đổi mật khẩu của người dùng
22 Cài đặt thông báo Cập nhật cài đặt tình trạng bật/ tắt thông báo
23 Cài đặt Chủ đề và Ngôn ngữ Cập nhật chủ đề và ngôn ngữ của ứng dụng
24 Quản lý thiết bị Hiển thị danh sách thiết bị
25 Thông tin ứng dụng Hiển thị thông tin của ứng dụng
26 Quản lý chặn người dùng Quản lý danh sách người dùng đã chặn
27 Video Call Thực hiện cuộc gọi Video
28 Tìm kiếm Tìm kiếm trong ứng dụng
29 Danh sách thông báo Quản lý danh sách thông báo người dùng nhận được
Chi tiết màn hình
- Màn hình Onboarding chỉ xuất hiện khi người dùng lần đầu tiên sử dụng ứng dụng Màn hình này sẽ có dạng Slide, mỗi trang sẽ gồm hình ảnh, Slogan của ứng dụng nhằm gây ấn tượng cho người dùng những tính năng mà phần mềm mang lại
- Người dùng có thể nhấn nút “Next” để sang trang tiếp theo hoặc nhấn nút
“Back” để trở về trang trước.
- Ngoài ra, người dùng có thể bỏ qua màn hình này bằng cách nhấn nút “Skip” ở góc phải màn hình.
4.2.2 Màn hình “Chào mừng người dùng”
Hình 4.16 Màn hình "Chào mừng người dùng"
- Màn hình “Chào mừng người dùng” sẽ xuất hiện sau màn hình “Onboarding” nếu đó là lần đầu tiên sử dụng ứng dụng hoặc hệ thống ghi nhận người dùng đang có trạng thái chưa đăng nhập khi mở ứng dụng.
- Trong trang sẽ chứa các nút tương ứng với các phương thức đăng nhập mà ứng dụng hiện có: “Sign in with Email”, “Sign in with Google” Ngoài ra, còn có nút
“Sign up with Email” để chuyển người dùng đến trang “Đăng ký” để tạo tài khoản mới.
- Bên cạnh đó, trang còn có thêm một nút với Icon Setting, khi người dùng nhấn vào sẽ chuyển người dùng đến trang “Cài đặt chủ đề và ngôn ngữ”.
Hình 4.17 Màn hình "Đăng nhập"
- Ở màn hình Đăng nhập, người dùng có thể nhập Email và Password để tiến hành đăng nhập vào ứng dụng Ứng dụng yêu cầu người dùng cần nhập Email đúng định dạng và mật khẩu phải có ít nhất 8 ký tự, phải bao gồm các ký tự đặc biệt và số, trong trường hợp người dùng nhập không đúng định dạng, ứng dụng sẽ báo lỗi và người dùng không thể nhấn nút “Login” để tiếp tục.
- Trong trang sẽ có một nút Quên mật khẩu, người dùng có thể nhấn vào nút này sẽ được chuyển đến trang Quên mật khẩu nếu cần thiết.
Hình 4.18 Màn hình "Đăng ký"
- Ở màn hình Đăng ký, người dùng cần nhập Email, mật khẩu và xác nhận mật khẩu Bên cạnh các yêu cầu như Email, mật khẩu phải đúng định dạng, ở trang này còn có thể điều kiện xác nhận mật khẩu phải trùng khớp với mật khẩu Khi tất cả mọi điều kiện đã thoả, người dùng có thể nhấn vào nút “Register” để thực hiện tạo tài khoản mới.
4.2.5 Màn hình “Quên mật khẩu”
Hình 4.19 Màn hình “Quên mật khẩu”
- Ở màn hình “Quên mật khẩu”, ứng dụng chỉ yêu cầu người dùng nhập Email. Sau khi người dùng nhập Email hợp lệ và hệ thống gửi Email khôi phục mật khẩu thành công, người dùng sẽ được thông báo gửi Email khôi phục mật khẩu thành công, lúc này người dùng có thể lựa chọn “Back to Welcome” để về trang
“Chào mừng người dùng” hoặc “Open Email app” để mở ứng dụng Email có trong thiết bị.
4.2.6 Màn hình “Xác thực Email”
Hình 4.20 Màn hình "Xác thực Email"
- Ở màn hình Xác thực Email, nút Gửi lại sau khi được người dùng nhấn sẽ bị vô hiệu hoá trong vòng 30s để tránh hiện tượng gửi Email quá nhiều lần.
Hình 4.21 Màn hình "Trang chủ"
- Ở màn hình Trang chủ, người dùng có thể xem danh sách phòng Chat mà mình đang tham gia Nếu người dùng chưa có phòng Chat nào, thì sẽ hiển thị một ảnh Placeholder.
- Trong danh sách phòng Chat, người dùng có thể thấy nhanh hình ảnh, tên phòng Chat, tin nhắn mới nhất người gửi tin nhắn mới nhất và thời gian của tin nhắn mới nhất đó
- Khi người dùng đang ở trong màn hình Trang chủ, nếu một phòng Chat có một tin nhắn mới thì sẽ được đẩy lên đầu, kèm với một nút màu xanh để gây nổi bật cho người dùng Nút màu xanh này sẽ biến mất khi người dùng nhấn vào phòng
Chat đó để xem tin nhắn Ngoài ra, nếu phòng Chat nào đang có cuộc gọi, sẽ có một nút Tham gia cuộc gọi hiển thị ra để người dùng có thể nhanh chóng tham gia cuộc gọi.
- Đối với những phòng Chat có tin nhắn mới nhất trong ngày, sẽ được hiển thị giờ, phút nhận được tin nhắn đó, trong khi những phòng Chat có tin nhắn ở những ngày trước đó sẽ được hiển thị thêm ngày tháng nhận được tin nhắn đó.
- Ngoài ra, người dùng có thể nhấn vào tìm kiếm và nút Thông báo ở AppBar của trang để chuyển đến trang tìm kiếm và trang danh sách thông báo AppBar này cũng sẽ xuất hiện ở Tab Bạn bè và Nhóm.
- Ở màn hình Chat, người dùng có thể xem được danh sách tin nhắn trong phòng Chat.
- Để tăng trải nghiệm người dùng cũng như hiệu năng của App, ứng dụng sẽ hỗ trợ cơ chế Load More khi lần đầu tiên người dùng truy cập vào ứng dụng chỉ lấy