Введение

Попросите кого-нибудь из представителей строительной отрасли визуально передать архитектуру здания и вам будут представлены планы участка, планы этажей, вид с высоты, виды поперечного сечения и подробные чертежи. Напротив, попросите разработчика программного обеспечения описать программную архитектуру программной системы с помощью диаграмм, и вы, скорее всего, получите запутанное нагромождение прямоугольников и линий … несогласованные обозначения (цветовое кодирование, формы, стили линий и т.д.), неоднозначные названия, немаркированные связи, общая терминология, отсутствие выбора технологий, смешанные абстракции и т.д.

Эскиз архитектуры программного обеспечения Эскиз архитектуры программного обеспечения
Эскиз архитектуры программного обеспечения Эскиз архитектуры программного обеспечения

В нашей отрасли действительно есть унифицированный язык моделирования (UML), ArchiMate и SysML, но вопрос о том, обеспечивают ли они эффективный способ передачи информации об архитектуре программного обеспечения, часто неуместен, поскольку многие команды уже отказались от них в пользу гораздо более простых схем “прямоугольников и линий”. Отказ от этих языков моделирования - это одно, но, возможно, в гонке за гибкостью многие команды разработчиков программного обеспечения утратили способность к визуальному общению.

Карты вашего кода

Модель C4 была создана для того, чтобы помочь командам разработчиков программного обеспечения описывать архитектуру программного обеспечения и обмениваться информацией о ней как на начальных этапах проектирования, так и при ретроспективном документировании существующей кодовой базы. Это способ создания “карт вашего кода” с различными уровнями детализации, аналогично тому, как вы использовали бы что-то вроде Google Maps для увеличения или уменьшения масштаба интересующей вас области.

Уровеь 1: Диаграмма системный контекст (system context) обеспечивает отправную точку, показывающую, как данная программная система вписывается в окружающий мир. Уровень 2: Диаграмма контейнеров (container) увеличивает масштаб системы программного обеспечения, показывая приложения и хранилища данных внутри нее. Уровень 3: Диаграмма компонентов (component) увеличивает масштаб отдельного контейнера, показывая компоненты внутри него. Уровень 4: Диаграмма код (code) (например, класс UML) может использоваться для увеличения масштаба отдельного компонента, показывая, как этот компонент реализован на уровне кода.

Повышение зрелости диаграмм

Цель модели C4 - повысить уровень зрелости, связанный с диаграммами архитектуры программного обеспечения.

Модель зрелости, представляющая собой диаграмму архитектуры программного обеспечения

Уровень 1 Уровень 2 Уровень 3 Уровень 4 Уровень 5
Начальные
Никаких диаграмм архитектуры программного обеспечения.
Ad hoc
Диаграммы архитектуры программного обеспечения со специальными абстракциями и обозначениями в универсальном инструменте построения диаграмм.
Определенный
Диаграммы архитектуры программного обеспечения с определенными абстракциями и обозначениями в универсальном инструменте построения диаграмм.
Смоделированный
Диаграммы архитектуры программного обеспечения с определенными абстракциями и обозначениями, созданные вручную с помощью инструмента моделирования.
Оптимизация
Элементы модели совместно используются командами по всей организации. - Модели используются в качестве наборов данных, доступных для запроса. - Автоматическое создание элементов модели из исходного кода, среды развертывания, журналов и т.д. - и т.п.