UseCase - gogafefe/StAlGoLM GitHub Wiki
Диаграмма построена по фактически реализованным командам сервера и возможностям оконного клиента.

| Актор | Возможности |
|---|---|
| Клиент системы | Подключение к серверу и получение справки |
| Посетитель | Регистрация и авторизация |
| Авторизованный пользователь | Работа со своим аккаунтом, выполнение заданий и просмотр личной статистики |
| Модератор | Все возможности пользователя, список пользователей и общая статистика сервера |
| Администратор | Все возможности модератора, удаление чужих аккаунтов и изменение ролей |
Стрелка наследует возможности между акторами означает, что более привилегированная роль также может выполнять варианты использования нижестоящей роли. Например, администратор может делать всё, что доступно модератору и обычному пользователю.
- Пользователь авторизуется.
- Выбирает тип задания
Task1–Task4и номер шаблона. - Система генерирует условие и сохраняет правильный ответ в текущей пользовательской сессии.
- Пользователь отправляет ответ.
- Система проверяет его и изменяет соответствующую ячейку статистики:
+1за правильный ответ или−1за неправильный. - Пользователь при необходимости просматривает накопленную личную статистику.
Связь «include» показывает обязательную часть более крупного варианта использования. Например, выполнение задания обязательно включает получение условия и отправку ответа, а отправка ответа — его проверку и обновление статистики.
| Вариант использования | Команда |
|---|---|
| Зарегистрировать аккаунт | reg login password email [role] |
| Войти в систему | auth login password |
| Выйти из аккаунта | logout |
| Посмотреть данные аккаунта | whoami |
| Удалить свой или чужой аккаунт | del [login] |
| Изменить роль пользователя | role login newRole |
| Посмотреть пользователей | users |
| Посмотреть статистику сервера | stats |
| Получить задание |
task1–task4 с номером шаблона |
| Отправить ответ | Число после получения задания |
| Посмотреть личную статистику | mystats [1-4] |
| Получить справку | help |
- Оконный Qt-клиент предоставляет кнопки для регистрации, входа, выхода, просмотра профиля, получения заданий, отправки ответов и личной статистики.
- Команды модератора и администратора реализованы на сервере, но отдельных кнопок для них в оконном клиенте нет. Их можно вызвать через текстовый TCP-клиент, например PuTTY в режиме Raw.
- Серверная команда регистрации технически принимает необязательную роль, включая
moderatorиadmin, хотя оконный клиент этот параметр не отправляет. Для реальной системы выдачу привилегированных ролей при публичной регистрации следовало бы запретить. -
Task1–Task4объединены на диаграмме в один вариант использования, потому что их пользовательский сценарий одинаков: получить условие, отправить ответ и обновить статистику.
Редактируемый исходник Mermaid
flowchart LR
client["👤 Клиент системы"]
visitor["👤 Посетитель"]
user["👤 Авторизованный пользователь"]
moderator["👤 Модератор"]
admin["👤 Администратор"]
subgraph system["Система StAlGoLM"]
direction TB
connect(["Подключиться к серверу"])
help(["Получить справку по командам"])
register(["Зарегистрировать аккаунт"])
initStats(["Создать личную статистику"])
login(["Войти в систему"])
verify(["Проверить учётные данные"])
profile(["Посмотреть данные аккаунта"])
logout(["Выйти из аккаунта"])
deleteSelf(["Удалить свой аккаунт"])
solve(["Выполнить учебное задание"])
getTask(["Получить условие Task1–Task4"])
answer(["Отправить ответ"])
check(["Проверить ответ"])
updateStats(["Обновить личную статистику"])
personalStats(["Посмотреть личную статистику"])
users(["Посмотреть список пользователей"])
serverStats(["Посмотреть статистику сервера"])
deleteAny(["Удалить чужой аккаунт"])
changeRole(["Изменить роль пользователя"])
end
visitor -->|является клиентом| client
user -->|является клиентом| client
moderator -->|наследует возможности| user
admin -->|наследует возможности| moderator
client --- connect
client --- help
visitor --- register
visitor --- login
user --- profile
user --- logout
user --- deleteSelf
user --- solve
user --- personalStats
moderator --- users
moderator --- serverStats
admin --- deleteAny
admin --- changeRole
register -.->|«include»| initStats
login -.->|«include»| verify
solve -.->|«include»| getTask
solve -.->|«include»| answer
answer -.->|«include»| check
answer -.->|«include»| updateStats
Исходник Mermaid приведён выше; изображение PNG содержит редактируемые данные draw.io.