В работе solution архитектора или системного аналитика есть задачи на проектирование интеграции. Иногда заказчик приносит задачу с требованиями на один абзац. С чего же начать, если перед вами такие минимальные бизнес требования?
В этой статье вы узнаете
что такое модель C4 1 и 2 уровня;
о чек-листе «Проектирование интеграции решения»;
как использовать чек-лист на конкретном примере.
Представим, что ребенок — это заказчик, а мама — это IT‑специалист. Заказчик разбирается в бизнесе и знает, какой результат хочет получить. Но он не погружен в IT‑ландшафт систем банка. Задача ребенка получить строительный кран из множества деталей. Мама помогает ребенку собирать конструктор, подглядывая в инструкцию.
В IT также — архитектор, как мама, помогает заказчику, как ребенку, собирать системы в решение. И тут, в помощь архитектору или аналитику приходит навык рисования.
Я рисую диаграммы модели C4 1 уровня — System context diagram (прим. нотация схемы адаптирована под заказчиков и команды разработки). Эта диаграмма показывает взаимодействия основной системы с окружающим ее IT-ландшафтом.
Выглядит она так:

Давайте я вам расскажу как ее рисовала. Выглядит сложно, но на самом деле с чек-листом все элементарно. Я обкатала чек‑лист на десятках задач.
Чек-лист «Проектирование интеграции решения»
Рисовать буду по такой задаче:
Клиент звонит в контакт-центр (КЦ) банка, чтобы узнать информацию по счету.
Оператор КЦ заходит в приложение «Единое окно КЦ», находит необходимый счет и дает ответ на вопрос клиента.
Простой бизнес процесс, но у заказчика вопросы: а сколько будет стоить разработка, к каким командам нужно сходить?
1️⃣ Определяю сценарии использования (use case)
Use case (в переводе с англ. «вариант использования») — содержит, какие действия выполняет пользователь, и как система должна на них реагировать.
В моей задаче я выделила 2 use case:
Use case #1. Оператор контакт‑центра открывает приложение «Единое окно КЦ» и отвечает на вопрос клиента по счету.
Оператор КЦ ищет карточку клиента.
Оператор КЦ из карточки клиента находит информацию о его счетах.
Оператор КЦ находит информацию по конкретному счету.
Use case #2. Администратор приложения просматривает данные о работе системы при разборе инцидента.
2️⃣ Определяю пользователей (user)
В моей задаче участвуют два вида пользователей:
Оператор КЦ.
Администратор приложения.
Определение пользователей важно, потому что позволяет понять, какие данные могут потребоваться для выполнения use case.
Ура! Появились первые элементы на диаграмме.

3️⃣ Определяю потоки данных
Оператору КЦ нужно видеть информацию о клиенте и данные о его счетах. Администратору необходимы знания, что оператор КЦ делал в системе, чтобы проанализировать почему произошла ошибка. Также будут полезны технические логи работы приложения.

4️⃣ Определяю системы
Данные понятны, теперь занимаюсь поиском места, откуда их можно получить или куда передавать. Эта самая сложная часть задачи, так как здесь требуются знания IT-ландшафта банка, архитектурных паттернов, принятых внутри компании.
На этом шаге могут появиться несколько решений, так как сроки реализации и желание команд не всегда совпадает с потребностями заказчика.
А теперь порисуем и добавим красок нашей диаграмме — легенду.
В легенде есть три цвета:
новое — зеленое;
изменяемое — фиолетовое;
неизменяемое — красное.
Это позволит командам сразу оценивать доработки.

5️⃣ Детализирую диаграмму
А если система огромная и за ее функциональность отвечают несколько команд?
В таком случае я детализирую диаграмму, используя модель С4 2 уровня — Container diagram (прим. нотация схемы адаптирована под заказчиков и команды разработки банка). Эта диаграмма показывает детализацию внутри основной системы — модули (функционально-логические части системы).
Это помогает увеличить точность оценки и привлечь к оценке все команды.
В нашей задаче детализировать требуется приложение «Единое окно КЦ». Нам потребуется создать два новых модуля по клиентам и счетам и доработать основное приложение.

Для отрисовки использую инструмент draw.io.
Что в итоге?
Приходит ко мне заказчик с минимальными бизнес требованиями, я прохожусь по пунктам чек-листа и через пару часов у меня есть первый драфт решения и открытые вопросы к обсуждению.
Диаграмма помогает:
???? Оценить стоимость доработки.
А потом идти дальше в детальную проработку внутри каждой изменяемой системы: API, БД и др. Обсуждать десятки страниц текста с заказчиком — трудоемкая задача, а вот картинку понимают лучше.
✅ Выбрать оптимальный вариант решения исходя из контекста.
Я чаще всего показываю несколько вариантов решения, чтобы команда смогла оценить и выбрать подходящее ей. Не бывает одного единственного верного решения, всё зависит от контекста, сроков, ресурсов проекта.
???? Сохранить баланс.
Не грузить лишними техническими деталями заказчика и не потерять важные для команды разработки нюансы.
Довольный и радостный заказчик получает свою систему и радуется, как ребенок, которому мама помогла собрать строительный кран из 500 деталей незаметно и аккуратно, да так, что ребенок думает, что он все сделал сам. И архитектор, и команда разработки счастливо наблюдают за работой своего решения в жизни.
А какие способы помогают вам быстро спроектировать архитектуру решения?
Комментарии (8)
TimurBuriev
30.10.2023 10:19Насколько правильно рисовать стрелку между Администратором системы и "Единое окно КЦ"?
Кажется, что UseCase#2 - это взаимодействие Администратора с квадратиками "Метрики" и "Логирование", а в самой системе он не работает, либо это не описано.
anna_ovzyak Автор
30.10.2023 10:19+2Администратор взаимодействует с модулем "Модуль метрики бизнес-события" в самой системе "Единое окно КЦ", который показывает метрики по работе пользователей в системе. На данной схеме он не отражен с целью упрощения схемы.
Также Администратор взаимодействует с системой метрики, эту стрелочку дополню на схемы в статьей. Спасибо за комментарий!
RomanSeleznev
30.10.2023 10:19У меня 2 вопроса:
На C2 2-го уровня стрелки от экторов идут до системы "Единое окно", а не до входящих в неё модулей. Просьба уточнить, это было сделано намеренно?
Я верно понял, что у вас в банке заказчик задачу приносят именно архитектору? Или я неверно трактовал вводные?
anna_ovzyak Автор
30.10.2023 10:19Да, показано верхнеуровневое взаимодействие Actor -> Система, чтобы упростить схему, так как Оператор КЦ может взаимодействовать и с другими модулями системы, но можно показать и с конкретном модулем. Аналогично и Администратор
Да, по процессу заказчик приходит к архитектору для проработки верхнеуровневой архитектуре (vision), далее этот документ по процессу согласуется с заинтересованными командами и уже поступает в детальную проработку системному аналитику. В этой статье есть подробнее про "Непрерывный цикл производства" https://habr.com/ru/companies/alfa/articles/768160/
salakhov
Насколько достаточно верхнеуровневой детализации которая понятна бизнесу для планирования разработки ИТ специалистами (разработчикам, аналитикам, PO). Понимают ли команды разработки что нужно реализовывать что бы планировать проект, бюджет и тд
anna_ovzyak Автор
Конечно, у команды разработки возникают вопросы к большей детализации задачи, но тут я стараюсь все-таки разделись этап оценки и планирования и системный анализ по решению.
Например, некоторым командам не достаточно 1 уровня C4 модели, поэтому делаю 2 уровень, так как для их системы это влияет на на оценку.
Также практически все команды для оценки просят протоколы для взаимодействия систем, потому что это влияет на сложность разработки.
Получается я стараюсь искать баланс в схеме и достаточное отображение, чтобы команды оценили доработку и запланировали. Без такой схемы планирование, бюджет, оценка не получается у команда (пробовали по документу бизнес требований делать оценки, не вышло)
kknd1
Интересный подход, но у меня к вам вопрос: смогли бы вы сами на основе вашей схемы оценить, сколько под приведённый вами пример нужно заложить в бюджет? Железо, разработка, поддержка.
anna_ovzyak Автор
Команды разработки справляются с оценками по такой схеме, закладывают ресурсы на аналитику, разработку, тестирование.
Железо и сопровождение также возможно верхнеуровнево заложить бюджет по планируемой нагрузке объём хранимых данных и тд.
То есть к такой диаграмме ещё как правило идёт описание с ключевыми моментами решения - нагрузка, количество пользователей и тд, то что как раз помогает оценить.
Подскажите, а в вашей практике какие схемы использовались, что получить оценку от команд?