Канал "Лицен ИТ" представляет статью о моделировании больших систем в нотации C4.
Авторы статьи: Дмитрий Фролов и Владимир Мясников, стандартизировавшие подход к документированию в команде интеграционного тестирования.
Цель статьи: помочь коллегам быстро и удобно получать информацию о системах.
Модель C4 фокусируется на простоте нотации и различных уровнях абстракции.
Простая аннотация позволяет легко читать и моделировать диаграммы.
Уровни абстракции подходят как для бизнес-пользователей, так и для технических специалистов.
Диаграмма контекста подходит для бизнес-пользователей.
Отвечает на вопросы: какие пользователи используют систему, с какими системами взаимодействует и для чего нужны эти взаимодействия.
Элементы диаграммы: пользователь, система, внешняя система, стрелки отношений.
Диаграмма контейнера подходит для пользователей, которым нужно понять архитектуру приложения.
Отвечает на вопросы: какие технологии использует система, из каких контейнеров состоит система, как контейнеры взаимодействуют между собой и с внешними системами.
Элементы: контейнер, хранилище данных, брокер или очередь сообщений, группа контейнеров.
Диаграмма компонентов подходит для программистов и архитекторов.
Отвечает на вопросы: из каких компонентов состоит контейнер, как компоненты взаимодействуют между собой, как компоненты взаимодействуют с внешними системами и как пользователи взаимодействуют с компонентами.
Элементы: компонент, хранилище данных, брокер или очередь сообщений, группа компонентов, пользователь, внешняя система, стрелки отношений.
Диаграмма кода используется для низкоуровневой детализации системы.
Рекомендовано использовать UML-диаграммы для моделирования.
Пример использования: система заказа лекарств.
В центре диаграммы размещается система заказа лекарств.
В верхней части диаграммы размещаются пользователи системы: администратор и клиент.
По периметру системы размещаются внешние системы: формирование отчетов, система уведомлений и т.д.
Стрелки показывают взаимодействия между элементами.
В центре схемы размещается пунктирная рамка, объединяющая все контейнеры системы.
Фронт-системы: мобильное приложение, веб-приложение.
Бэк-системы: балансировщик, каталог лекарств, сервис.
Хранилище данных: база данных.
Рассматриваются сущности: клиент, заказ, склад, курьер.
Описываются атрибуты и связи между сущностями.
Рекомендация использовать интерактивные элементы для удобства навигации.
Создание переходов между диаграммами контекста, контейнеров, компонентов и кода.
Использование UML-классов для компонентов и диаграмм баз данных для хранилищ данных.
Использование единообразного расположения элементов.
Создание небольших диаграмм для удобства обсуждения.
Объединение схожих элементов и декомпозиция на отдельные страницы.
Решение не использовать диаграмму компонентов.
Применение диаграммы последовательности для описания интеграции между системами.
Декомпозиция списка интеграций для упрощения.
Модель C4 помогает экономить время на чтение и поиск документации.
Проблемы: повышение трудозатрат на документацию и необходимость актуализации диаграмм.
Пример итогового результата и призыв к подписке и поддержке канала.