«Эти архитекторы делают непонятно для кого», «Я тут в Miro накидал», «Нарисуй там что-нибудь архитектурное, а то мы уже код пишем» – знакомо?

Привет! Меня зовут Ущаповский Антон, я архитектор решений в МВС ИИ, последние несколько лет активно погружаюсь в различные аспекты разработки ПО и в ИТ-архитектуру, в частности. Как следствие, накопилось некоторое количество повторяющихся «болей», которые встречаю из раза в раз и наблюдаю их на регулярной основе практически на каждом ИТ-продукте.

Список не претендует на абсолютную полноту, но содержит одни из самых распространенных и болезненных кейсов, с моей субъективной точки зрения.


Непонимание задачи решаемой архитектурой

Рисуй давай, зря что ли архитектора взяли.

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

Сами потребители не знают что хотят, пробуют выразить свое желание через фразу «Нарисуй мне архитектуру». На вопрос «Какую именно?», могут растерянно ответить «Техническую» или «Логическую», а вот попытка выяснить какую технику или логику там хотят увидеть, а главное зачем, уже вызывает заметные сложности.

Работа над архитектурой – это такой же важный шаг в разработке ПО, как и написание кода. Вы получаете артефакт, где описывается разница между AS IS и TO BE состояниями вашего ИТ-продукта, а также способ перехода в TO BE (включая не только саму разработку, но, при необходимости, и различные миграции состояний).

Базовая задача архитектуры: кратко, но ёмко показать, как ИТ-продукт устроен сейчас и что надо изменить, чтобы разработать требуемые хотелки.

Создание неиспользуемых артефактов (частный случай непонимания)

Лежит диаграмма, никто не смотрит.

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

Каждый архитектурный артефакт описывается, чтобы что-то рассказать о вашем ИТ-продукте или изменениях в нём. Он должен приносить пользу, устранять какой-то заметный гэп в понимании. Это позволит четко представлять какие артефакты необходимы и как именно они будут использованы для описания ИТ-продукта и при реализации (разработке) перехода AS IS -> TO BE.

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

Отсутствие быстрого ощутимого результата

Если хочешь идти быстро – иди один, если хочешь идти далеко – рисуй архитектуру.

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

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

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

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

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

Оторванность от реальности

Надо, очень надо, но смотреть не будем.

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

Маркерные фразы: «Мы там сами нарисовали, можешь перерисовать к себе», «У нас АПИ-контракты, которым пользуются разработчики, лежат отдельно от тех, что делают архитекторы», «Да мы уже весь код написали, потом твою архитектуру проревьюем», «Мы уже всё по-другому закодили» и т.п.

Если архитектурные артефакты не применяются и не используются должным образом в процессах разработки и тестирования ИТ-продукта, то, с высокой долей вероятности, вам не нужна ни архитектура, ни архитекторы.

Незнание типовых нотаций

Рисую быстро, но красиво.

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

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

В первом приближении вам с головой хватит UML, C4 model или Archimate core framework.

Отсутствие сквозных артефактов

Множество копий вместо набора единых состояний.

Это про случай, когда существую десятки, сотни или больше, документов (например, в confluence или miro) где в каждом из них хранятся какие-то разрозненные схемы, диаграммы или даже АПИ-контракты. Поддержание консистентных изменений становится всё дороже и дороже с каждым новым документом.

Что, в конечном, итоге приводит:

  • Удорожанию архитектурного процесса (тяжело отслеживать необходимые изменения).

  • Отрыву от реальности (появляется всё больше архитектурных представлений, не соответствующих действительности, так как протухли).

В результате получается затратное нечто не приносящее внятной пользы.

Как только начинаются сложности, чтобы по существующим архитектурным артефактам понять AS IS состояние ИТ-продукта, то есть приходится перечитывать пачку документов, чтобы разобраться, что там сейчас актуально – это отличный момент начать работу по вынесению части артефактов (например описание работы основных функций) в сквозной вид.

Мы считаем нормальным, когда в репе с кодом есть главная ветка, где лежит всё актуальное состояние. Но для других артефактов (архитектурных и аналитических) допускаем размазывание по огромному количеству мест.

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

Вместо вывода

Архитектура – это не абстрактные квадратики и стрелочки, она нужна для закрытия потребности понимания ИТ-системы или их набора (или даже целого ИТ-ландшафта), а вот от источников этой потребности и зависит, какие именно архитектурные представления необходимо описать.

Потребителями могут быть и разработчики (чтобы реализовать спроектированную логику), и девопсы (чтобы выполнить развертывание), и ИБшники (чтобы проверить на соответствие своим регламентам) и т.д.

Архитектура, как самостоятельный набор артефактов, часто является следствием развития ИТ-системы (или ИТ-продукта), в виде понимания необходимости вынести описание системы в более краткие и информативные сущности. Это потребует изменения процесса разработки, чтобы была возможность поддерживать консистентность между кодом и архитектурными артефактами. Так и до design first недалеко.

А вообще, не берите в голову и просто пишите код, ведь он сам себя не напишет, как и резюме ;)

Удачного дня, мои дорогие коллеги.

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


  1. Emelian
    12.03.2026 13:24

    Сами потребители не знают что хотят, пробуют выразить свое желание через фразу «Нарисуй мне архитектуру». На вопрос «Какую именно?», могут растерянно ответить «Техническую» или «Логическую», а вот попытка выяснить какую технику или логику там хотят увидеть, а главное зачем, уже вызывает заметные сложности.

    Разве это правильная постановка вопроса?

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

    По-хорошему, вместо общих слов, лучше просто дать пример «правильной» архитектуры для разработки хотя бы небольшой программы.

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

    1. Архитектор создает прототип проекта, в котором разрабатываемые модули (по сути,, классы) имеют чисто формальные реализации., т.е., набор публичных функций с пустым телом. При этом, вызовы этих публичных функций в главном модуле приложения (для проектов на C++ / WTL это будет CMainFrame), за разработку которого отвечает архитектор, должны быть зафиксированы явно (скажем, в обработчиках сообщений либо в функциях потоков).

    2. Этот проект, с «пустыми» модулями (классами) компилируется, но, по сути, ничего, особо не делает. Только отображение главного окна, его полного меню, но без реальной работы (разве что, просто вывод мессаджбокса с указанием выбранного пункта меню), тулбара и статусбара.

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

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

    5. Архитектор, делает замену формального модуля на реальный и осуществляет общее тестирование. При необходимости, вносит изменения в работу команды.

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

    7. Если реальный модуль обновляется, то его новая версия замещает старую, путем простой замены файлов.

    8. Задача архитектора состоит в том, чтобы эта схема, либо аналогичная, принятая всеми членами команды, работала.

    Как-то так.

    Когда я создам, по этому принципу, вторую версию своей обучающей программы, то, вероятно, напишу статью на эту тему.


    1. Kishuomi Автор
      12.03.2026 13:24

      Мне нравится ваше предложение, особенно если речь идет об архитекторе уровня приложения (application architect). Если его ещё обернуть в что-то типа ADR, то вообще отлично.


      1. Emelian
        12.03.2026 13:24

        Если его ещё обернуть в что-то типа ADR, то вообще отлично.

        Но, сначала надо провести эксперимент, потом появятся новые идеи.


  1. XaBoK
    12.03.2026 13:24

    Базовая задача архитектуры: кратко, но ёмко показать, как ИТ-продукт устроен сейчас и что надо изменить, чтобы разработать требуемые хотелки.

    Архитектура - не про то, как сейчас устроен продукт. Это всегда про конечный результат. Даже идеализированный финальный продукт. Своего рода полярная звезда.

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


    1. Kishuomi Автор
      12.03.2026 13:24

      Даже идеализированный финальный продукт. Своего рода полярная звезда.

      И идет рука об руку с продуктовым роад-мапом.


  1. itGuevara
    12.03.2026 13:24

    Если в статье слова Архитектура \ ИТ-архитектура (EA и т.п.) заменить на BPM (классический BPM типа ARIS), а "архитектор" на "процессник" (по тексту UML, C4 model или Archimate заменить на EPC, BPMN, VAD), то можно заменить заголовок статьи на "Проблемы BPM" - оставляя текст в целом исходным. Это к тому, что проблемы BPM и EA схожие. Интересно, какие еще ИТ-области, можно включать в ряд BPM \ EA - для которых такие же - как указанные в статье проблемы?

    Проблема оторванности миров "нарисованного" и "исполняемого" - медленно, но пыталась решаться, например, Архитектура как код в EA или BPMN-engine \ process mining в BPM. Только все идет к тому, что все роли, включая архитектора \ процессника и разработчика \ тестировщика, будет выполнять ИИ (разные ИИ-агенты, но в единой команде \ связке), а "он уж там сам как-нибудь разберется".


    1. Kishuomi Автор
      12.03.2026 13:24

      Звучит неплохо, остается только дождаться момента, когда потребители (customers) будут транслировать свои потребности (demands) напрямую ИИ. Это если возвести в абсолют тренд на избавление от промежуточных людей между AS IS и TO BE.


    1. Kishuomi Автор
      12.03.2026 13:24

      Мысли в слух: если упороться и отрисовать бизнес в Archimate нотации, речь про слои Strategy и Motivation, то как тогда ИИ справится с проектированием бизнес-процессов и остальных низ лежащих слоев.

      Кажется это годная идея для Pet-проекта