Добро пожаловать на ещё одно мастер-класс-руководство от технической команды Visual Paradigm! При проектировании сложных корпоративных архитектур поддержание чистоты, организованности и структурной целостности диаграмм может быть непростой задачей. Традиционные инструменты перетаскивания часто замедляют работу, когда меняются макеты или требования. Именно поэтому многие архитекторы программного обеспечения и корпоративные дизайнеры полагаются на рабочие процессы «диаграмма как код».
В этом руководстве я подробно расскажу о своём подходе к созданию всеобъемлющей многослойной диаграммы архитектуры ArchiMate длясистемы управления библиотекой. Используя PlantUML внутрибесплатного редактора PlantUMLнаVisual Paradigm VPasCodeмы разберём, как структурировать корпоративные слои, чётко определять элементы и отображать точные межслойные связи.

Понимание слоёв архитектуры ArchiMate
Когда я приступаю к моделированию корпоративной системы, я всегда начинаю с определения структурных границ. ArchiMate разделяет аспекты на отдельные архитектурные слои, что помогает заинтересованным сторонам с первого взгляда понять бизнес-ценность, функциональную логику, компоненты приложений и техническую инфраструктуру.
Для нашей системы управления библиотекой мы организуем диаграмму в четыре отдельных вертикальных и горизонтальных блока:
- Слой мотивации: Отражает высокоуровневые цели и движущие силы, определяющие развитие организации.
- Бизнес-слой: Подчёркивает акторов, сервисы и ключевые бизнес-процессы, такие как выдача и возврат книг, а также бронирование.
- Слой приложений: Определяет программные сервисы и компоненты приложений, обрабатывающие основную логику.
- Технологический слой: Представляет физические или виртуальные аппаратные узлы, на которых размещён наш стек приложений.
Шаг 1: Настройка базовой структуры
Чтобы начать писать код, я сначала настраиваю глобальные правила рендеринга и импортирую официальную стандартную библиотеку ArchiMate для PlantUML. Установка ортогонального типа линий обеспечивает чёткость и прямое угловое выравнивание соединительных линий, что критически важно для создания чистых корпоративных схем.
skinparam linetype ortho
!include https://static.visual-paradigm.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml
remove @unlinked
top to bottom direction
title Introductory - Library Management System
Настаивая нанаправлении «сверху вниз» и удаляя несвязанные элементы, я обеспечиваю естественное течение макета от высокоуровневых бизнес-мотиваций до технологической инфраструктуры.
Шаг 2: Определение основных слоёв и элементов
Далее я заполняю каждый контейнер группировки соответствующими элементами. Я предпочитаю явно группировать связанные компоненты с помощью блоков группировки PlantUML, чтобы визуальные границы соответствовали корпоративным доменам.
Grouping(motivation_layer, "Motivation Layer") {
Motivation_Goal(g_ops, "Efficient Library Operations")
Motivation_Goal(g_service, "High-Quality Reader Service")
}
Grouping(business_layer, "Business Layer") {
Business_Actor(ba_librarian, "Librarian")
Business_Actor(ba_member, "Library Member")
Business_Service(bs_circulation, "Circulation Service")
Business_Service(bs_catalog, "Catalog Service")
Business_Process(bp_checkout, "Check Out / Return")
Business_Process(bp_reserve, "Manage Reservations")
}
Grouping(application_layer, "Application Layer") {
Application_Service(as_circulation, "Circulation Application Service")
Application_Service(as_catalog, "Catalog Application Service")
Application_Component(ac_lms, "Library Management System")
Application_Component(ac_catalog, "Catalog Database")
}
Grouping(technology_layer, "Technology Layer") {
Technology_Node(tn_server, "Application Server")
Technology_Node(tn_db, "Database Server")
}
Почему структура организована именно так? Явное добавление префиксов к элементам (например, ” ba_ для бизнес-акторов, bp_ для процессов и tn_ для технологических узлов) значительно упрощает написание сложных реляционных отображений в дальнейшем. Это предотвращает коллизии имен и делает ваш скрипт самодокументируемым.
Шаг 3: Отображение связей между слоями
Когда наши элементы размещены, последний шаг — соединить их. ArchiMate опирается на точные типы связей, такие как реализация, обслуживание, инициирование и назначение, для точного моделирования зависимостей.
' Бизнес-процессы реализуют бизнес-услуги
Rel_Realization_Up(bp_checkout, bs_circulation, "")
Rel_Realization_Up(bp_reserve, bs_circulation, "")
Rel_Triggering_Right(bp_checkout, bp_reserve, "")
' Бизнес-услуги реализуют мотивационные цели
Rel_Realization_Up(bs_circulation, g_ops, "")
Rel_Serving_Up(bs_catalog, g_service, "")
' Актеры обслуживаются бизнес-услугами
Rel_Serving_Up(bs_circulation, ba_librarian, "")
Rel_Serving_Up(bs_catalog, ba_member, "")
' Прикладные услуги реализуют бизнес-услуги
Rel_Realization_Up(as_circulation, bs_circulation, "")
Rel_Realization_Up(as_catalog, bs_catalog, "")
' Прикладные компоненты реализуют прикладные услуги
Rel_Realization_Up(ac_lms, as_circulation, "")
Rel_Realization_Up(ac_catalog, as_catalog, "")
' Технологические узлы назначают (развертывают) прикладные компоненты
Rel_Assignment_Up(tn_server, ac_lms, "")
Rel_Assignment_Up(tn_db, ac_catalog, "")
Используя направленные теги связей, такие как Rel_Realization_Up и Rel_Triggering_Right я сохраняю точный контроль над тем, как соединители прокладываются по холсту, предотвращая беспорядочное пересечение линий.
Полный исходный код
Вот полный, готовый к использованию скрипт PlantUML для диаграммы архитектуры нашей системы управления библиотекой:
@startuml
skinparam linetype ortho
!include https://static.visual-paradigm.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml
remove @unlinked
top to bottom direction
title Введение - Система управления библиотекой
Grouping(motivation_layer, "Слой мотивации") {
Motivation_Goal(g_ops, "Эффективная работа библиотеки")
Motivation_Goal(g_service, "Высококачественное обслуживание читателей")
}
Grouping(business_layer, "Бизнес-слой") {
Business_Actor(ba_librarian, "Библиотекарь")
Business_Actor(ba_member, "Член библиотеки")
Business_Service(bs_circulation, "Услуга выдачи")
Business_Service(bs_catalog, "Услуга каталога")
Business_Process(bp_checkout, "Выдача / Возврат")
Business_Process(bp_reserve, "Управление бронированиями")
}
Grouping(application_layer, "Прикладной слой") {
Application_Service(as_circulation, "Прикладная услуга выдачи")
Application_Service(as_catalog, "Прикладная услуга каталога")
Application_Component(ac_lms, "Система управления библиотекой")
Application_Component(ac_catalog, "База данных каталога")
}
Grouping(technology_layer, "Технологический слой") {
Technology_Node(tn_server, "Прикладной сервер")
Technology_Node(tn_db, "Сервер базы данных")
}
' Бизнес-процессы реализуют бизнес-услуги
Rel_Realization_Up(bp_checkout, bs_circulation, "")
Rel_Realization_Up(bp_reserve, bs_circulation, "")
Rel_Triggering_Right(bp_checkout, bp_reserve, "")
' Бизнес-услуги реализуют мотивационные цели
Rel_Realization_Up(bs_circulation, g_ops, "")
Rel_Serving_Up(bs_catalog, g_service, "")
' Актеры обслуживаются бизнес-услугами
Rel_Serving_Up(bs_circulation, ba_librarian, "")
Rel_Serving_Up(bs_catalog, ba_member, "")
' Прикладные услуги реализуют бизнес-услуги
Rel_Realization_Up(as_circulation, bs_circulation, "")
Rel_Realization_Up(as_catalog, bs_catalog, "")
' Прикладные компоненты реализуют прикладные услуги
Rel_Realization_Up(ac_lms, as_circulation, "")
Rel_Realization_Up(ac_catalog, as_catalog, "")
' Технологические узлы назначают (развертывают) прикладные компоненты
Rel_Assignment_Up(tn_server, ac_lms, "")
Rel_Assignment_Up(tn_db, ac_catalog, "")
@enduml
Оживите свою архитектуру с помощью VPasCode

Подход «диаграммирование как код» позволяет вам контролировать версии своей архитектуры, эффективно сотрудничать и создавать безупречные диаграммы за считанные секунды. Независимо от того, создаете ли вы модели предприятия в ArchiMate, архитектуры программного обеспечения C4 или стандартные диаграммы последовательностей UML, выполнение этих задач в надежной среде имеет решающее значение.
Готовы создать свои собственные диаграммы?
Протестируйте наш движок рендеринга в реальном времени, поэкспериментируйте с генерацией диаграмм на базе ИИ и мгновенно экспортируйте чистую векторную графику.
Попробуйте бесплатный инструмент «Диаграммирование как код» прямо сейчас


