Введение
Попросите кого-нибудь из представителей строительной отрасли визуально передать архитектуру здания и вам будут представлены планы участка, планы этажей, вид с высоты, виды поперечного сечения и подробные чертежи. Напротив, попросите разработчика программного обеспечения описать программную архитектуру программной системы с помощью диаграмм, и вы, скорее всего, получите запутанное нагромождение прямоугольников и линий … несогласованные обозначения (цветовое кодирование, формы, стили линий и т.д.), неоднозначные названия, немаркированные связи, общая терминология, отсутствие выбора технологий, смешанные абстракции и т.д.
![]() | ![]() |
![]() | ![]() |
В нашей отрасли действительно есть унифицированный язык моделирования (UML), ArchiMate и SysML, но вопрос о том, обеспечивают ли они эффективный способ передачи информации об архитектуре программного обеспечения, часто неуместен, поскольку многие команды уже отказались от них в пользу гораздо более простых схем “прямоугольников и линий”. Отказ от этих языков моделирования - это одно, но, возможно, в гонке за гибкостью многие команды разработчиков программного обеспечения утратили способность к визуальному общению.
Карты вашего кода
Модель C4 была создана для того, чтобы помочь командам разработчиков программного обеспечения описывать архитектуру программного обеспечения и обмениваться информацией о ней как на начальных этапах проектирования, так и при ретроспективном документировании существующей кодовой базы. Это способ создания “карт вашего кода” с различными уровнями детализации, аналогично тому, как вы использовали бы что-то вроде Google Maps для увеличения или уменьшения масштаба интересующей вас области.
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
| Уровеь 1: Диаграмма системный контекст (system context) обеспечивает отправную точку, показывающую, как данная программная система вписывается в окружающий мир. | Уровень 2: Диаграмма контейнеров (container) увеличивает масштаб системы программного обеспечения, показывая приложения и хранилища данных внутри нее. | Уровень 3: Диаграмма компонентов (component) увеличивает масштаб отдельного контейнера, показывая компоненты внутри него. | Уровень 4: Диаграмма код (code) (например, класс UML) может использоваться для увеличения масштаба отдельного компонента, показывая, как этот компонент реализован на уровне кода. |
Повышение зрелости диаграмм
Цель модели C4 - повысить уровень зрелости, связанный с диаграммами архитектуры программного обеспечения.
Модель зрелости, представляющая собой диаграмму архитектуры программного обеспечения
| Уровень 1 | Уровень 2 | Уровень 3 | Уровень 4 | Уровень 5 |
|---|---|---|---|---|
| Начальные Никаких диаграмм архитектуры программного обеспечения. | Ad hoc Диаграммы архитектуры программного обеспечения со специальными абстракциями и обозначениями в универсальном инструменте построения диаграмм. | Определенный Диаграммы архитектуры программного обеспечения с определенными абстракциями и обозначениями в универсальном инструменте построения диаграмм. | Смоделированный Диаграммы архитектуры программного обеспечения с определенными абстракциями и обозначениями, созданные вручную с помощью инструмента моделирования. | Оптимизация Элементы модели совместно используются командами по всей организации. - Модели используются в качестве наборов данных, доступных для запроса. - Автоматическое создание элементов модели из исходного кода, среды развертывания, журналов и т.д. - и т.п. |











