Инструменты
На занятиях по проектированию вы можете воспользоваться белой доской или флипчартом, которые лучше подходят для совместной работы и быстрого выполнения итераций. Для долговременной документации существует ряд инструментов, которые помогут создать диаграммы архитектуры программного обеспечения на основе модели C4. Вот некоторые из вопросов, которые вы должны задать себе, рассматривая инструменты:
- Кто авторы диаграмм и насколько они технически подготовлены?
- Кто аудитория диаграмм и как они получат доступ к диаграммам/документации?
- [Построение диаграмм против моделирования?] (/tooling#построение диаграмм против моделирования)
- Интерфейс с “перетаскиванием” в сравнении с “диаграммами в виде кода”?
- Данные, хранящиеся в git рядом с вашим исходным кодом, по сравнению с данными, хранящимися в инструменте / облачном сервисе?
- Простые для сранвнения исходные тексты для использования в
pull requests? - Закрытый формат данных или открытый формат данных?
- Интерактивные диаграммы или статические диаграммы?
- Бесплатный или платный?
- Закрытый или с открытым исходным кодом?
- Облачный или автономный?
- Коротко или долго живущая документация?
- Построение диаграмм только для команды или моделирование в масштабах предприятия?
Построение диаграмм или моделирование
Небольшое замечание о сравнении построения диаграмм и моделирования, поскольку это самое важное решение, которое вам нужно будет принять в отношении инструментов. Модель C4 может использоваться независимо от того, используете ли вы инструмент для построения диаграмм или моделирования, но при переходе от построения диаграмм к моделированию открываются некоторые интересные возможности.
Построение диаграмм
Как отрасль, мы, как правило, предпочитаем построение диаграмм (например, Visio, draw.io, Lucidchart, PlantUML, Mermaid и т.д.) над моделированием (например, Sparx EA, Archi, Ice Panel, Structurizr и т.д.), в первую очередь потому, что барьер для входа относительно низок, и это рассматривается как гораздо более простая задача. Но существует ряд серьезных проблем, связанных с использованием инструментов построения диаграмм для построения диаграмм архитектуры программного обеспечения:
- Язык предметной области инструментов построения диаграмм - “прямоугольники и линии”, что означает:
- Они не могут предоставить никакой помощи или проверки правильности ваших диаграмм.
- Вы не можете запрашивать диаграммы (например, “покажите мне все зависимости компонента X”).
- Повторное использование элементов диаграммы осуществляется с помощью копирования и вставки - если вы переименовываете поле, вам нужно переименовать его на каждой диаграмме, где оно появляется.
- Многие инструменты построения диаграмм имеют трудно различимые форматы данных, что затрудняет их использование, например, в сочетании с
Pull requests.
Моделирование
С помощью инструмента моделирования вы создаете не визуальную модель архитектуры вашего программного обеспечения (единое определение всех элементов и взаимосвязей между ними), а затем создаете различные представления (которые становятся диаграммами) поверх этой модели. Это требует немного большей тщательности, но проблемы могут быть решены - инструменты моделирования могут понять семантику того, что вы пытаетесь сделать, оказать дополнительную помощь, а переименование элементов / связей выполняется легко.
Модели архитектуры программного обеспечения, по сути, представляют собой просто ориентированные графы, состоящие из узлов и ребер, с диаграммами, показывающими подмножество графа. Как только вы увидите разделение модели (которая представляет собой просто структурированные данные) и представлений (которые отображаются в виде диаграмм), вы сразу поймете, что перед вами открывается целый ряд интересных возможностей:
- Создание альтернативных визуализаций, помогающих понять большие и сложные архитектурные модели - подробнее см. в разделе Масштабируется ли модель C4?.
- Запрос модели.
- Экспорт модели в другие инструменты.
- и так далее
Модель - это всего лишь данные! И мы, как разработчики программного обеспечения, располагаем бесконечным набором инструментов для визуализации этих данных и управления ими.
Варианты
Вот набор инструментов, которые обеспечивают некоторую специфическую поддержку модели C4.
Поддерживаемые типы диаграмм(например, системный контекст, схемы контейнеров и компонентов) (например, диаграммы совместной работы или последовательности действий) (например, диаграммы, показывающие проблемы с развертыванием и инфраструктурой) | Диаграммы или моделирование(то есть инструмент моделирования - для автоматической синхронизации нескольких диаграмм при переименовании элементов) (то есть инструмент моделирования - для автоматической синхронизации нескольких диаграмм при переименовании элементов) Рекомендуемый | Авторство(пользовательский интерфейс моделирования перетаскиванием) (для упрощения контроля версий и интеграции в конвейеры сборки/ другие инструменты) | Другое(бесплатно, разветвлять / настраивать и т.д.) (для визуализации диаграмм с помощью различных инструментов или форматов визуализации, таких как диаграммы, графики и т.д.) |