====o0o==== BÁO CÁO NHÓM KHOA CÔNG NGHỆ THÔNG TIN MÔN HỌC PHÂN TÍCH, THIẾT KẾ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM ĐỀ TÀI XÂY DỰNG WEBSITE MẠNG XÃ HỘI CÓ KIỂM SOÁT NỘI DUNG Giáo viên hướng dẫn ThS NGUYỄN AN.
Trang 1BÁO CÁO NHÓM KHOA: CÔNG NGHỆ THÔNG TIN MÔN HỌC: PHÂN TÍCH, THIẾT KẾ VÀ ĐẢM BẢO
CHẤT LƯỢNG PHẦN MỀM
ĐỀ TÀI: XÂY DỰNG WEBSITE MẠNG XÃ HỘI CÓ KIỂM SOÁT NỘI
DUNG
Giáo viên hướng dẫn: ThS NGUYỄN ANH HÀO
TP Hồ Chí Minh, ngày 18 tháng 10 năm 2022
Trang 2II Phân tích hệ thống
1 Ngữ cảnh của hệ thống:
Hiện nay, các mạng xã hội trở thành nơi mà người dùng sử dụng để kết nối với nhau Đây là nơi chúng ta có thể gặp mặt người thân, bạn bè mặc dù cách xa về mặt địa lý, mạng xã hội giúp duy trì các mối quan hệ thân thiết và tạo lập, xây dựng các mối quan
Trang 3hệ mới.
Tuy nhiên, cũng cần nhận thấy không ít người dùng nghĩ rằng tự do internet, tự do mạng
xã hội là vô hạn, không thấy rõ sự gắn bó giữa quyền lợi với nghĩa vụ và trách nhiệm của mình khi tham gia mạng xã hội Đặc biệt, tình trạng tin giả, lừa đảo, xuyên tạc, bịa đặt qua mạng xã hội là một trong những vấn đề nhức nhối nổi lên thời gian qua Do vậy việc kiểm duyệt những nội dung như thế là cần thiết để đảm bảo tính trong sạch của mạng xã hội Nhưng các mạng xã hội hiện tại không hỗ trợ kiểm duyệt nội dung tự động, quản trị viên phải kiểm duyệt nội dung một cách thủ công
Trang 42 Lược đồ usecase cho phân tích
Lược đồ tuần tự:
Trang 5Sơ đồ Usecase U01: Tạo bài viết
- Actors: User, Bài viết
Trang 6Sơ đồ Usecase U02: Tạo bình luận
- Actors: User, Bài viết
Trang 7Sơ đồ Usecase U03: Thích bài viết
Trang 8- Actors: User, Bài viết
Sơ đồ usecase tổng quát:
Trang 9Lược đồ tuần tự:
Sơ đồ Usecase U04: Gửi lời mời kết bạn, Nhận lời mời, Hồi đáp lời mời
- Actors: User, lời mời kết bạn
Trang 10Sơ đồ Usecase U05: Gửi tin nhắn, Nhận tin nhắn.
- Actors: User, Hộp tin nhắn
Trang 11Sơ đồ usecase U06: Xử lý vi phạm
- Actors: Admin, Bài viết
Trang 123 Yêu cầu ràng buộc với phần mềm
a/ Yêu cầu từ môi trường nghiệp vụ (business)
Trang 13Người dùng được phép đăng bài, chia sẻ, bình luận bất kì nội dung nào dưới dạng chữ, hình ảnh, âm thanh, video…
dùng
F01.2
Quản trị viên phải được quyền quản lý nội dung
Quản trị viên được phép xóa, cấm, chặn người dùng hoặc những nội dung do người dùng đăng, bình luận, chia sẻ nếu vi phạm chính sách Quản trịviên
F01.3
Quản trị viên phải được quyền quản lý chính sách
Quản trị viên phải được phép tạo nhiều chính sách và chọn 1 hoặc nhiều chính sách để áp dụng
Quản trị viên
b/ Yêu cầu từ môi trường vận hành (operation)
Trợ giúp người dùng viết bài viết
Tạo interface giúp đỡ người dùng điều chỉnh font, kích cỡ chữ, thêm hình ảnh, biểu tượng đặc biệt, emoji Ví dụ: Ck Editor.
Mạng xã hội
F01.02
Thông báo về bài viết cho người dùng
Khi một người dùng dùng kí hiệu @ để tag một người dùng Thì người dùng đặt trorng kí hiệu @ sẽ nhận được thông báo về bài viết đó. Mạng xãhội
Trợ giúp người dùng xem bài viết
Người dùng phải xem được các bài viết do bạn bè mình viết hoặc chia sẻ
Mạng xã hội
F01.02 Thông báo về bình luận trả lời
Khi một người dùng dùng kí hiệu @ để tag một người dùng Thì người dùng đặt trorng kí hiệu @ sẽ nhận được thông báo về bình luận đó.
Mạng xã hội
Trang 14Thông báo cho người dùng đăng bài viết
Người dùng sẽ nhận được thông báo về lượt thích từ bài viết của họ
Thông báo sẽ chỉ hiện 2-3 người dùng gần nhất với tổng số lượt thích còn lại Ví dụ: Nguyễn Văn A, Trần B và 32 người khác đã thích bài viết của bạn Người dùng sẽ được lựa chọn tắt thông báo về lượt thích của bài viết.
F01.02
Thông báo danh sách lời mời kết bạn
Ưu tiên hiện các người dùng có lượng bạn bè chung cao hơn.
Mạng xã hội
Người dùng
F01.02
Tạo tiếng báo cho người dùng
Khi người dùng sử dụng kí hiệu @ để tag người dùng, nếu người dùng trong hộp tin nhắn đang online thì người dùng được tag sẽ được nghe một tiếng còi báo đặc biệt về tin nhắn mới.
Mạng xã hội
Trang 15Người dùng
F01.01.1
Trợ giúp người dùng xem chính sách
Người dùng phải xem được các chính sách và điều luật đang được áp
Mạng xã hội
c/ Yêu cầu từ môi trường phát triển (development)
Stack-Holder
TA01 Application Server: Intel, Windows 10, cpu I7, hdd 5T, mem 32G Khách
hàngTD0
2
Software Viết code trên Visual Studio Code đối với Front-end
và Visual Studio đối với Back-end Dev teamTD0
3
Software Dùng Angular 16 cho Front-end, NET Framework 6
Trang 17a) Usecase đăng ký – UD01
Sơ đồ tuần tự:
Trang 18b) Usecase đăng nhập – UD02
Sơ đồ tuần tự:
c) Use case tạo bài viết – UD03
Sơ đồ tuần tự:
Trang 19d) Usecase thích bài viết – UD04
Sơ đồ tuần tự:
Trang 20e) Use case chia sẻ bài viết – UD05
Sơ đồ tuần tự:
Trang 21f) Usecase bình luận bài viết – UD06
Sơ đồ tuần tự:
Trang 22g) Usecase kết bạn – UD07
Sơ đồ tuần tự:
Trang 23h) Usecase tìm kiếm – UD08
Sơ đồ tuần tự:
Trang 24i) Usecase đổi ảnh đại diện – UD09
Sơ đồ tuần tự:
Trang 25j) Usecase Nhắn tin – UD10
-Sơ đồ tuần tự:
Trang 261.2 Admin
Sơ đồ Usecase tổng quát của Admin
Trang 27a) Usecase Xóa bài viết, bình luận của người dùng – UD11
Sơ đồ tuần tự:
Trang 28b) Usecase quản lý hình phạt người dùng vi phạm chính sách – UD12
Sơ đồ tuần tự:
Trang 29c) Usecase soạn chính sách – UD13
-Sơ đồ tuần tự:
Trang 302 Các đối tượng trong thiết kế phần mềm
Outputs: Thông báo lỗi hoặc Form UF1.2
Xử lý: dùng API1.1 để kiểm tra dữ liệu
Trang 31Form UF1.2(Hình ảnh chỉ mang tính minh họa)
Inputs: Mã OTP người dùng nhập vào
Outputs: Thông báo nhập sai hoặc form UF1.3
Xử lý: dùng API1.2 để kiểm tra dữ liệu Nếu được chuyển tới form 1.3 thì dùng API1,3
để ghi dữ liệu
Trang 32Form UF1.3
Ảnh đại diện mặc định được hệ thống tự tạo
b) Api/Service
- SearchUserByName: API1.1
Inputs: Tên người dùng
Outputs: Danh sách người dùng có tên cần tìm
Xử lý: Lấy ra danh sách các người dùng có tên cần tìm trong database bằng cách gọi SP01
- SendOTPToPhone: API1.2
Inputs: Số điện thoại người dùng
Outputs: 1 nếu thành công, 0 nếu thất bại
Trang 33Xử lý: Sử dụng service từ bên thứ 3 để gửi OTP vào số điện thoại người dùng nhập vào
Ví dụ: Google OTP, D7 Verify, ShoutOUT OTP
- CreateUserAccount: API1.3
Inputs: Entity User
Outputs: 1 nếu thành công, 0 nếu không thất bại
Xử lý: Gọi SP_CreateUser và nhận kết quả trả về
c) DBMS Procedure
- SP_ SearchUserByName: SP01
Inputs: Chuỗi tên người dùng
Outputs: Danh sách người dùng có tên được nhập vào
Tables: User
- SP_CreateUser: SP02
Inputs: Entity User
Outputs: 1 nếu thành công, 0 nếu không thất bại
Trang 34a) Forms
Form UF2.1Inputs: Dữ liệu người dùng nhập vào
Outputs: Thông báo lỗi hoặc Form UF1.3
Xử lý: dùng API2.1 để kiểm tra dữ liệu
b) Api/Service
- SearchUserById: API2.1
Inputs: Id người dùng
Outputs: Entity User nếu tồn tại, null nếu không tồn tại
Xử lý: So sánh id từ input và các id người dùng có trong database bằng cách gọi SP2.1
Trang 35Inputs: Người dùng nhấn nút tạo bài viết
Outputs: Form UF3.2 hoặc thông báo lỗi
Xử lý: Nhảy giao diện
Trang 36Form UF3.2
Inputs: Dữ liệu người dùng nhập vào
Outputs: Thông báo lỗi hoặc Form UF3.3
Xử lý: dùng API3.1 để ghi dữ liệu
Trang 37Form UF3.3
b) Api/Service
- CreatePost: API3.1
Inputs: Id người dùng, Hình ảnh, Post Entity
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Xử lý: Ghi hình ảnh vào 1 file Image trên local Server và ghi nhận lại đường link vào Post Entity, ghi Id người dùng vào Post Entity Gọi SP3.1 để ghi dữ liệu
c) DBMS Procedure
- SP_ CreatePost: SP3.1
Trang 38Inputs: Post Entity
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Tables: User, Post
Trang 39Inputs: Người dùng nhấn nút thích
Outputs: Hightlight nút thích người dùng nhấn
Xử lý: dùng API 4.1 để ghi dữ liệu
b) Api/Service
- CreateReact: API4.1
Inputs: Id người dùng, Id bài viết
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Xử lý: Gọi SP4.1 để ghi dữ liệu
c) DBMS Procedure
- SP_ CreateReact: SP4.1
Inputs: Id người dùng, Id bài viết
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Tables: User, Post, React
Trang 40a) Forms
Form UF1.3
Inputs: Người dùng nhấn nút chia sẻ
Outputs: Tạo 1 bài viết với nội dung là của bài viết được chia sẻ
Xử lý: dùng API 5.1 để ghi dữ liệu
b) Api/Service
- CreateRePost: API5.1
Inputs: Id người dùng, Id bài viết
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Xử lý: Gọi SP5.1 để ghi dữ liệu
Trang 41c) DBMS Procedure
- SP_ CreateRePost: SP5.1
Inputs: Id người dùng, Id bài viết
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Tables: User, Post
Trang 42a) Forms
Form UF1.3
Inputs: Bình luận người dùng viết
Outputs: Hiện bình luận người dùng vừa đăng trên bài viết
Xử lý: dùng API 6.1 để ghi dữ liệu
Trang 43b) Api/Service
- CreateComment: API6.1
Inputs: Id người dùng, Id bài viết, nội dung bình luận
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Xử lý: Gọi SP6.1 để ghi dữ liệu
c) DBMS Procedure
- SP_ CreateComment: SP6.1
Inputs: Id người dùng, Id bài viết, nội dung bình luận
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Tables: User, Post, Comment
Outputs: Hiện form thông UF7.2 báo tại User B
Xử lý: dùng API 7.1 để ghi dữ liệu
Trang 44Form UF7.2Inputs: User B chọn nút Accept hoặc Decline
Outputs: Hiện thông báo tại User A
Xử lý: dùng API 7.2 để cập nhập dữ liệu
b) Api/Service
- CreateFriendShip: API7.1
Inputs: Id người dùng A, Id người dùng B
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Xử lý: Gọi SP7.1 để ghi dữ liệu
Inputs: Id người dùng, Id bài viết, nội dung bình luận
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Tables: User, Friendship
- SP_ UpdateFriendShip: SP7.2
Inputs: Id frienship, Status friendship
Outputs: 1 nếu cập nhập thành công, 0 nếu thất bại
Trang 45Tables: User, Friendship
Outputs: Hiện danh sách người dùng
Xử lý: dùng API 8.1 để tìm kiếm dữ liệu
b) Api/Service
- SearchFriendByName: API8.1
Inputs: Kí tự người dùng nhập vào
Outputs: danh sách người dùng
Xử lý: Gọi SP8.1 để lấy dữ liệu
c) DBMS Procedure
- SP_ SearchFriendByName: SP8.1
Inputs: Kí tự người dùng nhập vào
Trang 46Outputs: danh sách người dùng được sắp xếp theo mức độ bạn chungTables: User
Outputs: Hiện hình ảnh của người dùng vừa chọn
Xử lý: dùng API 9.1 để ghi dữ liệu
b) Api/Service
- UpdateImageUser: API9.1
Inputs: Id người dùng, hình ảnh
Trang 47Outputs: 1 nếu cập nhập thành công, 0 nếu thất bại
Xử lý: Ghi hình ảnh người dùng vào 1 file UserImage tại Local rồi triết xuất link Gọi SP9.1 để cập nhập dữ liệu
c) DBMS Procedure
- SP_ UpdateImageUser: SP9.1
Inputs: Id người dùng, link hình ảnh
Outputs: 1 nếu cập nhập thành công, 0 nếu thất bại
Outputs: Hiện form UF10.2
Xử lý: Nhảy giao diện dựa trên Id người dùng
Trang 48Inputs: Tin nhắn người dùng gửi
Outputs: Hiện tin nhắn nhận và gửi
Xử lý: Sử dụng API 10.1 để gửi tin nhắn và sử dụng API 10.2 để nhận tin nhắn
b) Api/Service
- SendMessageToUser: API10.1
Inputs: Id người dùng A, Id người dùng B, tin nhắn nhập người dùng A
Outputs: 1 nếu gửi và ghi thành công, 0 nếu thất bại
Xử lý: Gửi tin nhắn đến người dùng B và sử dụng SP10.1 để lưu tin nhắn
- ReceiveMessageFromUser: API10.2
Inputs: Id người dùng A, Id người dùng B
Outputs: Những tin nhắn nhận được từ người dùng A
Xử lý: Liên tục nhận tin nhắn từ người dùng A
Trang 49c) DBMS Procedure
- SP_ SendMessageToUser: SP10.1
Inputs: Id người dùng A, Id người dùng B, tin nhắn nhập người dùng A
Outputs: 1 nếu ghi cập nhập thành công, 0 nếu thất bại
Tables: User, Message
Trang 50a) Forms
Form UF1.3Inputs: Admin chọn nút xóa bài viết hoặc nút xoát bình luậnOutputs: Hiện thông báo xóa thành công hoặc thất bại
Xử lý: dùng API 11.1 và 11.2 để xóa dữ liệu
b) Api/Service
- DeletePost: API11.1
Trang 51Inputs: Id người dùng, Id bài viết
Outputs: 1 nếu xóa thành công, 0 nếu thất bại
Xử lý: Gọi SP11.1 để xóa dữ liệu
- DeleteComment: API11.2
Inputs: Id người dùng, Id bài viết, Id comment
Outputs: 1 nếu xóa thành công, 0 nếu thất bại
Xử lý: Gọi SP11.2 để xóa dữ liệu
c) DBMS Procedure
- SP_ DeletePost: SP11.1
Inputs: Id người dùng, Id bài viết
Outputs: 1 nếu xóa thành công, 0 nếu thất bại
Tables: User, Post
- SP_ DeleteComment: SP11.2
Inputs: Id người dùng, Id bài viết, Id comment
Outputs: 1 nếu xóa thành công, 0 nếu thất bại
Tables: User, Post, Comment
Trang 52a) Forms
Form UF12.1Inputs: Hình phạt Admin chọn thêm vào hoặc xóa cho User vi phạm chính sách
Outputs: Áp dụng hình phạt hoặc loại bỏ hình phạt nếu cập nhật thành công, sau đó gửi thông báo cho người dùng
Xử lý: dùng API 12.1 để cập nhật hình phạt, API 12.2 để xóa hình phạt, API 12.3 để thêm người dùng vi phạm, API để xóa người dùng vi phạm, API 12.5 để gửi thông báo tới người dùng
Trang 53- AddUserToBlacklist: API12.3
Inputs: Id Blacklist, Id Rule, Id User
Outputs: 1 nếu thêm thành công, 0 nếu thất bại
Xử lý: Gọi SP12.3 để thêm người dùng vào danh sách vi phạm
- RemoveUserFromBlacklist: API12.4
Inputs: Id User, Id Blacklist
Outputs: 1 nếu xóa thành công, 0 nếu thất bại
Xử lý: Gọi SP12.4 để xóa vi phạm
- NotifyUser: API12.5
Inputs: Id User, Id Rule
Outputs: 1 nếu gửi thành công, 0 nếu thất bại
Xử lý: Gửi thông báo cho người dùng về hình phạt
Inputs: Id Blacklist, Id Rule, Id User
Outputs: 1 nếu cập nhập thành công, 0 nếu thất bại
Tables: Blacklists
- SP_ RemoveUserFromBlacklist: SP12.4
Trang 54Inputs: Id Blacklist, Id User
Outputs: 1 nếu xóa thành công, 0 nếu thất bạiTables: Blacklists
Outputs: Thông báo thành công hoặc thông báo lỗi
Xử lý: Dùng API13.1 để ghi dữ liệu
b) Api/Service
- UpsertPolicy: API13.1
Trang 55Inputs: PolicyEntity, RuleEntity[ ]
Outputs: 1 nếu ghi thành công, 0 nếu thất bại
Xử lý: Gọi SP13.1 để ghi dữ liệu
c) DBMS Procedure
- SP_ UpsertPolicy: SP13.1
Inputs: PolicyEntity, RuleEntity[ ]
Outputs: 1 nếu ghi thành công, 0 nếu thất bạiTables: Policies, Rules
3 Cơ sở dữ liệu và ràng buộc
3.1 Lược đồ ERD
Trang 563.2 Database diagram
3.3 Bảng và ràng buộc
a) User
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh người dùng
Email nvarchar(max) Email của người dùng, dùng để đăng nhập Password nvarchar(max) Mật khẩu dùng để đăng nhập
FirstName nvarchar(max) Tên
LastName nvarchar(max) Họ
Phone nvarchar(max) Số điện thoại
DateOfBirth datetime2(7) Ngày tháng năm sinh
CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
-Thẻ CRC:
Trang 57b) Posts
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh bài viết
Caption nvarchar(max) Tiêu đề bài viết
UserId uniqueidentifier Mã tham chiếu đến bảng Users
SharePostId uniqueidentifier Mã định danh của bài viết được chia sẻ CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
-Thẻ CRC:
Trang 58c) Contents
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh nội dung
TextContent nvarchar(max) Mô tả nội dung
LinkContent nvarchar(max) Tên file liên kết với nội dung
PostId uniqueidentifier Mã tham chiếu đến bảng Posts CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
- Thẻ CRC:
d) Reacts
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh tương tác
UserId uniqueidentifier Mã tham chiếu đến bảng Users PostId uniqueidentifier Mã tham chiếu đến bảng Posts CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
-Thẻ CRC:
Trang 59e) Comments
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh bình luận
Comment nvarchar(max) Nội dung bình luận
UserId uniqueidentifier Mã tham chiếu đến bảng Users
PostId uniqueidentifier Mã tham chiếu đến bảng Posts
CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
Trang 60g) Messages
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh tin nhắn
Message nvarchar(max) Nội dung tin nhắn
UserId uniqueidentifier Mã tham chiếu đến bảng Users ChatroomId uniqueidentifier Mã tham chiếu đến bảng Chatrooms CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
-Thẻ CRC:
h) Chatrooms
Thuộc tính Kiểu dữ liệu Diễn giải
Id uniqueidentifier Mã định danh cuộc trò chuyện ChatroomName nvarchar(max) Tên cuộc trò chuyện
CreatedTime datetime2(7) Thời gian tạo
UpdatedTime datetime2(7) Thời gian cập nhật
-Thẻ CRC: