Привет Хабр! Меня зовут Татьяна Ошуркова, я разработчик, аналитик и автор телеграм-канала IT Talks.
Диаграммы часто используются в документации. Есть большое количество типов диаграмм для различных потребностей: визуализации логики работы системы или взаимодействия компонентов, описания интеграций, проработки пользовательских требований и многого другого. Для этого существуют разные нотации, инструменты и подходы к построению диаграмм.
Но как начать использовать диаграммы в работе, если ранее вы не использовали их или работали с ними редко?
Для различных нотаций, исходя из теории, существует назначение каждой из диаграмм, которое говорит о том, в каком случае и для чего её необходимо использовать. Но как перенести эту теорию на практику и в процессе документирования эффективно использовать визуализацию для повышения качества проработки требований?
Теория и назначение диаграмм
Начнем с теории и рассмотрим назначение нескольких UML-диаграмм.
-
Диаграмма последовательности (Sequence Diagram). Описывает последовательность взаимодействий между объектами или системами во времени.
-
Диаграмма компонентов (Component Diagram). Показывает модульную структуру системы и связи между компонентами.
-
Диаграмма развертывания (Deployment Diagram). Отображает физическое размещение компонентов системы на серверах, устройствах или других инфраструктурных элементах.
-
Диаграмма активности (Activity Diagram). Показывает последовательность действий или шагов в процессе, включая ветвления, циклы и параллельные операции.
Из определения диаграмм можно понять их отличия и формально определить для визуализации каких аспектов требований их лучше применять. Но как это работает на практике? Рассмотрим примеры диаграмм из документации, где визуализация эффективно дополняет описание требований и помогает в их проработке и понимании.
2 декабря я проведу бесплатный вебинар: «Построение диаграмм. Цели и задачи визуализации данных», где подробно разберу, как эффективно использовать различные виды диаграмм для описания требований. Запись на вебинар доступна по ссылке.
Практика и визуализация в документации
Постановка задачи
Нашей задачей будет описание API для системы управления заказами. Мы разрабатываем API, которое позволяет:
-
Управлять заказами:
-
Создавать новые заказы.
-
Получать статус заказа.
-
Отменять заказы.
-
-
Интегрироваться с внешними сервисами:
-
Проверка и обработка оплат.
-
Расчет стоимости доставки и отправка заказа.
-
-
Поддерживать очереди задач для асинхронной обработки операций.
-
Обеспечивать аутентификацию и авторизацию пользователей.
Рассмотрим построение нескольких диаграмм с использованием PlantUML.
Функционал API
Основные конечные точки API:
-
POST /orders: Создание заказа.
-
GET /orders/{id}: Получение информации о заказе.
-
PATCH /orders/{id}/cancel: Отмена заказа.
-
PATCH /orders/{id}/complete: Завершение заказа после оплаты и доставки.
Диаграмма компонентов
Эта диаграмма помогает визуализировать компоненты архитектуры системы и основные взаимодействия между её частями.
@startuml package "Клиентская часть" { [Мобильное приложение] [Веб-приложение] } package "Серверная часть API" { [API Gateway] [Сервис управления заказами] [Сервис очередей задач] } package "Внешние системы" { [Платежный сервис] [Сервис доставки] [Сервис уведомлений] } [Мобильное приложение] --> [API Gateway] [Веб-приложение] --> [API Gateway] [API Gateway] --> [Сервис управления заказами] [Сервис управления заказами] --> [Сервис очередей задач] [Сервис управления заказами] --> [Платежный сервис] [Сервис управления заказами] --> [Сервис доставки] [Сервис очередей задач] --> [Сервис уведомлений] @enduml
Диаграмма компонентов показывает взаимодействие клиентских приложений, серверной части API и внешних систем. Это помогает понять, как распределяются роли между компонентами.
Диаграмма последовательности. Создание заказа
Эта диаграмма описывает процесс создания нового заказа с использованием описанных выше запросов.
@startuml participant Client participant API participant Database Client -> API: POST /orders API -> Database: Insert new Order Database --> API: Order ID API --> Client: Order Created (ID: 456) Client -> API: GET /orders/456 API -> Database: Fetch Order Details Database --> API: Order Data API --> Client: Order Details Client -> API: PATCH /orders/456/cancel API -> Database: Update Order Status (cancelled) Database --> API: Succes API --> Client: Order Cancelled Client -> API: PATCH /orders/456/complete API -> Database: Update Order Status (completed) Database --> API: Success API --> Client: Order Completed @enduml
Диаграмма последовательности помогает разработчикам понять шаги взаимодействия между компонентами системы на уровне API.
Диаграмма активности. Обработка задач в очереди
Очереди задач используются для асинхронной обработки операций, таких как уведомления, оплата и доставка.
@startuml start :Получить задачу из очереди; if (Тип задачи == "Оплата") then (Да) :Проверить статус оплаты; if (Оплата подтверждена?) then (Да) :Обновить статус заказа; :Отправить уведомление клиенту; else (Нет) :Пометить заказ как "ошибка оплаты"; endif else (Нет) if (Тип задачи == "Доставка") then (Да) :Рассчитать доставку; :Передать заказ в службу доставки; :Обновить статус заказа; :Отправить уведомление клиенту; else (Нет) :Логировать неизвестный тип задачи; endif endif stop @enduml
Диаграмма активности визуализирует логику обработки задач, что упрощает отладку и разработку.
Диаграмма развертывания
Показывает физическое размещение компонентов системы. Визуализирует, как компоненты системы управления заказами взаимодействуют в инфраструктуре.
@startuml node "Client" as client { [Mobile App] [Web App] } cloud "API Gateway" as gateway { [Order Management Service] [Product Catalog Service] } database "Main Database" as db { [Customer Table] [Order Table] [Product Table] [OrderItem Table] } cloud "External Services" as external { [Payment Gateway] [Notification Service] } client --> gateway : API Requests gateway --> db : Database Queries gateway --> external : External API Calls @enduml
Диаграмма развертывания помогает в проектировании архитектуры и распределении компонентов.
Подведем итоги
Использование PlantUML для документирования API – эффективный способ визуализировать систему с разных сторон: от сценариев взаимодействия (диаграммы последовательности) до архитектуры (диаграммы развертывания).
Важно учитывать, что:
-
Диаграммы последовательности тесно связаны с API-запросами, показывая их выполнение.
-
Остальные диаграммы описывают данные, связи и инфраструктуру, но не отражают запросы напрямую.
Регулярное обновление диаграмм и их использование по назначению делает документацию полезной и понятной для всех участников проекта.
Удачи в построении диаграмм на практике!
ссылка на оригинал статьи https://habr.com/ru/articles/860952/
Добавить комментарий