Освоение моделирования ArchiMate: создание системы управления библиотекой с помощью PlantUML

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

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

A PlantUML formatted ArchiMate diagram

Понимание слоёв архитектуры 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

A screenshot of Visual Paradigm VPasCode showing the creation of an ArchiMate Diagram

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

Готовы создать свои собственные диаграммы?

Протестируйте наш движок рендеринга в реальном времени, поэкспериментируйте с генерацией диаграмм на базе ИИ и мгновенно экспортируйте чистую векторную графику.

Попробуйте бесплатный инструмент «Диаграммирование как код» прямо сейчас

Прокрутить вверх