
Софья Петаева
Руководитель отдела системного анализа
Привет, Хабр!
Меня зовут Софья Петаева, я руковожу отделом системного анализа. Уже почти 10 лет в этой теме, и за это время я научилась не только смотреть на результат работы аналитиков, но и понимать, как они его добиваются. В последнее время мне часто приходится организовывать аналитиков и придумывать новые процессы. Это и помогло мне лучше понять их работу.
В этой статье я расскажу о Discovery-фазе, о том, какие ошибки мы сделали, на каких граблях потанцевали, и как эти уроки до сих пор влияют на нашу работу и принятие решений.
Введение
Для начала давайте определимся с основным понятием этой статьи. Что же такое я имею в виду, когда говорю “Discovery”? Вряд ли речь о телеканале.
Из всех определений мне ближе всего это:
Discovery-фаза — это первый обязательный этап разработки, на котором выявляются требования, анализируются бизнес-цели, формируется техническое предложение, фиксируются границы проекта и оценивается объем дальнейших работ.
Обобщим и структурируем:
Discovery-фаза — это этап, на котором:
Формируется предложение по технической реализации
Фиксируются границы проекта
Дается оценка стоимости и сроков реализации
Эти три элемента — предложение, границы и оценка — являются ключевыми результатами discovery.
В заказной разработке, где клиенты часто приходят лишь с общими идеями и проблемами, эта фаза становится критически важной для успеха проекта.
Опыт реализации discovery-фаз: уроки на ошибках
Discovery — это не волшебная таблетка. Это инструмент. И как любой инструмент, он работает только если:
а) вы знаете, как им пользоваться;
б) не пытаетесь забить гвозди микроскопом;
в) не отдаёте его в руки тому, кто впервые видит гвоздь.
Ниже — два кейса из моей практики.
Кейс 1: Маркетплейс для торгового центра
Обратился клиент с уже готовым бизнесом и даже с отработанной тестовой площадкой, где он уже убедился - потребность в цифровой платформе точно есть. Огромное количество идей, высокий уровень притязаний, уверенность в успехе - это то, как можно охарактеризовать настрой заказчика на этом этапе.
Что мы сделали хорошо:
Собрали потребности и "боли" клиента;
Постоянно общались с заказчиком, активно вовлекали его в работу;
Сформировали сильную команда (2 аналитика (middle+senior), архитектор, UX-дизайнер)
Заложили риски в оценку (180 часов - этого оказалось маловато, но об этом ниже)
Какие возникли проблемы:
Команда не понимала, что такое discovery на практике - ведь мы никогда раньше с этим инструментом не сталкивались;
На выходе ожидания заказчика не совсем совпали с результатами;
Затрачено в 1,7 раз больше времени (300+ часов вместо 180).
Результат: Хорошо детализированные требования и чёткие границы продукта. Заказчик, несмотря на проблемы, продолжил сотрудничество с нами на фазе реализации.
Кейс 2: Приложение для настройки умного дома
Технически грамотный заказчик с инженерным мышлением обратился за реализацией приложения. Он чётко понимал все технологии, протоколы и методологии - гораздо лучше, чем мы. Вполне ожидаемо, что мы провалились по всем фронтам. Вспоминать стыдно, но очень поучительно.
Какие именно ошибки мы допустили:
Не была выделена команда, на discovery работал только один junior-аналитик;
Ввиду того, что заказчик и аналитик говорили совершенно на разных языках, детализировать требования до нужного уровня так и не удалось;
Совсем не проработали этапность реализации;
Разработчики посмотрели на полученные артефакты и… не смогли дать оценку на их основе.
Результат: Потеря заказчика. Я бы на его месте тоже не осталась с таким подрядчиком.
Выводы и структуризация работы
Из полученного опыта сформировались ключевые принципы:
Один аналитик не справится с discovery-фазой — нужна командная работа экспертов.
Каждое решение должно фиксироваться и согласовываться с заказчиком. Просто поговорить - хорошо, но где окажутся эти договорённости в критический момент?
У каждого решения должен быть ответственный за его принятие и исполнение. Такая простая истина, казалось бы, но всё же - фиксируем.
Необходимо постоянное управление ожиданиями и рисками. Не “когда клюнет”, а заблаговременно.
Результат discovery должен быть четким и предсказуемым для всех участников. И заказчику, и команде должно быть понятно, куда и зачем мы идём.
Структура работ на discovery-фазе
Мы составили полный список артефактов, которые могут получиться на выходе из discovery-фазы. Часть из них - обязательны, формируются всегда. Таких - всего 3. Остальные артефакты зависят от различных факторов. Давайте разберёмся во всём по порядку.
Обязательные работы (для всех проектов):
1. Дебрифинг (Debriefing)
Включает в себя:
Знакомство и общение с заказчиком;
Погружение в предметную область;
Сбор и первичный анализ бизнес-требований;
Анализ бизнес-правил;
Фиксация результатов (схемы, майндмэпы, презентации и что угодно ещё, способное отразить собранную информацию).
Пример результатов дебрифинга (здесь и далее большинство примеров носят исключительно характер визуальных иллюстраций, помогающих понять, как это может выглядеть):

2. Определение ролей и вариантов использования
Включает в себя:
Определение ролевой модели (если есть);
Выявление подсистем;
Определение вариантов использования для каждой подсистемы;
Определение прав доступа;
Расстановка приоритетов;
Определение этапности реализации на основе приоритетов..
Визуализация ролей и вариантов использования.


Пример описания ролевой модели:

3. Ограничения, допущения и риски
Включает в себя:
Определение ограничивающих факторов;
Выявление возможных рисков;
Фиксация условий и допущений.
Пример описания ограничений:

Пример описания допущений:

Пример описания рисков:

Опциональные этапы:
4. User Story Mapping (USM)
Необходимо, если:
Проект планируется развивать по гибкой методологии;
Не предполагается работа по ГОСТу;
Нет понимания границ каждого этапа;
Нет определенности функциональных требований, слишком размытые “хотелки”.
Используется для:
Определения эпиков;
Декомпозиции на фичи;
Генерации идей (при необходимости);
Расстановки приоритетов;
Построения дорожной карты реализации.
Пример USM:

5. Моделирование бизнес-процессов
Необходимо, если:
У заказчика уже реализованы процессы, в которые будет встроена система;
Есть выраженные боли, нужно выявить потребность в автоматизации или / и интеграции;
Необходимо точно определить роль системы в бизнес процессах заказчика;
Большое количество ролей в рамках процесса;
Большое количество ограничений и бизнес-правил;
Высокий уровень специфичности предметной области.
Используется для:
Анализа существующих процессов;
Выявления "узких" мест;
Определения точек автоматизации;
Определения места системы в бизнес-процессах.
Чаще всего фиксируется в виде BPMN.


6. Модель предметной области
Необходимо, если:
Много специфичной терминологии;
Сложные или не типичные связи между сущностями бизнес-системы.
Используется для:
Семантического анализа предметной области;
Выявления ключевых сущностей;
Определения связей между сущностями;
Построения ER-диаграмм.
Пример концептуальной ER-диаграммы для моделирования предметной области:

7. Карты экранов
Необходимо, если:
Планируются сложные работы по дизайну (в качестве плана или чек-листа работ для дизайнера).
Используется для:
Создания списка экранов/страниц;
Определения иерархии;
Составления списка обязательных элементов и функций;
Прототипирования (у нас выполняется дизайнером, но в некоторых командах этим занимаются аналитики).
Пример карты экранов:

8. Концепт архитектуры
Необходимо, если:
Предполагается создание продукта со сложной (SOA или микросервисной) архитектурой;
Планируется миграция на SOA или микросервисы;
Большое количество интеграций (более 5 разноплановых внешних сервисов).
Используется для:
Определения списка подсистем / внешних систем;
Определения связей между подсистемами / с внешними системами;
Выбора сервисов для интеграции;
Построения архитектурной модели.
Пример концепта архитектуры:

9. Нефункциональные требования
Необходимо, если:
Проектируем высоконагруженную / международную / мультиязычную систему
Есть существенные качественные ограничения со стороны законодательства / регламентов
Используется для:
Сбора бизнес-правил
Определения требований к:
производительности
серверной части
безопасности
локализации
Например:

10. Ключевые сценарии
Необходимо, если:
Есть уникальные или / и неочевидные сценарии;
Нужна максимально точная проработка рисков;
Взаимодействуют более 3 систем и/или ролей в одном сценарии.
Используется для:
Формализации пошагового выполнения сценариев;
Описания базового потока;
Фиксации альтернативных потоков и исключений.
Определяется список из 1-3 ключевых сценариев, которые необходимо описать.
У многих свои подходы и шаблоны к описанию сценариев, приведу кусочек нашего описания для примера.

Ретроспективный анализ
Мы попробовали ретроспективно оценить наши 2 кейса - какие работы важно было выполнить для успешной реализации discovery-фазы. И они подтвердили наши предположения. В обоих случаях нам не хватило часов, при этом мы могли за это же время достичь куда более грандиозных результатов - если бы сразу осознавали структуру работ.
Пример для маркетплейса:
Обязательные работы: 1-3
Дополнительные:
5 - Моделирование бизнес-процессов (потому что у Заказчика уже есть готовый бизнес с налаженными бизнес-процессами, нужно понять - как в них будет встроена новая система).
7 - Карта экранов (потому что Заказчик хотел уже на старте получить красивую картинку - это было очень важно для него).
8 - Концепт архитектуры (в процессах было задействовано большое количество систем - здесь и складские системы, и несколько приожений (десктопных, браузерных, мобильных), и системы аналитики и статистики, ну и, конечно, старый добрый эквайринг.
9 - Нефункциональные требования (система уже на старте обещает быть высоконагруженной, заказчик сам объяснял, что приложение, написанное “на коленке” для обкатки гипотезы, совсем не справлялось с нагрузкой - очень важно сразу предусмотреть высокие нагрузки).
Оценка вышеуказанных работ: 312 человеко-часов
По факту было затрачено: 311 человеко-часов
Пример для приложения умного дома:
Обязательные работы: 1-3
Дополнительные:
4 - User story mapping (заказчик очень хорошо понимал, по каким протоколам должно работать приложение, но ясной картины функциональности предоставить в первых беседах не смог)
6 - Модель предметной области (большое количество специфической терминологии и неочевидных связей, модель предметной области помогла бы нам найти общий язык с заказчиком)
9 - Нефункциональные требования (явно была озвучена потребность работы с определенными заказчиком технологиями, системами и протоколами, это также требует анализа).
Оценка: 180 человеко-часов
Фактически затратили 115 часов одного аналитика и получили нулевой результат.
Заключение
Для нас discovery-фаза перестала быть событием вида "терра инкогнита" и стала управляемым процессом с предсказуемым результатом. Еще раз вспомним ключевые факторы успеха:
Командная работа экспертов;
Строгая фиксация и отслеживание выполнения договоренностей;
Назначение ответственного за каждое решение;
Управление ожиданиями и рисками;
Четкий и понятный для всех результат этапа.
Такой подход позволяет уже на берегу разобраться в сроках и стоимости работ, отвечая на самый страшный вопрос заказчика: "Сколько это будет стоить и когда будет готово?".
Благодарю всех за внимание к теме. Надеюсь, эта статья поможет вам структурировать вашу работу и найти свои ответы на вопросы “как”, “когда” и “зачем”.
Больше полезного по системному анализу — в нашем ИТ-сообществе. Мы делимся экспертизой через бесплатные вебинары, организуем конференции, проводим опросы и создаем среду для профессионального общения. Подписывайтесь, чтобы быть в курсе всех событий и не упустить ничего важного. До встречи внутри!