В работе solution архитектора или системного аналитика есть задачи на проектирование интеграции. Иногда заказчик приносит задачу с требованиями на один абзац. С чего же начать, если перед вами такие минимальные бизнес требования?
В этой статье вы узнаете
что такое модель C4 1 и 2 уровня;
о чек-листе «Проектирование интеграции решения»;
как использовать чек-лист на конкретном примере.
Представим, что ребенок — это заказчик, а мама — это IT‑специалист. Заказчик разбирается в бизнесе и знает, какой результат хочет получить. Но он не погружен в IT‑ландшафт систем банка. Задача ребенка получить строительный кран из множества деталей. Мама помогает ребенку собирать конструктор, подглядывая в инструкцию.
В IT также — архитектор, как мама, помогает заказчику, как ребенку, собирать системы в решение. И тут, в помощь архитектору или аналитику приходит навык рисования.
Я рисую диаграммы модели C4 1 уровня — System context diagram (прим. нотация схемы адаптирована под заказчиков и команды разработки). Эта диаграмма показывает взаимодействия основной системы с окружающим ее IT-ландшафтом.
Выглядит она так:
![Рисунок 1. Диаграмма модели C4 1 уровня Рисунок 1. Диаграмма модели C4 1 уровня](https://habrastorage.org/getpro/habr/upload_files/2a9/a66/ec1/2a9a66ec1f4720e0ccd6e0870d993037.png)
Давайте я вам расскажу как ее рисовала. Выглядит сложно, но на самом деле с чек-листом все элементарно. Я обкатала чек‑лист на десятках задач.
Чек-лист «Проектирование интеграции решения»
Рисовать буду по такой задаче:
Клиент звонит в контакт-центр (КЦ) банка, чтобы узнать информацию по счету.
Оператор КЦ заходит в приложение «Единое окно КЦ», находит необходимый счет и дает ответ на вопрос клиента.
Простой бизнес процесс, но у заказчика вопросы: а сколько будет стоить разработка, к каким командам нужно сходить?
1️⃣ Определяю сценарии использования (use case)
Use case (в переводе с англ. «вариант использования») — содержит, какие действия выполняет пользователь, и как система должна на них реагировать.
В моей задаче я выделила 2 use case:
Use case #1. Оператор контакт‑центра открывает приложение «Единое окно КЦ» и отвечает на вопрос клиента по счету.
Оператор КЦ ищет карточку клиента.
Оператор КЦ из карточки клиента находит информацию о его счетах.
Оператор КЦ находит информацию по конкретному счету.
Use case #2. Администратор приложения просматривает данные о работе системы при разборе инцидента.
2️⃣ Определяю пользователей (user)
В моей задаче участвуют два вида пользователей:
Оператор КЦ.
Администратор приложения.
Определение пользователей важно, потому что позволяет понять, какие данные могут потребоваться для выполнения use case.
Ура! Появились первые элементы на диаграмме.
![Рисунок 2. Пользователи. Диаграмма модели C4 1 уровня Рисунок 2. Пользователи. Диаграмма модели C4 1 уровня](https://habrastorage.org/getpro/habr/upload_files/155/b24/129/155b24129ca509f0cfe5091b36620f87.png)
3️⃣ Определяю потоки данных
Оператору КЦ нужно видеть информацию о клиенте и данные о его счетах. Администратору необходимы знания, что оператор КЦ делал в системе, чтобы проанализировать почему произошла ошибка. Также будут полезны технические логи работы приложения.
![Рисунок 3. Потоки данных. Диаграмма модели C4 1 уровня Рисунок 3. Потоки данных. Диаграмма модели C4 1 уровня](https://habrastorage.org/getpro/habr/upload_files/b38/eb4/562/b38eb456215f4596f316b503bd3561f7.png)
4️⃣ Определяю системы
Данные понятны, теперь занимаюсь поиском места, откуда их можно получить или куда передавать. Эта самая сложная часть задачи, так как здесь требуются знания IT-ландшафта банка, архитектурных паттернов, принятых внутри компании.
На этом шаге могут появиться несколько решений, так как сроки реализации и желание команд не всегда совпадает с потребностями заказчика.
А теперь порисуем и добавим красок нашей диаграмме — легенду.
В легенде есть три цвета:
новое — зеленое;
изменяемое — фиолетовое;
неизменяемое — красное.
Это позволит командам сразу оценивать доработки.
![Рисунок 4. Диаграмма модели C4 1 уровня Рисунок 4. Диаграмма модели C4 1 уровня](https://habrastorage.org/getpro/habr/upload_files/425/d5d/f22/425d5df228456154e784395642404eec.png)
5️⃣ Детализирую диаграмму
А если система огромная и за ее функциональность отвечают несколько команд?
В таком случае я детализирую диаграмму, используя модель С4 2 уровня — Container diagram (прим. нотация схемы адаптирована под заказчиков и команды разработки банка). Эта диаграмма показывает детализацию внутри основной системы — модули (функционально-логические части системы).
Это помогает увеличить точность оценки и привлечь к оценке все команды.
В нашей задаче детализировать требуется приложение «Единое окно КЦ». Нам потребуется создать два новых модуля по клиентам и счетам и доработать основное приложение.
![Рисунок 5. Диаграмма модели C4 2 уровня Рисунок 5. Диаграмма модели C4 2 уровня](https://habrastorage.org/getpro/habr/upload_files/772/2d8/af9/7722d8af92031f84c030bd01ec40225d.png)
Для отрисовки использую инструмент draw.io.
Что в итоге?
Приходит ко мне заказчик с минимальными бизнес требованиями, я прохожусь по пунктам чек-листа и через пару часов у меня есть первый драфт решения и открытые вопросы к обсуждению.
Диаграмма помогает:
? Оценить стоимость доработки.
А потом идти дальше в детальную проработку внутри каждой изменяемой системы: API, БД и др. Обсуждать десятки страниц текста с заказчиком — трудоемкая задача, а вот картинку понимают лучше.
✅ Выбрать оптимальный вариант решения исходя из контекста.
Я чаще всего показываю несколько вариантов решения, чтобы команда смогла оценить и выбрать подходящее ей. Не бывает одного единственного верного решения, всё зависит от контекста, сроков, ресурсов проекта.
? Сохранить баланс.
Не грузить лишними техническими деталями заказчика и не потерять важные для команды разработки нюансы.
Довольный и радостный заказчик получает свою систему и радуется, как ребенок, которому мама помогла собрать строительный кран из 500 деталей незаметно и аккуратно, да так, что ребенок думает, что он все сделал сам. И архитектор, и команда разработки счастливо наблюдают за работой своего решения в жизни.
А какие способы помогают вам быстро спроектировать архитектуру решения?