Привет, Хабр! Я Ирина Хромая, работаю в ИТ 8 лет, из них более 4 лет – в роли системного аналитика.
Как известно, успех проекта напрямую зависит от соответствия первоначальной бизнес-цели и итогового результата реализации. И одним из первых этапов достижения желаемой цели является проектирование ИС.
В данной статье рассмотрим возможные плюсы и минусы участия аналитика в проектировании ИС. На что он влияет и с чего можно начать свой путь развития в проектировании ИС.
И хочется начать с проблем, с которыми сталкиваются многие на своих проектах. Проблем, которые вытекают одна из другой.
Топ самых частых проблем на проекте
-
Несоответствие итогового продукта изначальным требованиям
На мой взгляд, это самая частая проблема, с которой сталкиваются многие команды.
-
Отсутствие гибкости системы
Из этой проблемы возникают сложности при поддержке и доработке системы. При реализации по неоптимальному решению, при необходимости доработки процесса может понадобится реализация новых решений.
-
Отсутствие возможности повторного использования реализованного решения
Это критично для микросервисной архитектуры.
-
Увеличение сроков реализации
Вытекает из вышеперечисленных проблем и влечет за собой увеличение стоимости проекта.
Минимизируем проблемы
Поможет нам в решении данной задачи правильно проработанное архитектурное решение (в дальнейшем АР).
В АР включает в себя выбор технологий, определение требований, создание диаграмм и планирование процесса.
И, как раз, ключевые цели, за которые отвечает АР должны помочь нам максимально нивелировать наши проблемы.
А именно к этим целям относятся:
Соответствие требованиям
Обеспечение масштабируемости
Безопасность
Производительность
Устойчивость
Кто отвечает за подготовку АР в команде/на проекте?
Отвечая на этот вопрос, мы провели небольшой опрос среди аналитиков в рамках нашей компании и получили следующие показатели:
Теперь хочу немного раскрыть обе эти роли. И начнем с архитектора ИТ.
Сейчас выделяют несколько видов, но я остановлюсь на архитекторе решений.
Основные функции архитектора решений:
Проектирование решения
Выбор правильных/оптимальных технологий
Описание структуры и поведения системы
И перейдем к роли аналитика.
Основные функции аналитика:
Сбор требований к системе
Проектирование решения поставленной задачи
Перевод на технический язык бизнес‑потребно сти/задачи.
И у обеих этих ролей можно выделить общую функцию – и это ПРОЕКТИРОВАНИЕ РЕШЕНИЯ.
Таким образом, как мы уже рассмотрели по нашему опросу и основным функциям этих ролей – у нас есть 2 роли, по сути, взаимозаменяемые на этапе проектирования решения по поставленной потребности. Но почему у нас все еще могут возникать проблемы, которые мы озвучили в начале?
Причин, на самом деле, может быть огромное множество. По моему опыту и опыту общения с коллегами я выделила основные и наиболее встречающиеся, связанные с процессом подготовки архитектурного решения. И они очень сильно связаны между собой.
Почему возникают проблемы на проекте?
Высокая загруженность сотрудников – много задач/сжатые сроки.
Недостаточное погружение в процессы – эта причина так же может быть со стороны обеих ролей.
Недостаточное описание исходной проблемы – одна из самых распространенных проблем, которая мешает/не позволяет полноценно погрузиться в детали проектируемого процесса.
Подгонка требования под решение или решения под требование – когда у специалиста не хватает времени/внимания/опыта, а иногда и желания. И решение прорабатывается «в лоб» – как написано в задаче, так и спроектировали.
Плохая коммуникация между ключевыми фигурами проекта.
Предлагаю рассмотреть на небольшом абстрактном примере проблемы, которые могут возникнуть на этапе проектирования решения и причины которые к этому приводят.
Пример возникновения проблем и их причины
Допустим, стояла задача реализовать новый процесс сбора заявок с клиентских фронтов с типом NEW. Процесс должен так же предусматривать работу с поданными заявками из интерфейса сотрудников, хранение реестра всех поданных заявок и передавать данные по заявкам в смежные системы.
Самая первая проблема, с которой мы можем столкнуться по причине недостаточного погружения в проблему – дублирование функционала. А именно, если мы не будем достаточно погружаться в уже существующие процессы и поставленные требования, то самым очевидным решением будет является реализация нового микросервиса.
Допустим, мы все же погрузились в существующие процессы перед проектированием и узнали, что уже существует микросервис, который уже умеет принимать и обрабатывать заявки с клиентских фронтов, но только в типом OLD.
И следующая проблема, с которой мы можем столкнуться – это вынести в отдельный микросервис реестр для хранения данных по новому типу заявок, потому что это не реализовано в текущем микросервисе, а у нас есть в этом потребность.
Так же подобная проблема может произойти, если в целом таким образом будут поставлены бизнес-требования и решение будет подгоняться под них.
При проектировании данного процесса важно понимать итоговый результат, который ожидает увидеть бизнес-заказчик, но не с точки зрения технического решения, а с точки зрения корректной работы бизнес процесса.
И правильным решением по данной задаче будет являться доработка текущего микросервиса и логики работы с новым типом заявок.
И после разбора примера предлагаю рассмотреть способы для улучшения процесса проработки АР.
Что можно сделать для улучшения качества решений?
Начнем с вариантов проработки АР:
Аналитик и архитектор работают в одной команде — в данном случае аналитик выступает главным консультантом по работе текущих процессов, чем способствует правильному проектированию решений.
Когда архитектор прорабатывает решение — в данном случае аналитик получает АР на этапе системного анализа для дальнейшей постановки задач на команду.
Когда аналитик готовит решение — после этого АР может проходить этап согласования с отдельно выделенным архитектором или архитектурным комитетом или просто заинтересованным кругом лиц по проекту.
Когда вся команда задействована в проработке решения — это может быть как в виде исключения при проработке срочной задачи, так и на постоянной основе.
Теперь рассмотрим, что мы можем улучить в проработке АР, в вариантах, когда мы участвуем.
Я участвую в проработке АР, как улучшить?
Выполнить сбор полных требований и определение итоговых целей задачи проекта перед проработкой решения – критерием полного сбора требований как раз выступает единое понимание у всех участников проекта по итоговому результату.
Погрузить архитектора в бизнес процесс/передать бизнес смысл, если он есть в команде/на проекте.
Определить масштабы проекта/системы – для того что бы изначально заложить в АР дальнейшее масштабирование и возможность/необходимость переиспользования решения.
Определить взаимодействие с внешними системами.
Определить типы интеграции – это так же важно при участии нескольких систем/команд в доработке/реализации задачи. У всех должно быть понимание, как по ожидаемому итогу, так и по сроку реализации.
Определить и обозначить потенциально узкие места процесса – необходимо как можно раньше подсветить риски при реализации того или иного архитектурного решения для нивелирования проблем на начальных этапах.
Я не участвую в проработке АР, с чего начать?
Проводить ревью требований и АР при поступлении задачи.
Необходимо своевременно давать обратную связь по полученным артефактам.
Определить и обозначить риски предложенного решения — вы большепогружены в процессы и знаете о нюансах процессов, так проще и быстрее что‑то изменить даже в уже согласованных АР и БТ, чем переделывать реализацию.
Не бояться задавать вопросы всем участникам процесса — всегда всем говорю, что вопросы — это главный инструмент аналитика, даже если вам кажется, что все понятно.
Наладить взаимодействие с командами смежных сервисов, с которыми вы будете реализовывать общий проект/задачу — что бы у всех было единое понимание по итоговому результату реализации проекта, а так же по срокам.
И наладить взаимодействие с архитектором — это ваш главный помощник по поставленной задаче и архитектурному решению.
Полезные советы для тех, кто хочет начать свое развитие в архитектуре
Начать можно и нужно с изучения основ архитектуры решений.
Больше общайтесь с другими архитекторами и не только в рамках своей компании.
Узнавайте о новых трендах и технологиях в мире ИТ.
Пробуйте применять полученные знания в своих задач — практика самый лучший опыт который можно получить.
И могу посоветовать несколько полезных книг, с которых так же можно начать свое погружение в эту тему:
Создание микросервисов, Сэм Ньюмен — в этой книге можно найти практические рекомендации по проектированию микросервисной архитектуры. Книга в целом поможет разобраться в микросервисах.
Архитектура корпоративных программных приложения, Мартин Фаулер — книга больше посвящена особенностям корпоративных приложений, но так же в ней можно найти краткие примеры по решению различных архитектурных проблем.
Микросервисы. Паттерны разработки и рефакторинга, Ричардсон Крис — так же много полезного о микросервисной архитектуре.
Комментарии (2)
klimkinMD
23.12.2024 14:48Архитектор информационных систем отличается от аналитика информационных систем чуть менее, чем ничем. Просто у разработчиков принята "трехзвенка": джуниор-мидл-сеньёр, а у аналитиков "двухзвенка": архитектор-аналитик (хотя, встречаются и подкатегории :-))
RestTiger
23.12.2024 14:48Извините, а каким образом системный анализ на диаграммах оказался после архитектуры и оценки?? Мне кажется, их нужно поменять местами...
Роль системного аналитика в проектировании архитектуры, на мой взгляд, не раскрыта...
Grikhan
Не нашел ни одного. Весь теряюсь в догадках.