Architecture as Code: моделируем архитектуру предприятия в ArchiMate. archimate.. archimate. Architecture as Code.. archimate. Architecture as Code. Анализ и проектирование систем.. archimate. Architecture as Code. Анализ и проектирование систем. архитектура предприятия.. archimate. Architecture as Code. Анализ и проектирование систем. архитектура предприятия. Блог компании OTUS.. archimate. Architecture as Code. Анализ и проектирование систем. архитектура предприятия. Блог компании OTUS. моделирование систем.

Меня зовут Максим Рогоза, и последние 7 лет я работаю корпоративным архитектором в крупнейших компаниях России. В настоящее время я занимаюсь стратегическим IT‑консалтингом в компании Аксеникс, где помогаю крупным организациям выстраивать эффективную IT‑архитектуру. В рамках своей деятельности я часто помогаю компаниям внедрять методологии управления архитектурой предприятия, и ArchiMate зарекомендовал себя как один из наиболее эффективных инструментов для описания и анализа корпоративной архитектуры.

Помимо консалтинга, я преподаю курс по ArchiMate в Otus, и одним из частых вопросов от студентов является возможность описания архитектуры предприятия с помощью кода. Недавно на одном из своих проектов я решил опробовать подход Architecture as Code, и сегодня хочу поделиться полученным опытом.

Преимущества подхода

Architecture as Code предлагает существенные преимущества по сравнению с традиционным подходом к моделированию архитектуры. После освоения синтаксиса скорость создания моделей значительно возрастает — вместо перетаскивания элементов мышкой достаточно описать их взаимосвязи в текстовом виде. Внесение изменений становится намного проще, так как не нужно искать нужный элемент на диаграмме и перестраивать связи, достаточно отредактировать соответствующий фрагмент кода.

Важным преимуществом является возможность использования искусственного интеллекта для помощи в создании моделей. Современные LLM‑модели хорошо понимают текстовые описания архитектуры и могут генерировать корректный код для их визуализации. Кроме того, сгенерированные диаграммы можно легко интегрировать в различные инструменты документирования, такие как Draw.io, Confluence и другие системы, что значительно упрощает поддержку актуальной документации.

Инструменты и синтаксис

Основным инструментом для реализации подхода Architecture as Code я выбрал PlantUML с расширением Archimate. Для быстрого начала работы удобно использовать онлайн‑редактор.

Синтаксис PlantUML для ArchiMate достаточно прост и интуитивен. Каждый элемент архитектуры описывается по следующему шаблону:

archimate #Layer "Label" as ID <<stereotype>>

где:

  • #Layer — определяет слой архитектуры (#Business, #Application или #Technology) и его цветовое оформление

  • «Label» — текст, который будет отображен на диаграмме

  • ID — идентификатор элемента для создания связей

  • <<stereotype>> — тип элемента в нотации ArchiMate (например, <<business‑process>>, <<application‑component>>)

Например:

archimate #Business "Order Processing" as BP1 <<business-process>>
archimate #Business "Order Creation" as BS1 <<business-service>>

Связи между элементами создаются по шаблону:

Rel_RelationType_Direction(ElementID1, ElementID2)

где:

  • RelationType — тип связи (Serving, Realization, Assignment, Access и др.)

  • Direction — направление стрелки (Up, Down, Left, Right или пусто для двунаправленной связи)

  • ElementID1 — идентификатор элемента‑источника

  • ElementID2 — идентификатор элемента‑приемника

Например:

Rel_Serving_Up(AS1, BS1) ' Элемент AS1 обслуживает элемент BS1 
Rel_Realization_Up(AC1, AS1) ' Элемент AC1 реализует элемент AS

Пример использования

Рассмотрим простой пример описания бизнес‑процесса обработки заказа:

@startuml 
' Подключаем библиотеку ArchiMate 
!include <archimate/Archimate>

' Определяем элементы архитектуры
archimate #Business "Order Processing" as BP1 <<business-process>>
archimate #Business "Order Creation" as BS1 <<business-service>>
archimate #Application "Order Service" as AS1 <<application-service>>
archimate #Application "Order Management System" as AC1 <<application-component>>

' Определяем связи между элементами
Rel_Serving_Up(AS1, BS1)
Rel_Realization_Up(AC1, AS1)
Rel_Realization_Up(BS1, BP1)
@enduml

На выходе получаем вот такую схему:

Architecture as Code: моделируем архитектуру предприятия в ArchiMate - 1

Ну а теперь попробуем что‑нибудь посложнее:

@startuml
!include <archimate/Archimate>

' Определяем действующих лиц
archimate #Motivation "Программист" as devStake <<stakeholder>>
archimate #Business "Программист" as dev <<business-actor>>
archimate #Business "Продавец" as seller <<business-actor>>

' Бизнес-процессы и сервисы
archimate #Business "Покупка пива" as buyBeer <<business-process>>
archimate #Business "Выбор пива" as chooseBeer <<business-process>>
archimate #Business "Оплата" as payment <<business-process>>
archimate #Business "Продажа алкоголя" as sellService <<business-service>>

' Приложения и технологии
archimate #Application "Кассовый аппарат" as pos <<application-component>>
archimate #Technology "Платежный терминал" as terminal <<technology-device>>
archimate #Technology "Холодильник с пивом" as fridge <<technology-device>>

' Мотивация
archimate #Motivation "Жажда" as thirst <<driver>>
archimate #Motivation "Усталость после кодинга" as tired <<driver>>

' Связи
Rel_Association_Down(devStake, thirst)
Rel_Association_Down(devStake, tired)
Rel_Triggering_Down(thirst, buyBeer)
Rel_Triggering_Down(tired, buyBeer)
Rel_Assignment_Down(dev, buyBeer)
Rel_Assignment(seller, sellService)
Rel_Triggering_Right(chooseBeer, payment)
Rel_Serving_Up(fridge, chooseBeer)
Rel_Serving_Up(terminal, payment)
Rel_Serving_Up(pos, sellService)
Rel_Realization_Up(chooseBeer, buyBeer)
Rel_Realization_Up(payment, buyBeer)
Rel_Serving_Up(sellService, buyBeer)
Rel_Realization_Up(dev, devStake)
@enduml

и получаем вот такую схему:

Architecture as Code: моделируем архитектуру предприятия в ArchiMate - 2

Использование ИИ для генерации моделей

Современные языковые модели можно эффективно использовать для создания архитектурных диаграмм. Достаточно описать желаемую модель на естественном языке, например:

«Создай диаграмму в нотации ArchiMate, показывающую взаимодействие системы управления заказами с внешними сервисами, включая платежную систему и систему доставки.»

Искусственный интеллект способен сгенерировать соответствующий PlantUML‑код, который затем можно доработать под конкретные нужды.

Недостатки подхода

При всех преимуществах, у Architecture as Code есть и свои ограничения:

  • Требуется время на освоение синтаксиса

  • Сложнее контролировать визуальное расположение элементов

  • Не все нотации ArchiMate поддерживаются в PlantUML

  • При большом количестве элементов код может стать трудночитаемым

Заключение

Architecture as Code — это мощный подход к моделированию архитектуры предприятия, который особенно эффективен при работе с системами контроля версий и в условиях частых изменений. Несмотря на определенные ограничения, преимущества этого метода делают его отличным выбором для современных архитектурных практик, особенно в сочетании с возможностями искусственного интеллекта.


В завершение рекомендую всем желающим посетить открытые уроки по Archimate, которые проведут мои коллеги в Otus:

  • 25 февраля. «ArchiMate и PlantUML: автоматизация архитектурного моделирования с помощью ИИ». Подробнее

  • 5 марта: «Совместная работа и реализация артефактов в Archi». Подробнее

  • 20 марта: «Риcуем модель ArchiMate в бесплатном инструменте Archi». Подробнее

Автор: MaxRokatansky

Источник

Rambler's Top100