Theo tác giả của ngôn ngữ Javascript, Ryan Dahl: “Javascript có những đặc tính mà làm cho nó rất khác biệt so với các ngôn ngữ lập trình động còn lại, cụ thể là nó không có khái niệm về
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN 2
ĐỀ TÀI: ỨNG DỤNG NHẮN TIN - GỌI ĐIỆN
TRỰC TUYẾN
Giảng viên hướng dẫn: HUỲNH HỒ THỊ MỘNG TRINH
Sinh viên thực hiện:
HUỲNH THỊ MINH NHỰC – MSSV: 19521973
Thành phố Hồ Chí Minh, tháng 6 năm 2022
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN 2
ĐỀ TÀI: ỨNG DỤNG NHẮN TIN - GỌI ĐIỆN
TRỰC TUYẾN
Giảng viên hướng dẫn: HUỲNH HỒ THỊ MỘNG TRINH
Sinh viên thực hiện:
HUỲNH THỊ MINH NHỰC – MSSV: 19521973
Thành phố Hồ Chí Minh, tháng 6 năm 2022
Trang 3Lời cảm ơn
Đồ án 2 là sự nối tiếp của đồ án 1 Trong đồ án này nhóm đã dành rất nhiều nỗ lực
và tâm huyết để xây dựng nên 1 ứng dụng chat với mức độ khó khá cao Đây là khó khăn cũng như thử thách mà nhóm đối mặt phải Đi đôi với đó là việc tiếp tục tích lũy thêm kinh nghiệm, thực hành những kiến thức đã học, học hỏi những cái mới Việc hoàn thành đồ án
2 coi như lại là 1 bước tiến lớn của nhóm trên con đường tự học, bên cạnh đó được sự hỗ trợ tận tình từ giảng viên hướng dẫn là cô Huỳnh Hồ Thị Mộng Trinh
Nhóm xin chân thành cảm ơn cô Huỳnh Hồ Thị Mộng Trinh đã tận tình giúp đỡ nhóm em hoàn thành đồ án 2 của nhóm Chính nhờ những sự góp ý, động viên của cô đã giúp đồ án của nhóm được hoàn thiện và chuyên nghiệp nhiều hơn Bên cạnh đó, nhóm đã học hỏi được rất nhiều kiến thức, kinh nghiệm và bài học thú vị trong quá trình làm khoá luận, đó sẽ là những hành trang hữu ích cho nhóm sau này
Nhóm cũng xin chân thành cảm ơn các anh chị, bạn bè đã giúp đỡ nhóm trong quá trình thực hiện đồ án Nhờ mọi người mà nhóm có nhiều góc nhìn khác nhau về đề tài đang làm, từ đó giúp hoàn thiện đồ án của nhóm
Một lần nữa, nhóm xin chân thành cảm ơn cô và mọi người
Trang 4NHẬN XÉT (Của giáo viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5MỤC LỤC
Lời cảm ơn 1
CHƯƠNG I: GIỚI THIỆU CHUNG 6
1 Đề tài 6
2 Lý do chọn đề tài 6
3 Tóm tắt đề tài 6
4 Mục tiêu đề tài 6
5 Phương pháp nghiên cứu 7
6 Ý nghĩa và hướng của đề tài 7
6.1 Về mặt tài liệu 7
6.2 Về mặt sản phẩm 7
CHƯƠNG II: CÔNG NGHỆ LIÊN QUAN 8
1 Flutter 8
1.1 Giới thiệu 8
1.2 Lý do sử dụng 8
2 Nodejs 9
2.1 Giới thiệu 9
2.2 Lý do sử dụng NodeJs 10
3 Socket IO 11
3.1 Giới thiệu 11
3.2 Lý do sử dụng SocketIO 11
4 Agora 12
4.1 Giới thiệu 12
4.2 Lý do sử dụng Agora 13
5 MySQL 13
5.1 Giới thiệu 13
CHƯƠNG III: MÔ HÌNH USE-CASE 16
1 Sơ đồ Use-case mức tổng quát 16
Trang 62 Danh sách Use-case 16
3 Đặc tả Use-case 17
3.1 Đặc tả Use-case “Login” 17
3.2 Đặc tả Usecase “Logout” 18
3.3 Đặc tả Usecase “AutoLogin” 19
3.4 Đặc tả Usecase “Link to Meer App” 19
3.5 Đặc tả Usecase “Send Text” 20
3.6 Đặc tả Usecase “Send Image” 21
3.7 Đặc tả Usecase “Send File” 22
3.8 Đặc tả Usecase “Change Name Alias” 23
3.9 Đặc tả Usecase “Call video” 24
3.10 Đặc tả Usecase “Call audio” 25
3.11 Đặc tả Usecase “Search Text” 26
3.12 Đặc tả Usecase “Search Image” 27
3.13 Đặc tả Usecase “Search File” 28
3.14 Đặc tả Usecase “Create Group” 28
3.15 Đặc tả Usecase “Change Avatar” 29
3.16 Đặc tả Usecase “Rename Group” 30
3.17 Đặc tả Usecase “Change Joiners” 31
3.18 Đặc tả Usecase “Check Friend Online” 32
CHƯƠNG IV: PHÂN TÍCH HỆ THỐNG 34
1 Sơ đồ lớp 34
1.1 Sơ đồ lớp mức phân tích 34
1.2 Danh sách các lớp đối tượng 34
1.3 Mô tả từng lớp đối tượng 35
2 Sơ đồ dữ liệu 39
2.1 Danh sách bảng trong sơ đồ dữ liệu 39
2.2 Bảng ROOM 40
2.3 Bảng User 41
2.4 Bảng Message 42
Trang 72.5 Bảng UserRoom 42
2.6 Bảng Friend 43
3 Sơ đồ hoạt động 44
3.1 Sơ đồ hoạt động tính năng chat: 44
3.2 Sơ đồ hoạt động tính năng gọi video: 45
CHƯƠNG V: THIẾT KẾ GIAO DIỆN 46
1 Màn hình Đăng nhập 46
2 Màn hình Home 46
3 Màn hình Tin nhắn mới 48
4 Màn hình Thêm thành viên 49
5 Màn hình Nhóm mới 50
6 Màn hình Tìm kiếm 51
7 Màn hình Chat 51
8 Màn hình Cài đặt đoạn chat 52
9 Màn hình Hiển thị hình ảnh trong đoạn chat 53
10 Màn hình gọi video: 54
CHƯƠNG VI: TỔNG KẾT 56
1 Công nghệ sử dụng 56
2 Độ hoàn thiện chức năng 56
3 Kết quả đạt được và hướng phát triển 56
3.1 Kết quả đạt được 56
3.2 Hướng phát triển 57
CHƯƠNG VII: BẢNG PHÂN CÔNG CÔNG VIỆC 58
CHƯƠNG VIII: TÀI LIỆU THAM KHẢO 60
Trang 8CHƯƠNG I: GIỚI THIỆU CHUNG
1 Đề tài
- Tên đề tài: Xây dựng ứng dụng nhắn tin - gọi điện trực tuyến
- Công nghệ sử dụng: Flutter (frontend) + NodeJs (backend)
- Cơ sở dữ liệu sử dụng: MySQL
2 Lý do chọn đề tài
Ở đồ án 1, nhóm đã làm đề tài hướng tới cộng đồng Thiện nguyện, góp phần giúp
đỡ những người có nhu cầu tình nguyện, đồng thời san sẻ tình yêu thương, đồng cảm với nhiều người khác
Tiếp nối việc đó, ở đồ án 2 nhóm mở rộng thêm những tính năng đã có ở đồ án 1, góp phần xây dựng 1 cộng đồng thiện nguyện ngày càng lớn mạnh, cũng như tăng tính tương tác giữa những con người có trong cộng đồng
Ứng dụng chat - gọi điện sẽ góp phần thúc đẩy trao đổi, tương tác giữa những người
có cùng tinh thần thiện nguyện, cũng như mang lại hiệu quả cao khi trao đổi thông tin, chia
sẻ thuận tiện hơn
3 Tóm tắt đề tài
Trong thời buổi đại dịch hiện nay, việc gọi điện thoại hoặc nhắn tin qua 1 kênh mạng xã hội là điều rất phổ biển đối với tất cả mọi người Việc này giúp mọi người vừa tiết kiệm tiền vừa nhanh chóng, tiện lợi cho dù ở nơi nào Cộng đồng thiện nguyện đã có riêng cho mình 1 mạng xã hội dùng để chia sẻ thông tin tại đó rồi, tuy nhiên việc chat giữa các thành viên có trong 1 sự kiện là điều rất cần thiết Chính vì thế, ứng dụng nhắn tin, gọi điện thoại trực tuyến ra đời dành riêng cho cộng đồng thiện nguyện, nhằm nâng cao tính tương tác cho mọi người trong môi trường này
4 Mục tiêu đề tài
- Xây dựng 1 ứng dụng Chat & Gọi điện trực tuyến dành riêng cho cộng đồng
thiện nguyện ở đồ án 1 có khả năng tương tác với độ trễ thấp nhất
- Tìm hiểu được công nghệ thích hợp xây dựng ứng dụng
- Hoàn thành được báo cáo môn học
Trang 95 Phương pháp nghiên cứu
- Nghiên cứu các ứng dụng có sẵn trên thị trường, nhận xét được ưu khuyết điểm của các ứng dụng đó (Messenger, Zalo, )
- Tìm hiểu các công nghệ mới trên thị trường, nhận xét và chọn ra phần mềm thích hợp nhất
- Đánh giá khả năng của nhóm ở mức độ nào, từ đó tìm ra tính năng thích hợp nhất
để phát triển
6 Ý nghĩa và hướng của đề tài
6.1 Về mặt tài liệu
- Sử dụng nguồn tài liệu tham khảo Flutter, NodeJs, MySQL
- Có tài liệu đặc tả use-case, sơ đồ lớp, tuần tự, mô hình thiết kế giao diện
Trang 10CHƯƠNG II: CÔNG NGHỆ LIÊN QUAN
- Một SDK (Software Development Kit): Một bộ sưu tập các công cụ sẽ giúp bạn
phát triển các ứng dụng của mình Điều này bao gồm các công cụ để biên dịch mã của bạn thành mã máy gốc (mã cho iOS và Android)
- Một Framework (UI Library based on widgets): Một tập hợp các thành phần giao
diện người dùng (UI) có thể tái sử dụng (button, text inputs, slider, v.v.) giúp bạn có thể cá nhân hóa tùy theo nhu cầu của riêng mình
Tính năng nổi bật của Flutter:
- Flutter hiện đã và đang là một react framework
- Sử dụng ngôn ngữ lập trình Dart đơn giản và dễ học
- Phát triển ứng dụng nhanh
- Giao diện người dùng rất đẹp và linh hoạt
- Hỗ trợ rất nhiều widget khác nhau
- Thể hiện cùng một UI trên nhiều nền tảng
- Ứng dụng có hiệu năng cao
1.2 Lý do sử dụng
Phát triển ứng dụng nhanh chóng: Tính năng hot reload giúp bạn nhanh chóng
Trang 11và dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tính năng và sửa lỗi nhanh hơn Trải nghiệm tải lại lần thứ hai, mà không làm mất trạng thái, trên emulator, simulator
và device cho iOS và Android
Giao diện người dùng đẹp và thu hút: Thỏa mãn người dùng của bạn với các
widget built-in đẹp mắt của Flutter theo Material Design và Cupertino (iOS-flavor), các giao diện lập trình ứng dụng (API) chuyển động phong phú, scroll tự nhiên mượt mà và tự nhận thức được nền tảng
Framework hiện đại: Dễ dàng tạo giao diện người dùng của bạn với framework
hiện đại của Flutter và tập hợp các platform, layout và widget phong phú Giải quyết các thách thức giao diện người dùng khó khăn của bạn với các API mạnh mẽ và linh hoạt cho
2D, animation, gesture, hiệu ứng và hơn thế nữa
2 Nodejs
2.1 Giới thiệu
- NodeJS là một nền tảng (platform) phía Server side được xây dựng, vận hành trên V8 JavaScript runtime của Chrome giúp xây dựng và phát triển các ứng dụng mạng một cách nhanh chóng và có khả năng mở rộng dễ dàng
- Node.js ra mắt vào năm 2009, bởi Ryan Dahl và nhận sự bảo trợ từ công ty Joyent (Hoa Kỳ)
- Phần core bên dưới 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 (real-time)
- 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
Trang 12Tính năng của NodeJs bao gồm:
- Bất đồng bộ và phát sinh sự kiện (Non-blocking and Event Driven): Tất các các
APIs của thư viện Node.js đều bất đồng bộ (non-blocking), NodeJS không cần đợi một API trả về dữ liệu Server chuyển sang một API khác sau khi gọi nó và có cơ chế riêng để gửi thông báo và nhận phản hồi về các hoạt động của Node.js và API đã gọi
- Tốc độ nhanh: Phần core phía dưới được viết gần như toàn bộ bằng C++ kết hợp
Chrome V8 Engine nên tốc độ xử lý công việc của Node.js cực nhanh, nhưng vẫn đảm bảo được tính chuẩn xác
- Đơn giản – Hiệu năng cao: Node.js sử dụng một mô hình luồng đơn luồng (single
thread) và các sự kiện lặp (event-loop) Cơ chế sự kiện cho phép phía Server trả về phản hồi theo non-blocking, đồng thời tăng hiệu quả sử dụng Các luồng đơn cung cấp dịch vụ cho nhiều request hơn hẳn Server truyền thống
- Không lưu bộ nhớ đệm (non buffer): Nền tảng Node.js không có vùng nhớ đệm,
tức không cung cấp khả năng lưu trữ dữ liệu buffer
2.2 Lý do sử dụng NodeJs
- Các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn ngữ khá thông dụng Theo tác giả của ngôn ngữ Javascript, Ryan Dahl: “Javascript có những đặc tính mà làm cho nó rất khác biệt so với các ngôn ngữ lập trình động còn lại, cụ thể là
nó không có khái niệm về đa luồng, tất cả là đơn luồng và hướng sự kiện.”
- Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện
Event-driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả
Trang 13- Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux, hơn nữa cộng đồng Nodejs rất lớn và hoàn toàn miễn phí Các bạn có thể thấy cộng đồng
Nodejs lớn như thế nào tại đây, các package đều hoàn toàn free: https://www.npmjs.com/
- Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết
bị
3 Socket IO
3.1 Giới thiệu
Để xây dựng một ứng dụng realtime cần sử dụng socketio Socketio sẽ giúp các bên
ở những địa điểm khác nhau kết nối với nhau, truyền dữ liệu ngay lập tức thông qua server trung gian Socketio có thể được sử dụng trong nhiều ứng dụng như chat, game online, cập nhật kết quả của một trận đấu đang xảy ra,
Socketio không phải là một ngôn ngữ, mà chỉ là 1 công cụ giúp thực hiện những ứng dụng realtime Vì thế, không thể sử dụng socketIo để thay thế hoàn toàn cho một ngôn ngữ, mà phải sử dụng kết hợp với một ngôn ngữ khác Ngôn ngữ đó có thể là php, asp.net, nodejs,
Cấu trúc một ứng dụng realtime sử dụng socket bao gồm 2 phần: phía server, phía client
- Phía server Đây là nơi sẽ cài đặt socket io Ngôn ngữ để dựng server có thể là php, asp.net, nodejs, Tuy nhiên, tùy vào ngôn ngữ lựa chọn mà cách cấu trúc server khác nhau
Ở đây, nếu được thì khuyến khích sử dụng nodejs để dựng server, vì như vậy có thể cài trực tiếp socketio vào cùng một server Nếu sử dụng php thì phải cài thêm những package khác, hoặc phải chuẩn bị riêng server để chạy socketio
- Phía client: Ở phía client sẽ xây dựng giao diện người dùng Ở đây có thể sử dụng
js, hoặc các thư viện của js như jquery, Nói chung là ngôn ngữ gì cũng được
3.2 Lý do sử dụng SocketIO
Nền tảng này sở hữu ưu điểm về tính bảo mật, khả năng kết nối tự động với server,
hỗ trợ mã hóa nhị phân, phương thức kết nối đơn giản
Tính bảo mật cao
Socket IO hình thành tựu trên nền tảng Engine.IO với khả năng kích hoạt phương
Trang 14thức long-polling phục vụ quá trình kết nối Tiếp đó nền tảng này lại sử dụng một số giao thức cải tiến hơn, chẳng hạn như Websocket
Socket IO sở hữu ưu điểm về tính bảo mật, khả năng kết nối tự động với server Nhớ vào quy trình thiết lập chặt chẽ, Socket IO không khó để tạo nhiều kết nối bảo mật
Ví như Proxy, cân bằng tải, tường lửa hoặc phần mềm diệt virus
Kết nối dễ dàng với server
Socket IO có khả năng tạo kết nối thuận lợi với máy chủ server Giả dụ như khi quá trình khởi chạy bị gián đoạn giữa server và client, Socket IO lập tức khôi phục kết nối, phục hồi server
Socket IO có khả năng tạo kết nối thuận lợi với máy chủ server và máy khách client Đặc biệt tính năng trên hoàn toàn có thể tùy chỉnh, dùng có quyền lựa chọn không tiến hành kết nối tự động với server nào đó
Hỗ trợ mã hóa nhị phân
Hiện nay, tính năng hỗ trợ mã hóa nhị phân đã thích hợp trên Socket IO Nó gần giống với ArrayBuffer, Blob tích hợp trên trình duyệt hoặc trong Node.js
Hỗ trợ tạo kênh đơn giản
Socket IO cho phép người từng tạo kênh một cách đơn giản Có nghĩa với Socket
IO, bạn có thể tạo mối liên kết giữa từng module riêng lẻ để tạo ra nhiều kênh riêng biệt Bên cạnh chức năng tạo kênh, Socket IO còn hỗ trợ để các client tham gia gửi thông báo đến nhóm người dùng có kết nối với thiết bị trong mạng lưới
Trang 15Agora là 1 dịch vụ được thiết kế dựa trên nền tảng WebRTC Agora RTM (Nhắn tin thời gian thực) SDK cung cấp dịch vụ đám mây nhắn tin toàn cầu với độ tin cậy cao,
độ trễ thấp và đồng thời cao Bạn có thể sử dụng RTM SDK để nhanh chóng triển khai các tình huống nhắn tin trong thời gian thực
Tài liệu hướng dẫn document rất kỹ lưỡng, tạo token cho mỗi phòng call đơn giản,
có hiệu lực tới tận 24 tiếng, chỉ qua vài bước thiết lập trên app và sử dụng
Trang 16là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng
MySQL là một trong số các phần mềm RDBMS RDBMS và MySQL thường được cho là một vì độ phổ biến quá lớn của MySQL Các ứng dụng web lớn nhất như Facebook, Twitter, YouTube, Google, và Yahoo! đều dùng MySQL cho mục đích lưu trữ dữ liệu Kể
cả khi ban đầu nó chỉ được dùng rất hạn chế nhưng giờ nó đã tương thích với nhiều hạ tầng
máy tính quan trọng như Linux, macOS, Microsoft Windows, và Ubuntu
5.2 Lý do sử dụng MySQL
Đây là bảng đánh giá xếp hạng của các mô hình Database
MySQL không phải là hệ quản lý cơ sở dữ liệu (RDBMS) duy nhất trên thị trường,
nhưng nó đích thực phổ biến nhất và chỉ xếp sau Oracle Database khi xét đến những thông
số chính như số lượng tìm kiếm, profile người dùng trên LinkedIn, và lượng thảo luận trên các diễn đàn internet Lý do chính vì sao rất nhiều ông lớn công nghệ phụ thuộc vào MySQL là gì? Các lý do quan trọng như sau:
Linh hoạt và dễ dùng
Bạn có thể sửa source code để đáp ứng nhu cầu của bạn mà không phải thanh toán thêm bất kỳ chi phí nào Quá trình cài đặt cũng rất đơn giản và thường không quá 30 phút
Hiệu năng cao
Nhiều server clusters sử dụng MySQL Bất kể bạn lưu trữ dữ liệu lớn của các trang thương mại điện tử hoặc những hoạt động kinh doanh nặng nề liên quan đến công nghệ thông tin, MySQL cũng có thể đáp ứng được với tốc độ cao, mượt mà
Trang 17Tiêu chuẩn trong ngành
Ngành công nghệ và dữ liệu đã sử dụng MySQL nhiều năm, vì vậy nó là một kỹ năng căn bản một chuyên gia lập trình Người dùng MySQL cũng có thể triển khai dự án nhanh và thuê các chuyên gia dữ liệu với mức phí nếu họ cần
An toàn
An toàn dữ liệu luôn là vấn đề quan trọng nhất khi chọn phần mềm RDBMS Với
hệ thống phân quyền truy cập và quản lý tài khoản, MySQL đặt tiêu chuẩn bảo mật rất cao
Mã hóa thông tin đăng nhập và chứng thực từ host đều khả dụng
Trang 18CHƯƠNG III: MÔ HÌNH USE-CASE
1 Sơ đồ Use-case mức tổng quát
2 Danh sách Use-case
1 Login Đăng nhập vào ứng dụng
2 Logout Thoát khỏi ứng dụng
3 AutoLogin Tự động đăng nhập nếu trước đó chưa Logout
4 Link to Meer App Tự động kết nối tới Meer App
5 Send Text Gửi tin nhắn chữ
6 Send Image Gửi hình ảnh
Trang 197 Send File Gửi file
8 Change Name Alias Đổi biệt hiệu thành viên trong phòng chat
9 Call video Gọi video trực tuyến
10 Call audio Gọi audio trực tuyến
11 Search Text Tìm kiếm theo chữ
12 Search Image Tìm kiếm hình ảnh đã gửi trong phòng chat
13 Search File Tìm kiếm file đã gửi trong phòng chat
14 Create Group Tạo nhóm chat mới
15 Change Avatar Thay đổi ảnh đại diện của nhóm chat
16 Rename Group Đổi tên phòng chat
17 Change Joiners Thay đổi thành viên trong phòng chat
18 Check Friend Online Kiểm tra bạn bè online
Trang 204 Hệ thống kiểm tra tài khoản và mật khẩu
5 Nếu tài khoản hợp lệ, hệ thống sẽ chuyển tiếp vào màn hình Home
Luồng thay thế
Sai tên đăng nhập hoặc mật khẩu:
5 Hệ thống thông báo tên đăng nhập hoặc mật khẩu sai
6 Người dùng thực hiện lại B2
Điều kiện trước Điện thoại phải có kết nối mạng
Điều kiện sau Thành công:
CSDL không thay đổi
Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
Trang 21Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
3.4 Đặc tả Usecase “Link to Meer App”
Mô tả Mở Meer App khi muốn tạo tài khoản mới
Luồng chính
1 Người mở ứng dụng lên
2 Bấm vào nút Tạo tài khoản
3 Hệ thống sẽ kiểm tra người dùng
có tải phần mềm Meer App chưa
Trang 224 Nếu có, mở ứng dụng Meer App lên
5 Tự động thực hiện Use case Sign
up trên Meer App
Luồng thay thế
Người dùng chưa cài đặt ứng dụng Meer App:
5 Hệ thống thông báo yêu cầu cài Meer App để có thể đăng ký tài khoản
Điều kiện trước Điện thoại phải có kết nối mạng
Phải cài ứng dụng Meer App trước đó
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
3.5 Đặc tả Usecase “Send Text”
Mô tả Người dùng gửi tin nhắn chữ trong chat
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Vào phòng chat mình muốn gửi tin nhắn
3 Gõ văn bản vào ô nhắn tin
4 Nhấn nút gửi
5 Hệ thống sẽ lưu tin nhắn về CSDL
Trang 236 Hệ thống gửi thông báo cho tất cả thành viên có trong phòng chat đó
về tin nhắn mới
Luồng thay thế
Kết nối mạng có vấn đề khi gửi tin nhắn:
5 Nếu có kết nối mạng lại, tin nhắn sẽ tự động gửi đi, thực hiện tiếp tục bước 5 trong luồng chính
6 Ngược lại, tin nhắn sẽ tự động báo lỗi hoặc biến mất khi người
CSDL không thay đổi
3.6 Đặc tả Usecase “Send Image”
Mô tả Người dùng gửi hình trong chat
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Vào phòng chat mình muốn gửi tin nhắn
3 Bấm vào nút Gửi file phương tiện
Trang 244 Chọn hình mình mà mình muốn gửi
5 Bấm nút gửi
6 Hệ thống sẽ lưu tin nhắn về CSDL
7 Hệ thống gửi thông báo cho tất cả thành viên có trong phòng chat đó
về tin nhắn mới
Luồng thay thế
Kết nối mạng có vấn đề khi gửi tin nhắn:
6 Nếu có kết nối mạng lại, tin nhắn sẽ tự động gửi đi, thực hiện tiếp tục bước 5 trong luồng chính
7 Ngược lại, tin nhắn sẽ tự động báo lỗi hoặc biến mất khi người
CSDL không thay đổi
3.7 Đặc tả Usecase “Send File”
Mô tả Người dùng gửi file trong chat
Trang 251 Người đăng nhập vào ứng dụng
2 Vào phòng chat mình muốn gửi tin nhắn
3 Bấm vào nút Gửi file
4 Chọn file mình mà mình muốn gửi
5 Bấm nút gửi
6 Hệ thống sẽ lưu tin nhắn về CSDL
7 Hệ thống gửi thông báo cho tất cả thành viên có trong phòng chat đó
về tin nhắn mới
Luồng thay thế
Kết nối mạng có vấn đề khi gửi tin nhắn:
5 Nếu có kết nối mạng lại, tin nhắn sẽ tự động gửi đi, thực hiện tiếp tục bước 5 trong luồng chính
6 Ngược lại, tin nhắn sẽ tự động báo lỗi hoặc biến mất khi người
CSDL không thay đổi
3.8 Đặc tả Usecase “Change Name Alias”
Mô tả Đổi biệt hiệu của người dùng trong chat
Trang 26Tác nhân Người dùng
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Vào phòng chat
3 Bấm vào nút Đổi biệu hiệu
4 Chọn người mình muốn đổi biệt danh
5 Gõ biệt danh mới vào
6 Bấm nút Lưu
7 Hệ thống sẽ Lưu biệt hiệu mới của người đó
Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
CSDL không thay đổi
3.9 Đặc tả Usecase “Call video”
Mô tả Gọi video call với người dùng có trong đoạn chat
Trang 271 Người đăng nhập vào ứng dụng
2 Vào phòng chat
3 Bấm vào nút Gọi video
4 Hệ thống sẽ kết nối mọi người trong video call lại với nhau
Luồng thay thế
Kết nối mạng có vấn đề khi gọi video:
5 Tự động thoát khỏi cuộc gọi video
6 Hệ thống sẽ thông báo cho tất cả người dùng đã có người bị mất mạng
Điều kiện trước Điện thoại phải có kết nối mạng
Đã đăng nhập vào hệ thống
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
3.10 Đặc tả Usecase “Call audio”
Mô tả Gọi bình thường với người dùng có trong đoạn chat
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Vào phòng chat
3 Bấm vào nút Call
4 Hệ thống sẽ kết nối mọi người
Trang 28trong video call lại với nhau
Luồng thay thế
Kết nối mạng có vấn đề khi gọi video:
5 Tự động thoát khỏi cuộc gọi
6 Hệ thống sẽ thông báo cho tất cả người dùng đã có người bị mất mạng
Điều kiện trước Điện thoại phải có kết nối mạng
Đã đăng nhập vào hệ thống
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
3.11 Đặc tả Usecase “Search Text”
Mô tả Tìm kiếm đoạn văn bản trong đoạn chat
Luồng chính
1 Người đăng nhập vào ứng dụng
Trang 297 Người dùng bấm nút Lên/xuống để tìm kiếm đoạn tin nhắn mong muốn
Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
Đã đăng nhập vào hệ thống
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
3.12 Đặc tả Usecase “Search Image”
Mô tả Tìm kiếm hình ảnh trong đoạn chat
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Vào phòng chat
3 Bấm vào nút Tìm kiếm theo hình ảnh
4 Hệ thống hiển thị tất cả hình ảnh
đã được gửi trong đoạn chat
Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
Đã đăng nhập vào hệ thống
Trang 303.13 Đặc tả Usecase “Search File”
Mô tả Tìm kiếm File trong đoạn chat
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Vào phòng chat
3 Bấm vào nút Tìm kiếm theo File
4 Hệ thống hiển thị tất cả File đã được gửi trong đoạn chat
Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
Đã đăng nhập vào hệ thống
Điều kiện sau Thành công:
CSDL không thay đổi
Thất bại:
CSDL không thay đổi
3.14 Đặc tả Usecase “Create Group”
Mô tả Tạo 1 group chat mới cho tất cả thành viên mà mình mong muốn
Luồng chính
1 Người đăng nhập vào ứng dụng
Trang 312 Bấm vào nút Tạo Group chat
3 Chọn Thành viên mà mình muốn thêm vào
4 Chọn Tên, Hình đại diện cho Group
5 Bấm nút Tạo
6 Hệ thống sẽ tạo Group mới tương ứng thông tin đã có
Luồng thay thế Không có
Điều kiện trước Điện thoại phải có kết nối mạng
CSDL không thay đổi
3.15 Đặc tả Usecase “Change Avatar”
Mô tả Đổi hình đại diện của Group chat
Luồng chính
1 Người đăng nhập vào ứng dụng
2 Mở Group chat mà mình muốn thay đổi thông tin