ArchiMate — это язык моделирования архитектуры предприятия. Я часто о нём слышал, но никогда не пользовался. Он казался мне очень сложным с очень странной солянкой из разносортных объектов, с замороченным десктопным редактором. Изначально мы даже не рассматривали ArchiMate как первый кандидат на реализацию в нашем инструменте моделирования, а больше склонялись к моделям данных, C4, UML, BPMN. И добавили эту нотацию совершенно случайно. Но пока рисовали примеры моделей для статьи я просто обалдевал на сколько ArchiMate клёвый, какими гениями он придуман и зачем ИТ архитекторам могут быть нужны ещё какие‑то языки моделирования.

Мы попробовали описать разные аспекты нашего программного продукта в этой нотации от миссии и стратегической карты до сценария резервного копирования базы данных. В итоге у нас получилось что‑то среднее между небольшим руководством по ArchiMate и тупой неприкрытой саморекламой. Решайте сами полезно для вас это или нет. Статья получилась очень объёмная, смело пролистывайте не интересные разделы.

Модель нашего продукта в ArchiMate

Перед тем как что‑то моделировать я посмотрел несколько курсов по ArchiMate, но они были на столько пространными и абстрактными, что только добавили вопросов. Ещё попался такой прикольный перечень разных видов ArchiMate‑диаграмм и ещё немного примеров. Кстати у автора много других интересных статей, и на этом этапе я начал догадываться зачем всё это нужно. Но опять‑таки все эти примеры слишком абстрактные с объектами типа Goal 1, Goal 2, Goal 3, ...

В идеальном с моей точки зрения руководстве должно быть больше конкретики и больше целостности. В этой статье мы как‑раз и попробовали написать руководство по ArchiMate, которого нам не хватало, чтобы в нём разбирался один пример, а на выходе была целостная модель с пояснениями, например, почему на стратегической карте именно такие цели и зачем все эти модели вообще нужны.

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

Первая фишка ArchiMate в том, что он достаточно гибкий. В нём нет единственно правильного набора диаграмм на все случаи. У вас полная свобода что и как моделировать, поначалу это вводит в ступор, но потом проникаешься этой идеей.

Дальше я буду отмечать интересные на мой взгляд моменты таким образом.

Миссия, видение, цели и ценности

Мне очень нравится ArchiMate тем, что он позволяет описать все аспекты программного продукта от верхнеуровневых целей или стратегической карты до деталей реализации. Начнём с миссии, видения, целей и ценностей:

Миссия, видение, цели и ценности
Миссия, видение, цели и ценности

Миссия — это основная цель организации, смысл её существования, она определяется на старте и редко меняется.

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

Видение — это образ нашей организации и продукта в будущем.

В будущем хотелось бы создать инструмент моделирования, доступный для широкой аудитории пользователей, чтобы он не требовал сложного и долгого обучения, чтобы он мог использоваться для решения разных задач от построения генеалогического древа школьником (это вполне себе модель) до моделирования архитектуры предприятия или чего‑то более глобального.

Затем можно обозначить верхнеуровневые цели:

  • Разработать сам инструмент моделирования

  • Создать основные нотации моделирования (модели данных, C4, ArchiMate, ...) и дать пользователям возможность создавать свои

  • Предоставить людям возможность создавать модели и делиться ими

  • Создать сообщество пользователей и разработчиков

И ключевые ценности:

  • Максимальная простота и доступность для пользователей. Мы совершенно точно не делаем Enterprise‑комбайн с тысячами кнопок и диалогов

  • Но при этом полнота функциональности. Должен быть репозиторий моделей с управлением доступом, версионированием, API. Должны поддерживаться все сценарии, необходимые в инструменте моделирования: создание нотаций моделирования, создание моделей, поддержка разных форм представления моделей (диаграммы, таблицы, деревья, текст, ...), валидация и преобразование моделей, генерация артефактов из моделей (документы, код, ...). Словом draw.io, Figma или Miro мы тоже не делаем. А делаем что‑то среднее между Enterprise‑решением и простой рисовалкой диаграмм

  • Открытость и соответствие стандартам. Чтобы для обмена моделями использовались международные стандарты, чтобы не было vendor lock‑in и можно было без особых проблем переключаться с одного инструмента моделирования на другой, что мы и сделали для Archi

  • Минимализм реализации. На сколько это возможно мы стараемся не изобретать велосипед и не делать ничего лишнего. Во‑первых, потому что у нас не бесконечные ресурсы. Во‑вторых, чтобы инструмент легко встраивался в ландшафт информационных систем на предприятиях, у нас есть базовая функциональность, а всё остальное можно сделать через API

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

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

Если вы считаете все эти детали просто саморекламой, то дальше будет только хуже, вы сэкономите своё время, если сразу закроете статью. Но, с другой стороны, и я не вижу смысла писать очередное руководство в стиле «давайте нарисуем модель для интернет‑магазина или PetClinic, вот, один квадратик „микросервис для заказов“, вот второй квадратик „микросервис для корзины“, между ними стрелочка», лично мне всегда не хватает примеров ближе к реальности.

Стратегическая карта

Теперь опишем стратегическую карту для нашего продукта:

Стратегическая карта
Стратегическая карта

Здесь перечислены уже более конкретные и измеримые цели, но при этом и более изменчивые.

Довольно часто цели разбивают на 4 перспективы: финансы, клиенты, внутренние бизнес‑процессы, обучение и развитие. Этот подход с несколькими перспективами описан в книге Р. Каплана и Д. Нортона «Сбалансированная система показателей. От стратегии к действию», по которой уже написано много статей. Но я не могу удержаться от того, чтобы не сделать свой очередной корявый пересказ. Смело пролистывайте этот раздел.

Финансы

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

Финансовые цели зависят от множества факторов, в том числе от стадии, на которой находится организация (или ваш проект):

  • Рост. На этом этапе компания может не приносить никакой прибыли, идут активные инвестиции в развитие, в наращивание клиентской базы

  • Устойчивое состояние. Всё ещё требуются инвестиции, но уже должна быть и прибыль

  • Сбор «урожая». Здесь важен возврат инвестиций, сделанных на предыдущих этапах

Можно выделить три направления для достижения финансовых целей:

  • Рост доходов и расширение структуры деятельности

    • Новые продукты. Это не наш случай, мы не предлагаем принципиально новый продукт, уже существует много разных инструментов моделирования

    • Новое применение. Возможно, да. Я ни разу не видел, чтобы инструмент моделирования использовали, например, для выбора работы, для построения генеалогического древа или чего‑то подобного. Или тот же n8n — это вполне себе инструмент моделирования, но узкоспециализированный с одной нотацией под одну задачу. Или Swagger позволяет описать модель API и генерировать из неё разные вещи. Наверное нужно много лет заниматься разработкой инструментов моделирования, чтобы увидеть что‑то общее между n8n, Swagger и рисовалкой генеалогических деревьев, но, на мой взгляд, во всех этих случаях решаются очень похожие задачи: придумывается метамодель (для потоков данных, API, родственных отношений), выбирается подходящая нотация (диаграмма, текст, таблица), создаются редактор, инструменты для исполнения моделей, для их анализа или генерации чего‑нибудь. На мой взгляд, есть много таких областей, где можно было бы не изобретать велосипед, а взять готовый инструмент моделирования и адаптировать его под эту область. Это одна из наших целей — расширить область применения инструментов моделирования

    • Новые клиенты и рынки. Наверное, да. В основном инструменты моделирования используются крупными компаниями. Сложно представить, что школьник купит лицензию на Enterprise Architect за несколько сотен долларов и начнёт там рисовать модели, описывающие его предков. Или вряд ли руководитель проекта будет для своих обычных задач использовать инструмент моделирования вместо Excel или PowerPoint. Или при выборе квартиры, машины, работы человек вряд ли будет рисовать модели, использовать метод анализа иерархий. Но на мой взгляд все они — потенциальные пользователи нашего инструмента моделирования. Эта область выходит далеко за рамки моделирования корпоративной архитектуры или чего‑то подобного

    • Новые взаимоотношения. Здесь мне сложно что‑то сформулировать

    • Новая структура предложения товаров и услуг. И здесь сложно написать что‑то осмысленное

    • Новая ценовая стратегия. Наверное, да, у нас бесплатный продукт

  • Сокращение издержек и увеличение производительности

    • Повышение производительности. Для нас это важная цель, мы не можем тратить человекогоды на добавление новых фич или на реализацию новых нотаций моделирования. Поэтому у нас есть редактор нотаций, в котором простую нотацию типа EPC можно сделать за день. ArchiMate — за пару недель, но это тоже вполне разумное время. Если бы мы потратили на него год, то нам просто нечего делать на рынке. Словом, производительность — это та вещь, на которую нам стоит обращать внимание

    • Снижение удельных издержек. У нас ИТ продукт и удельных издержек особо нет. Мы не несём никаких расходов от того, что пользователи рисуют модели

    • Совершенствование системы каналов. Для нас сейчас наиболее актуальны каналы продаж. И если посмотреть объективно на наши предыдущие статьи на хабре, видно что они не очень заходят. Возможно есть смысл попробовать ещё какие‑то площадки, конференции, прямые контакты

    • Сокращение текущих расходов. На данном этапе у нас нет особых расходов, например, инфраструктурных или административных

  • Использование активов и инвестиционная стратегия

    • Денежный цикл. Это актуально, например, для компаний, которые закупают сырьё, из которого потом что‑то изготавливают, или закупают готовую продукцию и потом продают. Для них важно сколько времени уходит на этот цикл. В случае ИТ компании цикл может начинаться с оплаты предпроектных работ, оплаты труда разработчиков и завершаться выпуском продукта или отдельной фичи и получением прибыли. Причём, в ИТ компаниях эти циклы могут измеряться годами. Но нам пока нечего ускорять, никаких денежных циклов просто нет :)

    • Оптимизация использования активов. Пока особо нечего оптимизировать

Вы можете использовать этот и другие списки в качестве шаблона для своего проекта.

Наверное для нас самые правильные финансовые цели это сделать первые продажи нашего продукта и привлечь инвестиции. Для них легко сформулировать измеримые показатели. Но мне почему‑то хочется на текущем этапе сформулировать цель просто как расширение аудитории, без привязки к финансовым показателям.

Этот как‑раз тот случай когда реальная модель не очень укладывается в абстрактную теоретическую схему. Если бы я делал абстрактное руководство, то просто написал бы в качестве цели «Получение прибыли» и не рефлексировал бы дальше.

Клиенты

Чтобы расширить аудиторию и в перспективе достичь более амбициозных целей мы должны предлагать людям что‑то полезное. Можно ставить себе цели по улучшению следующих показателей:

  • Доля рынка. Чем более востребован ваш продукт, тем больше у вас доля рынка, тем эффективнее вы достигаете свои финансовые цели

  • Сохранение клиентской базы. Это один показатель, влияющий на долю рынка

  • Расширение клиентской базы. Это второй показатель, влияющий на долю рынка. Наверняка у вас несколько категорий клиентов. Для одной категории вы можете поставить цель «сохранение клиентской базы», а для другой — «расширение»

  • Удовлетворение потребностей клиента. Это важно, чтобы сохранять и расширять клиентскую базу и достигается через улучшение следующего

    • Характеристики товаров и услуг

      • Функциональность

      • Качество

      • Цена

      • Сроки

    • Имидж и репутация

    • Взаимоотношения с клиентами

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

    • Целевой сегмент и прибыльный — сохранить этих клиентов

    • Целевой сегмент и неприбыльный — устранить причины отсутствия прибыли

    • Нецелевой сегмент и прибыльный — контролировать ситуацию

    • Нецелевой сегмент и неприбыльный — отказаться от сотрудничества

Причём, что касается целевой аудитории, у вас может быть несколько сегментов рынка, на каждом из которых вы будете формулировать совершенно разные цели. Опишем категории пользователей нашего инструмента моделирования и потребительские характеристики, которые на наш взгляд для них важны:

  • Крупные компании, которые моделируют ИТ архитектуру, бизнес‑процессы, риски и другие сложные вещи. На мой взгляд для таких компаний важно следующее:

    • Комплексное решение. Чтобы все модели были в одном месте и каждому подразделению не приходилось создавать что‑то своё. Типа архитекторы используют Archi, разработчики — Structurizr и PlantUML, процессники — Camunda, безопасники и админы — ещё что‑то, часть моделей хранится в Git, часть — в базе данных. Очевидно, что вместо всего этого зоопарка должно быть одно простое решение с репозиторием моделей, API, управлением доступом, версионированием, валидацией моделей

    • Настраиваемость. В крупных компаниях обычно есть свои методологи, которые определяют правила моделирования. Периодически возникают новые задачи, когда нужно что‑то моделировать, для чего нет и не может быть готовой нотации из коробки. Должна быть возможность создавать свои нотации и определять правила валидации моделей

    • Встраиваемость в ИТ ландшафт. Инструмент моделирования сам по себе в принципе имеет какой‑то смысл, он позволяет разобраться в сложной предметной области, зафиксировать эти знания, поделиться ими. Но всё‑таки он гораздо полезнее когда используется совместно с другими информационными системами в компании. Например, вы описали бизнес‑процессы, затем их можно выгрузить в систему исполнения процессов. Затем можно собирать статистику исполнения и загружать её обратно в инструмент моделирования для оценки эффективности процессов или для сопоставления замоделированных и реальных процессов. Или вы можете прикрутить инструмент моделирования к корпоративному чат‑боту, чтобы он рассказывал людям про алгоритм повышения зарплаты в компании и другие вещи. Таких сценариев просто огромное количество. У инструмента моделирования должно быть API

    • Соответствие стандартам. Каким бы клевым не был инструмент моделирования, скорее всего он не будет использоваться в компании вечно и понадобится переход на другой инструмент, или в компании до этого уже использовались другие продукты и понадобится переход с них, или понадобится прикрутить к инструменту моделирования что‑нибудь сбоку для генерации документов, анализа моделей и так далее, или понадобится обмениваться моделями с другими компаниями, у которых используются другие инструменты моделирования. Во всех этих случаях хорошо, если ваш инструмент моделирования поддерживает международные стандарты для обмена моделями, для хранения метамоделей. Мы опираемся на стандарты Object Management Group и ровно поэтому нам было так легко интегрироваться с Archi

  • Небольшие компании, стартапы, отдельные разработчики, аналитики

    • Доступная стоимость. Мы считаем, что инструмент должен быть бесплатным, с возможностью развернуть его локально, без искусственных ограничений на функциональность или количество и размер моделей

  • Предметные специалисты

    • Возможность поделиться своими знаниями. Чтобы далеко не ходить за примерами... я немного разобрался в ArchiMate, создал несколько моделей, описывающих ИТ продукт, поделился этими знаниями с вами, и возможно это упростит вам работу над вашими проектами, вам не придётся проделывать этот путь с нуля. Или другой пример, мне часто приходится формулировать требования к ПО, декомпозировать их, оценивать, и у меня в голове есть шаблон, по которому это можно легко и быстро делать, который я могу описать в виде метамодели. Или другая ситуация, есть множество вариантов решения задачи, один сложнее, другой дороже, третий вообще какой‑то непонятный и можно ходить кругами от одного варианта к другому, а можно по определенному алгоритму эти варианты быстро оценить и выбрать оптимальный. У многих специалистов в голове множество таких ментальных шаблонов, с помощью которых они разбираются в чём‑то или принимают решения. Мы стремимся сделать удобный и простой инструмент для таких людей, чтобы они могли поделиться своими шаблонами с другими

  • Частные пользователи

    • Простота. Для крупных компаний, в которых работают архитекторы, которые годами рисуют модели, это не так критично. Но если мы ориентируемся на массовую аудиторию, например, школьников с генеалогическими деревьями, то конечно инструмент моделирования должен быть очень простым

  • Разработчики инструментов моделирования

    • Встраиваемость и расширяемость. Есть много проектов типа n8n, Structurizr, DBML, LinkML, DocHub и так далее, где люди с нуля решают одни и те же задачи: создание репозитория моделей, создание диаграммных, табличных, текстовых редакторов моделей, валидация моделей, генерация разных вещей из моделей. Мы думаем, что все эти задачи можно решить один раз в нашем проекте, а дальше заниматься сугубо прикладными вещами: созданием нотаций для моделирования данных или архитектуры, реализацией каких‑то узкоспециализированных генераторов, созданием инструментов для обратного инжиниринга схем баз данных в модель и так далее. Нет смысла каждый раз думать как хранить модели, как сделать для них редактор. Это одна из наших целей, чтобы наш инструмент легко поддерживал такие сценарии

И ещё немного вещей, важных для всех категорий пользователей:

  • Необходимые нотации из коробки. У нас есть редактор нотаций моделирования, но большинству пользователей он совершенно не нужен, им нужны готовые нотации. Соответственно наша цель постепенно увеличивать их количество

  • Разные формы представления моделей. Некоторые вещи удобнее редактировать в виде диаграммы, другие — в таблице, третьи — в текстовом виде. Диаграммы у нас уже есть, дальше наша цель улучшить текстовые представления моделей и добавить табличные представления

Таким образом, это и есть наш перечень целей с точки зрения клиентской перспективы.

Для каждой категории пользователей цели отличаются. Невозможно сделать идеальный продукт, чтобы в нём были все мыслимые фичи, чтобы он был дешевым, качественным, чтобы все пользователи были довольны. Вам необходимо выбрать вещи, на которых вы будете фокусироваться в первую очередь, которые отличают вас от конкурентов. И совершенно не факт, что на первом месте будет функциональность вашего приложения, например, вы можете делать акцент на бренде, на личном подходе к каждому клиенту. И совершенно не факт, что это плохо, наверное хуже когда вы пытаетесь следовать той же стратегии, что и компания, которая уже давно заняла большую долю рынка.

Внутренние бизнес-процессы

Внутренние бизнес‑процессы — это то, с помощью чего вы создаёте добавленную стоимость, достигаете финансовых и клиентских целей.

Виды процессов:

  • Инновационные процессы — изучение рынка, создание предложения новых товаров или услуг

  • Операционные процессы — создание и доставка существующих товаров или услуг существующим клиентам

  • Послепродажное обслуживание

Вы можете ставить цели по их улучшению.

Наши цели:

  • Жесткая приоритизация фич. Наша ситуация напоминает мне фильм Moneyball, в нескольких словах это история про менеджера бейсбольной команды, у которого не было бюджета на тупую покупку самых дорогих игроков и ему пришлось придумывать другие варианты. Как и у нас нет бюджета чтобы нанять десятки разработчиков и чем‑то их загрузить, приходится выбирать фичи с максимальной пользой и минимальными затратами

  • Оптимизация процесса разработки. Если возможно использовать что‑то готовое или запилить микродвижок для типовых задач, то мы это делаем. Например, когда добавляли поддержку ArchiMate, то неделя ушла на саму нотацию и ещё неделя на общесистемные вещи типа импорта/экспорта моделей, которые переиспользуются для всех существующих и будущих нотаций

  • Обеспечение качества кода. В противном случае мы просто утонем в разработке

  • Открытость процесса разработки. Пока это заключается просто в том, что мы рассказываем здесь что‑то про детали реализации, возможно в будущем получится что‑то большее

Обучение и развитие

Можно сформулировать цели по следующим направлениям:

  • Возможности работника

  • Возможности информационных систем

  • Мотивация, делегирование полномочий, соответствие личных целей корпоративным

Если честно, это самая размытая перспектива, плюс получается уже статья по сбалансированной системе показателей, а не ArchiMate, поэтому ограничимся такими целями:

  • Написание статей по моделированию

  • Создание обучающих курсов

  • Развитие сообщества

И здесь я отмечу ещё одну фишку:

Вторая фишка ArchiMate, в том, что он позволяет моделировать множество очень разных вещей. Например, мы описали на нём стратегическую карту, хотя это вообще отдельная вселенная. Или можно выполнить SWOT анализ. Меня поражает то, что спецификация ArchiMate в 4 раза меньше спецификации UML. Но при этом в UML нет такого обилия диаграмм.

Категории пользователей и их задачи

Начнём немного спускаться с небес на землю. Опишем более конкретные категории пользователей и задачи, в выполнении которых им поможет наш инструмент:

Пользователи и их задачи
Пользователи и их задачи

В ArchiMate на разных уровнях используются разные цвета:

  • Фиолетовый — уровень мотивации

  • Жёлтый — бизнес‑уровень

  • Синий — уровень приложения

  • Зелёный — технологический уровень

  • Розовый — уровень реализации и миграции

Это особенно удобно когда на одной диаграмме есть объекты с разных уровней.

У нашего приложения 4 категории пользователей, которые участвуют в соответствующих процессах:

  • Методолог

    • Описание правил моделирования

  • Аналитик

    • Формализация знаний в виде моделей

    • Проверка моделей на соответствие с правилам моделирования от методолога

    • Хранение моделей

    • Преобразование моделей. Например, преобразования между концептуальными, логическими и физическими моделями данных. В общем случае все эти модели создаются вручную разными людьми (бизнес‑аналитиками, системными аналитиками, разработчиками), но вообще вы можете определить правила по которым наследование сущностей или связи многие ко многим с концептуального уровня реализуются на физическом уровне и выполнять эти преобразования автоматически. Или, например, вы описываете процессы в нотации EPC, но для имитационного моделирования удобнее преобразовать эти модели в сети Петри, а для исполнения процессов придётся их преобразовать в BPMN модели

    • Формирование артефактов из моделей. Генерация документов, кода, SQL‑скриптов, XML‑схем и так далее

    • Обмен моделями

    • Анализ моделей

  • Бизнес‑пользователь

    • Получение знаний из моделей. Например, бизнес‑пользователь может посмотреть как в компании выглядит процесс повышения зарплаты сотрудникам или может задать этот вопрос чат‑боту, который вместо него посмотрит в модель

    • Исполнение моделей. Например, исполнение бизнес‑процессов

  • ИТ специалист

    • Встраивание процесса моделирования в другие процессы в организации

Третья фишка ArchiMate в том, что у него достаточно гибкая нотация. Вы можете описывать связи между объектами с помощью стрелочек на диаграмме, а можете вкладывать одни объекты в другие. С точки зрения модели это одно и то же, разница только в визуализации. К такой свободе поначалу даже сложно привыкнуть, это не BPMN, в котором акторы почти всегда изображаются дорожками. Здесь любой объект может быть дорожкой.

Бизнес-процессы

Теперь провалимся в услугу «Описание правил моделирования», она реализуется с помощью следующего бизнес‑процесса:

Бизнес‑процесс «Описание правил моделирования»
Бизнес‑процесс «Описание правил моделирования»

Здесь связь между пользователем и бизнес‑услугой уже показана стрелочкой, а не вложенностью. Это отношение обслуживания (serving).

Честно говоря, в ArchiMate не самый тривиальный вопрос какие типы связей в каком случае использовать. Я старался выбирать наиболее подходящие, глядя в примеры и спрашивая у ChatGPT, который постоянно выдумывал несуществующие виды связей. К слову, у нас реализованы правила соединения объектов как в Archi, вы сможете соединить объекты только допустимыми типами связей.

Между услугой и процессом отношение реализации (realization). Внутри процесса перечисляем его шаги. На диаграмме это не показывается, но между процессом и шагами отношение композиции (composition). Последовательность выполнения шагов задаётся с помощью отношения вызова (triggering).

На выходе процесса создаётся бизнес‑объект «Нотация моделирования». На этой же диаграмме мы можем показать, что нотация моделирования включает в себя метамодель, правила отображения моделей в виде диаграмм (если необходимо) и грамматику DSL для редактирования моделей в текстовом виде (если необходимо).

А в нижней части диаграммы показаны уже сценарии использования с уровня реализации приложения, они обозначены синим цветом. Для каждого шага бизнес‑процесса в нашем приложении реализована соответствующая функциональность. Например, чтобы создать проект пользователь должен сначала увидеть список существующих проектов, затем нажать на кнопку создания проекта. С технической точки зрения удобно описать для этого два отдельных сценария.

Затем пользователь создаёт метамодель. Но с нашей точки зрения создание метамоделей ни чем не отличается от создания обычных моделей, поэтому у нас один технический сценарий «Создание модели». Таким образом в ArchiMate решена эта вечная проблема когда с одной стороны хочется абстрагироваться от технических деталей и описать бизнес‑процессы человеческим языком, а не в терминах CRUD (посмотреть список проектов, создать проект, открыть проект, удалить проект, ...), но с другой стороны, хочется и упорядочить сценарии, сгруппировать их по типам объектов (проект, модель, ...) по типам действий над объектами (создать, посмотреть, удалить, ...). В ArchiMate мы описываем и человеческие бизнес‑процессы (жёлтые блоки, это может быть зоной ответственности бизнес‑аналитика), и технические сценарии использования системы (синие блоки, это может быть зоной ответственности системного аналитика), плюс наглядно показываем связи между уровнями.

Четвёртая фишка ArchiMate в том, что на одной диаграмме мы можем показывать связи между очень разными типами объектов, в том числе с разных уровней моделирования. Это очень удобно, позволяет плавно переходить от одной модели к другой, видеть где соприкасаются зоны ответственности разных людей в проекте.

Модель предметной области

В предыдущем разделе мы начали описывать сущности из нашей предметной области, опишем здесь остальные сущности:

Модель предметной области
Модель предметной области

Модель очень простая:

  • На верхнем уровне создаётся пространство моделирования. Оно может быть персональным или для организации

  • Пространство моделирования содержит проекты

  • На этих двух уровнях пользователям могут назначаться роли (администратор, редактор, гость)

  • Проекты содержат модели

  • У моделей могут быть представления разных типов: диаграмма, дерево, таблица, текст, форма свойств

  • Структура моделей определяется метамоделью

  • Структура древовидного и табличного представлений, формы свойств так же определяются метамоделью. Т.е. в метамодели вы задаёте какие типы объектов и связей вам нужны, какие у них есть атрибуты. А затем автоматически получаете все эти редакторы

  • Правила отображения моделей в виде диаграмм задаются отдельно, там указывается какие значки должны использоваться на диаграмме, какие цвета, типы линий, стрелок и так далее

  • Грамматика DSL так же задаётся отдельно, если вам нужно редактировать модели в текстовом виде

Перечень сценариев использования приложения

Наконец с бизнес‑уровня провалимся на уровень самого приложения. Опишем сценарии использования для моделей, которые мы уже упоминали чуть выше:

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

Сценарии использования для диаграмм уже немного сложнее:

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

Фактически это аналог Use Case диаграмм из UML, просто я не стал показывать акторов.

Не буду приводить все сценарии, в текущей версии их 65 штук. С этими моделями уже можно делать что‑то полезное, а не только получать эстетическое удовольствие, двигая разноцветные прямоугольники на диаграмме. Например, вы можете использовать их для оценки трудозатрат. У нас получилось 65 пользовательских сценариев. Чтобы описать каждый из них понадобится в среднем один день, значит чтобы описать все — 3 месяца.

Затем можно разбить сценарии на категории: простой, средний, сложный. Например, сценарий «Просмотр списка проектов» простой, на него понадобится 1 неделя: реализовать API, фронтенд, покрыть тестами, протестировать вручную и поправить баги. А сценарий «Редактирование модели в текстовом виде» — сложный, на него понадобится 1 месяц. Затем можно оценить сколько человеко‑лет понадобится на реализацию всего приложения.

И таким нехитрым образом вы можете оценивать проекты любой сложности. Конечно это очень грубая оценка, но зато быстрая и так вы можете ошибиться, скажем, в 1,5 раза и можно заложить это в риски, но вряд ли вы ошибётесь в 10 раз.

Также модели помогут в получении целостной картины о прогрессе реализации: какая часть сценариев описана, какая часть уже реализована. Ваш горизонт планирования увеличивается со спринта до нескольких лет.

Ещё такие модели помогут с приоритизацией требований. Оцениваем важность каждого сценария, например, «Создание диаграмм для моделей» — это важный сценарий, без него инструмент моделирования просто не имеет смысла. А «Запуск преобразований моделей» — такая себе фича, без которой можно обойтись, в крайнем случае, просто написать рядом скрипт, который делает с моделями всё что нужно через API. Затем разбиваем все сценарии на категории:

  • а) Легко сделать и очень важно — реализуем эти сценарии в первую очередь

  • б) Легко сделать, но не особо важно — сомнительно, но окей, почему бы не сделать, если будет время

  • в) Сложно сделать и очень важно — разбиваем на более простые вещи

  • г) Сложно сделать и не особо важно — тут два варианта, либо ищем миллионы денег на реализацию и кому это нужно, либо не делаем никогда

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

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

Сценарии использования приложения

Теперь более детально опишем сценарий создания модели:

Сценарий создания модели
Сценарий создания модели

Фактически это каркас постановки задачи на разработку. Здесь описаны предусловия, которые должны быть выполнены до начала этого пользовательского сценария, описаны основные действия пользователя, ожидаемый результат, требования и ограничения. По такому сценарию можно сделать следующее:

  • Оценить на сколько полно и правильно реализована фича

  • Написать автотесты

  • Выполнить ручное тестирование

  • Добавить пункт в программу и методику испытаний

  • Выполнить трассировку требований

Одна картинка, а сколько профита!

Структура приложения

Опишем структуру приложения:

Структура приложения
Структура приложения

Приложение состоит из фронтенда и бэкенда. Они взаимодействуют друг с другом через API. Также есть API для Model Context Protocol клиентов. Управление учетными данными осуществляется внешней системой, например, Keycloak.

Диаграммы последовательности

Создадим для примера ещё какую‑нибудь техническую схему, например, схему аутентификации MCP клиентов в нашем приложении:

Схема аутентификации MCP клиентов
Схема аутентификации MCP клиентов

Получился аналог Sequence Diagram из UML. Честно говоря, нарисовать эту картинку было достаточно сложно, нужно существенно перерабатывать алгоритм расположения связей, но что‑то в итоге получилось.

Шестая фишка ArchiMate в том, что у него очень простая нотация (прямоугольники и связи), но этого достаточно, чтобы рисовать очень разные вещи, включая диаграммы последовательности. Для этого не понадобилось создавать отдельную нотацию как в UML.

Технологические сценарии

Наконец мы дошли до технологического уровня. Здесь у нас пока 3 сценария:

Технологические сценарии
Технологические сценарии

Опишем схему развёртывания приложения:

Схема развёртывания приложения
Схема развёртывания приложения

Схема резервного копирования:

Схема резервного копирования базы данных
Схема резервного копирования базы данных

Мы начали с моделей, описывающих нашу миссию по улучшению этого мира, а заканчиваем параметрами скрипта резервного копирования базы данных. Я максимально доволен! Что вообще нельзя описать в ArchiMate? Наверное много чего, например, макеты пользовательского интерфейса, но нам ничего не мешает добавить для этого дополнительную нотацию.

Я хотел нарисовать для статьи ещё несколько моделей, но тогда я никогда её не опубликую. Лучше попробуйте сами описать ваш программный продукт с помощью ArchiMate.

Как попробовать нарисовать свои модели или экспортировать их из Archi

Для этого вам нужно аутентифицироваться в приложении и создать проект.

Затем вы можете создать новую ArchiMate модель:

Диалог создания модели
Диалог создания модели

Либо импортировать модель из Archi (файл с расширением archimate):

Диалог загрузки модели
Диалог загрузки модели

Рабочая область выглядит следующим образом:

Рабочая область
Рабочая область

Слева навигатор по моделям. У него такая же структура как в Archi, потому что структура моделей у нас идентичная, оба инструмента основаны на стандартах Object Management Group и используют одну и ту же метамодель.

Справа форма свойств. Она пока минималистичная, там название и описание объекта, входящие и исходящие отношения, перечень диаграмм, на которых объект используется. У некоторых объектов свойства немного другие, например, у связей типа «Доступ» (access) можно выбрать вид доступа (чтение, запись, ...), при этом будет изменяться внешний связи на диаграмме как и в Archi. Мы пока не выносили на форму свойств пользовательские атрибуты или параметры внешнего вида (шрифт, цвета,...), со временем их тоже добавим.

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

Затем вы можете выгрузить модель и открыть её в Archi:

Меню экспорта модели
Меню экспорта модели

Несколько слов о готовности нашего инструмента моделирования для использования в продакшене... С одной стороны, мы сумели нарисовать в нём все эти модели и это говорит, что им в принципе можно пользоваться. С другой стороны, я понимаю, что наверняка есть баги, есть недоделки, некоторые вещи сделаны непривычно по сравнению с Archi. Если вам в принципе интересен наш проект, то мы рады любой обратной связи и какие‑то важные для вас вещи можем поправить или добавить быстрее на сколько это возможно.

Зачем ещё один инструмент моделирования?

Зачем ИТ архитекторам нужны ещё какие‑то языки моделирования кроме ArchiMate — это открытый вопрос. Но зачем делать ещё один инструмент моделирования, если уже есть Archi, совершенно очевидно — незачем! Но тем не менее мы мотивировались следующими вещами:

  • Веб‑интерфейс удобнее, не нужно ничего устанавливать, можно открывать модели хоть на телефоне. Плюс так проще сделать приятный UI. Например, для меня всегда было болью попасть мышкой на рамку фигуры толщиной в 1 пиксель, чтобы изменить её размер, а в нашем инструменте толстенная рамка с приятной анимацией, я смотрю на неё и мне хочется изменять размер фигур :)

  • Не нужен отдельный портал для публикации моделей. Вы можете просто открыть доступ к проекту и поделиться ссылкой на нужную модель (что мы и сделали в этой статье). Причём вы даёте ссылку не просто на картинку, а на модель, в которой у каждого объекта есть свойства, можно посмотреть связи объекта с другими объектами

  • Можно редактировать одну диаграмму одновременно с другими пользователями

  • Поддерживаются другие нотации, например, C4, модели данных, EPC, VAD, ваши собственные нотации

  • Если сравнивать с веб‑рисовалками типа draw.io, то у нас модели хранятся в том же формате, что и в Archi. Вы можете взять модель из Archi, загрузить её к нам, отредактировать, выгрузить обратно. Или написать плагин для Archi, который делает всё это через API. На уровне объектов обеспечивается полная совместимость. С диаграммами немного сложнее, мы постарались их сделать максимально похожими, но, например, сейчас нет возможности изменять цвет фигур или рисовать произвольные диагональные связи

  • Есть API для интеграции с другими системами

  • Есть поддержка Model Context Protocol, чтобы ИИ мог отвечать на вопросы по вашим моделям, расскажу про это в следующей статье

  • В перспективе можно реализовать что угодно, например, текстовый редактор для ArchiMate моделей

Заключение

В статье мы немного рассказали про наш инструмент моделирования.

И попытались сделать небольшое руководство по ArchiMate. В своих проектах вы можете попробовать следовать этому же шаблону, описав следующие вещи:

  • Миссия, видение, цели и ценности — позволят вам, пользователям вашего продукта или инвесторам в целом понять что и зачем вы делаете

  • Стратегическая карта — позволит понять чем вы отличаетесь от конкурентов и сконцентрироваться на своих сильных сторонах

  • Категории пользователей и их задачи — эта модель даст уже более конкретное представление о том что пользователи будут делать с вашим приложением

  • Бизнес‑процессы — позволят вам более детально разобраться что делают ваши пользователи и как вы можете автоматизировать их работу

  • Модель предметной области — поможет вам найти общий язык с пользователями или заказчиками вашего программного продукта

  • Перечень сценариев использования приложения — поможет вам оценить трудозатраты на проект, приоритезировать задачи, распланировать работы, отслеживать прогресс реализации

  • Сценарии использования приложения — помогут поставить задачу на разработку, затем оценить реализацию, покрыть её тестами, написать программу и методику испытаний, выполнить трассировку требований

  • Структура приложения — поможет разобраться из каких модулей состоит ваше приложение, как они связаны между собой

  • Диаграммы последовательности — помогут описать сложные сценарии взаимодействия внутри приложения или со смежными системами

  • Технологические сценарии — упростят сопровождение системы

Надеюсь вы нашли для себя что‑то полезное.

Комментарии (9)


  1. itGuevara
    29.09.2025 11:42

    Странно: метамодели Archimate и TOGAF разные, хотя делает одна компания. Archimate в следующей версии хотят упростить (Next) - и это верно.

    Есть ли подробное описание метамодели Archimate и желательно не на их сайте (требуют вход, может есть зеркало opengroup.org)? В первую очередь, описание отношений (соединений).
    Например, смотрим Application Integration View (Dynamic relationships). Там показаны разные варианты динамических соединителей. Для меня было более понятно, если бы где-то была показана "физика" соединителя. Например, соединитель типа workflow - это передача маркера от одного процесса \ задачи \ функции в другой. Передача маркера (бегунок, эстафетная палочка и т.п.) означает, что "откуда вышел маркер - там работа завершена" - куда маркер провалился далее "работа идет". Простые интерпретации ("на пальцах"), плюс четкое обозначение: что может быть на входе отношения - и что на выходе. Например, не может быть объект типа документ (Data Object) на любом конце стрелки workflow (мы не передаем маркер в документ, как это делается в схемах динамики / workflow). Для моделирования docFlow нужны другие типы стрелок и там (в них) не передается маркер. Например, ЕРС.

    т.е. хочется найти "дотошное" описание всех соединителей в Archimate и примеры. В идеале полную онтологию Archimate в OWL.

    Вообще, когда "одно и тоже" можно нарисовать с использованием разных типов отношений - это плохо. Должна быть строгая нотация (строгие правила): и только один вариант описания верный (эталонный) - остальные нет (не очень). Это к вопросу строгой семантики в архитектурных моделях.
    Хотелось бы найти подборку с примерами на Archimate схем интеграции приложений. Также хотелось бы найти некий "Сокращенный вариант Archimate", желательно прямо в виде Соглашения о моделировании.


    1. Ares_ekb Автор
      29.09.2025 11:42

      Если я ошибаюсь, то надеюсь, что кто‑нибудь меня поправит. На сколько я понимаю TOGAF — это подход в соответствии с которым архитектура предприятия описывается на нескольких уровнях. Причём в TOGAF нет конкретной нотации, конкретных типов объектов, это просто идея, подход. А ArchiMate — это уже нотация с конкретными типами объектов и диаграммами, которая реализует подход TOGAF. ARIS тоже реализует TOGAF, но там уже другие диаграммы и объекты.

      Спецификация ArchiMate, да, закрытая, но гуглятся неофициальные варианты

      Например, смотрим Application Integration View (Dynamic relationships). Там показаны разные варианты динамических соединителей.

      Да, эти диаграммы меня тоже смутили. Можно показывать отправку сообщения через triggering, а получение ответа через flow. Иногда они сразу отправку сообщения показывают через flow. Иногда вставляют промежуточный data object и показывают его отправку и получение через access. Очень большая вариативность. Но на сколько я понимаю, ArchiMate в первую очередь для моделирования бизнес‑вещей, а не технических и не математических. Поэтому нотация такая свободная. Здесь нет маркеров как в сетях Петри и нет строгой семантики

      хочется найти «дотошное» описание всех соединителей в Archimate и примеры. В идеале полную онтологию Archimate в OWL

      Есть спецификация в машиночитаемом виде: метамодель, правила какие связи какие объекты могут соединять, перечень точек зрения (например, точка зрения «Организация» включает актора, роли и подобные типы объектов). Но там нет человеческого описания в каких случаях какие типы связей использовать

      Должна быть строгая нотация (строгие правила): и только один вариант описания верный (эталонный) — остальные нет (не очень). Это к вопросу строгой семантики в архитектурных моделях. Хотелось бы найти подборку с примерами на Archimate схем интеграции приложений. Также хотелось бы найти некий »Сокращенный вариант Archimate», желательно прямо в виде Соглашения о моделировании

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


      1. itGuevara
        29.09.2025 11:42

        правила какие связи какие объекты могут соединять

        relations="cfgostv" - где посмотреть какой код за каким типом связи закреплен?

        archimate.ecore

        Без Eclipse это как-то читается? Может какой on-line viewer или транслятор в RDF? На худой конец - описание \ пояснение к archimate.ecore.

        Причём в TOGAF нет конкретной нотации, конкретных типов объектов, это просто идея, подход.

        Там тоже метаМодель, похожая на Метамодель ArchiMate.
        Фрагменты Метамодели ArchiMate "нарезками", например, тут (Orbus):

        ... archimate\archimate-template-and-stencil.zip\Visio ArchiMate 2.0 Samples


        1. Ares_ekb Автор
          29.09.2025 11:42

          relations=«cfgostv» — где посмотреть какой код за каким типом связи закреплен?

          Тут

          Насчет archimate.ecore. Формат этого файла описан в двух стандартах: OMG Meta Object Facility и OMG XML Metadata Interchange. В принципе, он должен открываться не только в Eclipse, но и в каком‑нибудь Magic Draw, Rational Software Architect Designer, наверное в Papyrus и других инструментах, но не помню точно. Проще всего в Eclipse Modeling Tools

          Чтобы скрыть все эти OMG, Ecore, Eclipse и так далее от людей мы и делаем веб‑редактор :) Хотя у нас сейчас нет возможности загрузить и посмотреть визуально Ecore. Нужно будет добавить, не задумывался об этом раньше, спасибо за идею! Насчёт трансляции в RDF я уже давно думаю, нужно будет тоже добавить


  1. itGuevara
    29.09.2025 11:42

    1 Удивляет:

    а) нет разделения на физические сущности, условно процесс (функция) это что-то динамическое (явление, активность) и имеет размерность км\ч (условно), а Artifact (DataObject) что-то типа предмета («масса») и имеет разрядность кг. И в зависимости от типов и будут формулы – отношения с простыми и понятными размерностями (единицей измерения). Нельзя складывать скорость с массой и это простые и интуитивно понятные проверки на соответствие размерности.

    Условно  :ПроцессА  :ИмеетСледующего(Triggering) :ПроцессБ .

    Trigger – потому, что это workflow, а не flow, который в arhimate как бы docflow. Вообще, разработчики бы посмотрели вокруг, например, http://www.workflowpatterns.com/patterns/control/ и хоть какие-то базовые вещи заимствовали (ввели бы понятие маркера и переименовали бы свой Triggering в стандартный workflow - поток и т.п.), чтобы хоть какое – то было соответствие с более - менее проработанной темой \ терминологией workflow.  

    https://www.archimetric.com/understanding-dynamic-relationships-in-archimate-triggering-and-flow/

    В Archimate понятие «динамический» - странное. Иногда в связь Triggering добавляют ассоциацией DataObject, но это должно «было бы» (если была бы качественная семантика) давать ошибку: Несоответствие типов. Вообще универсальное отношение "ассоциация" - скорее вредное, чем полезное в контексте строгого формализма.

    б) видимо, приведенных отношений недостаточно: часто вижу стрелку (например, flow) и в середине ее добавляют ассоциацию к "DataObject". Т.е. получается, что есть три объекта, связанные двумя или тремя отношениями? Точнее: два объекта (программных модуля) связаны отношением, а само отношение (уже как объект) с третьим объектом ("DataObject"): к этой линии / отношению flow (которая по сути Docflow) рисуется "DataObject" (в середине). И как это следует из https://github.com/archimatetool/archi/blob/master/com.archimatetool.model/model/relationships.xml ? Эта конструкция однозначно формализуется как (не рисунком)?

    Т.е. как формально (через relationships.xml) задать однозначную смысловую конструкцию (формальная семантика), например, Dynamic Viewpoint – Application Cooperation II

    https://bizzdesign.com/blog/practical-archimate-viewpoints-for-the-application-layer/

    В целом, семантика у Archimate - хромая (как минимум в части flow \ workflow), хотя МетаМодель есть:

    https://www.archimetric.com/understanding-the-archimate-3-2-metamodel-a-guide-to-behavior-and-structure-elements/ но вот triggers \ flow to - не понятны (они вообще показаны как обратные предикаты).

    Еще вопрос: есть ли примеры, как в схемах интеграции сразу показать на одной схеме и протокол передачи и сам Объект передачи, например, DataObject  = «Карточка клиента», протокол «SOAP», как на картинке ниже  

    An example of practical ArchiMate Viewpoints for the Application Layer

    Подпись к линии (имя протокола) - это считается как что?

    Примеры бы подобного, т.е. когда тип \ суть передаваемых данных и протокол их передачи на одной схеме Archimate (запись этого через формальную семантику - это отдельный вопрос). Когда вижу линию с именем протокола, а к ней "снежинкой" несколько линий с типом "ассоциация" и далее множество DataObject - смотрится "чудно".

    2

    Насчёт трансляции в RDF я уже давно думаю, нужно будет тоже добавить

    Нет ли RDF - online reader & viewer c поддержкой параметра к http?

    https://www.ldf.fi/service/rdf-grapher уже только с VPN. У меня примеры (параметром RDF передается, как в graphviz) на нем базировались - теперь если кто-то без VPN тыкает в мой пример, то не работает, а замены без VPN не нашел.

    3 Надеюсь, что когда-нибудь будет хорошая (качественная) онтология Archimate, поддержка OWL \ RDF и т.п. Надежда как на сам OG, так и на подобные проекты: https://github.com/bp4mc2/archimate2rdf
    https://github.com/andriikopp/archimate-rdf-analysis/tree/master
    https://yasenstar.github.io/ArchiMate_Ontology/
    4 Собрать свой миниArchiMate и свой инструмент его поддержки - хорошая идея. Собственно про это уже было выше (starter). Только должна быть более глубокая проработка онтологии и пример с Шеера нужно брать, а не с OG \ OMG (в BPMN та же проблема, например, такой же DataObect ассоциацией рисуют к workflow, как и в archimate).

    Сами значки (синтаксис) можно заимствовать у ArchiMate (четверти более чем достаточно), но нужно добавить внятную "физику": физический смысл объектов и логики их предикатов в формализованной онтологии "Нового инструмента моделирования".


    1. Ares_ekb Автор
      29.09.2025 11:42

      нет разделения на физические сущности, условно процесс (функция) это что-то динамическое (явление, активность) и имеет размерность км\ч (условно), а Artifact (DataObject) что-то типа предмета («масса») и имеет разрядность кг. И в зависимости от типов и будут формулы – отношения с простыми и понятными размерностями (единицей измерения). Нельзя складывать скорость с массой и это простые и интуитивно понятные проверки на соответствие размерности

      Возможно это есть в SysML, он более формальный и строгий. Но я активно им не пользовался, надеюсь когда‑нибудь напишу статью «Нам пришлось сделать инструмент моделирования, чтобы понять на сколько крут SysML» :)

      Если начать править ArchiMate, то это будет уже другая нотация, потеряется совместимость с редактором Archi и другими инструментами (генераторами документов, скриптами).

      Можно ли сделать универсальный язык моделирования, который покрывал бы и ArchiMate, и ARIS, и BPMN, и UML, и остальное? На мой взгляд нет. Даже для моделирования данных много нотаций (UML классы, ER, IDEF1X, Anchor, Object‑Role Models, XML Schema, JSON Schema,...) и там пока не предвидится один универсальный язык.

      На мой взгляд, самая удачная попытка приблизиться к такому языку описана в книге Chris Partridge «Business Objects: Re‑Engineering for Re‑Use». И в частности там говорится, что если язык позволяет описывать одну и ту же вещь разными способами, то это проблема и нужен язык лучше. Эта книга на столько клёвая, что у меня опять включается режим ChatGPT и я просто не могу её не пересказать, как не мог не пересказать книгу по сбалансированной системе показателей в статье :)

      Например, описываем модель данных для организации, в которой есть сущность сотрудник, сотрудники могут быть разных типов (штатные и внешние). Мы можем описать тип сотрудника как минимум тремя способами: 1) через атрибут сотрудника «тип» 2) через иерархию классов 3) через связь с другими сущностями. Например, если нам достаточно просто различать штатных и внешних сотрудников, то можем добавить признак «внешний сотрудник» (вариант 1). Если законодательство изменится и в будущем появится ещё какой‑то тип, например, «иностранный сотрудник», то можем логическое поле заменить на перечисление с тремя значениями (тоже вариант 1). Если окажется, что у разных типов сотрудников могут быть разные атрибуты, то нам придётся переделать модель данных и использовать наследование (вариант 2). Если требования опять изменятся и окажется, что один сотрудник может работать и в штате, и как внешний совместитель, то придётся ввести отдельные сущности (штатная должность и внешнее совместительство) и связывать сотрудника с ними (вариант 3).

      Проблема во всём этом в том, что при изменении требований нам приходится существенно переделывать модель предметной области и реализацию, которая на этой модели основана. А хотелось бы, чтобы модель только дополнялась при появлении новых требований, при уточнении наших знаний о реальности. В данном примере с моделью организации мы могли бы сразу увидеть, что есть два типа сущностей: неотъемлемая сущность (человек) и роли этой сущности (штатный сотрудник, внештатный сотрудник, клиент и так далее). И если моделирование происходит в этих терминах (неотъемлемая сущность объекта и ролевая, временная, дополнительная сущность объекта), а не в технических терминах (класс, таблица), то мы решаем эту проблему, наша модель предметной области становится стабильной, её не нужно полностью переделывать при появлении новых требований или знаний о реальности. Мы просто сразу добавляем сущность «человек», две роли «штатный сотрудник» и «внешний сотрудник», и потом просто дополняем эту модель.

      Является ли ArchiMate таким фундаментальным языком? Наверное нет, там множество способов описать одно и то же. Ставили ли авторы ArchiMate себе цель создать такой язык? Наверное тоже нет.

      Я думаю, что будет оставаться много таких языков типа ArchiMate, UML, BPMN и так далее Потому что они привычны и удобны для людей, которые ими пользуются. И нужен простой способ переводить модели с одного языка на другой. Например, для процессов в ArchiMate нет семантики их исполнения, там нет маркеров, которые по понятным правилам перемещались бы по шагам процесса. Видимо авторы ArchiMate и не ставили себе такую цель, потому что для корпоративных архитекторов, которые рисуют ArchiMate модели, это не так важно. Но если нам необходимо исполнять эти процессы, то мы можем преобразовать их в BPMN модели. А если нам необходимо оценить завершаемость процесса, или проверить все ли его ветки достижимы, или оценить нет ли перегруженных, блокирующих шагов в процессе и так далее, то можем преобразовать ArchiMate модель в сеть Петри. А если нам нужно в целом понять о чём процесс, то скармливаем модель ИИ, которая преобразует её в текст на русском языке. А если нам необходимо сделать какие‑то более строгие логические выводы о процессе, чем это делает ИИ, то можем преобразовать ArchiMate модель в онтологию.

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


      1. itGuevara
        29.09.2025 11:42

        Я думаю, что будет оставаться много таких языков типа ArchiMate, UML, BPMN и так далее Потому что они привычны и удобны для людей, которые ими пользуются.

        Да, но видимо должна быть "базовая" Метамодель Процесса и каждая процессная нотация EPC, BPMN, да и в ArchiMate рассматриваются процессы (Бизнес - процесс, Application Process, Technology Process) - как "процессы" (нечто динамическое и полагаю, что все же с маркером \ бегунком, подразумеваемым под Triggering), - должна опираться на базовую Метамодель Процесса. Что-то типа того.

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

        Пример: https://habr.com/ru/articles/810851/

        Таблица в EPC\VAD

        то скармливаем модель ИИ

        Если будут нормальные онтологии, правила оборачивания семантики в графические нотации (синтаксические обертки типа BPMN, EPC, VAD), reasoner и т.п., то можно обойтись и без ИИ с его то галлюцинациями. Скорее уж Process Mining (на худой конец с модулем ИИ).


        1. Ares_ekb Автор
          29.09.2025 11:42

          Мы делали на одном проекте унифицированную модель процессов. EPC, VAD, BPMN, ... модели преобразуются в неё и затем для неё можно выполнять имитационное моделирование или функционально‑стоимостный анализ. Но в моём представлении это просто ещё одна нотация. Когда мы описываем мапинг из EPC в унифицированную модель, то по сути наделяем EPC модели семантикой исполнения, указываем, что одни блоки определяют ход выполнения процесса, а другие блоки описывают ресурсы используемые при выполнении процесса, а третьи блоки вообще не влияют на выполнение процесса и отбрасываются при преобразовании.

          При этом сама нотация EPC остаётся неизменной. Если мы будем её переделывать в соответствии с базовой метамоделью процессов, то это будет уже не EPC или будет какой‑то расширенный EPC, несовместимый с ARIS и другими редакторами моделей. Поэтому у нас основной акцент на мапинге между разными нотациями и на преобразовании моделей


          1. itGuevara
            29.09.2025 11:42

            МетаМодель ЕРС помогает понять отологию интеграции ИТ-систем, см. рис. с.