GIỚI THIỆU VỀ CÔNG NGHỆ SỬ DỤNG
Tổng quan về ReactJS
ReactJS (thường gọi là React) là một thư viện JavaScript phát triển bởiFacebook Nó được sử dụng để xây dựng giao diện người dùng (UI) cho các ứng dụng web đơn trang (Single Page Applications) và ứng dụng di động React được thiết kế để tạo ra các UI tương tác và linh hoạt, dựa trên khái niệm của các thành phần (components) Mỗi thành phần trong React đại diện cho một phần nhỏ của giao diện người dùng và có thể được xây dựng, kết hợp và tái sử dụng một cách dễ dàng.
● Hiệu suất cao: React sử dụng Virtual DOM để cập nhật hiệu quả và chỉ cập nhật những phần thay đổi thực sự trong giao diện người dùng, giúp tối ưu hiệu suất ứng dụng.
● Quản lý trạng thái dễ dàng: React sử dụng mô hình unidirectional data flow (dòng dữ liệu một chiều) và hỗ trợ quản lý trạng thái (state) một cách dễ dàng thông qua các thành phần (components) Điều này giúp duy trì mã dễ đọc, dễ hiểu và dễ bảo trì.
● Tái sử dụng thành phần: React khuyến khích việc tái sử dụng thành phần, cho phép bạn xây dựng giao diện theo cách modulized và dễ dàng mở rộng ứng dụng.
● Thân thiện với SEO: SEO là một phần không thể thiếu để đưa thông tin website lên top đầu tìm kiếm của Google Bản chất Reactjs là một thư viện JavaScript, Google Search Engine hiện nay đã crawl và index được code JavaScript.
● Debug dễ dàng: Facebook đã phát hành 1 Chrome extension dùng trong việc debug trong quá trình phát triển ứng dụng Điều đó giúp tăng tốc quá trình release sản phẩm cũng như quá trình coding.
● Reactjs chỉ phục vụ cho tầng View React chỉ là View Library nó không phải là một MVC framework như những framework khác Đây chỉ là thư viện của Facebook giúp render ra phần view Vì thế React sẽ không có phần Model và Controller, mà phải kết hợp với các thư viện khác React cũng sẽ không có 2-way binding hay là Ajax.
● Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại.
● React khá nặng nếu so với các framework khác React có kích thước tương tương với Angular (Khoảng 35kb so với 39kb của Angular) Trong khi đó Angular là một framework hoàn chỉnh.
Tổng quan về NodeJS
Node.js là một môi trường chạy mã JavaScript ở phía máy chủ (server-side) được xây dựng dựa trên nền tảng Chrome V8 JavaScript Engine Điều này cho phép bạn chạy mã JavaScript trên máy chủ, thay vì chỉ chạy trong trình duyệt Node.js cho phép phát triển ứng dụng web đa nền tảng với khả năng xử lý đồng thời (asynchronous) cao.
● Hiệu suất cao: Node.js sử dụng mô hình không đồng bộ (non-blocking) và sự kiện xảy ra dựa trên callback, cho phép xử lý đồng thời nhiều yêu cầu mà không chờ đợi kết quả trước khi tiếp tục Điều này giúp Node.js có hiệu suất cao và đáp ứng tốt trong khi xử lý nhiều yêu cầu đồng thời.
● Xử lý đồng thời (Concurrency): Nodejs hỗ trợ xử lý đồng thời thông qua mô hình sự kiện và non-blocking I/O Điều này cho phép xử lý nhiều yêu cầu cùng một lúc mà không làm chậm hoặc chặn luồng chính của ứng dụng.
● Quản lý tốt các yêu cầu thời gian thực: Với khả năng xử lý đồng thời và hệ sinh thái thư viện hỗ trợ, Nodejs thích hợp cho việc xây dựng các ứng dụng thời gian thực như ứng dụng chat, ứng dụng trò chơi trực tuyến, ứng dụng phản hồi nhanh, v.v.
● Sử dụng cùng ngôn ngữ JavaScript: Node.js sử dụng JavaScript, một ngôn ngữ phổ biến và được sử dụng rộng rãi, giúp việc chuyển đổi giữa phía máy chủ và phía máy khách (client) dễ dàng hơn Lập trình viên có thể sử dụng cùng một ngôn ngữ để phát triển cả phía máy chủ và phía máy khách của ứng dụng.
● Cộng đồng phát triển đông đảo: Node.js có một cộng đồng phát triển rộng lớn, đóng góp vào việc phát triển thư viện, công cụ và tài liệu phong phú Cộng đồng này cung cấp sự hỗ trợ và khả năng mở rộng của Node.js.
● Đơn luồng (Single-threaded): Mặc dù Node.js có khả năng xử lý đồng thời, nhưng nó vẫn chạy trên một luồng duy nhất Điều này có nghĩa là nếu có một phần tử xử lý gây chậm hoặc chặn luồng chính, nó có thể ảnh hưởng đến tất cả các yêu cầu khác Tuy nhiên, có thể sử dụng các cơ chế như clustering hoặc worker threads để giải quyết vấn đề này.
● Không phù hợp cho các tác vụ CPU-intensive: Do Node.js chạy trên mô hình single-threaded, nó không phù hợp cho các tác vụ đòi hỏi nhiều xử lý CPU (CPU-intensive) Nếu ứng dụng của bạn chủ yếu là xử lý CPU- intensive, thì một ngôn ngữ khác như Python hoặc Java có thể là lựa chọn tốt hơn.
● Quản lý bất đồng bộ (Asynchronous programming): Việc sử dụng callback hoặc Promise để quản lý bất đồng bộ có thể làm cho mã trở nên phức tạp hơn và khó đọc Tuy nhiên, sử dụng các thư viện hỗ trợ như Async hoặc Promise-based libraries như Bluebird có thể giúp giải quyết vấn đề này.
● Chưa ổn định trong việc quản lý bộ nhớ: Node.js không được xây dựng để quản lý bộ nhớ dễ dàng như ngôn ngữ Java Việc quản lý bộ nhớ trongNode.js đòi hỏi sự cẩn thận và kiểm soát từ phía lập trình viên để tránh các vấn đề như memory leaks hay Out of Memory errors.
Tổng quan về ExpressJS
Express.js là một framework phát triển ứng dụng web phía máy chủ (server-side) được xây dựng dựa trên Node.js Nó cung cấp các công cụ và tính năng giúp xây dựng ứng dụng web nhanh chóng và dễ dàng.
Express.js giúp quản lý các yêu cầu HTTP, xử lý các định tuyến (routing), tạo và quản lý các API, và thực hiện các tác vụ xử lý trên phía máy chủ Nó cung cấp một cấu trúc linh hoạt để phát triển ứng dụng web theo mô hình MVC (Model-View-Controller) hoặc các mô hình tương tự.
● Đơn giản và dễ học: Expressjs có một cú pháp đơn giản và dễ hiểu, giúp lập trình viên nhanh chóng làm quen và phát triển ứng dụng web một cách dễ dàng Nó không có quá nhiều quy tắc và cấu trúc phức tạp, cho phép bạn linh hoạt trong việc xây dựng ứng dụng theo ý muốn.
● Linh hoạt và mở rộng: Express.js cho phép bạn tự do xây dựng ứng dụng theo cách bạn muốn, không hạn chế bởi các quy tắc hay kiểu kiến trúc cụ thể Bạn có thể sử dụng các thư viện, mô-đun bên thứ ba, và công cụ phù hợp với nhu cầu cụ thể của dự án.
● Middleware mạnh mẽ: Expressjs cung cấp hệ thống middleware mạnh mẽ, cho phép bạn xử lý các yêu cầu HTTP, thực hiện xác thực, xử lý lỗi, ghi log, và nhiều tác vụ khác Điều này giúp tăng tính tái sử dụng và quản lý chung của mã.
● Hỗ trợ đa nền tảng: Express.js có khả năng chạy trên nhiều nền tảng, bao gồm Windows, macOS, và Linux Điều này cho phép bạn triển khai ứng dụng trên nhiều môi trường và máy chủ.
● Cộng đồng phát triển đông đảo: Expressjs có một cộng đồng phát triển rộng lớn, với nhiều tài liệu, mô-đun, và ví dụ code có sẵn Bạn có thể tìm thấy giải pháp cho các vấn đề phát triển thông qua cộng đồng và nhận sự hỗ trợ từ cộng đồng này.
● Thiếu tính năng mặc định: Expressjs là một framework nhẹ, nên không cung cấp nhiều tính năng mặc định như các framework lớn hơn Điều này có thể đòi hỏi bạn phải triển khai các tính năng phụ trợ bằng cách sử dụng các thư viện và mô-đun bên thứ ba.
● Quản lý dự án lớn: Khi xây dựng các dự án lớn và phức tạp, việc quản lý mã nguồn và cấu trúc dự án có thể trở nên phức tạp hơn Express.js không cung cấp một kiến trúc cụ thể hoặc quy tắc nghiêm ngặt, điều này yêu cầu bạn tổ chức và quản lý mã nguồn của mình một cách chặt chẽ.
● Yêu cầu hiểu biết về Nodejs: Expressjs là một framework xây dựng trên Node.js, vì vậy để sử dụng hiệu quả Expressjs, bạn cần có kiến thức và hiểu biết cơ bản về Node.js.
Tổng quan về MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL database) mã nguồn mở Nó được thiết kế để lưu trữ và quản lý dữ liệu phi cấu trúc (unstructured data) và dữ liệu có cấu trúc linh hoạt (flexible structured data) trong các tài liệu JSON-like được gọi là BSON (Binary JSON).
MongoDB khác biệt với hệ quản trị cơ sở dữ liệu SQL truyền thống bằng cách sử dụng mô hình lưu trữ dựa trên tài liệu (document-based storage) thay vì bảng và hàng như trong SQL Mỗi tài liệu trong MongoDB là một bản ghi độc lập có thể chứa các trường và giá trị khác nhau, tạo ra sự linh hoạt cao trong việc lưu trữ dữ liệu.
● Linh hoạt và mở rộng: MongoDB cho phép lưu trữ dữ liệu phi cấu trúc và có cấu trúc linh hoạt, giúp bạn dễ dàng thay đổi cấu trúc dữ liệu theo nhu cầu Nó cũng hỗ trợ khả năng mở rộng dễ dàng bằng cách thêm các máy chủ và phân chia dữ liệu tự động.
● Tính năng truy vấn mạnh mẽ: MongoDB cung cấp một ngôn ngữ truy vấn linh hoạt và mạnh mẽ, cho phép bạn thực hiện truy vấn phức tạp và tìm kiếm dữ liệu theo nhiều tiêu chí.
● Hiệu suất cao: MongoDB được thiết kế để có hiệu suất cao với khả năng xử lý tải lưu lượng dữ liệu lớn và tốc độ truy vấn nhanh.
● Tích hợp tốt với các ngôn ngữ lập trình: MongoDB cung cấp các trình điều khiển và API cho nhiều ngôn ngữ lập trình phổ biến, giúp tương tác và làm việc với cơ sở dữ liệu dễ dàng trong môi trường lập trình yêu thích của bạn.
● Hỗ trợ cao cho replica set và sharding: MongoDB hỗ trợ replica set để cung cấp tính sẵn sàng cao và khả năng chịu lỗi Nó cũng hỗ trợ sharding để phân tán dữ liệu trên nhiều máy chủ, giúp tăng khả năng mở rộng.
● Không hỗ trợ giao diện SQL: MongoDB không hỗ trợ ngôn ngữ truy vấn SQL, điều này có thể gây khó khăn cho những người đã quen với SQL khi chuyển sang sử dụng MongoDB.
● Tốn nhiều dung lượng đĩa: Vì MongoDB lưu trữ dữ liệu theo cấu trúc tài liệu, có thể tốn nhiều dung lượng đĩa hơn so với cơ sở dữ liệu SQL truyền thống.
● Khả năng quản lý tài nguyên: Với khả năng mở rộng dễ dàng, việc quản lý và vận hành hệ thống MongoDB có thể phức tạp hơn so với các hệ quản trị cơ sở dữ liệu SQL truyền thống.
● Cần hiểu biết về quản lý dữ liệu: Với tính linh hoạt và phi cấu trúc củaMongoDB, việc thiết kế và quản lý dữ liệu đòi hỏi hiểu biết và kỹ năng đặc biệt để tối ưu hóa hiệu suất và khả năng mở rộng của hệ thống.
Tổng quan về Mongoose
Mongoose là một thư viện (library) Node.js được sử dụng để tương tác với cơ sở dữ liệu MongoDB Nó cung cấp một giao diện đơn giản và dễ sử dụng để thao tác với MongoDB bằng cách định nghĩa các mô hình dữ liệu và thực hiện các truy vấn.
● Đơn giản và dễ sử dụng: Mongoose cung cấp một giao diện đơn giản và dễ sử dụng để tương tác với MongoDB Nó giúp giảm bớt công việc lặp lại và cung cấp các phương thức tiện ích để thao tác dữ liệu trong MongoDB.
● Định nghĩa mô hình dữ liệu: Mongoose cho phép bạn định nghĩa mô hình dữ liệu để xác định cấu trúc và quan hệ giữa các tài liệu Điều này giúp kiểm soát dữ liệu và đảm bảo tính nhất quán trong cơ sở dữ liệu.
● Validation (Xác thực): Mongoose hỗ trợ xác thực dữ liệu bằng cách cho phép bạn định nghĩa các quy tắc xác thực trên các trường trong mô hình Bạn có thể kiểm tra tính hợp lệ của dữ liệu trước khi lưu trữ vào cơ sở dữ liệu.
● Middleware: Mongoose cung cấp middleware cho phép bạn thực hiện các hành động trước và sau khi thực hiện các phương thức trên mô hình. Điều này cho phép bạn thực hiện các tác vụ như xử lý trước khi lưu dữ liệu, truy cập dữ liệu và nhiều hơn nữa.
● Tương tác dữ liệu: Mongoose cung cấp các phương thức để tương tác và truy vấn dữ liệu từ MongoDB Bạn có thể thực hiện các hoạt động CRUD (Create, Read, Update, Delete) một cách dễ dàng và tổ chức.
● Tăng độ phức tạp: Mongoose là một thư viện phụ thuộc và nâng cao trên MongoDB, do đó có thể làm tăng độ phức tạp của mã nguồn và hiệu suất một chút so với việc sử dụng MongoDB trực tiếp.
● Thêm một lớp trừu tượng: Mongoose thêm một lớp trừu tượng giữa ứng dụng và MongoDB, có thể tạo ra một số chi phí hiệu năng nhỏ và làm tăng thời gian thực hiện truy vấn.
● Tối ưu hóa hiệu suất: Đôi khi, khi làm việc với dữ liệu lớn hoặc truy vấn phức tạp, việc tối ưu hóa hiệu suất của Mongoose có thể đòi hỏi kiến thức và hiểu biết về cách hoạt động của MongoDB và Mongoose.
Tổng quan về JSON Web Token
JWT (JSON Web Token) là một tiêu chuẩn mở (open standard) được sử dụng để truyền thông tin xác thực an toàn giữa các bên qua mạng Nó được sử dụng phổ biến trong việc xác thực và ủy quyền trong ứng dụng web và di động.
JWT bao gồm ba phần chính: header, payload và signature.
● Header: Chứa các thông tin về loại token (thường là JWT) và thuật toán mã hóa được sử dụng để tạo chữ ký (signature) cho token.
● Payload: Chứa các thông tin cần thiết, ví dụ như thông tin người dùng(user ID, tên người dùng, quyền truy cập) và các thông tin tùy chọn khác.Payload không được mã hóa, nhưng được mã hóa base64 để đảm bảo tính toàn vẹn.
● Signature: Là phần chữ ký được tạo bằng cách ký (sign) header và payload bằng một khóa bí mật (secret key) duy nhất mà chỉ server biết Chữ ký được sử dụng để kiểm tra tính xác thực và tính toàn vẹn của token.
Khi một người dùng đăng nhập thành công vào ứng dụng, server sẽ tạo một JWT và trả về cho người dùng Người dùng sẽ gửi JWT trong mỗi yêu cầu tiếp theo để chứng minh rằng họ đã xác thực và được ủy quyền.
● Dễ sử dụng và triển khai: JWT là một tiêu chuẩn mở và dễ dàng triển khai trong nhiều ngôn ngữ lập trình và framework Nó cũng có hỗ trợ tốt trong các thư viện và công cụ phổ biến.
● Xác thực và ủy quyền: JWT cho phép xác thực người dùng và ủy quyền truy cập vào các tài nguyên Khi một người dùng đăng nhập thành công, họ sẽ nhận được JWT và gửi nó trong các yêu cầu tiếp theo để chứng minh xác thực và được ủy quyền.
● Tính di động và phi kết nối: JWT có thể được truyền qua mạng và không cần lưu trữ trạng thái phiên (session stateless) Điều này giúp xây dựng ứng dụng có khả năng mở rộng và không phụ thuộc vào lưu trữ trạng thái ở phía server.
● Tính toàn vẹn và bảo mật: JWT sử dụng chữ ký kỹ thuật số để kiểm tra tính toàn vẹn của dữ liệu Chỉ server biết khóa bí mật để tạo và xác thực JWT, đảm bảo rằng JWT không bị sửa đổi trên đường truyền.
● Phù hợp với các ứng dụng phân tán: JWT cho phép xác thực và ủy quyền giữa các hệ thống phân tán, cho phép tích hợp và chia sẻ xác thực dễ dàng.
● Dung lượng dữ liệu: JWT chứa thông tin xác thực trong payload, điều này có thể làm tăng dung lượng dữ liệu truyền qua mạng Điều này có thể ảnh hưởng đến hiệu suất truyền dữ liệu, đặc biệt là trong các môi trường mạng chậm hoặc có giới hạn băng thông.
● Không thể thu hồi (revoke): JWT không cung cấp cơ chế thu hồi token nếu người dùng đăng xuất hoặc token bị đánh cắp Một khi JWT được tạo ra và gửi cho người dùng, nó sẽ tồn tại và có thể được sử dụng cho đến khi hết hạn.
● Thay đổi thông tin trong token: Khi thông tin trong JWT được ký và gửi cho người dùng, nó không thể thay đổi trong quá trình token còn hiệu lực Điều này có nghĩa là nếu thông tin của người dùng thay đổi (ví dụ:quyền truy cập bị thay đổi), người dùng phải đăng nhập lại để cập nhật thông tin mới.
Tổng quan về Socket.IO
Socket.IO là một thư viện JavaScript mã nguồn mở cho phép thiết lập và quản lý kết nối thời gian thực (real-time connections) giữa máy chủ (server) và các máy khách (client) thông qua giao thức WebSocket Nó cung cấp một cách dễ dàng để gửi và nhận dữ liệu trong thời gian thực giữa các thành phần của ứng dụng web.
● Thời gian thực: Socket.IO cho phép gửi và nhận dữ liệu trong thời gian thực giữa máy chủ và các máy khách Điều này làm cho nó trở thành một công cụ mạnh mẽ cho việc xây dựng các ứng dụng thời gian thực như trò chơi đa người chơi, trò chuyện và các ứng dụng cần cập nhật dữ liệu ngay lập tức.
● Hỗ trợ nền tảng đa dạng: Socket.IO làm việc trên nhiều trình duyệt web và nền tảng, bao gồm cả máy tính và thiết bị di động Điều này cho phép phát triển ứng dụng thời gian thực trên các nền tảng khác nhau một cách dễ dàng.
● Xử lý tự động kết nối: Socket.IO tự động xử lý việc thiết lập kết nối và duy trì kết nối WebSocket giữa máy chủ và máy khách Nếu WebSocket không được hỗ trợ, Socket.IO chuyển sang các phương thức truyền thông khác như polling (long-polling) để đảm bảo kết nối liên tục.
● Phòng và phân nhóm: Socket.IO cho phép phân nhóm các kết nối vào các phòng và namespaces Điều này cho phép gửi và nhận dữ liệu giữa các nhóm cụ thể và giữ cho các tín hiệu riêng tư.
● Tính linh hoạt: Socket.IO cho phép tuỳ chỉnh và mở rộng theo nhu cầu của ứng dụng Bạn có thể tùy chỉnh cấu hình và xác thực các kết nối, sử dụng các middleware và sự kiện tùy chỉnh.
● Dung lượng dữ liệu: Vì Socket.IO là một lớp trừu tượng trên giao thức WebSocket, nó tạo ra một số lượng dữ liệu thừa trong các gói tin gửi đi. Điều này có thể làm tăng dung lượng dữ liệu truyền qua mạng.
● Khả năng mở rộng: Khi có số lượng lớn kết nối và dữ liệu truyền gửi trong một ứng dụng Socket.IO, có thể gặp khó khăn trong việc mở rộng và quản lý tài nguyên của máy chủ.
● Cập nhật phiên bản: Socket.IO có thể có các phiên bản mới và thay đổi cấu trúc API theo thời gian Điều này có thể yêu cầu việc cập nhật và xử lý lại mã nguồn hiện có trong các dự án sử dụng Socket.IO.
Tổng quan về WebRTC
WebRTC (Web Real-Time Communication) là một dự án mã nguồn mở được phát triển để cung cấp khả năng truyền trực tuyến âm thanh, video và dữ liệu real-time giữa các trình duyệt web mà không cần sử dụng các plugin hoặc ứng dụng bên ngoài Được giới thiệu vào năm 2011, WebRTC đã trở thành một tiêu chuẩn quan trọng trong việc xây dựng các ứng dụng web tương tác và trải nghiệm người dùng real-time.
● Tiêu Chuẩn Hóa: WebRTC là một tiêu chuẩn nguyên tắc, giúp đảm bảo tính tương thích và sẵn sàng tích hợp với nhiều trình duyệt khác nhau.
● P2P (Peer-to-Peer): Hỗ trợ kết nối trực tiếp giữa các máy tính, giảm độ trễ và tăng hiệu suất.
● Dễ Tích Hợp: Cung cấp API linh hoạt, giúp nhà phát triển dễ dàng tích hợp chức năng real-time vào ứng dụng web của họ.
● Bảo Mật: Hỗ trợ mã hóa end-to-end để đảm bảo quyền riêng tư và bảo mật thông tin truyền tải.
● Hạn Chế Trong Môi Trường Mạng Kém: Trong môi trường mạng không ổn định, WebRTC có thể gặp khó khăn và gây giảm chất lượng truyền tải.
● Khả Năng Tương Thích: Mặc dù đã được hỗ trợ rộng rãi, nhưng vẫn có thể xuất hiện vấn đề tương thích trình duyệt trong một số trường hợp.
● Khả Năng Tiêu Tốn Năng Lượng: Truyền tải real-time có thể tiêu tốn năng lượng cao, đặc biệt là trên thiết bị di động.
● Khả Năng Phát Hiện Mạng: Trong môi trường mạng phức tạp, có thể xảy ra khó khăn trong việc xác định đường truyền tối ưu.
Chương 3: PHÂN TÍCH THIẾT KẾ ỨNG DỤNG
Hình 3.12 Kiến trúc ứng dụng
Hệ thống được xây dựng dựa trên kiến trúc Tier – Layer Với 3 Tier chính trong kiến trúc hệ thống là Tier Front-end và Tier dành cho Back-end và Database 2-tier
Front-end và Back-end (còn được gọi là mô hình client-server) là một kiểu mô hình kiến trúc phần mềm, trong đó ứng dụng được chia thành hai thành phần chính: phần frontend (client) và phần backend (server).
Tier Frontend là lớp giao diện người dùng, nơi mà người dùng tương tác với hệ thống.
Lớp này sử dụng framework reactjs để hiển thị giao diện người dùng và thu thập thông tin từ người dùng Tier Frontend làm nhiệm vụ giao tiếp với Tier Backend để gửi các yêu cầu từ người dùng và hiển thị kết quả trả về từ Backend.
Tier Backend là lớp xử lý logic và chứa các chức năng và dịch vụ của hệ thống.
Lớp này được xây dựng bằng ngôn ngữ lập trình phía máy chủ Node.js và sử dụng framework ExpressJS Tier Backend nhận các yêu cầu từ Tier Frontend, xử lý logic ứng dụng, truy xuất cơ sở dữ liệu, xác thực và ủy quyền người dùng, và sau đó trả về dữ liệu hoặc kết quả tương ứng cho Tier Frontend.
Database Tier là lớp lưu trữ dữ liệu của hệ thống Lớp này chứa hệ quản trị cơ sở dữ liệu MongoDB và quản lý dữ liệu được lưu trữ Tier Backend sẽ tương tác với Database Tier để lưu trữ và truy xuất dữ liệu khi cần thiết.
Hình 3.13 Use-case tổng quát
3.2.2 Bảng danh sách Use-case
Bảng 3.1 Danh sách User-case
STT Tên Use-case Ý nghĩa
1 Đăng nhập Người dùng đăng nhập vào hệ thống bằng tài khoản đã đăng ký.
2 Đăng ký Người dùng đăng ký để đăng nhập vào hệ thống.
3 Quản lý hồ sơ cá nhân.
Người dùng có thể xem, cập nhật thông tin cá nhân như tên, ảnh đại diện, ngày sinh, giới tính, sở thích, học vấn… và có thể xem lại các bài viết đã đăng, danh sách bạn bè, các ảnh, video đã đăng.
4 Quản lý bài đăng Người dùng có thể đăng bài để chia sẻ nội dung
(bao gồm viết bài, đăng ảnh, video) trên mạng xã hội, kiểm soát quyền riêng tư của bài đăng, tương tác với bài đăng, gồm các usecase phụ là Tạo bài viết, Chỉnh sửa bài viết, Xóa bài viết.
5 Quản lý bình luận Người dùng có thể để lại ý kiến của mình lên các bài đăng bằng cách bình luận lên các bài đăng mà người đó có quyền truy cập, gồm các usecase phụ là Tạo bình luận, Chỉnh sửa bình luận, Xóa bình luận.
6 Quản lý cảm xúc Người dùng có thể để lại ý kiến của mình lên các bài đăng bằng cách bình luận lên các bài đăng mà người đó có quyền truy cập, gồm các usecase phụ là Thả cảm xúc, Chỉnh sửa cảm xúc, Xóa cảm xúc.
7 Quản lý bạn bè Người dùng có thể gửi lời mời kết bạn, chấp nhận hoặc hủy lời mời của người khác, hủy kết bạn và xem thông tin của người khác.
8 Trò chuyện Người dùng có thể nhắn tin, gọi điện với bạn bè.
9 Thông báo Người dùng có thể nhận được các thông báo liên quan đến họ, bạn bè của họ khi có gì mới như bình luận, đổi ảnh đại diện…
10 Cài đặt Người dùng có thể vào cài đặt một số vấn đề liên quan giao diện như thay đổi ngôn ngữ, cấu trúc ảnh trong bài đăng.
11 Quản lý nhóm trò chuyện.
Người dùng có thể tạo nhóm trò chuyện, thêm thành viên, xóa thành viên ra khỏi nhóm, mời thêm bạn bè vào nhóm và cập nhật thông tin nhóm.
Bảng 3.2 Đ c t use-case đăng nh pặ ả ậ
Tên use-case Đăng nhập.
Mô tả Cho phép người dùng đăng nhập vào hệ thống. Điều kiện kích hoạt Người dùng bấm vào nút đăng nhập.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Hậu điều kiện Nếu thành công, hệ thống chuyển người dùng qua màn hình newsfeed.
Nếu không thành công, trạng thái hệ thống không thay đổi và thông báo không thành công.
Dòng sự kiện chính 1 Hệ thống hiển thị trang đăng đăng nhập.
2 Người dùng nhập thông tin.
3 Hệ thống kiểm tra tính hợp lệ của thông tin.
4 Hệ thống kiểm tra thông tin trên cơ sở dữ liệu.
5 Hệ thống chuyển người dùng vào trang đăng nhập.
Dòng sự kiện phụ 3a Hệ thống thông báo định dạng sai kiểu dữ liệu.
4a Hệ thống thông báo sai tài khoản hoặc mật khẩu.
Bảng 3.3 Đ c t use-case đăng kýặ ả
Tên use-case Đăng ký
Mô tả Cho phép người dùng đăng ký tài khoản mới Điều kiện kích hoạt Người dùng bấm vào nút đăng ký
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Hậu điều kiện Nếu thành công, hệ thống chuyển người dùng qua màn hình đăng nhập và tạo được tài khoản cho người dùng vào cơ sở dữ liệu.
Nếu không thành công, trạng thái hệ thống không thay đổi và thông báo không thành công.
Dòng sự kiện chính 1 Hệ thống hiển thị trang đăng ký tài khoản.
2 Người dùng nhập thông tin.
3 Hệ thống kiểm tra tính hợp lệ của thông tin.
4 Hệ thống kiểm tra thông tin trên cơ sở dữ liệu.
5 Hệ thống lưu thông tin vào cơ sở dữ liệu.
6 Hệ thống chuyển người dùng vào trang đăng nhập.
Dòng sự kiện phụ 3a Hệ thống thông báo định dạng sai kiểu dữ liệu.
4a Hệ thống thông báo tài khoản đã tồn tại.
3.2.3.3 Quản lý hồ sơ cá nhân
3.2.3.3.1 Cập nhật ảnh đại diện, ảnh bìa
Bảng 3.4 Đ c t use-case c p nh t nh đ i di nặ ả ậ ậ ả ạ ệ
Tên use-case Cập nhật ảnh đại diện, ảnh bìa.
Mô tả Cho phép người dùng thay đổi ảnh đại diện hoặc ảnh bìa. Điều kiện kích hoạt Người dùng bấm vào nút có biểu tượng máy ảnh ở ảnh đại diện hoặc ảnh bìa.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Hệ thống cập nhật ảnh đại diện hoặc ảnh bìa của người dùng.
Dòng sự kiện chính 1 Người dùng vào trang cá nhân của bản thân.
2 Hệ thống hiển thị trang cá nhân.
3 Người dùng nhấn vào nút có biểu tượng máy ảnh ở ảnh đại diện hoặc ảnh bìa.
4 Người dùng chọn ảnh từ máy tính.
5 Người dùng chọn đăng bài cho sự kiện này không.
5 Hệ thống cập nhật ảnh đại diện hoặc ảnh bìa của người dùng trên cơ sở dữ liệu và tạo bài đăng nếu người dùng muốn.
Dòng sự kiện phụ 4a Người dùng hủy việc cập nhật ảnh đại diện, ảnh bìa.
3.2.3.3.2 Xem thông tin cơ bản
Bảng 3.5 Đ c t use-case xem thông tin c b nặ ả ơ ả
Tên use-case Xem thông tin cơ bản.
Mô tả Cho phép người dùng xem thông tin cơ bản. Điều kiện kích hoạt Người dùng bấm tab “About” ở màn hình trang cá nhân.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Người dùng xem được thông tin cơ bản.
Dòng sự kiện chính 1 Người dùng vào tab “About” ở màn hình trang cá nhân của bản thân.
2 Hệ thống hiển thị màn hình thông tin cơ bản của cá nhân.
3.2.3.3.3 Cập nhật thông tin cơ bản
Bảng 3.6 Đ c t use-case c p nh t thông tin c b nặ ả ậ ậ ơ ả
Tên use-case Cập nhật thông tin cơ bản.
Mô tả Cho phép người dùng thay đổi thông tin cơ bản. Điều kiện kích hoạt Người dùng bấm vào nút có biểu tượng bút chì tab
“About” ở màn hình trang cá nhân.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Hệ thống cập nhật thông tin cơ bản của người dùng.
Dòng sự kiện chính 1 Người dùng vào tab “About” ở màn hình trang cá nhân của bản thân.
2 Hệ thống hiển thị màn hình thông tin cơ bản của cá nhân.
3 Người dùng nhấn vào nút có biểu tượng bút chì ở thành phần “Personal Info” hoặc “Hobbies and Interests” hoặc “Education and Employment” để sửa thông tin tương ứng.
4 Hệ thống hiển thị form cho phép sửa thông tin.
5 Người dùng nhập thông tin cần sửa vào trường tương ứng và bấm nút “Update”.
5 Hệ thống kiểm tra tính hợp lệ của dữ liệu.
6 Hệ thống cập nhật dữ liệu thành công.
Dòng sự kiện phụ 5a Hệ thống thông báo lỗi.
5b Người dùng hủy việc cập nhật thông tin cơ bản.
Bảng 3.7 Đ c t use-case đăng bàiặ ả
Tên use-case Đăng bài.
Mô tả Cho phép Người dùng có thể tạo và đăng bài viết mới trên hệ thống. Điều kiện kích hoạt Người dùng muốn tạo bài viết mới và đăng lên hệ thống.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Bài viết mới được tạo và xuất hiện trên hệ thống.
Dòng sự kiện chính 1 Người dùng vào màn hình newsfeed.
2 Hệ thống hiển thị giao diện tạo bài đăng mới.
3 Người dùng nhập nội dung, hình ảnh, chọn địa điểm, chọn bạn bè, quyền riêng tư vào biểu mẫu đăng bài và nhấn nút đăng bài.
4 Hệ thống thông báo thành công và lưu trữ bài đăng mới vào cơ sở dữ liệu.
Dòng sự kiện phụ 3a Người dùng hủy việc đăng bài.
Bảng 3.8 Đ c t use-case ch nh s a bài đăngặ ả ỉ ử
Tên use-case Chỉnh sửa bài đăng.
PHÂN TÍCH THIẾT KẾ ỨNG DỤNG
Phân tích thiết kế
Hình 3.13 Use-case tổng quát
3.2.2 Bảng danh sách Use-case
Bảng 3.1 Danh sách User-case
STT Tên Use-case Ý nghĩa
1 Đăng nhập Người dùng đăng nhập vào hệ thống bằng tài khoản đã đăng ký.
2 Đăng ký Người dùng đăng ký để đăng nhập vào hệ thống.
3 Quản lý hồ sơ cá nhân.
Người dùng có thể xem, cập nhật thông tin cá nhân như tên, ảnh đại diện, ngày sinh, giới tính, sở thích, học vấn… và có thể xem lại các bài viết đã đăng, danh sách bạn bè, các ảnh, video đã đăng.
4 Quản lý bài đăng Người dùng có thể đăng bài để chia sẻ nội dung
(bao gồm viết bài, đăng ảnh, video) trên mạng xã hội, kiểm soát quyền riêng tư của bài đăng, tương tác với bài đăng, gồm các usecase phụ là Tạo bài viết, Chỉnh sửa bài viết, Xóa bài viết.
5 Quản lý bình luận Người dùng có thể để lại ý kiến của mình lên các bài đăng bằng cách bình luận lên các bài đăng mà người đó có quyền truy cập, gồm các usecase phụ là Tạo bình luận, Chỉnh sửa bình luận, Xóa bình luận.
6 Quản lý cảm xúc Người dùng có thể để lại ý kiến của mình lên các bài đăng bằng cách bình luận lên các bài đăng mà người đó có quyền truy cập, gồm các usecase phụ là Thả cảm xúc, Chỉnh sửa cảm xúc, Xóa cảm xúc.
7 Quản lý bạn bè Người dùng có thể gửi lời mời kết bạn, chấp nhận hoặc hủy lời mời của người khác, hủy kết bạn và xem thông tin của người khác.
8 Trò chuyện Người dùng có thể nhắn tin, gọi điện với bạn bè.
9 Thông báo Người dùng có thể nhận được các thông báo liên quan đến họ, bạn bè của họ khi có gì mới như bình luận, đổi ảnh đại diện…
10 Cài đặt Người dùng có thể vào cài đặt một số vấn đề liên quan giao diện như thay đổi ngôn ngữ, cấu trúc ảnh trong bài đăng.
11 Quản lý nhóm trò chuyện.
Người dùng có thể tạo nhóm trò chuyện, thêm thành viên, xóa thành viên ra khỏi nhóm, mời thêm bạn bè vào nhóm và cập nhật thông tin nhóm.
Bảng 3.2 Đ c t use-case đăng nh pặ ả ậ
Tên use-case Đăng nhập.
Mô tả Cho phép người dùng đăng nhập vào hệ thống. Điều kiện kích hoạt Người dùng bấm vào nút đăng nhập.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Hậu điều kiện Nếu thành công, hệ thống chuyển người dùng qua màn hình newsfeed.
Nếu không thành công, trạng thái hệ thống không thay đổi và thông báo không thành công.
Dòng sự kiện chính 1 Hệ thống hiển thị trang đăng đăng nhập.
2 Người dùng nhập thông tin.
3 Hệ thống kiểm tra tính hợp lệ của thông tin.
4 Hệ thống kiểm tra thông tin trên cơ sở dữ liệu.
5 Hệ thống chuyển người dùng vào trang đăng nhập.
Dòng sự kiện phụ 3a Hệ thống thông báo định dạng sai kiểu dữ liệu.
4a Hệ thống thông báo sai tài khoản hoặc mật khẩu.
Bảng 3.3 Đ c t use-case đăng kýặ ả
Tên use-case Đăng ký
Mô tả Cho phép người dùng đăng ký tài khoản mới Điều kiện kích hoạt Người dùng bấm vào nút đăng ký
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Hậu điều kiện Nếu thành công, hệ thống chuyển người dùng qua màn hình đăng nhập và tạo được tài khoản cho người dùng vào cơ sở dữ liệu.
Nếu không thành công, trạng thái hệ thống không thay đổi và thông báo không thành công.
Dòng sự kiện chính 1 Hệ thống hiển thị trang đăng ký tài khoản.
2 Người dùng nhập thông tin.
3 Hệ thống kiểm tra tính hợp lệ của thông tin.
4 Hệ thống kiểm tra thông tin trên cơ sở dữ liệu.
5 Hệ thống lưu thông tin vào cơ sở dữ liệu.
6 Hệ thống chuyển người dùng vào trang đăng nhập.
Dòng sự kiện phụ 3a Hệ thống thông báo định dạng sai kiểu dữ liệu.
4a Hệ thống thông báo tài khoản đã tồn tại.
3.2.3.3 Quản lý hồ sơ cá nhân
3.2.3.3.1 Cập nhật ảnh đại diện, ảnh bìa
Bảng 3.4 Đ c t use-case c p nh t nh đ i di nặ ả ậ ậ ả ạ ệ
Tên use-case Cập nhật ảnh đại diện, ảnh bìa.
Mô tả Cho phép người dùng thay đổi ảnh đại diện hoặc ảnh bìa. Điều kiện kích hoạt Người dùng bấm vào nút có biểu tượng máy ảnh ở ảnh đại diện hoặc ảnh bìa.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Hệ thống cập nhật ảnh đại diện hoặc ảnh bìa của người dùng.
Dòng sự kiện chính 1 Người dùng vào trang cá nhân của bản thân.
2 Hệ thống hiển thị trang cá nhân.
3 Người dùng nhấn vào nút có biểu tượng máy ảnh ở ảnh đại diện hoặc ảnh bìa.
4 Người dùng chọn ảnh từ máy tính.
5 Người dùng chọn đăng bài cho sự kiện này không.
5 Hệ thống cập nhật ảnh đại diện hoặc ảnh bìa của người dùng trên cơ sở dữ liệu và tạo bài đăng nếu người dùng muốn.
Dòng sự kiện phụ 4a Người dùng hủy việc cập nhật ảnh đại diện, ảnh bìa.
3.2.3.3.2 Xem thông tin cơ bản
Bảng 3.5 Đ c t use-case xem thông tin c b nặ ả ơ ả
Tên use-case Xem thông tin cơ bản.
Mô tả Cho phép người dùng xem thông tin cơ bản. Điều kiện kích hoạt Người dùng bấm tab “About” ở màn hình trang cá nhân.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Người dùng xem được thông tin cơ bản.
Dòng sự kiện chính 1 Người dùng vào tab “About” ở màn hình trang cá nhân của bản thân.
2 Hệ thống hiển thị màn hình thông tin cơ bản của cá nhân.
3.2.3.3.3 Cập nhật thông tin cơ bản
Bảng 3.6 Đ c t use-case c p nh t thông tin c b nặ ả ậ ậ ơ ả
Tên use-case Cập nhật thông tin cơ bản.
Mô tả Cho phép người dùng thay đổi thông tin cơ bản. Điều kiện kích hoạt Người dùng bấm vào nút có biểu tượng bút chì tab
“About” ở màn hình trang cá nhân.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Hệ thống cập nhật thông tin cơ bản của người dùng.
Dòng sự kiện chính 1 Người dùng vào tab “About” ở màn hình trang cá nhân của bản thân.
2 Hệ thống hiển thị màn hình thông tin cơ bản của cá nhân.
3 Người dùng nhấn vào nút có biểu tượng bút chì ở thành phần “Personal Info” hoặc “Hobbies and Interests” hoặc “Education and Employment” để sửa thông tin tương ứng.
4 Hệ thống hiển thị form cho phép sửa thông tin.
5 Người dùng nhập thông tin cần sửa vào trường tương ứng và bấm nút “Update”.
5 Hệ thống kiểm tra tính hợp lệ của dữ liệu.
6 Hệ thống cập nhật dữ liệu thành công.
Dòng sự kiện phụ 5a Hệ thống thông báo lỗi.
5b Người dùng hủy việc cập nhật thông tin cơ bản.
Bảng 3.7 Đ c t use-case đăng bàiặ ả
Tên use-case Đăng bài.
Mô tả Cho phép Người dùng có thể tạo và đăng bài viết mới trên hệ thống. Điều kiện kích hoạt Người dùng muốn tạo bài viết mới và đăng lên hệ thống.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Bài viết mới được tạo và xuất hiện trên hệ thống.
Dòng sự kiện chính 1 Người dùng vào màn hình newsfeed.
2 Hệ thống hiển thị giao diện tạo bài đăng mới.
3 Người dùng nhập nội dung, hình ảnh, chọn địa điểm, chọn bạn bè, quyền riêng tư vào biểu mẫu đăng bài và nhấn nút đăng bài.
4 Hệ thống thông báo thành công và lưu trữ bài đăng mới vào cơ sở dữ liệu.
Dòng sự kiện phụ 3a Người dùng hủy việc đăng bài.
Bảng 3.8 Đ c t use-case ch nh s a bài đăngặ ả ỉ ử
Tên use-case Chỉnh sửa bài đăng.
Mô tả Cho phép Người dùng có thể chỉnh sửa nội dung bài viết. Điều kiện kích hoạt Người dùng muốn tạo chỉnh sửa bài viết đã đăng trước đó.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Bài đăng được chỉnh sửa thành công và thông tin mới được cập nhật trên hệ thống.
Dòng sự kiện chính 1 Người dùng chọn bài đăng muốn chỉnh sửa trên giao diện người dùng.
2 Hệ thống hiển thị giao diện chỉnh sửa bài đăng.
3 Người dùng thực hiện các thay đổi cần thiết trên nội dung, hình ảnh hoặc thông tin khác của bài đăng và nhấn nút lưu
4 Hệ thống cập nhật thông tin mới của bài đăng vào cơ sở dữ liệu và thông báo thành công.
Dòng sự kiện phụ 3a Người dùng hủy việc chỉnh sửa.
Bảng 3.9 Đ c t use-case xóa bài đăngặ ả
Tên use-case Xóa bài đăng.
Mô tả Cho phép Người dùng có thể xóa bài đăng không còn cần thiết. Điều kiện kích hoạt Người dùng muốn xóa bài đăng đã đăng trên hệ thống.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Bài đăng được xóa thành công và không còn hiển thị trên nền tảng.
Dòng sự kiện chính 1 Người dùng chọn nút xóa ở bài đăng muốn xóa trên giao diện người dùng.
2 Hệ thống hiển thị thông báo xác nhận việc xóa bài đăng.
3 Người dùng xác nhận việc xóa bài đăng.
4 Hệ thống xóa bài đăng khỏi cơ sở dữ liệu và thông báo thành công.
Dòng sự kiện phụ 3a Người dùng hủy việc xóa.
3.2.3.5 Quản lý bình luận
Bảng 3.10 Đ c t use-case bình lu nặ ả ậ
Tên use-case Bình luận.
Mô tả Cho phép Người dùng có thể tạo bình luận mới lên bài viết trên hệ thống. Điều kiện kích hoạt
Người dùng muốn tạo bình luận mới lên bài viết.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Người dùng thấy được bài viết.
Hậu điều kiện Bình luận mới được tạo và xuất hiện trên hệ thống.
1 Người dùng chọn nút “Bình luận” ở bài đăng muốn bình luận trên giao diện người dùng.
2 Hệ thống hiển thị giao diện bình luận cho bài đăng đó.
3 Người dùng nhập nội dung bình luận và nhấn nút
4 Hệ thống thông báo thành công, hiển thị bình luận mới lên bài đăng và lưu trữ bài đăng mới vào cơ sở dữ liệu.
Dòng sự kiện phụ 3a Người dùng hủy việc bình luận.
3.2.3.5.2 Chỉnh sửa bình luận
Bảng 3.11 Đ c t use-case ch nh s a bình lu nặ ả ỉ ử ậ
Tên use-case Chỉnh sửa bình luận.
Mô tả Cho phép Người dùng có thể chỉnh sửa nội dung bình luận. Điều kiện kích hoạt
Người dùng muốn chỉnh sửa bình luận trước đó.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Bình luận được chỉnh sửa thành công và thông tin mới được cập nhật trên hệ thống.
1 Người dùng chọn bình luận của bản thân muốn chỉnh sửa trên giao diện người dùng.
2 Hệ thống hiển thị giao diện chỉnh sửa bình luận.
3 Người dùng thực hiện các thay đổi cần thiết trên nội dung bài bình luận và nhấn nút lưu
4 Hệ thống cập nhật thông tin mới của bình luận vào cơ sở dữ liệu và thông báo thành công.
Dòng sự kiện phụ 3a Người dùng hủy việc chỉnh sửa.
Bảng 3.12 Đ c t use-case xóa bình lu nặ ả ậ
Tên use-case Xóa bình luận.
Mô tả Cho phép Người dùng có thể xóa bình luận của bản thân không còn cần thiết. Điều kiện kích hoạt
Người dùng muốn xóa bình luận đã đăng trên hệ thống.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Bình luận được xóa thành công và không còn hiển thị trên nền tảng.
1 Người dùng chọn nút xóa ở bình luận của bản thân muốn xóa trên giao diện người dùng.
2 Hệ thống hiển thị thông báo xác nhận việc xóa bình luận.
3 Người dùng xác nhận việc xóa bình luận.
4 Hệ thống xóa bình luận khỏi cơ sở dữ liệu và thông báo thành công.
Dòng sự kiện phụ 3a Người dùng hủy việc xóa.
Bảng 3.13 Đ c t use-case th c m xúcặ ả ả ả
Tên use-case Thả cảm xúc.
Mô tả Cho phép Người dùng có thể thả cảm xúc lên bài viết hoặc bình luận. Điều kiện kích hoạt
Người dùng muốn thả cảm xúc lên bài viết hoặc bình luận.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Người dùng thấy được bài viết hoặc bình luận.
Hậu điều kiện Cảm xúc mới lên bài viết hoặc bình luận mới được tạo và xuất hiện trên hệ thống.
1 Người dùng chọn hover biểu tượng “Like” hoặc nhấn vào biểu tượng “Like” ở bài viết hoặc bình luận trên giao diện người dùng.
2 Hệ thống thông báo thành công, cập nhật lượt cảm xúc lên bài đăng hoặc bình luận và lưu trữ bài đăng mới vào cơ sở dữ liệu.
Dòng sự kiện phụ 1a Người dùng hủy việc thả xúc.
Bảng 3.14 Đ c t use-case ch nh s a c m xúcặ ả ỉ ử ả
Tên use-case Chỉnh sửa cảm xúc.
Mô tả Cho phép Người dùng có thể chỉnh sửa loại cảm xúc lên bài viết hoặc bình luận. Điều kiện kích hoạt Người dùng muốn chỉnh sửa loại cảm xúc lên bài viết hoặc bình luận trước đó.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Người dùng đã từng thả cảm xúc lên bài viết hoặc bình luận muốn chỉnh sửa trước đó.
Hậu điều kiện Cảm xúc được chỉnh sửa thành công và thông tin mới được cập nhật trên hệ thống.
Dòng sự kiện chính 1 Người dùng chọn hover biểu tượng “React” ở bài viết hoặc bình luận trên giao diện người dùng.
2 Hệ thống hiển thị danh sách tất cả các loại cảm xúc.
3 Người dùng nhấn vào một loại cảm xúc khác.
4 Hệ thống cập nhật thông tin mới của cảm xúc vào cơ sở dữ liệu và thông báo thành công.
Dòng sự kiện phụ 3a Người dùng hủy việc chỉnh sửa.
Tên use-case Hủy cảm xúc.
Mô tả Cho phép Người dùng có thể hủy cảm xúc của bản thân lên các bài viết hoặc bình luận trước đó không còn cần thiết. Điều kiện kích hoạt Người dùng muốn hủy cảm xúc đã thả trên hệ thống.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Cảm xúc được hủy thành công và không còn hiển thị trên nền tảng.
Dòng sự kiện chính 1 Người dùng nhấn lại vào nút thả cảm xúc đã thả trước đó.
2 Hệ thống xóa cảm xúc khỏi cơ sở dữ liệu và thông báo thành công.
Dòng sự kiện phụ 1a Người dùng hủy việc hủy.
3.2.3.7.1 Xem thông tin bạn bè
Bảng 3.16 Đ c t use-case xem thông tin b n bèặ ả ạ
Tên use-case Xem thông tin bạn bè.
Mô tả Người dùng có thể xem thông tin về ảnh đại diện, ảnh bìa, các bài đăng (ngoại trừ quyền riêng tư được đặt cho bài viết là “private”), thông tin cơ bản, các ảnh, video (ngoại trừ quyền riêng tư được đặt cho bài viết là “private”) đã đăng của bạn bè. Điều kiện kích hoạt Người dùng muốn xem trang các nhân của bạn bè bằng cách nhấn vào tài account item ở bất cứ chỗ nào.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Người dùng có mối quan hệ kết bạn với ít nhất một người.
Hậu điều kiện Người dùng xem được thông tin của bạn bè.
Dòng sự kiện chính 1 Người dùng nhấn vào account item ở bất cứ chỗ nào.
2 Hệ thống hiển thị màn hình thông tin tài khoản.
3 Người dùng có thể chuyển qua các tab như
“Timelines”, “About”, “Friends”, “Photos and videos” để xem thông tin mong muốn.
3.2.3.7.2 Quản lý lời mời kết bạn
Bảng 3.17 Đ c t use-case qu n lý l i m i k t b nặ ả ả ờ ờ ế ạ
Tên use-case Quản lý lời mời kết bạn.
Mô tả Người dùng có thể gửi lời mời kết bạn, xác nhận hoặc từ chối lời mời trên nền tảng. Điều kiện kích hoạt Người dùng muốn kết nối và quản lý danh sách lời mời kết bạn trên nền tảng.
Tiền điều kiện Thiết bị của người dùng phải kết nối Internet.
Người dùng đã đăng nhập vào hệ thống.
Người dùng có được lời mời kết bạn.
Hậu điều kiện Kết quả của việc gửi lời mời kết bạn, xác nhận kết bạn, từ chối lời mời được cập nhật trên nền tảng.
Dòng sự kiện chính - Gửi lời mời kết bạn:
1 Người dùng nhấn vào nút “Gửi lời mời kết bạn” ở thành phần gợi ý kết bạn hoặc ở màn hình thông tin một tài khoản khác.
2 Hệ thống lưu trữ việc gửi lời mời kết bạn trên cơ sở dữ liệu và gửi thông báo đến người nhận lời mời kết bạn.
- Xác nhận lời mời kết bạn:
3 Người dùng chọn chức năng "Quản lý bạn bè" trên giao diện người dùng.
4 Hệ thống hiển thị danh sách lời mời kết bạn.
5 Người dùng nhấn nút xác nhận lên tài khoản mà bản thân muốn kết bạn.
- Từ chối lời mời kết bạn:
6 Người dùng chọn chức năng "Quản lý bạn bè" trên giao diện người dùng.
7 Hệ thống hiển thị danh sách lời mời kết bạn.
8 Người dùng nhấn nút từ chối lên tài khoản mà bản thân không muốn kết bạn.
Dòng sự kiện phụ 1a Người dùng hủy việc gửi lời mời kết bạn sau khi gửi thì hệ thống xóa lời mời ra khỏi hệ thống và người nhận không thể nhận lời mời đó nữa.
Tên use-case Hủy kết bạn.
Hệ thống ứng dụng
3.3.2 Mô tả các bảng 3.3.2.1 Bảng ACCOUNT
Tên Kiểu dữ liệu Ý nghĩa id_account ObjectId Id của tài khoản email String Email của tài khoản password String Mật khẩu của tài khoản isVerified Boolean Kiểm tra tài khoản đã xác thực hay chưa refreshToken String Token để lấy được JSON Web
Token mới khi cái cũ hết hạn code String Code dùng đề lấy lại mật khẩu đã quên isBlocked Boolean Kiểm tra tài khoản có bị khóa bình luận và đăng bài không warningAmount Number Số lần người dùng vi phạm quy định của ứng dụng
Tên Kiểu dữ liệu Ý nghĩa id_react ObjectId Id của cảm xúc tương tác lên bài viết hoặc bình luận reactType String Loại cảm xúc id_post ObjectId Id của bài viết được thả cảm xúc id_comment ObjectId Id của bình luận được thả cảm xúc id_account ObjectId Id của tài khoản thả cảm xúc reactTime Datetime Thời gian cảm xúc được thả
Tên Kiểu dữ liệu Ý nghĩa id_conversation ObjectId Id của cuộc trò chuyện members Array Các thành viên của cuộc trò chuyện status Boolean Trạng thái của cuộc trò chuyện leader ObjectId Id của trưởng nhóm name String Tên của cuộc trò chuyện picture String Đường dẫn ảnh của cuộc trò chuyện
Tên Kiểu dữ liệu Ý nghĩa id_message ObjectId Id của tin nhắn id_conversatio n
ObjectId Id của cuộc trò chuyện id_sender ObjectId Id của người gửi tin nhắn messageConte nt
String Nội dung của tin nhắn viewedBy Array Danh sách id những người đã xem tin nhắn type String Loại của tin nhắn
Tên Kiểu dữ liệu Ý nghĩa id_request ObjectId Id của yêu cầu kết bạn id_sender ObjectId Id của người gửi yêu cầu kết bạn
Id_receiver ObjectId Id của người nhận yêu cầu kết bạn
Tên Kiểu dữ liệu Ý nghĩa id_notification ObjectId Id của thông báo id_senders Array Id của những người gửi thông báo id_receiver ObjectId Id của người nhận thông báo id_post ObjectId Id của bài viết được đề cập trong thông báo id_comment ObjectId Id của bình luận được đề cập trong thông báo notificationTyp e
String Loại thông báo notificationCon tent
String Nội dung của thông báo
Tên Kiểu dữ liệu Ý nghĩa id_account ObjectId Id của tài khoản primarySchool String Thông tin trường tiểu học yearStartPrima rySchool
Integer Năm bắt đầu trường tiểu học yearEndPrimar ySchool
Integer Năm kết thúc trường tiểu học secondaryScho ol
String Thông tin trường trung học cơ sở yearStartSecon darySchool
Integer Năm bắt đầu trường trung học cơ sở yearEndSecon darySchool
Integer Năm kết thúc trường trung học cơ sở highSchool String Thông tin trường trung học phổ thông yearStartHighS chool
Integer Năm bắt đầu trường trung học phổ thông yearEndHighS chool
Integer Năm kết thúc trường trung học phổ thông
University String Thông tin trường đại học yearStartUnive rsity
Integer Năm bắt đầu trường đại học yearEndUniver sity
Integer Năm kết thúc trường đại học
Tên Kiểu dữ liệu Ý nghĩa id_account ObjectId Id của tài khoản fullName String Họ và tên của tài khoản avatar String Ảnh đại diện của tài khoản coverImage String Ảnh bìa của tài khoản gender String Giới tính aboutMe String Một đoạn văn ngắn mô tả về bản thân người dùng birthday String Ngày sinh nhật liveIn String Nơi ở occupation String Nghề nghiệp religion String Tôn giáo maritalStatus String Tình trạng hôn nhân
Tên Kiểu dữ liệu Ý nghĩa id_account ObjectId Id của tài khoản favoriteTVSho ws
Array Các chương trình TV yêu thích favoriteMovies Array Các bộ phim yêu thích favoriteGames Array Các trò chơi yêu thích favoriteMusic
Array Các nhóm nhạc yêu thích favoriteBooks Array Các quyển sách yêu thích favoriteSports Array Các môn thể thao yêu thích
Tên Kiểu dữ liệu Ý nghĩa id_account ObjectId Id của tài khoản listFriend Array Danh sách bạn bè
Tên Kiểu dữ liệu Ý nghĩa id_post ObjectId Id của bài đăng id_account ObjectId Id của người đăng id_visualMedia Array Các hình ảnh hoặc video của bài đăng postContent String Nội dung văn bản của bài đăng postPrivacy String Quyền riêng tư của bài đăng postTime Datetime Thời gian đăng bài id_friendTag Array Danh sách những người được gắn thẻ trong bài đăng location String Địa điểm isShared Boolean Xác định bài đăng gốc hay bài đăng được chia sẻ shareId ObjectId Id của bài đăng gốc shareContents Object Nội dung của bài đăng gốc
Tên Kiểu dữ liệu Ý nghĩa id_visualMedia ObjectId Id của hình ảnh hoặc video id_post ObjectId Id của bài viết có hình ảnh hoặc video id_account ObjectId Id của người đăng ảnh hoặc video url Object Đường dẫn của hình ảnh hoặc video
Tên Kiểu dữ liệu Ý nghĩa id_comment ObjectId Id của bình luận id_post ObjectId Id của bài đăng chưa bình luận id_account ObjectId Id của tài khoản bình luận commentConte nt
String Nội dung của bình luận isReply Boolean Kiểm tra bình luận được phản hồi hay gốc id_repliedCom ment
ObjectId Id của bình luận gốc được phản hồi commentTime Datetime Thời gian đăng bình luận
Tên Kiểu dữ liệu Ý nghĩa id_setting ObjectId Id của cài đặt id_account ObjectId Id của tải khoản có cài đặt postDisplay String Kiểu hiển thị của bài đăng language String Kiểu ngôn ngữ
XÂY DỰNG ỨNG DỤNG
Danh sách thông báo
Hình 4.28 Danh sách thông báo
Màn hình gồm các thành phần chính:
- Tên và ảnh đại diện của tác nhân gây ra thông báo.
- Nội dung của thông báo.
- Biểu tượng giúp phân biệt giữa các loại thông báo khác nhau.
TỔNG KẾT
Đánh giá
- Trên thị trường đã có nhiều ứng dụng mạng xã hội để nhóm tham khảo, từ đó giúp nhóm có nhiều ý tưởng trong thiết kế chức năng, giao diện và dữ liệu.
- Các tài liệu về công cụ thực hiện đồ án có đầy đủ và chi tiết trên Internet Cộng đồng lớn giúp giải quyết các vấn đề thường gặp phải khi sử dụng công nghệ liên quan đồ án một cách nhanh chóng.
- Các thành viên trong nhóm đã biết nhau từ trước nên hiểu rõ điểm mạnh và điểm yếu của nhau Từ đó, phân chia công việc giúp phát huy tối đa khả năng của từng thành viên và làm việc hiệu quả hơn.
- Mất nhiều thời gian để học và tìm hiểu về các công nghệ mới.
- Vì ứng dụng là mạng xã hội nên việc quản lý dữ liệu khá phức tạp để đạt được độ hợp lý và hiệu năng cao nhất cho ứng dụng.
Kết luận
Sau thời gian thực hiện đề tài, nhóm đã đạt được một số kết quả sau:
- Xây dựng thành công ứng dụng mạng xã hội có các chức năng: o Tạo ra một cộng đồng trực tuyến: Mạng xã hội cho phép người dùng kết nối với những người có sở thích và quan điểm tương tự hoặc cùng chia sẻ một mục đích chung Các ứng dụng mạng xã hội cũng có thể giúp tạo ra một cộng đồng tương tác, giúp người dùng trao đổi thông tin và hỗ trợ nhau. o Tăng tương tác và giao tiếp: Mạng xã hội có thể giúp người dùng tăng cơ hội giao tiếp và tương tác với nhau Người dùng có thể chia sẻ thông tin, bình luận và thảo luận với nhau về các chủ đề chung. Ngoài ra, người dùng có thể nhắn tin và gọi điện riêng cho nhau hoặc tạo các nhóm trò chuyện. o Cung cấp giải trí: Ứng dụng mạng xã hội cũng có thể cung cấp giải trí cho người dùng, ví dụ như chia sẻ video, ảnh, âm nhạc, các nội dung giải trí khác.
- Sinh viên thực hiện đã nắm được cách thức làm một ứng dụng website.
- Thông qua đồ án, nhóm đã tìm hiểu thêm được các công nghệ mới như ReactJS, NodeJS, MongoDB, WebRTC, nhằm phục vụ cho công việc trong tương lai của nhóm sau này Nhóm còn củng cố vững chắc hơn những kiến thức đã học về quy trình làm phần mềm, cách phân tích, thiết kế một hệ thống thông tin.
- Nâng cao kỹ năng lập trình, làm việc nhóm và giải quyết vấn đề.
5.2.2 Ưu điểm của ứng dụng
- Giao diện đơn giản, tươi sáng, người dùng dễ dàng theo tác trên ứng dụng.
- Tốc độ phản hồi các thao tác nhanh, tối ưu hóa năng suất của người dùng.
- Quyền riêng tư của người dùng được bảo vệ.
- Hỗ trợ đa ngôn ngữ.
- Người dùng có thể tùy biến điều chỉnh giao diện bài viết theo sở thích.
5.2.3 Nhược điểm của ứng dụng
- Chưa xây dựng hệ thống hỗ trợ cho phía quản trị viên.
- Chưa hiển thị bài viết theo sở thích của người dùng.
- Website chỉ mới dừng lại ở mức sơ khai, với các tính năng được coi là cơ bản cho một mạng xã hội, chưa có nhiều khác biệt với các mạng xã hội đã có hiện nay.
Hướng phát triển
- Hoàn thiện UI/UX các chức năng đã có.
- Đề suất các bài đăng cho từng người dùng riêng biệt.
- Thêm hệ thống dành cho quản trị viên: o Quản lý tài khoản người dùng. o Quản lý các bài đăng của người dùng. o Quản lý các bình luận của người dùng. o …