You are on page 1of 114

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Nhóm 1
Ngô Đức Anh - 19020074
Thái Đức Anh - 19020208
Đặng Thị Bình - 19020223
Lê Quang Duy - 18020413

BÁO CÁO CUỐI KỲ


HỆ THỐNG HỎI ĐÁP UET ASK

Môn học: Phân tích và thiết kế hướng đối tượng


Mã lớp môn học: 2122II_INT3110_5
Giảng viên: TS. Trần Hoàng Việt

HÀ NỘI - 05/2022
MỤC LỤC
PHẦN 1: XÁC ĐỊNH VẤN ĐỀ ...........................................................................4
Tài liệu xác định vấn đề ................................................................................. 4
PHẦN 2: ĐẶC TẢ YÊU CẦU .............................................................................6
Tài liệu đặc tả yêu cầu ....................................................................................6
Tài liệu đặc tả ca sử dụng .............................................................................10
Tài liệu đặc tả bổ sung ..................................................................................24
Bảng chú giải (Glossary) ..............................................................................26
PHẦN 3: PHÂN TÍCH KIẾN TRÚC ................................................................ 28
Tài liệu phân tích kiến trúc ...........................................................................28
PHẦN 4: PHÂN TÍCH CA SỬ DỤNG ............................................................. 32
Tài liệu phân tích ca sử dụng ....................................................................... 32
PHẦN 5: CÁC PHẦN TỬ THIẾT KẾ .............................................................. 52
Tài liệu xác định các phần tử thiết kế .......................................................... 52
PHẦN 6: CƠ CHẾ THIẾT KẾ ...........................................................................58
Tài liệu xác định các cơ chế thiết kế ............................................................58
PHẦN 7: KIẾN TRÚC THỰC THI ...................................................................60
Tài liệu mô tả kiến trúc thực thi ................................................................... 60
PHẦN 8: SỰ PHÂN PHỐI ................................................................................ 64
Tài liệu mô tả sự phân phối ..........................................................................64
PHẦN 9: THIẾT KẾ CA SỬ DỤNG ................................................................ 66
Tài liệu thiết kế ca sử dụng .......................................................................... 66
PHẦN 10: THIẾT KẾ HỆ THỐNG CON ......................................................... 99
Tài liệu thiết kế hệ thống con .......................................................................99
PHẦN 11: THIẾT KẾ LỚP ..............................................................................102
Tài liệu thiết kế lớp .....................................................................................102
PHẦN 12: THIẾT KẾ CƠ SỞ DỮ LIỆU ........................................................ 109
Tài liệu thiết kế cơ sở dữ liệu .....................................................................109

2
BẢNG THUẬT NGỮ & TỪ VIẾT TẮT
Một số từ được dùng nhiều trong tài liệu hoặc các thuật ngữ viết tắt sẽ
được trình bày ở dưới đây để tiện cho việc theo dõi.

STT Từ viết tắt Thuật ngữ tiếng Anh Nghĩa tiếng Việt

University of Engineering Đại học Công nghệ (Đại


1 UET
and Technology học quốc gia Hà Nội)

Đại học Quốc gia Hà


2 ĐHQGHN
Nội

Application Programming Giao diện lập trình ứng


3 API
Interface dụng

Relational Database
4 RDBMS Hệ quản trị cơ sở dữ liệu
Management System

5 RMI Remote Method Invocation Gọi phương thức từ xa

Secure Sockets Layer/ Tầng socket bảo mật /


6 SSL/TLS
Transport Layer Security Bảo mật ở tầng giao vận

Crytographic Security Giao thức bảo mật mật


7
Protocol mã

8 LAN Local Access Network Mạng cục bộ

3
PHẦN 1: XÁC ĐỊNH VẤN ĐỀ
Tài liệu xác định vấn đề
1. Giới thiệu vấn đề
1.1. Thực trạng
Trong quá trình học tập tại trường đại học, sinh viên dù là năm nhất hay
năm cuối thường có nhiều bỡ ngỡ, thắc mắc về việc học tập, thi cử, việc làm,…
Những lúc như vậy, việc tìm đến đúng người có thể giải đáp những thắc mắc
đó nhường như rất khó khăn, vì không phải sinh viên nào cũng có nhiều mối
quan hệ với những người xung quanh, trong khi thực tế rằng, đó là những việc
mà nhiều sinh viên, cực sinh viên khác có thể cũng đã từng gặp phải và trải qua,
vì vậy họ sẽ có thể có cách giải quyết cho vấn đề đó.
Thêm nữa, một số việc đôi khi quá nhỏ nhặt để nhờ đến sự giúp đỡ của
nhà trường và thầy cô. Việc nhờ liên hệ này đôi khi cũng hơi phức tạp khiến
nhiều bạn sinh viên e dè và không dám nhờ vả.
Nhận thấy những vấn đề và mong muốn này từ các bạn sinh viên, nhóm
chúng em đề xuất xây dựng một hệ thống hỏi đáp để khắc phục vấn đề này.
1.2. Yêu cầu đặt ra
Có một nền tảng nào đó giúp các bạn sinh viên và các cựu sinh viên có
thể kết nối với nhau. Ở đó, mọi người có thể đặt ra những thắc mắc, nêu ra
những khó khăn của bản thân và nhận về những lời tư vấn từ những thành viên
khác trong hệ thống. Nhờ đó, có thể tạo ra một môi trường kết nối giữa những
có thắc mắc, câu hỏi tới những người có câu trả lời. Người hỏi cũng có thể hỏi
về thoải mái hỏi về nhiều vấn đề và sẽ nhận về những lời hồi đáp nhanh chóng
hơn.
2. Giải pháp
2.1. Mô tả
Để giải quyết vấn đề đã nêu ra ở trên, nhóm chúng em sẽ xây dựng một
hệ thống hỏi đáp dành riêng cho sinh viên, cựu sinh viên trường Đại học Công
nghệ, Đại học Quốc gia Hà Nội có tên gọi là UET Ask. Hệ thống sẽ được xây
dựng trên nền tảng một ứng dụng Web và sẽ đáp ứng được những yêu cầu đã
nêu ra ở trên.
2.2. Chức năng cơ bản

4
Hệ thống sẽ có một số chức năng cơ bản như sau:
- Đăng ký, đăng nhập vào hệ thống
- Chỉnh sửa thông tin cá nhân
- Đặt câu hỏi, thắc mắc mới
- Quản lý câu hỏi: chỉnh sửa, xóa,…
- Trả lời các câu hỏi của các thành viên khác
- Đánh giá các câu hỏi, bài viết
- Theo dõi những người dùng khác
- Báo cáo những bài viết vi phạm tiêu chuẩn cộng đồng

5
PHẦN 2: ĐẶC TẢ YÊU CẦU
Tài liệu đặc tả yêu cầu
1. Giới thiệu
Trong quá trình học tập tại trường đại học, sinh viên có nhiều thắc mắc,
bỡ ngỡ về việc học tập, thi cử, việc làm,... và thường không có nhiều người
quen, anh chị đi trước có nhiều kinh nghiệm để giải đáp, chia sẻ. Nhận thấy vấn
đề đó, nhóm mong muốn xây dựng một hệ thống hỏi đáp với tên gọi UET Ask
nhằm tạo ra một môi trường giúp kết nối sinh viên, cựu sinh viên trong trường
với nhau để giúp đỡ nhau, chia sẻ những kinh nghiệm quý giá và là một môi
trường lành mạnh để sinh viên trường Đại học Công nghệ, ĐHQGHN học tập,
phát triển.
Hệ thống hướng đến đối tượng là sinh viên đã và đang theo học tại UET.
Có hai thành phần tham gia vào hệ thống: người dùng và admin.
2. Các yêu cầu chức năng của hệ thống
2.1. Các chức năng của người dùng
2.1.1. Đăng nhập, đăng ký
- Dùng mail @vnu.edu.vn để đăng ký tài khoản, xác nhận tài khoản
bằng mã gửi về mail đã đăng ký. Khi đăng ký cần cung cấp thông tin về
username, password, tên, ngày tháng năm sinh, giới tính, khóa học (không bắt
buộc), ngành học (không bắt buộc),...
- Sau khi đăng ký thành công, đăng nhập vào hệ thống. Khi đăng nhập
lần đầu, hệ thống sẽ gợi ý một số các chủ đề để theo dõi.
- Trong trường hợp người dùng đã có tài khoản nhưng quên mật khẩu sẽ
nhấn nút quên mật khẩu và nhận hướng dẫn gửi về mail đã đăng ký.
2.1.2. Chỉnh sửa profile
- Người dùng có thể thay đổi các thông tin cá nhân như tên, khóa học,
ngành học, ngày tháng năm sinh, ảnh đại diện,…
- Người dùng có thể thay đổi mật khẩu.
2.1.3. Đặt một câu hỏi mới
- Người dùng có thể đặt câu hỏi mới.

6
- Gắn tag cho câu hỏi. Câu hỏi bắt buộc phải có ít nhất một tag từ danh
sách các tag đã có sẵn. Nếu muốn thêm tag mới, người dùng phải đề xuất lên
với admin và chờ admin phản hồi lại.
- Đặt visibility của câu hỏi (Cho mọi người hoặc cho những người
follow mình được xem câu hỏi).
- Sửa, xóa thông tin của câu hỏi.
- Ghim câu trả lời đã được xác thực là chính xác lên trên đầu.
2.1.4. Chỉnh sửa, quản lý các câu hỏi cũ
- Với những câu hỏi đã đăng trước đó, người dùng có thể chỉnh sửa nội
dung hoặc thay đổi các thẻ được gắn trong bài đăng đó, hoặc giới hạn lại những
người có thể nhìn thấy câu hỏi đó,…
- Người dùng có thể xóa vĩnh viễn một câu hỏi khỏi trang hiển thị của
mình.
2.1.5. Đánh giá một câu hỏi
- Người dùng có thể upvote, downvote các câu hỏi. Các câu hỏi với
upvote cao sẽ được ưu tiên hiển thị. Việc này sẽ giúp tăng tính hữu ích cho câu
hỏi và đóng góp vào sự phát triển của hệ th
2.1.6. Trả lời câu hỏi của người dùng khác
Với những câu hỏi mình biết câu trả lời, người dùng có thể tương tác ở
dưới bài viết của những người dùng khác.
2.1.7. Chỉnh sửa câu trả lời
- Với những câu trả lời đã đăng lên hệ thống, người dùng vẫn có thể
chỉnh sửa lại các thông tin liên quan.
- Người dùng có thể xóa hoàn toàn một câu trả lời mình đã đăng lên
khỏi hệ thống.
2.1.8. Theo dõi một người dùng khác
- Người dùng có thể xem trang cá nhân hiển thị danh sách các câu hỏi
của những người dùng khác.
- Nếu quan tâm đến một người dùng khác có thể nhấn nút follow để
tương tác tốt hơn với họ.

7
2.1.9. Báo cáo các câu trả lời vi phạm tiêu chuẩn cộng đồng
Để đóng góp vào sự phát triển của hệ thống, người dùng có thể báo cáo
với quản trị viên về những bài đăng, nhưng câu hỏi có nội dung, hình ảnh
không phù hợp với tiêu chuẩn đã được quy định. Admin sẽ tiếp nhận các phản
ánh này và có phương án giải quyết phù hợp.
2.2. Các chức năng của quản trị viên
2.2.1. Đăng nhập vào hệ thống
Quản trị viên sử dụng các tài khoản đã được cấp sẵn từ trước để đăng
nhập vào hệ thống và sử dụng các chức năng dưới quyền của một quản trị viên.
2.2.2. Quản lý hệ thống
- Quản trị viên có quyền xem danh sách người dùng trên hệ thống.
- Quản trị viên có quyền xem, xóa danh sách câu hỏi trên hệ thống.
- Quản trị viên có quyền xem, xóa danh sách câu trả lời trên hệ thống.
2.2.3. Xử lý các report về vi phạm
- Xem các báo cáo vi phạm đã được người dùng gửi về, đánh giá mức
độ nghiêm trọng và có hướng giải quyết phù hợp. Khi giải quyết xong, admin
đánh dấu đã xử lý.
- Xem lịch xử xử lý vi phạm.
- Xóa được bài viết vi phạm.
- Admin có thể xem được số lần vi phạm của một tài khoản. Tài khoản
của người vi phạm khi vượt quá 3 số lần vi phạm sẽ bị treo trong một tháng.
2.2.4. Xử lý các yêu cầu thêm tag mới.
Khi người dùng để xuất thêm tag mới, với các tag có nội dung trùng lặp,
admin sẽ đề xuất tag đã có sẵn trên hệ thống cho người dùng.
Nếu một tag mới chưa trùng lặp, thêm tag mới đó vào hệ thống và cho
phép người dùng đăng bài đó lên.
2.2.5. Hỗ trợ khi người dùng quên mật khẩu
- Xử lý các yêu cầu hỗ trợ quên mật khẩu của người dùng.
- Xác minh danh tính của người dùng và cấp mật khẩu mặc định mới lại
cho họ.

8
2.3. Các chức năng của hệ thống đánh giá
2.3.1. Đặt tham chiếu sang câu trả lời ở bài đăng khác
Các câu hỏi mới đặt nếu bị trùng với câu hỏi cũ sẽ được hệ thống trả lời
tự động bằng câu trả lời đã được lưu trước đó.
2.3.2. Tự động đánh giá độ uy tín của người dùng dựa trên đánh giá các
câu trả lời.
Mỗi người dùng được đánh giá uy tín dựa trên lượng up và downvote
của các câu hỏi, câu trả lời.
+ Nếu câu hỏi nhận được 1 upvote = 2xp, 1 downvote = -2xp.
+ Nếu câu trả lời nhận được 1 upvote = 1xp, 1 downvote = -1xp.
Hệ thống ưu tiên hiển thị câu trả lời cũng như câu hỏi của những người
dùng có độ uy tín cao. Một chỉ số đánh giá được gọi là độ uy tín được tính theo
công thức: upvote * 0.7 + xp * 0.3.
2.3.3. Gợi ý những câu hỏi liên quan mà người dùng có thể quan tâm.
Trang chủ của hệ thống sẽ ưu tiên hiển thị các câu hỏi được gắn các tag
mà người dùng quan tâm.
Phân tích các lượt tương tác của người dùng để đề xuất các câu hỏi, chủ
đề phù hợp.

9
Tài liệu đặc tả ca sử dụng
1. Sơ đồ mô hình ca sử dụng chính của hệ thống UET ASK

10
2. Đăng ký
2.1 Mô tả
Ca sử dụng này giúp người dùng khách tạo tài khoản mới để có thể tham
gia vào hệ thống. Chỉ khi tham gia vào hệ thống thì mới có thể thực hiện các
thao tác tiếp theo.
2.2. Luồng sự kiện
2.2.1. Luồng cơ bản
Ca sử dụng bắt đầu khi người dùng chọn tính năng đăng ký trên giao
diện:
1. Hệ thống chuyển sang giao diện đơn đăng ký, yêu cầu người dùng
cung cấp các thông tin được yêu cầu.
2. Người dùng nhập thông tin và ấn nút nộp.
3. Hệ thống ghi nhận đơn đăng ký, tạo và lưu tài khoản mới vào trong cơ
sở dữ liệu.
4. Khi quá trình lưu hoàn tất, hệ thống điều hướng người dùng đến trang
chủ của tài khoản vừa tạo
2.2.2. Luồng thay thế
2.2.2.1 Thông tin đăng ký vi phạm điều kiện
Nếu trong luồng cơ bản, người dùng vi phạm điều kiện kiểm tra của một
hoặc trường thông tin trong đơn khi ấn nộp, hệ thống giữ nguyên giao diện đơn
đăng ký và làm rõ các vùng vi phạm. Người dùng có thể quay trở lại điểm khởi
đầu của luồng cơ bản hoặc hủy việc đăng ký và kết thúc ca sử dụng.
2.2.2.2 Hệ thống gặp trục trặc
Nếu trong luồng cơ bản, hệ thống gặp trục trặc ở bước ấn “Nộp”, một
thông báo lỗi sẽ được gửi về và hiển thị trên trình duyệt của người dùng. Ca sử
dụng kết thúc. Người dùng có thể đợi đến khi hệ thống ổn định trở lại và thực
hiện lại ca sử dụng từ đầu
2.3. Yêu cầu đặc biệt
Không có.
2.4. Tiền điều kiện

11
Không có.
2.5. Hậu điều kiện
Nếu ca sử dụng thành công, tài khoản của người dùng được tạo và người
dùng được đăng nhập vào hệ thống.
2.6. Điểm mở rộng
Không có.

12
3. Đăng nhập
3.1. Mô tả
Ca sử dụng thể hiện cách một người dùng đăng nhập vào hệ thống.
Người dùng sẽ sử dụng tài khoản đã đăng ký để tham gia vào hệ thống.
3.2. Luồng sự kiện
3.2.1. Luồng cơ bản
Ca sử dụng này bắt đầu khi người dùng nhấn vào nút đăng nhập khi
người dùng vào website của hệ thống:
1. Hệ thống yêu cầu người dùng nhập tên đăng nhập và mật khẩu.
2. Người dùng nhập hai thông tin trên.
3. Hệ thống xác nhận hai thông tin đã nhập và cho người dùng đăng nhập
vào hệ thống.
3.2.2. Luồng thay thế
3.2.2.1 Sai thông tin đăng nhập
Nếu trong luồng cơ bản, người dùng nhập vào tên đăng nhập và mật
khẩu không hợp lệ hoặc tên đăng nhập chưa tồn thệ thống hiển thị một thông
báo lỗi. Người dùng có thể quay trở lại điểm khởi đầu của luồng cơ bản, tiến
hành đăng ký tài khoản mới hoặc hủy việc đăng nhập và kết thúc ca sử dụng.
3.3. Yêu cầu đặc biệt
Không có
3.4. Tiền điều kiện
Không có
3.5. Hậu điều kiện
Nếu ca sử dụng thành công, người dùng sẽ được đăng nhập vào hệ thống.
Nếu không thì trạng thái của hệ thống không đổi.
3.6. Điểm mở rộng
Không có.

13
4. Chỉnh sửa profile
4.1. Mô tả
Ca sử dụng cho phép người dùng thay đổi thông tin tài khoản cá nhân
của mình
4.2. Luồng sự kiện
4.2.1. Luồng cơ bản
Ca sử dụng bắt đầu khi người dùng chọn sửa đổi trong trang tài khoản
cá nhân.
1. Hệ thống hiển thị bảng thông tin cá nhân của người dùng.
2. Người dùng sửa đổi các thông tin cần thiết và ấn nút ghi nhận.
3. Hệ thống lưu lại thông tin mới của người dùng và chuyển hướng người
dùng về lại trang tài khoản cá nhân.
4.2.2. Luồng thay thế
4.2.2.1 Thông tin cập nhật vi phạm điều kiện
Nếu trong luồng cơ bản, thông tin người dùng nhập vào bị vi phạm điều
kiện, hệ thống sẽ đưa ra thông báo lỗi và làm nổi bật các phần vi phạm. Người
dùng có thể tiếp tục sửa thông tin hoặc hủy bỏ để kết thúc ca sử dụng.
4.3. Yêu cầu đặc biệt
Không có
4.4. Tiền điều kiện
Người dùng phải ở trạng thái đã đăng nhập để ca sử dụng có thể bắt đầu.
4.5. Hậu điều kiện
Nếu ca sử dụng thành công, thông tin người dùng được thay đổi trên hệ
thống. Ngược lại trạng thái của hệ thống sẽ được giữ nguyên.
4.6. Điểm mở rộng
Không có

14
5. Đặt câu hỏi
5.1. Mô tả
Ca sử dụng cho phép người dùng tạo một câu hỏi trên hệ thống.
5.2. Luồng sự kiện
5.2.1. Luồng cơ bản
Ca sử dụng này bắt đầu khi người dùng chọn tạo câu hỏi:
1. Hệ thống yêu cầu người dùng nhập tiêu đề và nội dung câu hỏi, mức
hiển thị của câu hỏi và các tag của nó.
2. Người dùng ghi nhập các thông tin và ấn nộp.
3. Hệ thống lưu câu hỏi vào cơ sở dữ liệu và hiển thị nó lên trang chủ của
người dùng và các người dùng theo dõi tag của câu hỏi.
5.2.2. Luồng thay thế
5.2.2.1 Nhập thiếu thông tin
Trong luồng cơ bản, khi có trường thông tin về câu hỏi bị trống, hệ
thống sẽ báo lỗi. Người dùng có thể sửa đổi câu hỏi để tiếp tục luồng hoặc hủy
và kết thúc ca sử dụng.
5.3. Yêu cầu đặc biệt
Không có
5.4. Tiền điều kiện
Người dùng cần phải ở trạng thái đã đăng nhập trước khi ca sử dụng bắt
đầu.
5.5. Hậu điều kiện
Nếu ca sử dụng thành công, hệ thống lưu câu hỏi vào cơ sở dữ liệu và
hiển thị nó cho những người dùng quan tâm.
5.6. Điểm mở rộng
Không có

15
6. Chỉnh sửa câu hỏi
6.1. Mô tả
Ca sử dụng cho phép người dùng chỉnh sửa câu hỏi mà mình đặt ra.
6.2. Luồng sự kiện
6.2.1. Luồng cơ bản
- Người dùng muốn chỉnh sửa câu hỏi thì ấn vào phần sửa ở trong câu hỏi
của mình.
- Nếu đồng ý sửa thì nhấn sửa, nếu đổi ý thì ấn hủy.
6.2.2. Luồng thay thế
6.3. Yêu cầu đặc biệt
Không
6.4. Tiền điều kiện
Người dùng phải đăng nhập, và câu hỏi sửa phải là câu hỏi của mình.
6.5. Hậu điều kiện
Nếu ca sử dụng thành công, câu hỏi sẽ được sửa thành công. Nếu không
thì câu hỏi vẫn giữ nguyên.
6.6. Điểm mở rộng
Không có

16
7. Lọc câu hỏi trên hệ thống
7.1. Mô tả
Ca sử dụng cho phép người dùng có thể thấy được những câu hỏi thuộc
chủ đề mà mình quan tâm.
7.2. Luồng sự kiện
7.2.1. Luồng cơ bản
1. Người dùng khi đăng ký đã chọn được các chủ đề mình quan tâm.
2. Hệ thống sẽ ưu tiên những câu hỏi liên quan đến chủ đề đó hiện lên dầu
trang.
7.2.2. Luồng thay thế
Không có
7.3. Yêu cầu đặc biệt
Không có
7.4. Tiền điều kiện
Người dùng phải đăng nhập và đã chọn các chủ đề quan tâm.
7.5. Hậu điều kiện
Nếu ca sử dụng thành công, câu hỏi thuộc chủ đề của người dùng sẽ
được đẩy lên đầu trang.
7.6. Điểm mở rộng
Không có

17
8. Đánh giá câu hỏi
8.1. Mô tả
Ca sử dụng cho phép người dùng đánh giá câu hỏi tốt hay không tốt.
8.2. Luồng sự kiện
8.2.1. Luồng cơ bản
1. Hệ thống sẽ cho 2 nút đánh giá lên(upvote) và xuống (downvote) để
người dùng đánh giá câu hỏi.
2. Người dùng ấn vào 1 trong 2 nút để đánh giá câu hỏi. Upvote thì cộng 1,
downvote thì trừ 1.
8.2.2. Luồng thay thế
Không có
8.3. Yêu cầu đặc biệt
Không có
8.4. Tiền điều kiện
Người dùng phải đăng nhập, và câu hỏi muốn đánh giá là câu hỏi của
người dùng khác.
8.5. Hậu điều kiện
Nếu ca sử dụng thành công, phần đánh giá của câu hỏi sẽ được cộng
thêm 1 hoặc trừ 1. Nếu không thì trạng thái hệ thống không đổi.
8.6. Điểm mở rộng
Không có

18
9. Trả lời
9.1. Mô tả
Ca sử dụng cho phép người dùng trả lời các câu hỏi hoặc các câu trả lời
của người dùng khác hoặc của bản thân.
9.2. Luồng sự kiện
9.2.1. Luồng cơ bản
1. Dưới mỗi câu hỏi hay câu trả lời đều có nút Trả lời, người dùng sẽ bấm
vào để trả lời câu hỏi hoặc câu trả lời.
2. Câu trả lời sẽ hiện ngay dưới câu hỏi đó.
9.2.2. Luồng thay thế
Không có
9.3. Yêu cầu đặc biệt
Không có
9.4. Tiền điều kiện
Người dùng phải đăng nhập.
9.5. Hậu điều kiện
Nếu ca sử dụng thành công, câu trả lời sẽ hiện ra ngay dưới câu hỏi đó.
Nếu không thì trạng thái hệ thống không đổi.
9.6. Điểm mở rộng
Không có

19
10. Theo dõi người dùng khác
10.1. Mô tả
Ca sử dụng cho phép người dùng theo dõi người dùng khác để thấy các
câu hỏi và câu trả lời của người đó.
10.2. Luồng sự kiện
10.2.1. Luồng cơ bản
1. Người dùng muốn theo dõi người dùng khác thì sẽ nhấn nút Theo dõi ở
hồ sơ người đó.
2. Những câu hỏi và câu trả lời của người được theo dõi sẽ ưu tiên xuất
hiện.
10.2.2. Luồng thay thế
Không có
10.3. Yêu cầu đặc biệt
Không có
10.4. Tiền điều kiện
Người dùng phải đăng nhập.
10.5. Hậu điều kiện
Nếu ca sử dụng thành công, người dùng muốn được theo dõi sẽ trong
danh sách theo dõi của người dùng. Nếu không thì trạng thái hệ thống không
đổi.
10.6. Điểm mở rộng
Không có

20
11. Báo cáo vi phạm
11.1. Mô tả
Ca sử dụng cho phép người dùng báo cáo đến admin những câu hỏi, câu
trả lời vi phạm quy tắc của hệ thống.
11.2. Luồng sự kiện
11.2.1. Luồng cơ bản
1. Nếu người dùng thấy câu hỏi hoặc câu trả lời vi phạm quy tắc hệ thống,
người dùng có thể ấn vào nút Báo cáo để được xử lý.
2. Câu hỏi/ câu trả lời bị báo cáo sẽ bị tạm ẩn và được gửi tới admin để xét
duyệt có vi phạm hay không.
3. Nếu vi phạm sẽ bị admin xóa. Nếu không thì câu hỏi vẫn sẽ được hiển
thị và phản hồi lại cho người bị báo cáo và người báo cáo vi phạm.
11.2.2. Luồng thay thế
Không có
11.3. Yêu cầu đặc biệt
Không có
11.4. Tiền điều kiện
Người dùng phải đăng nhập và câu hỏi vi phạm quy tắc hệ thống.
11.5. Hậu điều kiện
Nếu ca sử dụng thành công, câu hỏi/ câu trả lời bị báo cáo sẽ được gửi
tới admin để xét duyệt có xóa hay không.
11.6. Điểm mở rộng
Không có

21
12. Quản lý câu hỏi
12.1. Mô tả
Ca sử dụng cho phép người dùng quản lý các câu hỏi đã được đặt ra
trước đó, bao gồm sửa, xóa.
12.2. Luồng sự kiện
12.2.1. Luồng cơ bản
1. Người dùng vào mục quản lý câu hỏi để hiển thị danh sách các câu hỏi
đã được đặt ra từ trước tới nay.
2. Người dùng muốn chỉnh sửa câu hỏi thì bấm vào nút chỉnh sửa, sau đó
nhập lại nội dung. Khi hoàn thành thì bấm vào nút Lưu để lưu lại.
3. Người dùng muốn xóa câu hỏi thì bấm vào nút Xóa ở bên cạnh. Sau đó
bấm đồng ý để xóa.
12.2.2. Luồng thay thế
Không có.
12.3. Yêu cầu đặc biệt
Không.
12.4. Tiền điều kiện
Người dùng phải đăng nhập bằng tài khoản quản trị viên.
12.5. Hậu điều kiện
Nếu ca sử dụng thành công, danh sách các câu hỏi sẽ được làm mới
đúng như người dùng đã chỉnh sửa.
12.6. Điểm mở rộng.
Không có

22
13. Xử lý báo cáo
13.1. Mô tả.
Ca sử dụng cho phép quản trị viên có thể xem danh sách các câu hỏi,
câu trả lời bị báo cáo. Nếu câu hỏi, câu trả lời không phù hợp với tiêu chuẩn
của hệ thống (thiếu văn hóa, nội dung không phù hợp .v.v..) thì quả trị viên có
thể xóa câu hỏi, câu trả lời đó.
13.2. Luồng sự kiện
13.2.1. Luồng cơ bản
1. Quản trị viên đọc các câu hỏi và câu trả lời bị báo cáo. Kiểm tra nó với
tiêu chuẩn của hệ thống.
2. Nếu câu hỏi (câu trả lời) vi phạm, bấm nút xử lý để xóa và gửi phản hồi
về cho người báo cáo và gửi cảnh cáo đến người bị báo cáo.
3. Nếu câu hỏi (câu trả lời) không vi phạm, bấm nút từ chối để gửi kết quả
về cho người báo cáo.
13.2.2. Luồng thay thế
Không có.
13.3. Yêu cầu đặc biệt.
Không có
13.4. Tiền điều kiện
Phải đăng nhập bằng tài khoản quản trị viên.
13.5 Hậu điều kiện
Nếu ca sử dụng thành công, quản trị viên có thể xử lý được các báo cáo
mà người dùng gửi lên và gửi phản hồi về cho họ.
13.6. Điểm mở rộng.
Không có.

23
Tài liệu đặc tả bổ sung
1. Giới thiệu
Mục đích của tài liệu này là được sử dụng để định nghĩa các yêu cầu của
Hệ thống hỏi đáp UET Ask. Tài liệu đặc tả bổ sung này sẽ liệt kê ra các yêu
cầu không được thể hiện rõ ràng ở trong Tài liệu đặc tả ca sử dụng. Tài liệu này
và Tài liệu đặc tả ca sử dụng sẽ là tài liệu hoàn chỉnh về yêu cầu cho hệ thống.
2. Yêu cầu chức năng
Các mô tả cụ thể về chức năng được thể hiện trong Tài liệu đặc tả ca sử
dụng.
3. Tính dễ sử dụng
Để hệ thống có thể dễ dàng sử dụng đối với người dùng, cần phải đáp
ứng một số tiêu chí dưới đây.
- Một người sử dụng thông thường có thể học được cách xem các bài
viết trong hệ thống, sử dụng các công cụ lọc, tìm kiếm phù họp để tăng tốc độ
tìm kiếm trong thời gian 1 phút.
- Một người dùng thông thường có thể học được cách đăng một bài viết
mới lên hệ thống, gắn được các thẻ và các thông tin liên quan trong thời gian 3
phút.
- Một người dùng thông thường có thể biết cách trả lời, upvote hay
downvote để tương tác với những người dùng khác trong thời gian 3 phút.
- Một người dùng thông thường có thể ghi nhớ và làm quen với giao
diện của hệ thống chỉ sau một lần tham gia và làm các thao tác kể trên.
4. Tính tin cậy
- Hệ thống cần hoạt động được trong tối thiểu 95% thời gian do lượng
truy cập vào hệ thống vào ban đêm có thể giảm đi rất nhiều.
- Trong quá trình hệ thống hoạt động, các chức năng của hệ thống phải
hoạt động đúng với tỉ lệ xấp xỉ 99%.
- Nếu hệ thống có lỗi hay sự cố xảy ra, cần được khắc phục ngay trong
24 giờ đầu tiên kể từ khi xảy ra sự cố.
5. Hiệu năng

24
- Hệ thống hướng đến phục vụ tổng số người dùng không thường xuyên
là 10000 người và số người dùng tham gia đồng thời ở mức tối đa là 2000
người. Ở những giai đoạn bình thường, hệ thống duy trì ở mức phục vụ 100
yêu cầu đồng thời
- Thời gian phản hồi cho các thao tác trên hệ thống cần phải nhỏ hơn 10
giây.
6. Khả năng hỗ trợ
Không có
7. Bảo mật
- Hệ thống đảm bảo việc xác nhận danh tính của người dùng khi cho
phép họ tham gia vào hệ thống và khi thực hiện các yêu cầu đối với máy chủ.
Một người dùng không thể lấy được thông tin liên quan đến người dùng khác
nếu không được họ cho phép.
- Việc đăng nhập vào hệ thống là bắt buộc để có thể xem các thông tin,
sử dụng các chức năng của hệ thống.
- Để quản trị có thể thực hiện các quyền quản lý của mình, cần xác nhận
danh tính của họ trước khi tham gia vào hệ thống.
8. Các ràng buộc về thiết kế
- Dữ liệu cần được thiết kế theo chuẩn và có sự ràng buộc chặt chẽ.

25
Bảng chú giải (Glossary)
1. Giới thiệu
Tài liệu này được được viết ra với mục đích định nghĩa một số khái
niệm, thuật ngữ đặc biệt được sử dụng trong hệ thống UET Ask nhằm thuận
tiện cho người đọc khi nghiên cứu các tài liệu khác liên quan đến hệ thống. Các
định nghĩa này thuộc về miền nghiệp vụ riêng biệt của hệ thống nên có thể sẽ
có những ý nghĩa khác với hiểu biết thông thường.
2. Các định nghĩa
Dưới đây là các khái niệm được sử dụng trong hệ thống UET Ask.
2.1. Administrator (Quản trị viên)
Quản trị viên của hệ thống là người dùng đặc biệt có nhiệm vụ quản lý,
giám sát và đảm bảo cho hệ thống hoạt động hiệu quả, đúng với mong muốn
ban đầu đặt ra.
2.2. User (Người dùng)
Cách gọi những người dùng thông thường sau khi họ đã đăng ký và
đăng nhập thành công để sử dụng hệ thống.
2.3. Question (Câu hỏi)
Câu hỏi là những thắc mắc của người dùng mà họ mong muốn nhận
được câu trả lời. Trên hệ thống, mỗi câu hỏi sẽ được thể hiện bằng một bài
đăng cụ thể.
2.4. Tag (Thẻ)
Thẻ là một chủ đề, một nội dung nhất định dùng để phân loại các câu
hỏi trên hệ thống thành những nhóm nhỏ để tiện cho việc quản lý, theo dõi,
chọn lọc,…
2.5. Answer (Câu trả lời)
Câu trả lời là lời giải đáp cho một câu hỏi cụ thể trên hệ thống. Một câu
hỏi có thể có nhiều câu trả lời
2.6. Upvote (Tán thành)
Upvote đại diện cho một sự tán thành, đồng ý chúng ta dành cho một
câu hỏi hay một câu trả lời nào đó.

26
2.7. Downvote (Không tán thành)
Upvote đại diện cho một việc không tán thành, không đồng ý chúng ta
dành cho một câu hỏi hay một câu trả lời nào đó.
2.8. Experience hoặc Exp (Điểm kinh nghiệm)
Là điểm đánh giá được gán cho mỗi người dùng, mỗi câu hỏi và mỗi câu
trả lời. Điều này sẽ giúp nâng cao chất lượng hoạt động của hệ thống.
2.9. Rating system (Hệ thống đánh giá)
Hệ thống giúp quản lý, lưu trữ, cập nhật điểm kinh nghiệm và thực hiện
một số thao tác tự động cho hệ thống như giới thiệu bài viết, tham chiếu bài
viết,…

27
PHẦN 3: PHÂN TÍCH KIẾN TRÚC
Tài liệu phân tích kiến trúc
1. Các trừu tượng hóa quan trọng
1.1. Danh sách

1.2. Chi tiết

STT Tên trừu tượng Chức năng Cơ chế phân tích

1 User Người dùng thông thường khi tham Persistency, Security


gia vào hệ thống để đặt câu hỏi,
xem các câu hỏi hoặc trả lời câu hỏi

2 Rating system Một hệ thống con có chức năng Legacy Interface


quản lý các vấn đề liên quan đến
việc upvote, downvote, đánh giá
người dùng, câu hỏi, câu trả lời

28
3 Question Một thắc mắc cụ thể của người Persistency, Security
dùng được thể hiện dưới dạng bài
đăng trên hệ thống

4 Answer Một lời giải đáp tương ứng với một Persistency, Security
câu hỏi nào đó

5 Tag Chủ đề của một câu hỏi Persistency, Security

6 Report Bản ghi chứa các thông tin liên Persistency, Security
quan đến một trường hợp vi phạm
quy tắc cộng đồng để admin xử lý

2. Kiến trúc hệ thống


2.1. Mô hình kiến trúc 3 tầng

29
Hệ thống được xây dựng với kiến trúc 3 tầng với 3 tầng là: Tầng trình
diễn, tầng logic và tầng cơ sở dữ liệu.
- Tầng trình diễn: hiển thị các thành phần giao diện để qua đó người dùng có
thể tương tác với hệ thống. Tầng này sẽ thực hiện giao tiếp với tầng logic để
lấy các kết quả đã được xử lý hoặc gửi các yêu cầu về xử lý logic.
- Tầng logic:
+ Đáp ứng các yêu cầu được nhận về tầng trình diễn, xử lý dữ liệu trước
khi truyền xuống cho tầng CSDL.
+ Kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ của dữ liệu, thực hiện
các tính toán nghiệp vụ trước khi trả dữ liệu về để hiện thị ở tầng trình diễn.

30
- Tầng cơ sở dữ liệu: Giao tiếp với CSDL và thực hiện các chức năng liên
quan đến trích xuất và lưu trữ dữ liệu: thêm, sửa, xóa, tìm kiếm,...
2.2. Định nghĩa các gói
- Authentication: kiểm tra, quản lý việc đăng ký, đăng nhập, lưu thông tin khi
tham gia hệ thống của người dùng,...
- Question Management: Quản lý các câu hỏi trên hệ thống và các tính năng
liên quan.
- User Management: Quản lý người dùng trên hệ thống.
- Rating: Hệ thống đánh giá người dùng, câu hỏi, câu trả lời trên hệ thống,...
- Data Model: Mô hình hóa các đối tượng được lưu trữ trong CSDL.
- Data Access: Mô tả cách thức tương tác với HQTCSDL và các thao tác với
dữ liệu.

31
PHẦN 4: PHÂN TÍCH CA SỬ DỤNG
Tài liệu phân tích ca sử dụng
1. Hiện thực hóa ca sử dụng - Biểu đồ tương tác
1.1. Đăng ký
1.1.1. Luồng cơ bản

32
1.2. Đăng nhập
1.2.1. Luồng cơ bản

1.3. Chỉnh sửa profile


1.3.1. Luồng cơ bản

1.4. Đặt câu hỏi

33
1.4.1. Luồng cơ bản

34
1.5. Chỉnh sửa câu hỏi
1.5.1. Luồng cơ bản

1.6. Lọc câu hỏi trên hệ thống


1.6.1. Luồng cơ bản

35
1.7. Đánh giá câu hỏi
1.7.1. Luồng cơ bản

1.8. Trả lời


1.8.1. Luồng cơ bản

36
1.9. Theo dõi người dùng khác
1.9.1. Luồng cơ bản

1.10. Báo cáo vi phạm


1.10.1. Luồng cơ bản

37
1.11. Quản lý câu hỏi
1.11.1. Luồng cơ bản

38
1.12. Xử lý báo cáo
1.12.1. Luồng cơ bản

39
2. Hiện thực hóa ca sử dụng - Góc nhìn các lớp tham gia (VOPCs)
2.1. Đăng ký

40
2.2. Đăng nhập

2.3. Chỉnh sửa profile

41
2.4. Đặt câu hỏi

42
2.5. Chỉnh sửa câu hỏi

43
2.6. Lọc câu hỏi trên hệ thống

44
2.7. Đánh giá câu hỏi

45
2.8. Trả lời

46
2.9. Theo dõi người dùng khác

2.10. Báo cáo vi phạm

47
2.11. Quản lý câu hỏi

48
2.12. Xử lý báo cáo

49
3. Ánh xạ lớp phân tích với các cơ chế phân tích

STT Lớp phân tích Cơ chế phân tích

1 SignUpUI None

2 SignUpControl Distribution

3 User Persistency, Security

4 LoginUI None

5 ForgetPasswordUI None

6 LoginControl Distribution

7 ProfileUI None

8 UserControl Distribution

9 CreateQuestionUI None

10 QuestionControl Distribution

11 Question Persistency, Security

12 QuestionUI None

13 UserUI None

14 RatingSystem Legacy Inteface

15 VoteQuestionUI None

16 AnswerUI None

17 AnswerControl Distribution

18 Answer Persistency, Security

19 ReportUI None

20 ReportControl Distribution

50
21 Report Persistency, Security

22 AdminUI None

51
PHẦN 5: CÁC PHẦN TỬ THIẾT KẾ
Tài liệu xác định các phần tử thiết kế
1. Ánh xạ lớp phân tích và lớp thiết kế
Với các lớp phân tích đã tìm ra được ở bước phân tích ca sử dụng, ta sẽ
thực hiện ánh xạ nhiều nhiều sang các lớp thiết kế. Danh sách các lớp phân tích
và ánh xạ tương ứng của chúng sang lớp thiết kế được liệt kê ở bảng dưới đây.

STT Lớp phân tích Lớp thiết kế

1 SignUpUI SignUpUI

2 LoginUI LoginUI

3 ForgetPasswordUI

4 ProfileUI ProfileUI

5 CreateQuestionUI CreateQuestionUI

6 QuestionUI QuestionUI

7 UserUI UserUI

8 VoteQuestionUI VoteQuestionUI

9 AnswerUI AnswerUI

10 ReportUI ReportUI

11 AdminUI AdminUI

12 SignUpControl SignUpControl

13 LoginControl LoginControl

14 UserControl UserControl

15 QuestionControl QuestionControl

16 AnswerControl AnswerControl

52
17 ReportControl ReportControl

18 User User

19 Question Question

20 Answer Answer

21 Report Report

22 RatingSystem RatingSystem

IRatingSystem

2. Ánh xạ lớp phân tích và các gói


Các lớp thiết kế sẽ được ánh xạ vào các gói phù hợp để phân bổ chúng
vào mô hình kiến trúc 3 tầng đã trình trước đó.

STT Lớp thiết kế Gói

1 SignUpUI Presentation:UIComponent

2 LoginUI Presentation:UIComponent

3 ProfileUI Presentation:UIComponent

4 CreateQuestionUI Presentation:UIComponent

5 QuestionUI Presentation:UIComponent

6 UserUI Presentation:UIComponent

7 VoteQuestionUI Presentation:UIComponent

8 AnswerUI Presentation:UIComponent

9 ReportUI Presentation:UIComponent

10 AdminUI Presentation:UIComponent

11 SignUpControl Bussiness Service: Authentication

53
12 LoginControl Bussiness Service: Authentication

13 UserControl Bussiness Service:


UserManagement

14 QuestionControl Bussiness Service:


QuestionManagement

15 AnswerControl Bussiness Service:


QuestionManagement

16 ReportControl Bussiness Service:


QuestionManagement

17 User Data: Model

18 Question Data: Model

19 Answer Data: Model

20 Report Data: Model

21 RatingSystem Bussiness Service: Rating

22 IRatingSystem Bussiness Service: Rating

54
3. Hệ thống con: RatingSystem

55
4. Các gói và quan hệ giữa chúng
4.1. Biểu đồ sự phụ thuộc giữa các gói
Sau khi tiến hành ánh xạ và tìm ra các phần tử thiết kế, kiến trúc hệ
thống có sự cập nhật như hình dưới đây.

56
4.2. Định nghĩa các gói
- UIComponent: Chứa các trang giao diện chính của ứng dụng.
- Utils: Các component, các hàm chức năng, các thành phần dùng lại khi viết
giao diện cho hệ thống.
- Authentication: kiểm tra, quản lý việc đăng ký, đăng nhập, lưu thông tin khi
tham gia hệ thống của người dùng,...
- Question Management: Quản lý các câu hỏi trên hệ thống và các tính năng
liên quan.
- User Management: Quản lý người dùng trên hệ thống.
- Rating: Giao diện ứng dụng để kết nối và sử dụng được hệ thống con Rating
System
- Rating System: Hệ thống con có chức năng đánh giá người dùng, câu hỏi,
câu trả lời trên hệ thống,...
- Data Model: Mô hình hóa các đối tượng được lưu trữ trong CSDL.
- Data Access: Mô tả cách thức tương tác với HQTCSDL và các thao tác với
dữ liệu

57
PHẦN 6: CƠ CHẾ THIẾT KẾ
Tài liệu xác định các cơ chế thiết kế
1. Mô tả các cơ chế phân tích

STT Lớp phân tích Cơ chế phân tích

1 SignUpUI None

2 LoginUI None

3 ForgetPasswordUI None

4 ProfileUI None

5 CreateQuestionUI None

6 QuestionUI None

7 UserUI None

8 VoteQuestionUI None

9 AnswerUI None

10 ReportUI None

11 AdminUI None

12 SignUpControl Distribution

13 LoginControl Distribution

14 UserControl Distribution

15 QuestionControl Distribution

16 AnswerControl Distribution

17 ReportControl Distribution

18 User Persistency, Security

58
19 Question Persistency, Security

20 Answer Persistency, Security

21 Report Persistency, Security

22 RatingSystem Legacy Interface

2. Từ cơ chế phân tích đến cơ chế thiết kế và cơ chế cài đặt

STT Cơ chế phân tích Cơ chế thiết kế Cơ chế cài đặt

1 Persistency RDBMS JDBC 4.3

2 Security Crytographic Security SSL/TLS 1.3


Protocol (Secure Socket
Layers/ Transport
Layer Security)

3 Legacy Interface API RESTful API v2

4 Distribution RMI Java 18

59
PHẦN 7: KIẾN TRÚC THỰC THI
Tài liệu mô tả kiến trúc thực thi
1. Mô hình tiến trình
1.1. Đăng ký

60
1.2. Đăng nhập

61
1.3. Xem các câu hỏi

1.4. Các chức năng của người dùng

62
1.5. Đánh giá câu hỏi

2. Mô tả các tiến trình


Như vậy, ta sẽ có 4 tiến trình chính chạy trên hệ thống được mô tả như
dưới đây:
- UserApplication: Tiến trình bên phía người dùng quản lý phần giao diện
tương tác và là cầu nối giữa người sử dụng với hệ thống. Tiến trình sẽ được
khởi chạy khi người dùng truy cập vào website của hệ thống thông qua các
trình duyệt web.
- ServerApplication: Tiến trình chính bên phía server chịu trách nhiệm xử lý
các nghiệp vụ logic của hệ thống. Tiến trình này sẽ luôn luôn chạy ở bên máy
chủ để đợi và xử lý các yêu cầu được gửi đến từ máy chủ.
- RatingSystemAccess: Tiến trình giúp tương tác với hệ thống con Rating
System. Tiến trình sẽ được khởi chạy khi có yêu cầu cần phải gọi đến xử lý ở
hệ thống con.

63
PHẦN 8: SỰ PHÂN PHỐI
Tài liệu mô tả sự phân phối
1. Mô hình triển khai
Ta có mô hình triển khai (deployment model) của hệ thống như hình vẽ
dưới đây.

- Hệ thống được triển khai dưới dạng mô hình Client/Server, cụ thể là mô hình 3 tầng
với các node như mô tả dưới đây

+ Browser: Hệ thống UET Ask được xây dựng dưới dạng một ứng dụng web
nên gười dùng sẽ tương tác với hệ thống qua các trình duyệt trên các thiết bị
thông minh như điện thoại, máy tính, máy tính bảng,… Ở đây sẽ chứa thành
phần hiển thị và là giao diện tương tác giữa hệ thống và người dùng

+ UET Ask Server: chứa các nghiệp vụ logic chính của hệ thống. Các yêu cầu
được gửi đến từ browser sẽ được tiếp nhận và xử lý bởi UET Ask Server

+ Rating System: Một hệ thống con được tách riêng và chạy trong cùng một
mạng LAN với UET Ask Server.

+ Database Server: Nơi lưu trữ các dữ liệu của hệ thống và các xử lý liên quan
đến dữ liệu.

64
2. Đặt các tiến trình vào mô hình mạng
Với các tiến trình mà ta đã xác định được ở tài liệu “Mô tả kiến trúc
thực thi”, ta sẽ tiến hành phân phối chúng vào các node trong mô hình triển
khai mà chúng ta đã xây dựng được ở trên.

65
PHẦN 9: THIẾT KẾ CA SỬ DỤNG
Tài liệu thiết kế ca sử dụng

1. Đăng ký
1.1. Biểu đồ tuần tự

66
1.2. Biểu đồ cộng tác

67
1.3. Góc nhìn các lớp tham gia

68
2. Đăng nhập
2.1. Biểu đồ tuần tự

69
2.2. Biểu đồ cộng tác

70
2.3. Góc nhìn các lớp tham gia

71
3. Chỉnh sửa profile
3.1. Biểu đồ tuần tự

72
3.2. Biểu đồ cộng tác

73
3.3. Góc nhìn các lớp tham gia

74
4. Đặt câu hỏi
4.1. Biểu đồ tuần tự

75
4.2. Biểu đồ cộng tác

76
4.3. Góc nhìn các lớp tham gia

77
5. Chỉnh sửa câu hỏi
5.1. Biểu đồ tuần tự

78
5.2. Biểu đồ cộng tác

79
5.3. Góc nhìn các lớp tham gia

80
6. Lọc câu hỏi trên hệ thống
6.1. Biểu đồ tuần tự

81
6.2. Biểu đồ cộng tác

82
6.3. Góc nhìn các lớp tham gia

83
7. Đánh giá câu hỏi
7.1. Biểu đồ tuần tự

84
7.2. Biểu đồ cộng tác

85
7.3. Góc nhìn các lớp tham gia

86
8. Trả lời
8.1. Biểu đồ tuần tự

87
8.2. Biểu đồ cộng tác

88
8.3. Góc nhìn các lớp tham gia

89
9. Theo dõi người dùng khác
9.1. Biểu đồ tuần tự

9.2. Biểu đồ cộng tác

9.3. Góc nhìn các lớp tham gia

90
10. Báo cáo vi phạm
10.1. Biểu đồ tuần tự

91
10.2. Biểu đồ cộng tác

92
10.3. Góc nhìn các lớp tham gia

93
11. Quản lý câu hỏi
11.1. Biểu đồ tuần tự

11.2. Biểu đồ cộng tác

94
11.3. Góc nhìn các lớp tham gia

95
12. Xử lý báo cáo
12.1. Biểu đồ tuần tự

96
12.2. Biểu đồ cộng tác

97
12.3. Góc nhìn các lớp tham gia

98
PHẦN 10: THIẾT KẾ HỆ THỐNG CON
Tài liệu thiết kế hệ thống con

1. Giới thiệu
Tài liệu này nhằm mô tả hoạt động bên trong của các hệ thống con được
sử dụng trong hệ thống. Ở phần thiết kế ca sử dụng, những hoạt động phía
trong của hệ thống con đang tạm thời không được bàn đến. Vì vậy, tài liệu này
sẽ cung cấp cái nhìn chi tiết hơn về hệ thống con.
Trong hệ thống hỏi đáp UET Ask, chỉ có một hệ thống con được sử
dụng, đó là Rating System. Hệ thống được sử dụng để hỗ trợ trong việc quản lý,
đánh giá upvote, downvote và mức độ tin cậy của các câu hỏi, câu trả lời trên
hệ thống.
2. Hệ thống con: Rating System
2.1. Đánh giá câu hỏi
2.1.1. Giới thiệu
Một chức năng quan trọng của hệ thống con là chúng sẽ được gọi đến
khi người dùng thực hiện một hành động làm thay đổi upvote, downvote hiện
tại của một câu hỏi. Khi đó, cần thực hiện thay đổi và tính toán điểm kinh
nghiệm tương ứng cho câu hỏi đó.
2.1.2. Biểu đồ tuần tự

99
2.1.3. Biểu đồ cộng tác

2.2. Gợi ý danh sách câu hỏi


2.2.1. Giới thiệu
Hệ thống con Rating System còn có một chức năng quan trọng nữa là đề
xuất các câu hỏi phù hợp với tiêu chí của người dùng. Với những thông tin mà
người dùng nhập vào, cụ thể là các thẻ và dựa vào điểm kinh nghiệm của các
câu hỏi, hệ thống sẽ tính toán là lấy ra danh sách những câu hỏi phù hợp nhất.
2.2.2. Biểu đồ tuần tự

100
2.2.3. Biểu đồ cộng tác

2.3. Góc nhìn các lớp tham gia (VOPC)

101
PHẦN 11: THIẾT KẾ LỚP
Tài liệu thiết kế lớp

1. Xác định các thuộc tính và phương thức


Ta có danh sách các lớp cùng các thuộc tính và phương thức của nó như
dưới đây:

102
103
104
2. Xác định các phụ thuộc và liên kết
2.1. Đăng nhập, đăng ký

105
2.2. Quản lý các thao tác của người dùng

2.3. Quản lý các thao tác với câu trả lời

106
2.4. Quản lý các thao tác với câu hỏi

107
2.5. Hệ thống đánh giá và báo cáo

108
PHẦN 12: THIẾT KẾ CƠ SỞ DỮ LIỆU
Tài liệu thiết kế cơ sở dữ liệu

1. Lược đồ cơ sở dữ liệu
Lược đồ các lớp được lưu trữ trong cơ sở dữ liệu của hệ thống sẽ được
biểu thị như hình dưới đây:

109
2. Chi tiết các bảng trong cơ sở dữ liệu
2.1. Bảng Users

Tên trường Mô tả Kiểu dữ liệu

username Khóa chính, Tên đăng nhập VARCHAR(255)


của người dùng

password Mật khẩu của người dùng VARCHAR(255)

name Tên đầy đủ của người dùng VARCHAR(255)

schoolYear Khóa học của người đó, ví dụ INT(11)


64, 65, 66,…

className Tên lớp khóa học khi theo học VARCHAR(255)


tại UET, ví dụ K64J,
K65CLC,…

profilePath Đường dẫn đến ảnh đại diện VARCHAR(255)


của người đó

createdAt Ngày dữ liệu được tạo DATETIME

updatedAt Ngày có sự thay đổi về dữ DATETIME


liệu

2.2. Bảng Questions

Tên trường Mô tả Kiểu dữ liệu

questionId Khóa chính, tự động tăng, Id của INT(11)


câu hỏi

content Nội dung của câu hỏi VARCHAR(255)

visibility Cài đặt cho những nhóm đối INT(11)


tượng nào được xem câu hỏi của
mình. Các nhóm sẽ được quy

110
ước là một con số.

username Khóa ngoài, tên đăng nhập của VARCHAR(255)


người dùng tạo ra câu hỏi đó

upvote Số lượng upvote của câu hỏi đó INT(11)

downvote Số lượng downvote của câu hỏi INT(11)


đó

createdAt Ngày dữ liệu được tạo DATETIME

updatedAt Ngày có sự thay đổi về dữ liệu DATETIME

2.3. Bảng Answers

Tên trường Mô tả Kiểu dữ liệu

answerId Khóa chính, tự động tăng, id INT(11)


của câu trả lời đó

questionId Khóa ngoài, trỏ đến câu hỏi INT(11)


mà câu trả lời đó thuộc về

username Khóa ngoài, trỏ đến người VARCHAR(255)


dùng tạo ra câu trả lời đó

content Nội dung của câu hỏi đó VARCHAR(255)

createdAt Ngày dữ liệu được tạo DATETIME

updatedAt Ngày có sự thay đổi về dữ DATETIME


liệu

2.4. Bảng Reports

Tên trường Mô tả Kiểu dữ liệu

111
reportId Khóa chính, tự động tăng, id INT(11)
của báo cáo

questionId Khóa ngoài, id của câu hỏi mà INT(11)


bị báo cáo

username Khóa ngoài, username của VARCHAR(255)


người dùng bị báo cáo hoặc
có bài viết bị báo cáo

reason Lý do gửi báo cáo VARCHAR(255)

isDone Báo cáo này đã được giải BOOLEAN


quyết hay chưa

createdAt Ngày dữ liệu được tạo DATETIME

updatedAt Ngày có sự thay đổi về dữ DATETIME


liệu

2.5. Bảng Tags

Tên trường Mô tả Kiểu dữ liệu

tagId Khóa chính, tự động tăng, id INT(11)


của các thẻ

tagName Tên của thẻ VARCHAR(255)

createdAt Ngày dữ liệu được tạo DATETIME

updatedAt Ngày có sự thay đổi về dữ DATETIME


liệu

2.6. Bảng Question_Tags

Tên trường Mô tả Kiểu dữ liệu

112
id Khóa chính, tự động tăng, id INT(11)
của các hàng

questionId Khóa ngoài, id của câu hỏi INT(11)


tương ứng

tagId Khóa ngoài, id của thẻ tương INT(11)


ứng

createdAt Ngày dữ liệu được tạo DATETIME

updatedAt Ngày có sự thay đổi về dữ DATETIME


liệu

113
3. Xác định các trạng thái
Ta có biểu đồ trạng thái của câu hỏi với các trạng thái được mô tả như dưới đây:
- New: Khi tạo một câu hỏi thành công, một câu hỏi mới sẽ được tạo ra, khi đó nó sẽ
có trạng thái là New.
- Answered: Khi đã có ít nhất một câu trả lời tương ứng với câu hỏi đó
- Updated: Khi có các sự thay đổi liên quan đến câu hỏi so với ban đầu
- Closed: Khi câu hỏi đó sẽ tìm được câu trả lời phù hợp

114

You might also like