В рамках системного анализа, детальное документирование взаимодействия компонентов системы и действий пользователей является краеугольным камнем успешной разработки. Диаграммы последовательности в PlantUML и описания Use-Case предоставляют мощные инструменты для этой цели. Они позволяют визуализировать сложные процессы, выявить потенциальные проблемы и обеспечить четкое понимание функциональных требований.
PlantUML — это декларативный язык для создания различных видов UML-диаграмм из текстового описания. Его синтаксис позволяет быстро создавать и обновлять диаграммы, делая его незаменимым инструментом для системных аналитиков. Ниже представлены детальные диаграммы последовательности для каждого из запрошенных кейсов, включающие как основные, так и альтернативные сценарии.
Этот кейс описывает полный жизненный цикл шаблона в системе, от его создания до удаления. Диаграмма детализирует взаимодействие пользователя с интерфейсом, запросы к бэкенду и операции с базой данных, а также предусматривает обработку ошибок и альтернативных сценариев.
@startuml
actor "Пользователь" as User
box "Developer Portal (IDP)" #66C2B5
participant "idp-ui" as FE
participant "idp-back" as BE
database "БД IDP" as DB
end box
User -> FE ++: Переходит в раздел «Шаблоны»
FE -> BE ++: GET /api/templates
BE -> DB ++: SELECT * FROM templates
DB --> BE --: Список существующих шаблонов
BE --> FE --: 200 OK
FE --> User --: Отображает список шаблонов и кнопку "Создать новый"
== Создание шаблона ==
User -> FE ++: Нажимает "Создать новый"
FE -> User: Открывает форму создания шаблона
User -> FE: Вводит данные шаблона (название, описание, содержимое)
FE -> BE ++: POST /api/templates
BE -> DB ++: INSERT INTO templates (название, описание, содержимое) VALUES (...)
alt Шаблон успешно создан
DB --> BE --: Подтверждение сохранения
BE --> FE --: 201 Created
FE --> User --: Сообщает об успешном создании шаблона
else Ошибка валидации данных
BE --> FE --: 400 Bad Request + ошибки
FE --> User --: Показывает ошибки
end
== Редактирование шаблона ==
User -> FE ++: Выбирает шаблон для редактирования
FE -> FE: Отображает текущие данные шаблона в форме редактирования
User -> FE: Изменяет данные шаблона
FE -> BE ++: PUT /api/templates/{id}
BE -> DB ++: UPDATE templates SET (новое_название, новое_описание, новое_содержимое) WHERE id = {id}
alt Шаблон успешно обновлен
DB --> BE --: Подтверждение обновления
BE --> FE --: 200 OK
FE --> User --: Сообщает об успешном редактировании шаблона
else Шаблон не найден
BE --> DB ++: SELECT * FROM templates WHERE id = {id}
DB --> BE --: Не найдено
BE --> FE --: 404 Not Found
FE --> User --: Показывает ошибку "шаблон не найден"
end
== Удаление шаблона ==
User -> FE ++: Выбирает шаблон для удаления
FE -> User: Запрашивает подтверждение удаления
User -> FE: Подтверждает удаление
FE -> BE ++: DELETE /api/templates/{id}
BE -> DB ++: DELETE FROM templates WHERE id = {id}
alt Шаблон успешно удален
DB --> BE --: Подтверждение удаления
BE --> FE --: 204 No Content
FE --> User --: Сообщает об успешном удалении шаблона
else Ошибка удаления (например, шаблон в использовании)
BE --> DB ++: CHECK dependencies ON templates WHERE id = {id}
DB --> BE --: Зависимости найдены
BE --> FE --: 409 Conflict
FE --> User --: Показывает ошибку и предупреждает о зависимостях
end
@enduml
Диаграмма последовательности для управления шаблонами
Этот кейс описывает жизненный цикл процесса или задачи, требующей модерации. Диаграмма демонстрирует, как пользователь инициирует процесс, отправляет его на проверку, и как модератор принимает решение о согласовании или отклонении.
@startuml
actor "Пользователь" as User
actor "Модератор" as Moderator
box "Developer Portal (IDP)" #66C2B5
participant "idp-ui" as FE
participant "idp-back" as BE
database "БД IDP" as DB
end box
== Запуск процесса ==
User -> FE ++: Выбирает задачу/процесс для запуска
FE -> User: Отображает опцию "Запустить"
User -> FE: Нажимает "Запустить"
FE -> BE ++: POST /api/run/{process_id}
BE -> DB ++: Обновляет статус процесса на "Запущен"
DB --> BE --:
BE --> FE --: 200 OK
FE --> User --: Сообщает о запуске процесса
== Отправка на модерацию ==
User -> FE ++: Выбирает запущенный процесс для модерации
FE -> User: Отображает опцию "Отправить на модерацию"
User -> FE: Нажимает "Отправить на модерацию"
FE -> BE ++: POST /api/moderation/{process_id}
BE -> DB ++: Обновляет статус процесса на "На модерации"
DB --> BE --:
BE -> Moderator ++: Отправляет уведомление Модератору (via queue)
Moderator -->> BE --: Получает уведомление
BE --> FE --: 200 OK
FE --> User --: Сообщает об отправке на модерацию
== Согласование/Отклонение модератором ==
Moderator -> FE ++: Переходит в раздел «Модерация»
FE -> BE ++: GET /api/moderation/pending
BE -> DB ++: SELECT * FROM processes WHERE status = 'На модерации'
DB --> BE --: Список процессов на модерации
BE --> FE --: 200 OK
FE --> Moderator --: Отображает список процессов на модерации
Moderator -> FE: Выбирает процесс для рассмотрения
FE -> FE: Отображает детали процесса
alt Согласование
Moderator -> FE: Нажимает "Согласовать"
FE -> BE ++: POST /api/moderation/approve/{process_id}
BE -> DB ++: Обновляет статус процесса на "Согласован"
DB --> BE --:
BE -> User ++: Отправляет уведомление Пользователю
User -->> BE --: Получает уведомление
BE --> FE --: 200 OK
FE --> Moderator --: Сообщает об успешном согласовании
else Отклонение
Moderator -> FE: Нажимает "Отклонить"
FE -> FE: Открывает форму для ввода причины отклонения
Moderator -> FE: Вводит причину отклонения
FE -> BE ++: POST /api/moderation/reject/{process_id}
BE -> DB ++: Обновляет статус процесса на "Отклонен", сохраняет причину
DB --> BE --:
BE -> User ++: Отправляет уведомление Пользователю с причиной
User -->> BE --: Получает уведомление
BE --> FE --: 200 OK
FE --> Moderator --: Сообщает об успешном отклонении
end
@enduml
Диаграмма последовательности для процессов модерации
Этот кейс охватывает административные функции по управлению различными системными ресурсами. Диаграмма детализирует процессы просмотра, добавления, изменения и удаления таких сущностей, как задачи, SSH-ключи, роли и группы, а также включает сценарии обработки ошибок доступа.
@startuml
actor "Администратор" as Admin
box "Developer Portal (IDP)" #66C2B5
participant "idp-ui" as FE
participant "idp-back" as BE
database "БД IDP" as DB
end box
== Просмотр задач ==
Admin -> FE ++: Переходит в раздел «Задачи»
FE -> BE ++: GET /api/tasks
BE -> DB ++: SELECT * FROM tasks
DB --> BE --: Список задач
BE --> FE --: 200 OK
FE --> Admin --: Отображает список задач
alt Нет прав доступа
BE -> DB ++: CHECK user_permissions FOR Admin
DB --> BE --: Доступ запрещен
BE --> FE --: 403 Forbidden
FE --> Admin --: Показывает ошибку доступа
end
== Управление SSH-ключами ==
Admin -> FE ++: Переходит в раздел «SSH-ключи»
FE -> BE ++: GET /api/ssh-keys/{user_id}
BE -> DB ++: SELECT * FROM user_ssh_keys WHERE user_id = {user_id}
DB --> BE --: Список SSH-ключей пользователя
BE --> FE --: 200 OK
FE --> Admin --: Отображает список SSH-ключей
Admin -> FE: Нажимает "Добавить ключ"
FE -> Admin: Открывает форму добавления ключа
Admin -> FE: Вводит название и сам ключ
FE -> BE ++: POST /api/ssh-keys
BE -> DB ++: INSERT INTO user_ssh_keys (user_id, название, ключ) VALUES (...)
alt Ключ успешно добавлен
DB --> BE --:
BE --> FE --: 201 Created
FE --> Admin --: Сообщает об успешном добавлении ключа
else Ошибка формата SSH-ключа
BE --> FE --: 400 Bad Request
FE --> Admin --: Сообщает об ошибке формата ключа
end
Admin -> FE: Выбирает ключ для удаления
FE -> Admin: Запрашивает подтверждение
Admin -> FE: Подтверждает удаление
FE -> BE ++: DELETE /api/ssh-keys/{key_id}
BE -> DB ++: DELETE FROM user_ssh_keys WHERE id = {key_id}
alt Ключ успешно удален
DB --> BE --:
BE --> FE --: 204 No Content
FE --> Admin --: Сообщает об успешном удалении ключа
else Ключ не найден
BE --> FE --: 404 Not Found
FE --> Admin --: Сообщает, что ключ не найден
end
== Управление ролями ==
Admin -> FE ++: Переходит в раздел «Управление ролями»
FE -> BE ++: GET /api/roles
BE -> DB ++: SELECT * FROM roles
DB --> BE --: Список доступных ролей
BE --> FE --: 200 OK
FE --> Admin --: Отображает список ролей и их описаний
Admin -> FE: Выбирает пользователя и роль
FE -> BE ++: PUT /api/users/{user_id}/roles
BE -> DB ++: UPDATE user_roles SET role_id = {role_id} WHERE user_id = {user_id}
alt Роль успешно присвоена
DB --> BE --:
BE --> FE --: 200 OK
FE --> Admin --: Сообщает об успешном присвоении роли
else Роль не существует
BE --> FE --: 404 Not Found
FE --> Admin --: Сообщает, что роль не найдена
end
== Управление группами ==
Admin -> FE ++: Переходит в раздел «Управление группами»
FE -> BE ++: GET /api/groups
BE -> DB ++: SELECT * FROM groups
DB --> BE --: Список групп
BE --> FE --: 200 OK
FE --> Admin --: Отображает список групп и их участников
Admin -> FE: Выбирает группу и пользователя
FE -> BE ++: POST /api/groups/{group_id}/members
BE -> DB ++: INSERT INTO group_members (group_id, user_id) VALUES (...)
alt Пользователь добавлен в группу
DB --> BE --:
BE --> FE --: 201 Created
FE --> Admin --: Сообщает об успешном добавлении пользователя в группу
else Пользователь уже в группе
BE --> FE --: 409 Conflict
FE --> Admin --: Сообщает, что пользователь уже в группе
end
@enduml
Диаграмма последовательности для административного управления ресурсами
Use-Case (сценарии использования) предоставляют текстовое описание взаимодействия между акторами и системой для достижения определенной цели. Они дополняют диаграммы последовательности, описывая контекст, предусловия, основной и альтернативные потоки, а также потенциальные исключения.
Этот сценарий охватывает полный набор операций, которые пользователь может выполнять с шаблонами в системе.
Поле | Описание |
---|---|
Наименование | Управление шаблонами |
Акторы | Пользователь, Developer Portal (IDP) |
Предусловия | Пользователь авторизован и имеет необходимые права для управления шаблонами. |
Основной поток |
|
Альтернативный поток |
|
Исключения |
|
Результат | Шаблон успешно создан, отредактирован или удален; пользователь видит актуальный список шаблонов. |
Этот сценарий детализирует этапы жизненного цикла процесса, включая его запуск, отправку на модерацию и принятие решения модератором.
Поле | Описание |
---|---|
Наименование | Управление жизненным циклом процесса |
Акторы | Пользователь, Модератор, Developer Portal (IDP) |
Предусловия | Пользователь и Модератор авторизованы; Пользователь имеет права на запуск и отправку на модерацию; Модератор имеет права на согласование/отклонение. |
Основной поток |
|
Альтернативный поток |
|
Исключения |
|
Результат | Процесс запущен, отправлен на модерацию, и его статус обновлен в соответствии с решением модератора. |
Этот сценарий описывает, как администратор управляет различными системными ресурсами, включая задачи, SSH-ключи, роли и группы, обеспечивая контроль доступа и системную безопасность.
Поле | Описание |
---|---|
Наименование | Административное управление ресурсами |
Акторы | Администратор, Developer Portal (IDP) |
Предусловия | Администратор авторизован и обладает необходимыми правами для управления ресурсами. |
Основной поток |
|
Альтернативный поток |
|
Исключения |
|
Результат | Задачи, SSH-ключи, роли и группы успешно просмотрены и изменены в соответствии с запросами Администратора. |
Для оценки общей функциональности и сложности каждого кейса, а также потенциальных рисков, мы можем использовать радарную диаграмму. Эта диаграмма поможет визуализировать, насколько каждый кейс соответствует различным критериям, таким как сложность реализации, влияние на безопасность, частота использования и необходимость модерации.
На этой радарной диаграмме представлены оценки различных аспектов для каждого из трех рассмотренных кейсов. Например, "Управление шаблонами" показывает относительно низкую сложность и необходимость модерации, но высокую частоту использования. "Жизненный цикл процесса" имеет высокую необходимость модерации и влияние на безопасность, что логично, учитывая его природу. "Управление ресурсами" выделяется высокой сложностью реализации и зависимостью от других модулей, что подчеркивает комплексность административных функций.
Для лучшего понимания взаимосвязей между различными компонентами системы и основными функциями, мы можем использовать схему взаимодействия, представленную в виде ментальной карты. Она покажет, как различные элементы Developer Portal (IDP) и пользовательские взаимодействия сопряжены друг с другом.
Данная ментальная карта наглядно иллюстрирует основные функциональные области Developer Portal (IDP), их подфункции, а также ключевых акторов и системные компоненты, которые участвуют в этих процессах. Это помогает быстро понять структуру и взаимосвязи всей системы.
Для более глубокого понимания синтаксиса и возможностей PlantUML в создании диаграмм последовательности, предлагаю ознакомиться с обучающим видео. Оно наглядно демонстрирует, как использовать PlantUML для эффективной визуализации системных взаимодействий.
Это видео "How to Create a UML Sequence Diagram FOR FREE" является отличным ресурсом для тех, кто хочет освоить создание диаграмм последовательности с помощью PlantUML. Оно подробно объясняет основные концепции, синтаксис и лучшие практики, что значительно упростит работу с диаграммами и их интеграцию в процесс системного анализа.
alt
(альтернатива), else
(иначе) и opt
(опция), для обозначения различных ветвей в потоке выполнения. Это позволяет моделировать различные пути взаимодействия в рамках одной диаграммы.Детальная разработка диаграмм последовательности в PlantUML и всесторонних Use-Case является неотъемлемой частью работы системного аналитика. Такой подход обеспечивает глубокое понимание системных процессов, помогает выявить все возможные сценарии взаимодействия и способствует созданию надежной и эффективной архитектуры. Объединение визуальных и текстовых описаний предоставляет полный и четкий обзор функциональности системы, что критически важно для успешной разработки и поддержки программных продуктов.