Как проработать требования к системе: личный опыт
«Сбор и проработка требований к системе» – практически в каждой вакансии на системного аналитика вы увидите этот навык на первом месте. Это важнейший этап в разработке любой информационной системы, будь то простенькое мобильное приложение, веб-сайт или система автоматизации производственного процесса на крупном предприятии.
Если не отнестись к этой задача ответственно, то последствия могут быть разные: от небольшой доработки функции до полной переработки системы. Страшный сон аналитика – когда заказчик заметил, что функции, которая описана в ТЗ, нет в системе.

На практике все не так страшно – в статье я расскажу, какие есть методы сбора требований, какие из них я применял на своей практике, и как прорабатывал поверхностные требования от заказчика до полноценных задач для разных отделов разработки. Но сначала кратко о том, какие есть требования, и кого они интересуют в проекте.
Типы и виды требований
Требования можно разделить на 3 вида: бизнес, пользовательские, системные. На верхнем уровне находятся бизнес-требования – они касаются предназначения системы. На среднем – пользовательские требования, то есть опыт и взаимодействие пользователя с системой. На нижнем – системные, которые касаются функций и вида системы.

Еще есть архитектурные, но на практике я с ними не встречался – они описывают то, из каких частей состоит система. Обычно это либо явно прописано в ТЗ от заказчика, либо этим занимаются архитектор или разработчики.
Под типами требований я имею в виду функциональные и нефункциональные. Функциональные отвечают на вопрос «Что?» и описывают действие с системой, а нефункциональные – то, как она должна выглядеть, как должна работать. Эта тема заслуживает отдельного материала со множеством примеров, но я пробежался по ней кратко, поскольку материал посвящен другому вопросу.
Техники сбора требований
Знакомы с термином стейкхолдеры? Это лица и/или организации, заинтересованные в создании системы, и у них мы будем собирать требования. Стейкхолдером может быть начальник, менеджер проектов, директор и даже министр Здравоохранения – этим лицам нужно готовое решение, поэтому их требования и пожелания мы будем собирать и использовать для разработки.

Существуют различные техники сбора требований, с которыми вы наверняка знакомы – это не что-то сверхъестественное, что нужно изучать годами, подобные техники вы наверняка применяли в жизни вне работы. Рассмотрим же их.
Интервью
Беседа тет-а-тет между аналитиком и заинтересованным лицом. Вопросы в интервью делятся на открытые (для получения новой информации) и закрытые (для уточнения уже имеющихся требований).

Ошибочно думать, что эта техника простая. К интервью нужно готовиться, список вопросов должен быть полным, а в процессе требуется следить за реакцией интервьюируемого и в случае необходимости менять вопросы. На основе реакции, кстати, тоже можно сделать выводы по некоторым требованиям.

К плюсам способа можно отнести скорость получения ответов, возможность задавать вопросы в произвольной последовательности, прямой контакт со стейкхолдером. Минусы – требуется подготовка, не всегда удается определиться с датой и временем встречи (плюс частые переносы), а человек может оказаться не предрасположен к раскрепощенной беседе.
Заказчик в компании разработчика
Одно из правил Agile – наличие представителя заказчика в компании исполнителя. Это как ускоренное интервью – человек находится рядом, в рабочее время к нему можно обратиться с вопросами, причем не один раз.

Более того, представитель сможет оперативно реагировать на состояние проекта, корректировать его реализацию и требования, давать обратную связь. Это наиболее эффективный способ сбора и проработки требований, но еще один человек в штат потребует вложений и времени на адаптацию.
Совещание
Встреча с несколькими стейкхолдерами, на которой можно либо уточнить требования, либо обсудить проблемные места проекта. Зачастую на таких мероприятиях участвуют все заинтересованные стороны, что позволит прийти к единому мнению насчет различных вопросов и составить общий список требований.

К недостатку можно отнести разве что сложность в организации встречи (как онлайн, так и оффлайн) и редкие случаи, когда к единому мнению так и не удалось прийти.
Мозговой штурм
EДовольно эффективный метод сбора и формирования требований, который может быть включен в другие способы. Мозговой штурм применяют, когда требования связаны с плохо изученными или новыми направлениями организации – то есть, когда с ними никто ранее не работал. Тут все просто – собираем идеи, анализируем их и ищем среди них решения.

Участники брейншторма должны быть заинтересованы в генерации идей, а для проведения мероприятия нужно собрать всех вместе, что может стать проблемой.
Анкетирование по электронной почте
Еще один вариант общения с заказчиком, но асинхронный – вопросы ему можно отправить по электронной почте, в мессенджер или куда-нибудь еще. Это довольно простая форма общения, не требует особой подготовки, но серьезные минусы – скорость и полнота ответа.

Неизвестно, когда заказчик ответит на письмо, а ответы могут оказаться слишком сдержанными. Конечно, можно устроить переписку, но только в том случае, если попался отзывчивый и грамотный заказчик.
Изучение документации
Если она, конечно же, есть. Это может быть структура организации, стандарты, инструкции, шаблоны и прочая документация, которая может помочь в определении потребностей заказчика. Методика в основном используется, если в организации есть устоявшиеся бизнес-процессы, они хорошо задокументированы, но не автоматизированы.

Плюс способа – быстрое получение информации и исключение человеческого фактора. Однако на практике зачастую в организации нет документации, или она уже неактуальна – и первым делом аналитик занимается приведением ее в порядок.
Изучение набросков заказчика
Хорошо, когда заказчик любит записывать свои мысли – а мы потом используем их для проработки требований. Это могут быть электронные письма, заметки в телефоне, запись на диктофон и даже вырванный листочек из тетрадки, где заказчик зафиксировал свои мысли. Нам остается только изучить их, привести в порядок, согласовать и передать в разработку.

Способ помогает лучше понять заказчика, но не всегда попадаются люди, которые умеют (или хотят) формулировать и выражать свои мысли на каком-нибудь носителе.
Переиспользование проектной документации
Прекрасно, если для компании ваш проект – не первый. Тогда можно переиспользовать различную документацию (частное техническое задание, пояснительную записку) и взять ее за шаблон. Это существенно сократит время на сбор и анализ требований, поскольку часть из них может подойти и для текущего проекта. Например, ТЗ для интернет-магазинов очень похожи друг на друга.

Недостаток метода – высокая стоимость первого проекта, если его еще не было. С другой стороны, мы получим почву для разработки других систем, поэтому усилия будут того стоить.
Как я снимал и прорабатывал требования
Пример #1
Расскажу два случая: на одном из проектов заказчик напрямую не взаимодействовал с командой, он был темной лошадкой, диктующей свои требования. Контакт с ним держал только лидер проекта, он же демонстрировал результат и получал фидбек.

Я, как системный аналитик, получал скупую информацию от лидера проекта после совещаний, доводил ее до ума и ставил задачи на разработку. На этой работе использовал методики «интервью» и «изучение набросков по черновикам», очень редко случались «мозговые штурмы», но пользы они не приносили – заказчику все равно что-то не нравилось.

Понравилось изучать наброски – повезло, что человек умеет выражать свои мысли. В спокойной обстановке изучаешь черновики, рисуешь макеты, при необходимости – уточняешь мелкие детали. Зарисовки быстро превратились в функциональные и нефункциональные требования и были отправлены в разработку. Отмечу, что документации на проекте (как и ТЗ) не было, разработка велась хаотично по «хотелкам» заказчика.
Пример #2
На другой работе проект был посерьезнее, заказчик – государственный. Мы получили согласованное ТЗ с исчерпывающим описанием проекта, оно включало функциональные и нефункциональные бизнес и системные требования. Теперь уже команда системных аналитиков занималась обработкой поступивших требований.

Так как бОльшая часть требований уже была в ТЗ, все, что нам оставалось – это уточнять их. По каждому модулю мы составляли вопросы, группировали их и задавали на совещании, где присутствовали команды исполнителя и заказчика. Основная проблема такого способа – встречи часто переносились.

Очень помогло переиспользование документации. Большая часть документов (ЧТЗ, пояснительная записка) были переписаны с другого проекта, что существенно ускорило разработку и избавило заказчика от повторяющихся шаблонных вопросов.
Рекомендации по сбору и проработке требований
Прежде, чем обращаться к стейкхолдеру, я отвечаю на три вопроса:

  • Что необходимо выяснить? Анализирую состояние системы и требования, составляю список вопросов. Часто прибегаю к изучению аналогичных решений, так как заказчик сам не понимает, что хочет.
  • У кого это можно выяснить? Изучаю имеющуюся документацию, думаю, какой стейкхолдер может ответить на вопросы.
  • Каким образом? Выбираю наиболее подходящую технику сбора требований.

Хорошо, требования собраны, что дальше? Теперь их нужно проработать, и тут нам пригодятся те самые схемы UML (для системных требований) и BPMN (для бизнес-требований). На практике они существенно облегчают понимание требования, позволяют полно описать его и выявить мелкие, но важные детали. Можно составить схемы только для личного пользования – визуализация лучше всего помогает понять задачу.

Что касается пользовательских требований, то тут на помощь приходят пользовательские истории и сценарии. Мне нравится их писать – в голове выстраивается полный пошаговый сценарий с возможными ответвлениями, что порождает новые вопросы и уточнения. Чем больше удастся предусмотреть ответвлений, тем меньше времени уйдет на тестирование и возможную доработку системы.
Заключение
Проработка требований – процесс ответственный, но несложный и даже увлекательный. Рекомендую немного потренироваться в этом деле, а потом обратиться к книге «Разработка требований к программному обеспечению» Карла Вигерса и Джой Битти, которая станет исчерпывающим руководством как для начинающих, так и для опытных аналитиков.
базовый курс
Советуем пройти наш базовый курс, чтобы лучше понять, как собирать и прорабатывать требования