Yêu cầu nghiệp vụ • Lưu trữ o Thông tin về người dùng: Hệ thống sẽ lưu trữ các thông tin của khách hàng như họ và tên, email, biệt danh, mật khẩu, ngày sinh, việc làm, trường học, vị tr
GIỚI THIỆU
Giới thiệu đề tài
Mạng xã hội hiện đang đóng vai trò quan trọng trong cuộc sống hàng ngày của chúng ta, từ việc kết nối với bạn bè và gia đình đến truy cập thông tin, giải trí và quảng cáo Xây dựng một ứng dụng mạng xã hội không chỉ đáp ứng nhu cầu cơ bản của người dùng mà còn cung cấp một nền tảng để nghiên cứu, thử nghiệm và phát triển những tính năng mới và sáng tạo
Thêm vào đó, việc tích hợp một công cụ tìm kiếm mạnh mẽ như Lucene vào ứng dụng là cần thiết vì nó giúp người dùng dễ dàng tìm kiếm những thông tin như người dùng khác, các bài viết, hay các bình luận liên quan Điều này thực sự quan trọng bởi nó sẽ cải thiện trải nghiệm người dùng và tạo ra một ứng dụng mạng xã hội mạnh mẽ
Bên cạnh đó, việc xây dựng ứng mạng xã hội tích hợp Lucene cũng giúp nhóm em phát triển kỹ năng, tích luỹ kích nghiệm và kiến thức về mạng xã hội, quản lý dự án và cuối cùng là hiểu rõ về quy trình phát triển phần mềm Chính vì thế cho nên đây là một cơ hội tuyệt vời cho nhóm em áp dụng những kiến thức đã học vào thực hành trong lĩnh vực công nghệ thông tin đầy thách thức và triển vọng
Tóm lại, đề tài này là sự kết hợp giữa sự phát triển của mạng xã hội, sử dụng công nghệ tìm kiếm mạnh mẽ, cơ hội học hỏi và phát triển bản thân Đây là đề tài có tiềm năng để tạo ra một ứng dụng hữu ích, đồng thời giúp nhóm em phát triển kỹ năng và kiến thức trong lĩnh vực công nghệ thông tin.
Nội dung thực hiện
- Nghiên cứu lý thuyết về mạng xã hội và thuật toán Lucene
- Thiết kế và xây dựng ứng dụng mạng xã hội
- Tích hợp Lucene vào ứng dụng.
Kết quả mong đợi
Đề tài “Xây dựng ứng dụng mạng xã hội tích hợp Lucene” có mục tiêu là xây dựng một ứng dụng mạng xã hội có khả năng tìm kiếm thông tin nhanh chóng và
2 chính xác bằng thuật toán Lucene, ứng dụng này sẽ giúp người dùng dễ dàng tìm kiếm các bài viết, người dùng và bình luận Cụ thể, đề tài sẽ đạt được các mục tiêu sau:
- Xây dựng một ứng dụng mạng xã hội với các chức năng cơ bản như đăng bài, bình luận, …
- Tích hợp thuật toán Lucene vào ứng dụng để thực hiện chức năng tìm kiếm
- Cải thiện hiệu suất tìm kiếm bằng cách tối ưu hoá thuật toán Lucene
KIẾN THỨC NỀN TẢNG
Mạng xã hội
Mạng xã hội là một website hoặc một ứng dụng cho phép mọi người trên thế giới kết nối với nhau Các trang mạng xã hội đều có các cách hoạt động giống nhau, thường thì mỗi cá nhân sẽ có trang cá nhân của mình bao gồm các thông tin chi tiết về bản thân, cho phép người sử dụng gửi tin nhắn, chia sẻ và tìm kiếm thông tin trên một cơ sở dữ liệu trực tuyến lớn
Lịch sử mạng xã hội bắt đầu từ những ngày đầu của internet và đã phát triển mạnh mẽ qua các giai đoạn Từ các diễn đàn và trang web đầu tiên, chúng ta đã chứng kiến sự xuất hiện của các dịch vụ lớn như Facebook, Twitter, LinkedIn và Instagram Những nền tảng này không chỉ mở ra cơ hội giao tiếp mới mà còn tạo ra một không gian trực tuyến đa dạng với nhiều mục đích khác nhau
Có nhiều loại mạng xã hội với mục tiêu và đối tượng sử dụng khác nhau Mạng xã hội chung như Facebook thích hợp cho mọi đối tượng, trong khi LinkedIn tập trung vào kết nối chuyên nghiệp Instagram và YouTube đại diện cho mạng xã hội hình ảnh và video, đem lại trải nghiệm người dùng độc đáo
Mặc dù mạng xã hội mang lại nhiều ưu điểm như giao tiếp thuận tiện và cơ hội tiếp thị, nhưng cũng đối mặt với những thách thức như vấn đề quyền riêng tư và an toàn trực tuyến Sự đánh đổi giữa ưu và nhược điểm là một phần quan trọng của đà phát triển của chúng
Mạng xã hội không chỉ thay đổi cách chúng ta giao tiếp mà còn ảnh hưởng đến xã hội và văn hóa Nó tạo ra các cộng đồng trực tuyến, hỗ trợ cho các phong trào và thậm chí tác động đến quan điểm xã hội và chính trị
Với sự phát triển nhanh chóng của công nghệ, mạng xã hội có thể chứng kiến sự kết hợp với trí tuệ nhân tạo, thực tế ảo, và các xu hướng mới Việc này mở ra cánh cửa cho những trải nghiệm người dùng độc đáo và thú vị trong tương lai
Kiến thức tổng quan về Apache Lucene
Apache Lucene là một công cụ truy xuất dữ liệu mã nguồn mở, hiệu suất cao, có thể mở rộng với khả năng truy xuất dữ liệu mạnh mẽ Lucene đã được phát triển trong nhiều năm, cung cấp nhiều tính năng mạnh mẽ hơn và kiến trúc ngày càng tinh tế hơn Hiện tại nó hỗ trợ lập chỉ mục toàn văn bản cũng như cung cấp nhiều kiểu lập chỉ mục khác để đáp ứng yêu cầu của các loại truy vấn khác nhau
Lucene cho phép chúng ta thêm dữ liệu vào chỉ mục toàn văn bản, từ đó chúng ta có thể thực hiện truy vấn trên các chỉ mục đó, nó sẽ trả về kết quả được sắp xếp dựa trên mức độ liên quan của nội dung được tìm kiếm với câu truy vấn được thêm bởi người dùng Dữ liệu được thêm vào Lucene có thể bao gồm nhiều định dạng khác nhau như cơ sở dữ liệu SQL/No SQL, tập tin từ hệ thống hoặc thậm chí có thể là nội dung từ một website
Lucene được biết đến là một công cụ lập chỉ mục với hiệu suất cao, có thuật toán mạnh mẽ và tìm kiếm hiệu quả Lucene hiện nay được sử dụng bởi nhiều dự án mã nguồn mở lớn khác như ElasticSearch và Solr.
Apache Lucene
Hình 2.1 Các thành phần quan trọng cấu thành Lucene
Lucene là một thư viện tìm kiếm toàn văn mã nguồn mở, bao gồm các thành phần sau:
Chúng ta có thể xem Lucene Index là một folder chứa các documents, ta có thể thêm một tài liệu mới vào hoặc có thể lấy một tài liệu ra, nhưng nếu chúng ta muốn chỉnh sửa một tài liệu thì trước tiên ta phải lấy nó ra, chỉnh sửa nó và cuối cùng là thêm nó vào lại thư mục Ta có thể thêm nhiều loại documents vào thư mục bởi vì Lucene có thể đánh chỉ mục document dù nó có loại dữ liệu gì đi chăng nữa
Tương tự như một hàng trong cơ sở dữ liệu quan hệ, một index có thể chứa nhiều documents Khi document được thêm vào index thì nó sẽ được gán một Id duy nhất, được gọi là Sequence Number
Hình 2.2 Field trong Lucene Field là một trong những đơn vị cơ bản nhất trong Apache Lucene, ta có xem nó như một cột ở trong cơ sở dữ liệu quan hệ, nó được dùng để lưu trữ thông tin của dữ liệu Hiện nay, field được Lucene cung cấp nhiều loại field khác nhau như
Một field được cấu tạo bởi ba thành phần: name, fieldData, type Thành phần name chính là tên của field, fieldsData là giá trị của field và cuối cùng, type là kiểu của field giúp xác định các field được lập chỉ mục
Term trong Lucene được tạo ra bằng cách phân tích cú pháp văn bản của document Quá trình phân tích cú pháp này bao gồm việc chia văn bản thành các từ hoặc cụm từ, và sau đó chuẩn hóa chúng bằng cách loại bỏ dấu câu và các từ phổ biến khác
Term dictionary được tạo ra khi Lucene lập chỉ mục các document Term dictionary được lưu trữ dưới dạng một tập tin nhị phân, và nó bao gồm các thông tin từ term 1 , document frequency 2 , total term frequency 3
Segment là một đơn vị cơ bản của chỉ mục Lucene Một chỉ mục Lucene có thể bao gồm một hoặc nhiều segment Mỗi segment chứa một tập hợp tài liệu và các thông tin liên quan đến các tài liệu đó Segment được tạo ra khi Lucene index các tài liệu Quá trình indexing là một quá trình phân tích văn bản của các document và tạo ra một tập hợp các term và các thông tin liên quan đến các term đó
Segment được lưu trữ dưới dạng một tập tin nhị phân bao gồm Term Dictionary, Posting lists 4 và Deleted documents 5
Segment đóng một vai trò quan trọng trong việc tìm kiếm trong Lucene Khi người dùng thực hiện truy vấn, Lucene sẽ tìm kiếm các term trong các segment để tìm tất cả các document chứa các term đó Sau đó, Lucene sẽ sử dụng thông tin trong các segment để tính toán mức độ liên quan của các tài liệu đó đối với truy vấn
Sequence number là một số nguyên duy nhất được gán cho mỗi document trong chỉ mục Lucene Nó được sử dụng để theo dõi thứ tự mà các tài liệu được index vào
1 Term: Là danh sách các từ hoặc cụm từ
2 Document frequency: Số lượng tài liệu chưa được term
3 Total term frequency: Tổng số lần term xuất hiện trong tất cả các tài liệu
4 Posting lists: Danh sách các tài liệu chứa các một term cụ thể
5 Deleted documents: Một danh sách các tài liệu đã bị xoá
7 chỉ mục Ngoài ra, Sequence number được tạo ra khi một tài liệu được lập chỉ mục và sẽ được tăng dần cho mỗi tài liệu được lập chỉ mục
Lucene cho phép tìm kiếm văn bản siêu nhanh bằng cách sử dụng cấu trúc dữ liệu đặc biệt được gọi là Inverted index Thay vì phải tìm kiếm văn bản theo thứ tự tuần tự trong tất cả các documents, Lucene tạo trước một Inverted index của các document
Inverted index được cấu thành bởi 2 yếu tố Thứ nhất là Term Dictionary, đây là thành phần chứa tất cả các terms trong index cùng với tần suất xuất hiện của các terms Thứ hai là Postings, Postings là một danh sách các documents chứa các terms Ngoài ra, postings có thể sẽ lưu trữ thông tin về từ được tìm kiếm nằm ở vị trí nào ở trong documents
Hình 2.3 Ví dụ về Inverted index
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Danh sách các yêu cầu
• Lưu trữ o Thông tin về người dùng: Hệ thống sẽ lưu trữ các thông tin của khách hàng như họ và tên, email, biệt danh, mật khẩu, ngày sinh, việc làm, trường học, vị trí, ảnh cá nhân o Thông tin về bài viết: Các thông tin như nội dụng, ảnh và video, số lượt tương tác, bình luận, thời gian tạo, chỉnh sửa bài viết o Thông tin về thông báo: bao gồm loại thông báo, thời gian tạo thông báo, nội dung thông báo, người tương tác, người được gửi thông báo, thông báo đã được đọc hay chưa o Thông tin về người theo dõi: bao gồm danh sách người theo dõi, danh sách người được theo dõi o Thông tin về cài đặt cá nhân: bao gồm thông tin người dùng, cài đặt thông báo về tin nhắn, bài viết, tương tác, bình luận, danh sách chặn người dùng, bài viết được lưu
• Tính toán: Tính toán thời gian người dùng tạo bài viết, số lượt tương tác, số lượt bình luận, thời gian gửi tin nhắn, thời gian thông báo, số lượng người theo dõi và đang theo dõi để giúp người dùng nắm bắt chính xác thông tin về những việc đã làm
STT Nghiệp vụ Đối tượng Ghi chú
Thông tin về mật khẩu trong cơ sở dữ liệu đã mã hóa Ẩn dữ liệu đối với những người dùng bị chặn
Thông tin sẽ được ẩn đi sau khi lưu vào cơ sở dữ liệu
Dữ liệu của người dùng bị chặn sẽ được ẩn đi theo 2 chiều từ bên phía chặn và bị chặn
Bảng 3.1 Bảng tính an toàn
• Tính bảo mật: o Mã hóa dữ liệu: Mã hóa thông tin cá nhân và dữ liệu truyền tải giữa máy khách và máy chủ o Bảo vệ tài khoản người dùng: Thực hiện chính sách mật khẩu mạnh và đổi mật khẩu định kỳ o Quản lý sự kiện và ghi chú: Ghi lại và theo dõi các sự kiện quan trọng như thông báo, tạo bài viết, gửi tin nhắn để nhanh chóng phát hiện o Bảo mật phần mềm: Đảm bảo rằng phần mềm được cập nhật định kỳ để bảo vệ khỏi các lỗ hổng bảo mật đã biết o Bảo vệ quyền riêng tư: Tuân thủ các quy định về quyền riêng tư và bảo vệ dữ liệu cá nhân Cung cấp cài đặt cho người dùng kiểm soát thông tin cá nhân, danh sách người theo dõi, người đang theo dõi, người chặn của họ
STT Nghiệp vụ Tham số cần thay đổi
1 Thay đổi bài viết Ảnh, video, nội dung
2 Thay đổi bình luận Nội dung
STT Nghiệp vụ Mức độ dễ học Mức độ dễ sử dụng Chú thích
1 Tạo bài viết Không cần hướng dẫn Dễ thao tác
2 Theo dõi người dùng
Không cần hướng dẫn Dễ thao tác
3 Thích bài viết Không cần hướng dẫn Dễ thao tác
4 Tạo bình luận Không cần hướng dẫn Dễ thao tác
Không cần hướng dẫn Dễ thao tác
Thay đổi danh sách người theo dõi, người được theo dõi, người bị chặn
4 Thay đổi cài đặt thông báo Tin nhắn, tương tác, bình luận, theo dõi
5 Thay đổi thông tin cá nhân
Câu quote, nơi làm việc, trường học, vị trí địa lí
6 Thay đổi mật khẩu Mật khẩu hiện tại, mật khẩu mới
Bảng 3.2 Bảng tính tiến hoá
Xem, lưu, hủy bài viết được lưu
Không cần hướng dẫn Dễ thao tác
7 Tìm kiếm Không cần hướng dẫn Dễ thao tác
Bảng 3.3 Bảng tính tiện dụng
STT Nghiệp vụ Tốc độ xử lý Dung lượng lưu trữ Chú thích
Sau 2 giây với bài viết thường Sau 10 giây với bài viết có video
2 Tìm kiếm bài viết Tất cả các bài viết sau 2 giây
3 Tìm kiếm người dùng
Tất cả người dùng sau 2 giây
4 Thay đổi thông tin người dùng Ngay lập tức
5 Thay đổi cài đặt Ngay lập tức
6 Lưu bài viết Sau 1 giây
7 Xóa bài viết Sau 3 giây
9 Theo dõi, hủy theo dõi người dùng Sau 1 giây
Bảng 3.4 Bảng tính hiệu quả
• Tính tương thích: Ứng dụng web tương thích với hầu hết trình duyệt như là Chrome, Edge, … và được có thể sử dụng ở hầu hết mọi thiết bị.
Phân tích yêu cầu
Hình 3.1 Sơ đồ Usecase mức tổng quát
3.2.2 Danh sách các tác nhân của hệ thống
STT Tác nhân của hệ thống Ý nghĩa
Là người dùng chính của hệ thống, đóng vai trò lớn trong việc hình thành ứng dụng
Bảng 3.5 Bảng danh sách các tác nhân của hệ thống
Người dùng đăng nhập vào ứng dụng với tài khoản đã đăng ký Usecase đăng nhập là điều kiện tiên quyết để thực hiện các chức năng liên quan đến người dùng trong ứng dụng
Chức năng có thể được thực hiện để lấy lại mật khẩu của tài khoản trong trường hợp người dùng quên mật khẩu
03 Đăng ký tài khoản Người dùng đăng ký tài khoản để có thể sử dụng ứng dụng
04 Thiết lập tài khoản Người dùng có thể chỉnh sửa cài đặt thông báo, xem lịch sử hoạt động và cuối cùng là đổi mật khẩu
05 Quản lý trang cá nhân
Usecase cho phép người dùng xem danh sách các bài viết đã lưu, Quản lý ảnh và video cá nhân, Quản lý người theo dõi và cập nhật thông tin cá nhân
Usecase cho phép người dùng đăng bài viết mới, chỉnh sửa bài viết, xoá bài viết, tìm kiếm bài viết, chia sẻ bài viết và cuối cùng là lưu bài viết
07 Quản lý bình luận của bài viết
Người dùng có thể bình luận một bài viết, xoá hay chỉnh sửa bình luận của mình
Usecase này đóng vai trò quan trọng trong ứng dụng cho phép người dùng biết được những diễn biến liên quan đến bài viết, bình luận hay người theo dõi Chức năng này bao gồm các tính năng phụ như thêm thông báo và đánh dấu thông báo đã được đọc
09 Quản lý cuộc trò chuyện
Usecase cho phép các người dùng nhắn tin với nhau với các phương thức như gửi tin nhắn, gọi qua video, gọi qua audio Ngoài ra, Người dùng còn có thể tạo một cuộc trò chuyện mới, xem danh sách các cuộc trò chuyện và tìm kiếm cuộc trò chuyện
10 Quản lý ảnh và video cá nhân
Usecase cho phép người dùng xem danh sách các ảnh và video của mình, các ảnh và video sẽ được thêm thông qua các bài viết được đăng bởi chính người dùng Ngoài ra, hệ thống còn cho phép người dùng gỡ bỏ những ảnh hoặc video của mình ra khỏi danh sách
11 Tìm kiếm bài viết và người dùng Đây là một trong những chức năng quan trọng của ứng dụng với khả năng tăng trải nghiệm người dùng trong
15 việc tìm kiếm bài viết, người dùng hay thậm chí bình luận
Bảng 3.6 Bảng danh sách các Usecase
3.2.4 Sơ đồ Usecase mức chi tiết
Hình 3.2 Usecase thiết lập tài khoản
16 Hình 3.3 Usecase quản lý thông báo
Hình 3.4 Usecase quản lý bài viết
17 Hình 3.5 Usecase quản lý bình luận của bài viết
Hình 3.6 Usecase quản lý người theo dõi
Hình 3.7 Usecase quản lý cuộc trò chuyện
Hình 3.8 Usecase quản lý ảnh và video cá nhân
ID and Name UC Đăng nhập
Description Người dùng thực hiện việc đăng nhập để sử dụng các chức năng trong ứng dụng
Trigger Người dùng nhấn nút “Đăng nhập”
PRE-1 Hệ thống đã được khởi động
PRE-2 Tài khoản và mật khẩu đã được tạo trước đó
Postconditions POST-1 Người dùng đăng nhập thành
1 Người dùng truy cập vào trang đăng nhập của ứng dụng
2 Ứng dụng hiển thị giao diện đăng nhập
3 Người dùng nhập tên đăng nhập và mật khẩu của mình vào các trường tương ứng
4 Người dùng nhấn nút “Đăng nhập”
5 Hệ thống kiểm tra thông tin đăng nhập của người dùng
6 Hệ thống chuyển người dùng đến trang chủ của ứng dụng Sub Flows Không có
5a Nếu thông tin đăng nhập không đúng, hệ thống hiển thị thông báo lỗi và yêu cầu người dùng nhập lại thông tin đăng nhập Use case chuyển sang bước 4
Bảng 3.7 Bảng đặc tả Usecase Đăng nhập
ID and Name UC Đăng ký tài khoản
Description Người dùng thực hiện việc tạo tài khoản để có thể sử dụng ứng dụng
Trigger Người dùng nhấn nút “Đăng ký”
Preconditions PRE-1 Hệ thống đã được khởi động
Postconditions POST-1 Người dùng tạo tài khoản thành công
1 Người dùng tiến hành truy cập trang web của ứng dụng
2 Người dùng nhấn nút “Đăng ký tài khoản”
3 Người dùng nhập đầy đủ các thông tin cần thiết vào các trường
4 Hệ thống kiểm tra thông tin được nhập có hợp lệ hay không?
5 Hệ thống lưu thông tin tài khoản của người dùng
6 Người dùng được chuyển hướng đến màn hình đăng nhập tài khoản
4a Trường hợp thông tin không hợp lệ, người dùng sẽ được yêu cầu bắt đầu trở lại từ bước số 3
5a Hệ thống thông báo “Không thể lưu được tài khoản”, người dùng sẽ được yêu cầu bắt đầu trở lại từ bước số 3
Bảng 3.8 Bảng đặc tả Usecase Đăng ký tài khoản
ID and Name UC Quên mật khẩu
Description Chức năng được sử dụng để lấy lại tài khoản cho người dùng trong trường hợp người dùng không nhớ mật khẩu của tài khoản Trigger Người dùng nhấn nút “Quên mật khẩu”
PRE-1 Hệ thống đã được khởi động
PRE-2 Tài khoản được yêu cầu đổi mật khẩu tồn tại
Postconditions POST-1 Người dùng đổi mật khẩu thành công
1 Người dùng tiến hành truy cập trang web của ứng dụng
2 Người dùng nhấn nút “Quên mật khẩu”
3 Người dùng nhập đầy đủ các thông tin cần thiết vào các trường
4 Hệ thống kiểm tra thông tin được nhập có hợp lệ hay không?
5 Hệ thống gửi một đường link và thông báo yêu cầu đổi mật khẩu đến email của người dùng
6 Người dùng ấn mở đường link và nhập mật khẩu mới, mật khẩu xác nhận
7 Hệ thống cập nhật thay đổi và thông báo đổi mật khẩu thành công
4a Trường hợp thông tin không hợp lệ, người dùng sẽ được yêu cầu bắt đầu trở lại từ bước số 3
6a Đường link được gửi bị hết hạn, hoặc bị hỏng, người dùng sẽ nhận được yêu cầu thực hiện lại từ bước số 3 trở đi
7a Hệ thống thông báo lỗi cập nhật, người dùng được yêu cầu thực hiện lại từ bước số 3 trở đi
Bảng 3.9 Bảng đặc tả Usecase Quên mật khẩu
ID and Name UC Quản lý trang cá nhân
Chức năng được cung cấp để cho phép người dùng quản lý những thông tin cơ bản và những thông số liên quan đến bài viết, ảnh, video và thông tin cá nhân của người dùng
Trigger Người dùng nhấn nút “Trang cá nhân”
PRE-1 Hệ thống đã được khởi động
PRE-2 Người dùng đã đăng nhập vào ứng dụng với tài khoản được cung cấp
POST-1 Người dùng xem được danh sách người theo dõi
POST-2 Người dùng xem được danh sách người đang theo dõi POST-3 Người dùng xem được danh sách người dùng bị chặn POST-4 Thông tin cá nhân được cập nhật thành công
POST-5 Người dùng xem được thư viện ảnh và video của mình POST-6 Người dùng xem được danh sách các bài viết của mình
1 Người dùng nhấn nút “Thay đổi thông tin cá nhân”
2 Người dùng cập nhật những thay đổi dựa vào những trường được hiển thị
3 Người dùng nhấn nút “Lưu”
4 Hệ thống cập nhật thay đổi và lưu vào cơ sở dữ liệu
5 Kết thúc Sub Flows Không có
4a Hệ thống không thể lưu những thay đổi vào cơ sở dữ liệu, người dùng được yêu cầu thực hiện lại từ bước 1
Bảng 3.10 Bảng đặc tả Usecase Quản lý trang cá nhân
ID and Name UC Thiết lập tài khoản
Description Chức năng cho phép người dùng đổi mật khẩu tài khoản hoặc có thể là cập nhật cài đặt thông báo
Trigger Người dùng nhấn nút “Thiết lập tài khoản”
PRE-1 Hệ thống đã được khởi động
PRE-2 Người dùng đã đăng nhập vào ứng dụng với tài khoản được cung cấp
POST-1 Người dùng đổi mật khẩu thành công
POST-2 Người dùng cập nhật được cài đặt thông báo
1 Nếu người dùng chọn chức năng Cập nhật cài đặt thông báo, thực hiện luồng sự kiện phụ S1
2 Nếu người dùng chọn chức năng Đổi mật khẩu, thực hiện luồng sự kiện phụ S1
Sub Flows S1 Cập nhật cài đặt thông báo
S1.1 Hệ thống hiển thị màn hình cài đặt gồm 4 công tắc thông báo
S1.2 Người dùng tuỳ chỉnh các công tắc như mong muốn S1.3 Hệ thống cập nhật cài đặt thông báo
S2.1 Người dùng nhập mật khẩu cũ, mật khẩu mới và mật khẩu xác nhận S2.2 Người dùng nhấn “Xác nhận”
S2.3 Hệ thống kiểm tra tính chính xác và hợp lệ của thông tin
S2.4 Hệ thống cập nhật thay đổi và thông báo “Đổi mật khẩu thành công”
S2.3a Hệ thống không thể cập nhật do vấn đề đường truyền, người dùng được yêu cầu thử lại sau khi đường truyền ổn định
S3.3a Thông tin người dùng nhập không hợp lệ, chính xác, người dùng được yêu cầu thực hiện lại từ bước S3.1
Bảng 3.11 Bảng đặc tả Usecase Thiết lập tài khoản
ID and Name UC Quản lý thông báo
Chức năng đóng vai trò quan trọng trong ứng dụng giúp người dùng có thể nhận biết được những diễn biến xảy ra đối với các bài viết, bình luận hay người theo dõi
Trigger Người dùng nhấn vào biểu tượng Thông báo ở bên góc phải màn hình
PRE-1 Hệ thống đã được khởi động
PRE-2 Người dùng đã đăng nhập vào ứng dụng với tài khoản được cung cấp
POST-1 Danh sách thông báo của người dùng hiển thị
POST-2 Thông báo được đánh dấu đã được xem của người dùng được cập nhật
1 Hệ thống hiển thị danh sách tin nhắn của người dùng
2 Người dùng nhấn vào một thông báo bất kỳ để xem
3 Hệ thống hiển thị chi tiết thông báo
4 Hệ thống cập nhật trạng thái của thông báo là “Đã được đọc”
4a Hệ thống không thể cập nhật trạng thái do vấn đề đường truyền của người dùng, người dùng được yêu cầu thử lại sau Bảng 3.12 Bảng đặc tả Usecase Quản lý thông báo
ID and Name UC Quản lý bài viết
Chức năng bao gồm các tính năng phụ như đăng bài viết mới, chỉnh sửa và xoá bài viết cá nhân, ngoài ra còn có tính năng lưu và chia sẻ
PRE-1 Hệ thống đã được khởi động
PRE-2 Người dùng đã đăng nhập vào ứng dụng với tài khoản được cung cấp
TRIG-1 Người dùng nhấn vào nút “Đăng bài viết”
TRIG-2 Người dùng nhấn vào nút “Chỉnh sửa bài viết”
TRIG-3 Người dùng nhấn vào nút “Xoá bài viết”
TRIG-4 Người dùng nhấn vào nút “Lưu bài viết”
TRIG-5 Người dùng nhấn vào nút “Chia sẻ bài viết”
POST-1 Bài viết được tạo mới và lưu lại
POST-2 Bài viết được chỉnh sửa
POST-3 Bài viết bị xoá
POST-4 Bài viết được lưu vào danh sách ưa thích của người dùng
POST-5 Đường liên kết dẫn đến bài viết được tạo
6 Nếu người dùng chọn chức năng đăng bài viết, thực hiện luồng sự kiện phụ S1
7 Nếu người dùng chọn chứcc năng Chỉnh sửa bài viết, thực hiện luồng sự kiện phụ S2
8 Nếu người dùng chọn chức năng Xoá bài viết, thực hiện luồng sự kiện phụ S3
9 Nếu người chọn chức năng xoá bài viết Lưu bài viết, thực hiện luồng sự kiện phụ S4
10 Nếu người dùng chọn chức năng Chia sẻ bài viết, thực hiện luồng sự kiện phụ S5
S1 Đăng bình luận S1.1 Hệ thống hiển thị biểu mẫu
S1.2 Người dùng điền nội dung bài viết
S1.3 Người dùng nhấn nút “Đăng bài”
S1.4 Hệ thống kiểm tra tính hợp lệ
S1.5 Hệ thống lưu bài viết vào cơ sở dữ liệu S1.6 Kết thúc
S2 Chỉnh sửa bài viết S2.1 Hệ thống hiển thị biểu mẫu
S2.2 Người dùng chỉnh sửa những nội dung của bài viết S2.3 Người dùng nhấn nút “Lưu”
S2.4 Hệ thống kiểm tra tính hợp lệ
S2.5 Hệ thống cập nhật bài viết trong cơ sở dữ liệu S2.6 Kết thúc
S3 Xoá bài viết S3.1 Hệ thống hiển thị thông báo xác nhận
S3.2 Người dùng nhấn nút “Xác nhận”
S3.3 Hệ thống xoá bài viết
S3.4 Hệ thống hiển thị thông báo “Đã xoá thành công” S3.5 Kết thúc
S4.1 Hệ thống lưu bài viết vào danh sách những bài viết được lưu của người dùng đang sử dụng tài khoản S4.2 Hiển thị thông báo “Lưu thành công”
S5.1 Hệ thống tạo một đường liên kết dẫn đến bài viết được chia sẻ
S5.2 Người dùng sao chép đường liên kết và gửi đến nơi được chia sẻ
S1.4a Nội dung bài viết không hợp lệ, người dùng thực hiện lại từ bước S1.2
S1.5a Hệ thống không thể lưu bài viết, người dùng thực hiện lại từ bước S1.2
S2.4a Nội dung bài viết không hợp lệ, người dùng thực hiện lại từ bước S2.2
S2.5a Hệ thống không thể cập nhật nội dung bài viết, người dùng thực hiện lại từ bước S2.2
S3.3a Hệ thống không thể xoá bài viết, người dùng thực hiện lại từ bước S3.1
S4.1a Hệ thống không thể lưu bài viết vào danh sách bài viết ưa thích của người dùng, người dùng thực hiện lại từ bước S4.1 Bảng 3.13 Bảng đặc tả Usecase Quản lý bài viết
ID and Name UC Quản lý bình luận của bài viết
Description Chức năng bao gồm các chức năng phụ như Đăng bình luận, xoá bình luận, chỉnh sửa bình luận
PRE-1 Hệ thống đã được khởi động
PRE-2 Người dùng đã đăng nhập vào ứng dụng với tài khoản được cung cấp
TRIG-1 Người dùng nhấn vào nút “Đăng bình luận”
TRIG-2 Người dùng nhấn vào nút “Chỉnh sửa bình luận”
TRIG-3 Người dùng nhấn vào nút “Xoá bình luận”
POST-1 Bình luận được tạo mới và lưu lại
POST-2 Bình luận được chỉnh sửa
POST-3 Bình luận bị xoá
1 Nếu người dùng chọn chức năng đăng bình luận, thực hiện luồng sự kiện phụ S1
2 Nếu người dùng chọn chứcc năng Chỉnh sửa bình luận, thực hiện luồng sự kiện phụ S2
3 Nếu người dùng chọn chức năng Xoá bình luận, thực hiện luồng sự kiện phụ S3
S1 Đăng bình luận S1.1 Hệ thống hiển thị biểu mẫu
S1.2 Người dùng điền nội dung bình luận
S1.3 Người dùng nhấn nút “Đăng bài”
S1.4 Hệ thống kiểm tra tính hợp lệ
S1.5 Hệ thống lưu bình luận vào cơ sở dữ liệu
S2 Chỉnh sửa bình luận S2.1 Hệ thống hiển thị biểu mẫu
S2.2 Người dùng chỉnh sửa những nội dung của bình luận S2.3 Người dùng nhấn nút “Lưu”
S2.4 Hệ thống kiểm tra tính hợp lệ
S2.5 Hệ thống cập nhật bình luận trong cơ sở dữ liệu S2.6 Kết thúc
S3 Xoá bình luận S3.1 Hệ thống hiển thị thông báo xác nhận
S3.2 Người dùng nhấn nút “Xác nhận”
S3.3 Hệ thống xoá bài viết
S3.4 Hệ thống hiển thị thông báo “Đã xoá thành công” S3.5 Kết thúc
S1.4a Nội dung bình luận không hợp lệ, người dùng thực hiện lại từ bước S1.2
S1.5a Hệ thống không thể lưu bình luận, người dùng thực hiện lại từ bước S1.2
S2.4a Nội dung bài viết không hợp lệ, người dùng thực hiện lại từ bước S2.2
S2.5a Hệ thống không thể cập nhật nội dung bình luận, người dùng thực hiện lại từ bước S2.2
S3.3a Hệ thống không thể xoá bình luận, người dùng thực hiện lại từ bước S3.1
Bảng 3.14 Bảng đặc tả Usecase Quản lý bình luận của bài viết
ID and Name UC Quản lý cuộc trò chuyện
Description Chức năng bao gồm các chức năng phụ như Xem danh sách cuộc trò chuyện, Tạo cuộc trò chuyện và xem chi tiết cuộc trò chuyện
PRE-1 Hệ thống đã được khởi động
PRE-2 Người dùng đã đăng nhập vào ứng dụng với tài khoản được cung cấp
Trigger TRIG-1 Người dùng nhấn vào biểu tượng tin nhắn ở thanh điều hướng
POST-1 Danh sách cuộc trò chuyện được hiển thị
POST-2 Danh sách tin nhắn của một cuộc trò chuyện được hiển thị
POST-3 Danh sách thành viên của một cuộc trò chuyện được hiển thị
POST-4 Cuộc trò chuyện được tạo
POST-5 Thành viên được thêm vào cuộc trò chuyện
Normal Flow 1 Hệ thống hiển thị danh sách các cuộc trò chuyện hiện có của người dùng
2 Nếu người dùng chọn chức năng tìm kiếm cuộc trò chuyện, thực hiện luồng sự kiện phụ S1
3 Nếu người dùng chọn chức năng Tạo cuộc trò chuyện, thực hiện luồng sự kiện phụ S2
4 Nếu người dùng chọn chức năng Xem chi tiết cuộc trò chuyện, thực hiện luồng sự kiện phụ S3
S1 Tìm kiếm cuộc trò chuyện S1.1 Hệ thống hiển thị thanh tìm kiếm
S1.2 Người dùng nhập từ khoá
S1.3 Hệ thống đưa ra danh sách những cuộc trò chuyện được tìm thấy
S2 Xem chi tiết cuộc trò chuyện
S2.1 Từ danh sách cuộc trò chuyện, người dùng chọn một cuộc trò chuyện bất kỳ
S2.2 Hệ thống hiển thị chi tiết cuộc trò chuyện bao gồm danh sách tin nhắn, …
Thiết kế hệ thống
Nhóm đã sử dụng kiến trúc phần mềm MVC cho ứng dụng MVC được viết tắt cho Model-View-Controller Ý tưởng của kiến trúc này là mỗi thành phần sẽ có một mục đích riêng của nó, nhằm giúp tách biệt các phần của ứng dụng, làm cho mã nguồn được quản lý dễ hơn, tái sử dụng linh hoạt Ngoài ra, nó còn giúp cải thiện khả năng bảo trì và mở rộng của ứng dụng
Hình 3.42 Kiến trúc MVC và các thành phần
3.3.2 Mô tả các thành phần trong hệ thống
STT Thành phần Diễn giải
1 Model Là thành phần liên quan đến dữ liệu, được sử dụng giữa View và Controller Nó có thể thêm hoặc truy xuất từ cơ sở dữ liệu
2 Controller Là thành phần giúp kết nối giữa Model và
View, xử lý toàn bộ logic, xử lý yêu cầu của người dùng bằng cách tương tác với Model và hiển thị lên View hiển thị đầu ra cuối cùng
3 View Là thành phần đại diện giao diện của ứng dụng Được hiển thị với những dữ liệu được xử lý từ Controller
Bảng 3.19 Bảng mô tả các thành phần trong hệ thống
Thiết kế dữ liệu
Hình 3.43 Hình thiết kế dữ liệu
Danh sách chi tiết các bảng trong dữ liệu
STT Tên quan hệ Ý nghĩa
1 AUTH Thông tin xác thực đăng nhập
2 USERS Thông tin người dùng
3 POSTS Thông tin bài viết
4 REACTIONS Thông tin sự tương tác
5 COMMENTS Thông tin bình luận
6 MESSAGES Thông tin tin nhắn
7 CONVERSATIONS Thông tin cuộc hội thoại
8 NOTIFICATIONS Thông tin thông báo
9 FOLLOWERS Thông tin người theo dõi
10 SAVEDPOSTS Thông tin bài viết được lưu
Bảng 3.20 Danh sách các bảng trong cơ sở dữ liệu
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã thông tin xác thực
2 username String Tên người dùng
3 full_name String Họ tên
5 password_reset_token Int Mã reset mật khẩu
6 avatar String Ảnh đại diện
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã người dùng
2 auth_id String FK Mã thông tin xác thực
3 blocked_id String[] FK Danh sách ID người dùng bị chặn
4 blocked_by_id String[] FK Danh sách ID bị chặn bởi người dùng
5 posts_count Number Số lượng bài viết
6 password_reset_token String Mã reset mật khẩu
7 profile_picture String URL ảnh cá nhân
8 followers_count Number Số lượng người theo dõi
9 following_count Number Số lượng đang theo dõi người khác
13 created_at Date Thời gian tạo
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã bài viết
2 user_id String FK Mã người dùng
3 reaction_ids String[] FK Danh sách ID tương tác
5 img_id String Mã ảnh ở cloud
6 img_version String Phiên bản ảnh ở cloud
7 video_id String Mã video ở cloud
8 video_version Number Phiên bản ảnh ở cloud
9 comments_count Number Số lượng bình luận
10 reactions_count Number Số lượng tương tác
11 created_at Date Thời gian tạo bài viết
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã tương tác
2 user_to String FK Mã người dùng được tương tác
3 post_id String FK Mã bài viết
4 created_at Date Thời gian tạo
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã bài viết
2 user_id String FK Mã người dùng
3 reaction_ids String[] FK Danh sách ID tương tác
5 img_id String Mã ảnh ở cloud
6 img_version String Phiên bản ảnh ở cloud
7 video_id String Mã video ở cloud
8 video_version Number Phiên bản ảnh ở cloud
9 comments_count Number Số lượng bình luận
10 reactions_count Number Số lượng tương tác
11 created_at Date Thời gian tạo
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã tin nhắn
2 conversation_id String FK Mã đoạn hội thoại
3 receiver_id String FK Mã người nhận
4 sender_id String FK Mã người gửi
5 content String Nội dung tin nhắn
6 created_at Date Thời gian tạo tin nhắn
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã đoạn hội thoại
2 user1_id String FK Mã người dùng 1
3 user2_id String FK Mã người dùng 2
4 created_at Date Thời gian tạo cuộc trò chuyện
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã bài viết
2 user_to_id String FK Mã người dùng gửi tới
3 user_id String FK Mã người tương tác
4 entity_id String FK Mã thực thể tương tác
5 message String Nội dung thông báo
6 is_read Boolean Đã đọc tin nhắn
7 type_notification String Loại thông báo
8 created_at Date Thời gian tạo thông báo
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã bảng
2 follower_id String FK Mã người được theo dõi
3 followed_by_id String FK Mã người theo dõi
4 created_at Date Thời gian tạo
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa
1 _id String PK Mã lưu bài viết
2 post_id String FK Mã bài viết được lưu
3 user_id String FK Mã người dùng
4 created_at Date Thời gian tạo
Thiết kế giao diện
Hình 3.44 Sơ đồ liên kết màn hình
Hình 3.45 Màn hình đăng nhập
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Đăng nhập Đăng nhập vào hệ thống bằng username và password
Khi người dùng nhập đầy đủ cả hai trường username và password
2 Đến màn hình đăng ký Đăng ký một tài khoản
Khi người dùng ấn vào button Sign up
3 Đến màn hình quên mật khẩu Yêu cầu đổi mật khẩu
Khi người dùng ấn vào button Forget password
Bảng 3.31 Bảng mô tả màn hình đăng nhập
Hình 3.46 Màn hình đăng ký
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Đăng ký Tạo một tài khoản mới
Khi người dùng nhập đầy đủ các trường
Bảng 3.32 Bảng mô tả màn hình đăng ký
3.5.3 Màn hình quên mật khẩu
Hình 3.47 Màn hình quên mật khẩu
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Submit Gửi yêu cầu đổi mật khẩu
Khi người dùng nhập đầy đủ các trường
Bảng 3.33 Bảng mô tả màn hình quên mật khẩu
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Home Di chuyển đến màn hình chính
Khi người dùng nhấn nút Home
2 Search Di chuyển đến màn hình tìm kiếm
Khi người dùng nhấn nút Search
Di chuyển đến màn hình cuộc trò chuyện
Khi người dùng nhấn nút Messages
Di chuyển đến màn hình thông báo
Khi người dùng nhấn nút
Di chuyển đến màn hình trang cá nhân
Khi người dùng nhấn nút có chứa ảnh đại diện
Bảng 3.34 Bảng mô tả màn hình chính
Hình 3.49 Màn hình tìm kiếm
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Posts Tìm kiếm các bài viết
Khi người dùng đã nhập từ khoá và nhấn nút Enter
2 People Tìm kiếm người dùng
Khi người dùng đã nhập từ khoá và nhấn nút Enter Bảng 3.35 Bảng mô tả màn hình tìm kiếm
3.5.6 Màn hình cuộc trò chuyện
Hình 3.50 Màn hình cuộc trò chuyện
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Chọn hình ảnh Lấy ảnh từ máy người dùng
Khi người dùng nhấn nút biểu tượng ảnh
2 Gửi tin nhắn Gửi tin nhắn
Khi người dùng nhấn biểu tượng tin nhắn ở góc phải màn hình
Khi người dùng nhấn biểu tượng gọi Audio
Khi người dùng nhấn biểu tượng gọi Video
Bảng 3.36 Bảng mô tả màn hình cuộc trò chuyện
Hình 3.51 Màn hình thông báo
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Xem tất cả các thông báo
Xem tất cả các thông báo
Khi người dùng nhấn nút All
Xem tất cả các thông báo chưa được đọc
Xem tất cả các thông báo chưa được đọc
Khi người dùng nhấn nút Unread
3 Di chuyển đến bài viết/người dùng
Xem nội dung tuỳ thuộc vào thông điệp của thông báo
Khi người dùng nhấn bất kỳ một thông báo
Bảng 3.37 Bảng mô tả màn hình thông báo
3.5.8 Màn hình chi tiết bài viết
Hình 3.52 Màn hình chi tiết bài viết
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Like Thích bài viết Khi người nhấn biểu tượng tim
2 Xem danh sách người like
Xem danh sách người like
Khi người dùng nhấn vào nút xem danh sách (nút 1 like ở trên ảnh)
3 Bình luận Tạo một bình luận
Khi người dùng đã điền nội dung bình luận và nhấn nút Enter
4 Chia sẻ bài viết Chia sẻ bài viết
Khi người dùng nhấn biểu tượng chia sẻ
Bảng 3.38 Bảng mô tả màn hình chi tiết bài viết
3.5.9 Màn hình cài đặt thông tin tài khoản
Hình 3.53 Màn hình cài đặt thông tin tài khoản
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Thanh điều hướng cài đặt
Dùng để diều hướng tới những trang cài đặt khác nhau
Người dùng nhấn vào button ở thanh điều hướng cài đặt
Dùng để nhập thông tin quote mới
Người dùng nhấn vào text button quote trên màn hình để nhập quote mới
Dùng để nhập thông tin việc làm mới
Người dùng nhấn vào text button quote trên màn hình để nhập việc làm mới
Dùng để nhập thông tin trường học
Người dùng nhấn vào text button school trên màn hình để nhập việc làm mới
5 Button Location Dùng để chọn vị trí
Người dùng nhấn vào button
Location trên màn hình để hiển thị danh sách các quốc gia
6 Button Save Dùng lưu thông tin người dùng
Người dùng nhấn vào button Save trên màn hình Bảng 3.39 Bảng mô tả màn hình cài đặt thông tin tài khoản
3.5.10 Màn hình cài đặt thông báo
Hình 3.54 Màn hình cài đặt thông báo
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Thanh điều hướng cài đặt
Dùng để diều hướng tới những trang cài đặt khác nhau
Người dùng nhấn vào button ở thanh điều hướng cài đặt
2 Button switch all Dùng để tắt/ bật tất cả thông báo
Người dùng nhấn vào switch on/off trên màn hình để quản lý thông báo
Dùng để tắt/ bật tất cả thông báo tin nhắn
Người dùng nhấn vào switch on/off trên màn hình để bật tắt thông báo tin nhắn
Dùng để tắt/ bật tất cả thông báo tương tác
Người dùng nhấn vào switch on/off trên màn hình để bật tắt thông báo tương tác
Dùng để tắt/ bật tất cả thông báo bình luận
Người dùng nhấn vào switch on/off trên màn hình để bật tắt thông báo bình luận
Dùng để tắt/ bật tất cả thông báo người theo dõi
Người dùng nhấn vào switch on/off trên màn hình để bật tắt thông báo người theo dõiBảng 3.40 Bảng mô tả màn hình cài đặt thông báo
3.5.11 Màn hình quản lí nội dung của bạn
Hình 3.55 Màn hình quản lý nội dung của bạn
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Thanh điều hướng cài đặt
Dùng để diều hướng tới những trang cài đặt khác nhau
Người dùng nhấn vào button ở thanh điều hướng cài đặt
Button Text See and manage accounts you’ve blocked Điều hướng tới trang danh sách người bị chặn
Người dùng nhấn vào text button trên màn hình Bảng 3.41 Bảng mô tả màn hình quản lý nội dung của bạn
3.5.12 Màn hình quản lí danh sách chặn
Hình 3.56 Màn hình quản lý danh sách chặn
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Thanh điều hướng cài đặt
Dùng để diều hướng tới những trang cài đặt khác nhau
Người dùng nhấn vào button ở thanh điều hướng cài đặt
2 Button Unblock Hủy chặn người dùng
Người dùng nhấn vào button
Bảng 3.42 Bảng mô tả màn hình quản lý danh sách chặn
3.5.13 Màn hình cập nhật mật khẩu mới
Hình 3.57 Màn hình cập nhật mật khẩu mới
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Thanh điều hướng cài đặt
Dùng để diều hướng tới những trang cài đặt khác nhau
Người dùng nhấn vào button ở thanh điều hướng cài đặt
Dùng để nhập thông tin mật khẩu hiện tại
Người dùng nhấn vào textbox current password trên màn hình để nhập mật khẩu hiện tại
Dùng để nhập thông tin mật khẩu mới
Người dùng nhấn vào textbox password trên màn
93 hình để nhập mật khẩu mới
Dùng để nhập thông tin xác thực mật khẩu mới
Người dùng nhấn vào textbox confirm password trên màn hình để xác thực nhập mật khẩu mới
5 Button Saved Giúp cập nhật mật khẩu mới
Người dùng nhấn vào button Save trên màn hình
3.5.14 Màn hình trang cá nhân (bài viết người dùng)
Hình 3.58 Màn hình trang cá nhân (bài viết người dùng)
STT Tên xử lý Ý nghĩa Điều kiện gọi
1 Button Post Giúp hiển thị trang bài viết người dùng
Người dùng nhấn vào button Post trên màn hình
2 Button Images Giúp hiển thị trang ảnh người dùng đã đăng
Người dùng nhấn vào button Images trên màn hình
3 Button Saved Giúp hiển thị trang bài viết người dùng đã lưu
Người dùng nhấn vào button Saved trên màn hình
Bảng 3.43 Bảng mô tả màn hình trang cá nhân (bài viết người dùng)
3.5.15 Màn hình trang cá nhân (ảnh hoặc video)
Hình 3.59 Màn hình trang cá nhân (ảnh/video)
STT Tên xử lý Ý nghĩa Điều kiện gọi
Giúp hiển thị trang bài viết người dùng
Người dùng nhấn vào button Post trên màn hình
Giúp hiển thị trang ảnh người dùng đã đăng
Người dùng nhấn vào button Images trên màn hình
Giúp hiển thị trang bài viết người dùng đã lưu
Người dùng nhấn vào button Saved trên màn hình Bảng 3.44 Bảng mô tả màn hình trang các nhân (ảnh/video)
3.5.16 Màn hình trang cá nhân (bài viết được lưu)
Hình 3.60 Màn hình trang cá nhân (bài viết được lưu)
STT Tên xử lý Ý nghĩa Điều kiện gọi
Giúp hiển thị trang bài viết người dùng
Người dùng nhấn vào button Post trên màn hình
Giúp hiển thị trang ảnh người dùng đã đăng
Người dùng nhấn vào button Images trên màn hình
Giúp hiển thị trang bài viết người dùng đã lưu
Người dùng nhấn vào button Saved trên màn hình Bảng 3.45 Bảng mô tả màn hình trang cá nhân (bài viết được lưu)
CÀI ĐẶT VÀ THỬ NGHIỆM
Công nghệ sử dụng
STT Tên công nghệ Mục đích
1 Express.js Được sử dụng để thiết kế và xây dựng server cho ứng dụng
2 ReactJS Được sử dụng để thiết kế và xây dựng giao diện cho trang web
3 MongoDB Được xây dựng để lưu trữ dữ liệu của ứng dụng
4 Redis Được sử dụng để cache dữ liệu, tăng trải nghiệm người dùng
Là một công cụ tìm kiếm được tích hợp ở trong MongoDB Atlas Được xây dựng dựa trên Apache Lucene Bảng 4.1 Bảng các công nghệ đã sử dụng trong đồ án
Cài đặt
Mã nguồn phía Server: https://github.com/PhuGHs/InstacloudBackend.git
Mã nguồn phía Client: https://github.com/hungcqa23/social_media_pj1.git
4.2.2 Hướng dẫn cài đặt Đầu tiên, để chạy được ứng dụng, ta cần phải cài Node.js Ta có thể tải ở đường link sau: Download | Node.js (nodejs.org)
Sau khi cài đặt thành cụng, ta tiến hành cài đặt Redis ở đường link Releases ã tporadowski/redis (github.com) và chọn Redis-x64-5.0.14.1.msi để cài đặt như hình bên dưới
Hình 4.1 Hướng dẫn cài đặt Redis
Tiếp theo, ta tiến hành tải mã nguồn của server và client về máy bằng cách dùng lệnh git clone:
Git clone https://github.com/PhuGHs/InstacloudBackend.git
Git clone https://github.com/hungcqa23/social_media_pj1.git
Ta vào từng thư mục chứa mã nguồn, chạy lệnh npm install để cài các phụ thuộc Cuối cùng là gõ npm run dev để chạy ứng dụng Ngoài ra, ta cần cài file môi trường, chi tiết tham khảo ở mục Readme trên đường link sau: https://github.com/PhuGHs/InstacloudBackend.git
Thử nghiệm
STT Chức năng Mức độ hoàn thành Ghi chú
6 Quản lý trang cá nhân 100%
8 Quản lý bình luận của bài viết 100%
Chức năng xoá thông báo chưa được cài đặt trên client
10 Quản lý cuộc trò chuyện 90%
Chức năng xoá tin nhắn chưa được cài đặt trên client
11 Quản lý ảnh và video cá nhân 100%
11 Tìm kiếm người dùng và bài viết 100%
Bảng 4.2 Bảng đánh giá mức độ hoàn thành và thử nghiệm ứng dụng
NHẬN XÉT VÀ KẾT LUẬN
- Giảng viên hướng dẫn tận tình, có hỗ trợ, định hướng nghiên cứu và thực hiện đề tài cho nhóm
- Các tài liệu về công nghệ liên quan khá phổ biến trên Internet
- Bởi vì đây là lần đầu thực hiện một đồ án lớn với ReactJS, NodeJS nên quá trình tìm hiểu về công nghệ và sắp xếp cấu trúc và bố cục thư mục ứng dụng của nhóm gặp nhiều khó khăn và mất khá nhiều thời gian
- Hoàn thành yêu cầu đặt ra ban đầu, đáp ứng được tương đối đầy đủ tính năng cần thiết của một ứng dụng mạng xã hội
- Tốc độ phản hồi nhanh, trải nghiệm người dùng được tối ưu
- Sinh viên được tiếp xúc với các công nghệ mới, được trau dồi kỹ năng làm việc nhóm, lên kế hoạch
- Nhóm chưa thể thực hiện chức năng Quản lý nhóm cho phép người dùng tạo nhóm gồm các người dùng chung sở thích về một chủ đề bất kỳ
- Nhóm chưa thể thực hiện chức năng Nhóm trò chuyện, là chức năng hỗ trợ người dùng tạo một nhóm chat gồm 3 người trở lên, từ đó các người dùng có thể nhắn tin cho nhau trong nhóm
- Ứng dụng chưa được trang bị chức năng đăng nhiều ảnh trong một bài viết
- Xây dựng và mở rộng thêm các chức năng như tạo tài khoản dành cho người nổi tiếng, các trang của các doanh nghiệp, chức năng tạo nhóm cộng đồng và nhóm trò chuyện giữa các người dùng
- Hoàn thiện các chức năng đã được phát triển trước đó
- Bổ sung các chức năng chưa hoàn thành
- Cung cấp khả năng chuyển đổi ngôn ngữ