Лучший способ понять теорию — получить больше опыта в разных проектах. Для системных и бизнес-аналитиков я постоянно показываю подходы к работе через публикацию разборов задач: БД, API, Интеграции, требования, и все, что связано с проектированием систем. После публикации поста общий подход к работе с задачами системного аналитика, меня попросили показать, как его применить на практике. Собрала примеры постановок задач и описаний системы по одному из проектов. Здесь постараюсь емко изложить его. А в конце оставлю ссылку на подборку примеров, которые можно посмотреть и переиспользовать в своих проектах.  Мобильное приложение для сообществ, через которое можно регистрироваться на бесплатные вебинары, читать статьи со всех социальных сетей и блогов сообщества, проходить обучение. Все примеры в статье будут связаны с этим проектом. Во‑первых, что такое бизнес‑контекст? Это как фон, на котором мы пытаемся понять нашу задачу. В нашем случае, это может быть, например, понимание того, как сообщество общается сейчас, какие у него проблемы и какие цели оно преследует. Здесь мы можем поговорить с руководством сообщества, пообщаться с его действующими участниками, изучить их текущие способы общения — социальные сети, форумы, вебинары и так далее. Либо просто получить уже собранную информацию с описанием работы сообщества сейчас — это AS IS (описание «как есть» для проекта). Теперь, что такое бизнес‑требования? Это то, что бизнес хочет от будущей системы. В нашем случае, это может быть, например, желание сделать процесс регистрации на вебинары проще и удобнее, или желание собрать всю информацию из разных соцсетей в одном месте. Бизнес‑требования мы также обычно собираем на встречах с заказчиком, проводим интервью и обсуждения. Это To Be — как должно быть в результате разработки. Важно понимать, что первоначально собранные требования часто бывают не полными или не точными.  Задача системного аналитика — уточнить эти требования, не погружая заказчика в технические детали реализации, но уже примерно представляя, что будет «под капотом». Мы возвращаемся к заказчику или потенциальным пользователям с вопросами, уточняем детали, проверяем понимание, проводим дополнительные интервью, если необходимо, чтобы убедиться, что мы все правильно поняли. По итогу этого этапа у нас должна быть ясная картина того, как работает бизнес сейчас, и чего он хочет от новой системы. И все это мы оформляем в виде требований, которые дальше передадим команде разработки. Ведение списка контактов1. Сбор контактов при регистрациях на вебинары. Информация попадает в Битрикс24, Telegram-бот сайта, Email-лист контактов.2. Участники Telegram-каналов GetAnalyst3. Участники YouTube-каналов GetAnalyst4. Сбор контактов при обращении по вопросам обучения Вебинары1. Публикация анонса в Telegram-каналах2. Рассылка анонса через Email3. Передача ссылок на вебинарные комнаты4. Выдача подарков на вебинарах Уведомления о событиях по Email / в Telegram GetAnalyst1. Приглашения на бесплатные вебинары2. Напоминания о бесплатных вебинарах3. Передача ссылок на вебинарные комнаты Больше в посте про бизнес-процессы AS IS. Ведение контента в TG-канале для опытных аналитиков и его  Роли: • Администратор канала - публикация и подтверждение основного контента в канал • Команда - разрешены к публикации только служебные собщения (напоминания о вебинарах по шаблонам), некоторые нешаблонные сообщения должны получить подтверждение перед публикацией Процесс: Написание текста поста. Текст может содержать ссылки на внешние ресурсы, выделения, курсив и другие возможности стандартного редактора в Telegram. Также есть сообщения в которых есть ссылки на видео из YouTube канала. Добавление одного или нескольких изображений к посту, при необходимости. Назначение даты и времени публикации. Проверка отложенного поста в списке "Ожидает публикации". 4.1. Пост может быть изменен. Это происходит часто, т.к. до публикации посты шлифуются по 2-3 раза при перечитывании. 4.2. Пост может быть удален и создан заново из-за проблем с картинками и файлами, выявленными при проверке. 4.3. Пост может быть перепланирован на другое время. Пост публикуется. 5.1. Текст может быть отредактирован после публикации, т.к. бывают опечатки или обновления.  Сначала нужно понять, кто будет пользоваться приложением и как. Это могут быть участники сообщества, организаторы вебинаров, модераторы. У каждой из этих групп будут свои потребности и требования к приложению. Участники, например, хотят легко регистрироваться на вебинары и читать новости. Организаторы вебинаров хотят удобно запланировать и анонсировать событие. Модераторы хотят следить за общением внутри сообщества и модерировать его при необходимости. Наша задача — понять и описать все эти роли и их потребности.  По итогам получится список ролей и пользовательские требования To Be для каждой из них. Теперь можно перейти к верхнеуровневому проектированию архитектуры. Сначала выделяем компоненты системы - отдельные приложения, сервисы:  мобильное приложение,  сервер Backend, который будет обрабатывать запросы от приложения, и может включать в себя подсистемы (сервисы, микросервисы), база данных для хранения информации о пользователях, вебинарах и новостях, внешние системы - источники данных, из которых надо получать данные и в которые их надо передавать (интеграции). Для визуализации архитектуры можно использовать нотацию C4. Общее описание нотации C4, Контекстная диаграмма (System context), Диаграмма контейнеров С4 (Container diagrams), Диаграмма компонентов C4 (Component diagram).  Этот этап работы системного аналитика важен для того, чтобы у всей команды было общее понимание того, как будут организованы основные компоненты системы и как они будут взаимодействовать между собой. На картинке ниже пример описания архитектуры в разработанной мною нотации, которая легко трансформируется в C4. На этом этапе мы пытаемся понять, как именно будут взаимодействовать различные роли с нашей системой. Мы рассматриваем каждую роль, которую мы определили на предыдущем этапе, и для каждой из них описываем основные действия, которые они будут выполнять в приложении. Например, для участников сообщества одним из сценариев может быть "Регистрация на вебинар": пользователь открывает приложение, переходит в раздел вебинаров, выбирает интересующий его вебинар и нажимает кнопку "Зарегистрироваться". Другой сценарий — "Чтение новостей": пользователь открывает приложение, переходит в раздел новостей и начинает читать интересующие его статьи. Для описания сценариев очень удобно использовать формат use case. Use case — это описание того, как система и пользователи взаимодействуют друг с другом для достижения какой-то цели. Use case включает в себя не только последовательность действий, но и роли, которые участвуют в этом взаимодействии, и возможные альтернативные сценарии. Основное удобство формата use case в том, что он позволяет представить сценарии взаимодействия с системой в простой и понятной форме. Use case показывает, какие роли участвуют в сценарии, что они делают, и как система на это реагирует. Это помогает всей команде лучше понять, как должна работать система, и учесть все возможные варианты взаимодействия пользователей с системой. На этом этапе мы начинаем рассматривать, что произойдёт, если взаимодействие пользователя с системой не будет идти по основному сценарию. Это могут быть ситуации, когда что-то идёт не так, или когда пользователь решает сделать что-то по-другому. На примере мобильного приложения для сообщества. Мы уже описали основной сценарий "Регистрация на вебинар", где пользователь успешно зарегистрируется на интересующий его вебинар. Но что, если вебинар уже прошел? Или если пользователь уже зарегистрировался на этот вебинар? Или если подключение к интернету пропало во время регистрации? Все эти варианты мы должны проработать и описать как альтернативные сценарии. Каждый альтернативный сценарий должен описывать, что происходит в этой ситуации, и как система должна на это реагировать. Этот этап работы системного аналитика помогает учесть все возможные исключения и ошибки, которые могут произойти при работе с системой. Это помогает команде разработки создать более надёжное и удобное для пользователей приложение. Следующая задача — представить, как эти сценарии будут выглядеть в интерфейсе нашего приложения — UI/UX. Здесь на помощь приходит дизайнер.  Задача системного аналитика на этом этапе — правильно и полно передать всю собранную информацию дизайнеру. Это может включать в себя описание всех ролей и сценариев, предпочтения целевой аудитории.  Иногда системный аналитик рисует макеты, используя Figma, Miro, Draw.io, Axure RP Pro или другие инструменты. Например, мы можем дать задачу дизайнеру создать макеты экрана регистрации на вебинар, учитывая все шаги, которые мы уже определили в нашем сценарии, и все возможные исключения из альтернативных сценариев. Мы также можем попросить дизайнера учесть, что наша аудитория — это люди разных возрастов, поэтому интерфейс должен быть простым и понятным для всех. Неоднократно сталкивалась с ситуацией, когда работу с дизайнером завершили, во всю идет разработка, а макеты на ошибки отрисовать забыли. Важно учесть, что в постановке задачи на дизайнера должны быть перечислены не только экраны для Happy Path (счастливого пути работы приложения), но и для отображения ошибок. Работа системного аналитика и дизайнера — это командная работа. Поэтому на этом этапе обычно проводятся совместные сессии обсуждения и скетчинга, чтобы вместе придумать, как лучше реализовать все задуманное. Этап формулировки задач на дизайнера важен, потому что от него зависит, насколько удобно и понятно будет работать с нашим приложением пользователям. На этом этапе системного аналитика мы пытаемся понять, какие данные необходимы для работы нашего приложения и как они связаны друг с другом. Данные в системе обычно представлены в виде различных сущностей, которые имеют свои свойства и взаимосвязи. Вернемся к нашему примеру мобильного приложения для сообщества. Основными сущностями в нашем случае могут быть "Пользователь", "Вебинар" и "Новость". У каждой из этих сущностей будут свои свойства. Например, у "Пользователя" могут быть свойства "Имя", "Email", "Дата регистрации", и т.д. У "Вебинара" - "Название", "Дата и время", "Описание", "Организатор", и так далее. Также мы должны определить, как эти сущности связаны друг с другом. Например, "Пользователь" может быть зарегистрирован на одном или нескольких "Вебинарах". Эта информация  важна, потому что она поможет нам понять, как должна быть организована база данных нашего приложения. Определение ключевых данных, сущностей и их свойств - это важный этап работы системного аналитика, который помогает создать структуру для нашей системы и понять, как данные будут храниться и использоваться в приложении. От того, насколько продуманно будет создана БД и определены сущности, зависит масштабируемость системы в будущем. Прежде чем программисты начнут разрабатывать методы Backend, им нужно подготовить базу данных. Варианты: создать новые таблицы, добавить поля в существующие таблицы, сделать миграции данных (перенос и автозаполнение), иногда поменять типы данных, удалить лишние поля и так далее. Для этого аналитик на основе выделенных сущностей сначала проектирует логическую или физическую модель базы данных (если работа с реляционной БД), а затем ставит задачи на разработчиков: Шаблон Confluence и инструкция После того, как мы определили все ключевые данные и сущности нашей системы, нам нужно понимать, что тестировщикам затем придется проверять, как она будет работать. Для этого мы подготавливаем набор тестовых данных, которые будут использоваться для тестирования системы.  Эта задача может быть сделана как системным аналитиком, так и смело передана на тестировщика. Например, в случае нашего приложения для сообщества, мы можем создать несколько тестовых «Пользователей» с разными параметрами — с корректными и некорректными email'ами, зарегистрированными на разное количество «Вебинаров», и т. д. Мы также можем создать несколько тестовых «Вебинаров» и «Новостей» с различными свойствами. Эти тестовые данные позволят нам проверить, как система будет вести себя в различных ситуациях — например, что будет, если пользователь попытается зарегистрироваться на вебинар с некорректным email'ом, или что будет, если вебинар уже полностью забронирован. На этом этапе надо подготовить такой набор тестовых данных, который бы максимально точно отражал все возможные ситуации в работе системы. Это поможет команде разработки проверить все функциональности системы и убедиться, что она работает корректно. В работе приложений существует нечто, что помогает передавать данные между разными частями системы, например, между пользовательским интерфейсом (фронтендом) и сервером (бекендом). Это называется API, или Application Programming Interface. Системный аналитик должен уметь формулировать требования на разработку методов API, которые позволят фронтенду взаимодействовать с бекендом. Это может включать в себя, например, метод для регистрации нового пользователя, метод для просмотра списка вебинаров, метод для регистрации на вебинар, и так далее. Для каждого метода API, системный аналитик должен определить, какие данные он принимает на вход (например, данные для регистрации нового пользователя), и что он возвращает на выход (например, подтверждение успешной регистрации). Ошибки на этом этапе могут так же, как и при проработке БД, привести к проблемам с масштабируемостью и развитием системы. В случае плохой проработки задачи очередная фича в системе может требовать серьезную проработку, чтобы сделать совместимые с предыдещими версиями обновления в системе. Пример задачи на бэкенд — шаблон постановки задачи + инструкция Фронтенд и мобильная разработка – это та часть работы, которую видит и непосредственно использует конечный пользователь. В нашем случае это мобильное приложение для сообщества, где пользователи могут регистрироваться на вебинары и следить за новостями. Задача системного аналитика на этом этапе - описать, что именно должен видеть и делать пользователь в приложении. Для этого аналитик подготавливает список задач для фронтенд или мобильных разработчиков, которые включают работу, сделанную на предыдущих этапах: описание Use Cases, дизайн, методы Backend, тестовые данные, чтобы можно было в процессе разработки воспроизвести все ошибки, до передачи в тестирование. Вот пример таких задач: Создание экрана регистрации на вебинар. Отображение списка доступных вебинаров. Создание уведомлений о предстоящих вебинарах. Добавление возможности читать новости сообщества в приложении. В каждой из этих задач системный аналитик должен максимально подробно описать, как должен выглядеть и работать каждый из элементов экранных форм, чтобы разработчики могли воплотить задуманное в жизнь. Пример задачи на фронтенд - шаблон постановки задачи  На этом этапе системный аналитик может подготовить список задач для тестировщиков. Он не обязателен. Тестировщики могут сделать задачи себе сами. Но иногда он просто необходим. Зависит от компании и проекта, иногда от конкретной задачи. Он включает в себя описание того, что именно нужно протестировать, и какие результаты должны быть получены. Допустим, в случае нашего приложения для сообщества, задачи могут выглядеть так: Проверить, происходит ли корректная регистрация пользователя на вебинар. Убедиться, что новости сообщества отображаются правильно и актуальны. Проверить работу уведомлений о предстоящих вебинарах. Протестировать работу приложения на разных устройствах и разных версиях операционной системы. На этом этапе системный аналитик в тесном сотрудничестве с тестировщиками должен убедиться, что все задачи выполнены, и приложение работает так, как предполагалось. Благодаря тестированию мы можем быть уверены, что пользователи получат приложение без багов и неприятных сюрпризов. Даже после того, как разработка приложения завершена и оно уже запущено, работа системного аналитика все еще не закончена. Один из важнейших этапов - это сохранение и поддержание актуальности всей документации, связанной с проектом. Артефакты и документация - это не просто свалка статей Confluence + задач Jira, а ключевая информация о проекте. Она помогает новым участникам команды разработки быстрее разобраться в проекте, а также служит источником правды при необходимости внести изменения или улучшения в будущем. В случае нашего приложения для сообщества, системный аналитик может сохранить следующую документацию: Документы, описывающие функциональные требования и пользовательские сценарии. Диаграммы и схемы, включая C4 диаграммы архитектуры системы и Use Case диаграммы. Документы с описанием ключевых данных, сущностей и их свойств. Документацию API и описание логики работы методов. Документы с результатами тестирования и проблемами, обнаруженными в процессе разработки (особенности и известные проблемы). Все это может быть собрано в ранее приведенных шаблонах требований для Confluence. Сохраняя и обновляя документацию, системный аналитик помогает обеспечить долгосрочную жизнь IT-проекта.  Проекты не заканчиваются с моментом запуска - они постоянно развиваются и совершенствуются, и качественная документация играет в этом важную роль. Про процесс документирования: Проект: мобильное приложение для сообществ, через которое можно регистрироваться на бесплатные вебинары, читать статьи со всех социальных сетей и блогов, проходить обучение. Подборка моих блогов с теорией + примерами требований + диаграмм + постановок задач: здесь. В ней вы найдете шаблоны Сonfluence, структуру документов и примеры описаний для каждого этапа работы аналитика над задачей. Это общий подход. Он адаптируется в зависимости от типа задачи и проекта. Я его придерживаюсь, чтобы не упустить шаги по проработке требований и точно определить весь список задач, которые нужно создать и распределить на команду.   Основатель сообщества аналитиков GetAnalyst