«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

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

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

Представьте, что вы строите дом. Вы не начнёте с крыши. Сначала — фундамент, потом стены, потом крыша. С программными системами — то же самое. Три уровня моделирования — это три этажа, и прыгать между ними нельзя.

«Представьте три уровня моделирования:

  1. BPMN — для того, чтобы понять заказчика (бизнес-процесс).
  2. UML — для того, чтобы спроектировать систему (объекты и взаимодействия).
  3. ERD — для того, чтобы правильно хранить данные (база данных).

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

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

Полная карта: какой инструмент — на какой уровень

Уровень 1. БИЗНЕС-ПРОЦЕССЫ (понимаем заказчика)

Здесь мы отвечаем на вопрос: «Как именно работает бизнес, какие шаги, кто за что отвечает?»

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

Главная мысль: всё это — уровень заказчика. Здесь вы проверяете бизнес-логику до того, как перешли к коду.

Уровень 2. АРХИТЕКТУРА ПРИЛОЖЕНИЯ (проектируем систему)

Здесь мы отвечаем на вопрос: «Из каких объектов состоит система, как они общаются и как меняются состояния?»

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

Главная мысль: здесь вы проверяете, как система устроена внутри, прежде чем писать классы и методы.

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

На данном этапе преобладает язык UML (Unified Modeling Language), а также смежные инструменты, такие как DFD и STD, которые помогают детализировать потоки данных и состояния объектов.

UML (Unified Modeling Language
) — это стандартный язык визуального моделирования для разработки ПО. Он не язык программирования, а «чертёж» системы, помогающий проектировать архитектуру, описывать логику и документировать код до его написания.

UML — это язык для архитекторов и разработчиков. Он отвечает на вопросы:

  • Из каких классов состоит система?
  • Как эти классы связаны между собой?
  • Как объекты общаются друг с другом во времени?
  • В каких состояниях может находиться объект?

Уровень 3. ДАННЫЕ И ЛОГИКА (детали реализации)

Здесь мы отвечаем на вопрос: «Как именно хранить данные и как принимать решения?»

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

Главная мысль: здесь вы проверяете, не сломается ли логика и база данных на этапе реализации.

На этом уровне мы спускаемся к деталям, которые увидят разработчики и администраторы баз данных. Здесь два ключевых направления:

1. Проектирование базы данных (ERD)

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

2. Формализация сложной логики (Таблицы и деревья решений)

Если в процессе есть сложные условия («если сумма больше N и клиент новый, то...», «если товар заканчивается, а поставка через 3 дня, то...»), их нельзя просто нарисовать стрелочками. Таблицы и деревья решений позволяют проверить все комбинации условий и убедиться, что ни один сценарий не пропущен. Ошибка здесь — и в продакшене система принимает неверное решение.

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

Сводная таблица

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

Куда деть DFD? (важный нюанс)

DFD использовался и для существительных (внешние сущности, хранилища), и для глаголов (процессы).

DFD — это мостик:

  • Сверху (бизнес): он показывает, кто и откуда даёт данные.
  • Снизу (архитектура): он показывает, как эти данные преобразуются внутри системы.

Поэтому DFD часто используют первым инструментом, чтобы «связать» бизнес-требования с системой. А потом уже рисуют UML (классы, последовательности) и ERD.

Итог одной фразой

«Инструментов много, но каждый отвечает на свой вопрос: BPMN/swimlane/Use Case — что делает бизнес, DFD/STD — как устроена система, ERD/таблицы решений — как это хранить и вычислять. Пропустите один уровень — получите дыру в архитектуре.»

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

«А теперь — про деньги»

Выше мы говорили о моделировании как о способе «не пропустить ошибку». Но для бизнеса это ещё и способ сэкономить.

  • Пропущенный BPMN → вы автоматизируете не тот процесс → тратите бюджет на ИИ, который решает не ту задачу. Потери: бюджет на разработку + упущенное время.
  • Пропущенный UML → архитектура ломается при первой же доработке → переписываете код по 3 раза. Потери: время разработчиков в человеко-часах.
  • Пропущенный ERD → база данных тормозит или теряет данные → падает производительность, клиенты уходят. Потери: репутация и выручка.

Три уровня — три риска. Если вы не моделируете, вы не управляете этими рисками. Вы просто надеетесь, что «пронесёт».

Именно поэтому я в своей работе всегда начинаю с аудита и моделирования. Это не «лишняя бюрократия». Это дешёвый способ найти ошибки до того, как они стали дорогими.

Сквозной пример: как все три уровня работают на одном бизнес-кейсе

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

«Пример из практики: обработка отзывов на WB/Ozon»

Представьте, что мы хотим внедрить AI-агента для автоматической обработки отзывов. Как это выглядит через три уровня?

Уровень 1. BPMN (что делает бизнес)

Мы рисуем процесс: отзыв поступает → его нужно классифицировать (позитив/негатив) → если негатив — передать менеджеру для ответа → если позитив — передать продуктологу для аналитики → ответ отправлен клиенту → процесс закрыт.

Ошибка, которую мы находим на этом уровне: в текущем процессе никто не собирает статистику по жалобам. Мы автоматизируем обработку, но не получаем аналитику. А значит, не видим, что клиенты жалуются на упаковку — и продукт не улучшается.

Уровень 2. UML (как устроена система)

Мы проектируем классы: Отзыв, Клиент, Продукт, Ответ. Рисуем диаграмму состояний отзыва: «Поступил → Классифицирован → Требует ответа → Ответ отправлен → Закрыт». Рисуем диаграмму последовательности: как AI-агент обращается к API маркетплейса, как передаёт данные в CRM.

Ошибка, которую мы находим на этом уровне: диаграмма состояний показывает, что отзыв не может перейти из «Требует ответа» в «Закрыт», если не заполнено поле «Категория жалобы». А в ТЗ это поле не было предусмотрено. Добавляем — иначе система зависнет.

Уровень 3. ERD (как хранить данные)

Мы проектируем таблицы: отзывы, клиенты, продукты, ответы, категории жалоб. Прописываем связи: один клиент — много отзывов. Один отзыв — одна категория жалобы.

Ошибка, которую мы находим на этом уровне: в таблице отзывов нет поля «Дата ответа», а значит, мы не сможем измерить скорость реакции. Добавляем — и потом считаем KPI «время от отзыва до ответа».

Итог: мы нашли и исправили три ошибки на этапе моделирования. Каждая из них стоила бы нам:

  • На этапе кода — дни переписывания.
  • На этапе тестирования — срыв релиза.
  • На этапе продакшена — недовольных клиентов и потерю репутации.

А на этапе моделирования это стоило перерисовать несколько стрелочек и добавить пару полей в таблицу.

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»

📖 ЗАЧЕМ ИЗУЧАТЬ ПРЕДМЕТНУЮ ОБЛАСТЬ ИЛИ С ЧЕГО НАЧИНАЕТСЯ РАЗРАБОТКА?

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

🗃 Она включает:

💛Сущности — о ком/о чём храним данные (Клиент, Услуга, Мастер)

💛Атрибуты — свойства сущностей (имя, телефон, цена)

💛Связи…

«Три уровня моделирования: почему архитектура ломается даже при правильных приоритетах»