Управление требованиями: практическое руководство для бизнес-аналитика
Содержание
Это руководство знакомит бизнес-аналитика с управлением требованиями и даёт набор мастеров — пошаговых опросников, — которые помогают выявлять требования. Артефакты рассматриваются концептуально: мы объясняем их состав, смысл и способ выявления, а не производим готовые документы.
1. Введение
Это руководство учит бизнес-аналитика управлению требованиями — дисциплине, которая превращает разрозненные пожелания в ясную, проверяемую картину того, что нужно построить. Оно написано для практика, который хорошо знает свою предметную область, но не проходил формальной подготовки в требованиях к программным системам. Мы не предполагаем, что вы уже владеете специальным словарём, — и вводим его по ходу.
1.1. Зачем управление требованиями
Требования — это мост между потребностью и системой. Самые дорогие ошибки в проектах случаются не в коде, а раньше: когда неверно поняли проблему, упустили стейкхолдера или размыли границы системы. Управление требованиями делает такие ошибки видимыми и управляемыми, пока их ещё дёшево исправить.
Это не разовый «сбор требований». Требования меняются на протяжении всего проекта, и вопрос лишь в том, ведём ли мы их осознанно — или догоняем постфактум.
И ещё одно, что стоит усвоить сразу: мы описываем проблему пользователя — что ему нужно и зачем, — а не интерфейс, через который он это получит. К этому различию мы ещё не раз вернёмся.
1.2. Две цели аналитика
Вся дальнейшая работа подчинена двум целям.
- Понять границы системы — что входит в систему, а что остаётся во внешнем мире. Пока граница размыта, любые оценки и договорённости зыбки.
- Определять систему итеративно — определение системы не фиксируется в первый день, а уточняется за несколько проходов, каждый раз становясь точнее.
Эти две цели проходят через всё руководство; к ним мы будем возвращаться в каждой главе.
1.3. Как читать это руководство
Материал выстроен от понятий к практике.
- Сначала — ключевые понятия: общий словарь, без которого остальное рассыпается.
- Затем — процесс выявления требований: как устроена итеративная работа с её петлями обратной связи.
- Далее — минимальный набор артефактов: что именно мы создаём и храним.
- И наконец — мастера выявления для каждого артефакта: пошаговые опросники, которые проводят вас через его наполнение — от Виденья до спецификации требований.
Итог руководства — не теория, а рабочие мастера: наборы вопросов, отвечая на которые аналитик наполняет каждый артефакт осмысленно и ничего не упуская.
2. Ключевые понятия
Прежде чем говорить о процессе работы с требованиями и о том, какие документы готовит аналитик, договоримся о словаре. Большинство дорогих ошибок в требованиях рождается не из-за нехватки усилий, а из-за размытых понятий: одну и ту же вещь называют по-разному, а разные вещи — одинаково. Ниже введено несколько опорных терминов, на которые опирается весь остальной материал. Многие из них пришли из англоязычной практики; при первом появлении мы даём пояснение в скобках, а дальше используем сам термин в одном и том же значении.
2.1. Требование и его виды
Требование — это зафиксированное, необходимое свойство или поведение системы: то, что система должна делать, или качество, которому она должна удовлетворять. Требование — не пожелание и не идея; это проверяемое утверждение, за которое команда берёт на себя ответственность.
Требования делятся на два больших семейства.
- Функциональное требование описывает, что система делает — конкретное поведение или реакцию на событие. Пример: «При смене статуса заявки система уведомляет клиента».
- Нефункциональное требование описывает, какой система должна быть — качества и ограничения, которые касаются работы системы в целом: производительность, надёжность, безопасность, удобство использования, соответствие нормам. Пример: «Уведомление доставляется не позднее 60 секунд».
Разница практична, а не умозрительна: функциональные требования удобно фиксировать в контексте — через юз-кейсы (см. ниже), тогда как нефункциональные пронизывают всю систему и собираются отдельно. К обоим семействам мы вернёмся, когда будем разбирать артефакты.
2.2. Стейкхолдеры и их потребности
Стейкхолдер (заинтересованное лицо — человек или группа, чьи интересы затрагивает система) — первоисточник требований. Это не только будущие пользователи: к стейкхолдерам относятся заказчик и спонсор проекта, служба эксплуатации и поддержки, смежные подразделения, регуляторы — все, на кого система влияет или кто влияет на неё. Пропущенный стейкхолдер — это, как правило, пропущенный пласт требований, который всплывает поздно и дорого.
За требованиями стоят потребности. Потребность — это глубинная проблема или цель стейкхолдера, выраженная в его мире, а не в терминах системы: «мне нужно видеть статус заявки, не звоня в отдел». От потребности следует отличать запрос стейкхолдера — конкретную просьбу в формулировке самого стейкхолдера: «сделайте кнопку выгрузки в Excel».
Запрос — это ещё не требование. Запросы приходят сырыми: они бывают противоречивыми, избыточными, а нередко представляют собой замаскированное решение вместо настоящей потребности. Работа аналитика — докопаться до потребности за запросом и перевести её в требование: проверенное, непротиворечивое и проверяемое. Эту цепочку — потребность → запрос → требование — мы будем встречать постоянно.
2.3. «Что» и «зачем», а не «как»
В отдельную ловушку особенно легко попадает аналитик, пришедший с конкретным продуктом за плечами — BPMS, фреймворком, базой данных. Он невольно описывает потребности в терминах знакомого интерфейса: экранов, форм, кнопок, отчётов. Стейкхолдер говорит «мне нужно сгенерировать отчёт по просроченным заявкам» — и это уже готовое решение, подсмотренное в прежней системе. Настоящая потребность звучит иначе: «мне нужно знать, какие заявки просрочены».
Разница принципиальна. «Сгенерировать отчёт» — это как; «знать, что просрочено» — это что и зачем. Требования живут в проблемном пространстве: они фиксируют, что пользователю нужно и почему, а не через какой экран он это получит. Способ — отчёт, уведомление, дашборд — выбирается позже, при проектировании, и нередко оказывается совсем не тем, что представлялось вначале.
Приём прост: поймав себя на «интерфейсном» существительном («отчёт», «форма», «кнопка», «экран»), спросите «зачем оно нужно?» — и запишите ответ. Он и есть требование.
2.4. Актор и юз-кейс
Актор (действующее лицо, взаимодействующее с системой извне) — это роль, а не конкретный человек. Один сотрудник может выступать в нескольких ролях-акторах, а за одним актором могут стоять разные люди. Актором может быть и внешняя система. Главное свойство актора: он всегда находится снаружи границ системы и взаимодействует с ней через её край.
Полезно не путать стейкхолдера и актора. Стейкхолдер заинтересован в системе; актор непосредственно взаимодействует с ней. Эти множества пересекаются, но не совпадают: регулятор — стейкхолдер, но обычно не актор; оператор ночной смены — и актор, и стейкхолдер; спонсор — стейкхолдер, но актором бывает редко.
Юз-кейс (вариант использования) — это описанный способ, которым актор пользуется системой ради своей цели: последовательность взаимодействий, дающая актору наблюдаемый и ценный результат. Юз-кейс — основной способ фиксировать функциональные требования в контексте: от лица того, кому это нужно, и ради понятной цели, — а не разрозненным списком функций. Пример: актор «Клиент», юз-кейс «Отследить статус заявки».
2.5. Система и её границы
Система — это то, что мы создаём или изменяем; она и есть предмет всей работы с требованиями. А границы системы — это черта, отделяющая то, что внутри системы (за что мы отвечаем, что определяем и строим), от внешнего мира (акторы, внешние системы — всё, с чем система взаимодействует, но чем мы не управляем).
Именно граница — самое важное и самое недооценённое понятие в этой главе. Почти все дорогие ошибки на старте — это ошибки границы: когда неясно, где система заканчивается, требования расползаются, оценки плывут, а команда спорит, «наше это или не наше». Точно проведённая граница отвечает сразу на два вопроса: что мы обязаны сделать (то, что внутри) и с чем мы обязаны корректно взаимодействовать (то, что снаружи). Акторы — это как раз обитатели внешнего мира на самой границе: они касаются системы, но в неё не входят.
Понять эту границу — что внутри, что снаружи — и есть первая из двух целей всей дальнейшей работы. Как аналитик приходит к ней не за один присест, а итеративно, шаг за шагом уточняя и границу, и определение системы, — тема следующей главы.
3. Процесс выявления требований
Требования не «собирают» один раз и не заполняют по чек-листу. Их выявляют — постепенно, проходами, — и на каждом проходе две вещи становятся чётче: границы системы и её определение. Эта глава показывает процесс таким, какой он есть: управляемый цикл с несколькими петлями обратной связи, а не линейный список шагов.
У всей работы две цели. Первая — понять границы системы: что внутри, что снаружи (о ней шла речь в предыдущей главе). Вторая — определять систему итеративно: её определение не фиксируется в начале, а уточняется за несколько проходов. Петли на диаграмме ниже — это и есть механизм, которым обе цели достигаются.
3.1. Итеративный цикл, а не чек-лист
Главная установка: требования нельзя угадать заранее и зафиксировать раз и навсегда. Процесс устроен как цикл, в котором каждый оборот опирается на то, что выяснилось на предыдущем. Диаграмма выше читается не сверху вниз одним махом, а по контурам: есть основной поток и три петли, которые к нему возвращают. Разберём их по порядку.
3.2. Вход: новая или существующая система
Процесс начинается с развилки. Если система новая, мы начинаем с анализа проблемы: прежде чем что-либо определять, нужно понять саму проблему, которую система призвана решить. Если система уже существует и мы её развиваем или меняем, мы начинаем с понимания потребностей стейкхолдеров: проблема в общих чертах известна, и важнее понять, чего не хватает сегодня и что мешает.
Разные точки входа отражают разное состояние знания. Для новой системы главный риск — неверно понятая проблема; для существующей — упущенные потребности.
3.3. Проверка проблемы
Для новой системы за анализом проблемы следует проверка: верно ли мы поняли проблему? Если [неверная проблема] — возвращаемся к анализу. Это первая петля. Только убедившись, что мы работаем над верной проблемой, идём дальше — к определению системы. Эта петля защищает от самой дорогой ошибки в разработке: безупречно решить не ту задачу.
3.4. Определение системы и управление границами
Определение системы — первый набросок того, что система собой представляет: её ключевые возможности (фичи), акторы, основные юз-кейсы. Сразу за ним идёт управление границами системы: мы соотносим желаемый объём с реальностью — временем, людьми, деньгами.
Здесь вторая петля. Если [не успеваем весь объём], мы возвращаемся и сужаем границы: что-то выносим за пределы системы, что-то откладываем на будущее. Когда объём укладывается в границы, переходим к уточнению. Управление границами — это не разовое решение, а сознательный торг между желаемым и посильным.
3.5. Уточнение определения системы
Уточнение определения системы — проход, на котором мы углубляем уже определённое: подробнее описываем юз-кейсы, добавляем нефункциональные требования, снимаем неоднозначности. После уточнения — третья развилка. Если [нужны ещё итерации] — возвращаемся к определению системы и делаем ещё проход, каждый раз с более точными границами. Если определение требований завершено — выходим из цикла.
3.6. Управление изменяющимися требованиями
Пока идёт основной цикл, требования продолжают меняться: появляется [новый вход] — новый запрос, изменившееся ограничение, свежая обратная связь. Ветвь управление изменяющимися требованиями работает параллельно основному потоку и обрабатывает этот вход, не давая ему сбить ритм итераций. Это не отдельный этап в конце, а постоянно действующий контур: изменения неизбежны, и вопрос лишь в том, управляем ли мы ими или они управляют нами.
3.7. Как петли обратной связи сводят границы и определение
Три петли — проблемная, объёмная и итерационная — это не пустые повторения. На каждом обороте они сближают две цели работы: границы становятся реалистичнее, а определение системы — точнее. Так процесс сходится: каждая итерация сужает неопределённость, пока определение не станет достаточно полным, чтобы на нём можно было строить.
Именно поэтому работа с требованиями итеративна по своей природе. Правильные границы и точное определение системы невозможно угадать в первый день — к ним приходят проходами, и петли обратной связи и есть тот механизм, который ведёт от приблизительного к достаточному.
4. Минимальный набор артефактов
Мы разобрали, как идёт работа с требованиями. Теперь — что она порождает и хранит. Всё держится на небольшом наборе артефактов. Договоримся сразу: артефакт здесь мы рассматриваем концептуально — что он фиксирует и зачем, — а не как бланк, который надо заполнить. Как именно наполнять каждый артефакт, разберём дальше, глава за главой, в виде мастеров выявления.
Набор минимален и достаточен: в нём ровно столько артефактов, чтобы картина требований была полной, и ни одним больше. Лишние артефакты — это накладные расходы: их надо вести, согласовывать и держать в актуальном состоянии.
4.1. Почему именно этот набор
Каждый артефакт отвечает на свой, отдельный вопрос. Если убрать любой из них, образуется пробел; если добавить ещё — появляется дублирование.
- Виденье — какую проблему мы решаем, для кого и что система собой представляет в целом.
- Запросы стейкхолдеров — что именно просят и в чём нуждаются стейкхолдеры, в их собственных словах.
- Глоссарий — что означают термины проекта, чтобы все понимали их одинаково.
- Спецификация требований к ПО — что система должна делать и какой быть, в подробностях, достаточных для реализации.
Четыре вопроса — четыре артефакта верхнего уровня. Всё остальное — это внутренняя структура одного из них — спецификации требований к ПО.
4.2. Иерархия артефактов
Набор устроен иерархически: часть артефактов вложена в другие.
Логика вложенности проста. Спецификация требований к ПО — это контейнер требований к системе; она складывается из двух частей: дополнительной спецификации (нефункциональные и сквозные требования — то, что относится ко всей системе) и модели юз-кейсов (функциональные требования, поданные в контексте). Модель юз-кейсов, в свою очередь, — это не единый документ, а структура из акторов и юз-кейсов: ролей снаружи системы и способов, которыми они ей пользуются.
Остальные три артефакта самостоятельны. Виденье смотрит на систему сверху — проблема, стейкхолдеры, ключевые фичи, границы. Запросы стейкхолдеров хранят сырой вход — то, что прозвучало, ещё не превращённое в требования. Глоссарий обслуживает всех — это общий словарь проекта.
4.3. Артефакты и шаги процесса
Артефакты — не результат одного шага, а то, что наполняется и уточняется по мере прохождения цикла из предыдущей главы.
- Запросы стейкхолдеров наполняются, когда мы понимаем потребности стейкхолдеров, и продолжают пополняться через ветвь управления изменяющимися требованиями: сюда стекается всякий новый вход.
- Виденье складывается на анализе проблемы и определении системы: именно здесь проясняются проблема, стейкхолдеры, фичи и границы.
- Спецификация требований — дополнительная спецификация и модель юз-кейсов — растёт на определении и особенно на уточнении определения системы, проход за проходом становясь подробнее.
- Глоссарий ведётся на протяжении всего процесса: как только всплывает термин, требующий единого понимания, он попадает в глоссарий.
Отсюда важный вывод: ни один артефакт не заполняется «набело» с первого раза. Все они живут вместе с итерациями — грубый набросок на раннем проходе, точная картина к концу. Петли обратной связи сводят не только границы и определение системы, но и содержимое этих артефактов.
4.4. Что за рамками
Чтобы набор оставался минимальным, оговорим, чего в нём нет и почему.
- План управления требованиями — за рамками этого руководства. Это отдельный управленческий документ; здесь мы учим выявлять требования, а не планировать сам процесс управления ими.
- Трассируемость (прослеживание связей между требованиями и другими артефактами) — тоже за рамками. Она живёт в другом месте: на уровне управления — как самостоятельная дисциплина, а на уровне построения системы — в работе аналитика с моделью. В этом руководстве мы её не строим; достаточно знать, что она есть и где ей место.
5. Виденье
Виденье — это первый взгляд на систему сверху. Оно отвечает на три вопроса: какую проблему мы решаем, для кого и что система собой представляет в целом. С Виденья удобно начинать: это самый ранний общий документ, на который потом опираются все остальные.
5.1. Смысл артефакта
Виденье — не спецификация. Его задача не в том, чтобы описать систему подробно, а в том, чтобы договориться о рамке: та ли это проблема, те ли стейкхолдеры, то ли направление. Подробности придут позже — в спецификации требований. Поэтому Виденье намеренно держат коротким: чем оно короче, тем быстрее его можно показать стейкхолдерам и вместе поправить, пока правки ещё дёшевы.
Виденье фиксирует четыре вещи: проблему, стейкхолдеров, ключевые фичи и границы системы. Всё остальное в проекте так или иначе сверяется с этой рамкой.
5.2. Компоненты и их смысл
Виденье собрано из нескольких блоков. Разберём их смысл; наполнять будем в мастере.
- Введение. Назначение документа, границы системы (что внутри, что снаружи), определения терминов и ссылки на смежные документы. Блок границ здесь — письменное продолжение того, о чём шла речь в главе о понятиях: именно тут граница системы впервые закрепляется на бумаге.
Позиционирование. Зачем система бизнесу. Держится на двух коротких, но важных шаблонных формулировках. Первая — формулировка проблемы:
Таблица 1.: Формулировка проблемы — шаблон из четырёх строк. Проблема затрагивает и её последствие — а удачным решением было бы Вторая — формулировка позиционирования продукта: одно ёмкое утверждение о том, кому и зачем нужен продукт и чем он отличается от существующего:
Таблица 2.: Формулировка позиционирования продукта — шаблон. Для (целевые стейкхолдеры) которые (их роль или задача) название системы — это (категория продукта) который (ключевая выгода) В отличие от (нынешнее решение, альтернатива) наш продукт (в чём отличие) Описание стейкхолдеров и пользователей. Кто заинтересован и кто пользуется: сводка стейкхолдеров, сводка пользователей, их рабочая среда, ключевые потребности и существующие альтернативы. Ключевые потребности удобно свести в таблицу:
Таблица 3.: Ключевые потребности стейкхолдеров. Потребность Приоритет Что беспокоит сейчас Текущее решение Предлагаемое решение - Обзор продукта. Место продукта в окружении (с какими системами он соседствует и от чего зависит), сводка ключевых возможностей, а также допущения и зависимости.
- Фичи продукта. Высокоуровневый перечень ключевых фич — не всё подряд, а самое важное. Это ещё не требования: каждая фича здесь — одна строка.
- Ограничения, диапазоны качества, приоритеты. Заранее заданные ограничения (технологии, стандарты, сроки); верхнеуровневые ориентиры по качеству — это первые, ещё грубые нефункциональные требования; и порядок важности фич.
Полный шаблон содержит и другие разделы — прочие требования к продукту, требования к документации, — но их включают лишь по необходимости. Общее правило: Виденье тем полезнее, чем оно короче.
5.3. Мастер выявления
Пройдите блоки по порядку. На каждый — один-два вопроса; отвечайте кратко, только самое важное. Если ответа пока нет — это сигнал, что здесь нужна ещё одна беседа со стейкхолдером.
Границы (Введение)
- Что входит в систему, а что остаётся снаружи, во внешнем мире?
- На какие смежные системы, подразделения или процессы проект повлияет?
Позиционирование
- Проблема: в чём она? кого затрагивает? в чём её последствия? каким было бы удачное решение? — четыре ответа складываются в формулировку проблемы.
- Для кого продукт и в чём его ключевая выгода? чем он отличается от того, что есть сейчас? — ответы складываются в формулировку позиционирования.
Стейкхолдеры и пользователи
- Кто основные стейкхолдеры и в чём интерес каждого?
- Кто пользователи и в какой среде они работают?
- Каковы их ключевые потребности? Для каждой: насколько она приоритетна, что беспокоит сейчас, как задача решается сегодня и как предлагается решать. Формулируйте потребность как проблему («узнать…», «убедиться…»), а не как экран или отчёт (см. «Что» и «зачем», а не «как»).
- Есть ли альтернативы или конкуренты, с которыми нас будут сравнивать?
Обзор продукта
- Как система вписывается в окружение — с чем соседствует и от чего зависит?
- Каковы её ключевые возможности в двух-трёх фразах?
- Какие допущения мы принимаем и от чего зависим?
Фичи
- Назовите самые важные фичи — по одной строке на каждую. Список держите коротким; мелочи сюда не попадают.
Ограничения и приоритеты
- Какие ограничения заданы заранее (технологии, стандарты, сроки, бюджет)?
- Какие верхнеуровневые ориентиры по качеству важны (скорость, доступность, безопасность)?
- В каком порядке важности идут фичи?
Ответив на эти вопросы коротко, вы получаете Виденье — общую рамку, на которую дальше опираются глоссарий, запросы стейкхолдеров и спецификация требований. Помните, что Виденье уточняется от итерации к итерации: первый проход даёт грубый набросок, последующие — всё более точную картину.
6. Глоссарий
Глоссарий — общий словарь проекта. Он фиксирует, что означают термины, чтобы стейкхолдеры, аналитики и разработчики понимали их одинаково.
6.1. Смысл артефакта
Правило простое: одно слово — одно значение на весь проект. Большинство скрытых разногласий рождается там, где люди используют одно слово в разных смыслах — «заявка», «клиент», «счёт», — и замечают это слишком поздно. Глоссарий снимает эти споры заранее.
Глоссарий растёт вместе с проектом: как только термин начинает требовать пояснения, он попадает в словарь. Остальные артефакты — Виденье, запросы стейкхолдеров, спецификация требований — опираются на него и не переопределяют термины у себя на месте.
6.2. Компоненты и их смысл
Реальный шаблон краток и состоит всего из двух блоков.
- Введение. Назначение глоссария и его охват — на какую предметную область он распространяется.
- Определения. Собственно термины и их значения. Каждый термин — короткое, однозначное определение своими словами; при необходимости термины группируют по темам. Синонимы и сокращения указывают рядом с термином.
6.3. Мастер выявления
Какие термины включать
- Термины предметной области, у которых на этом проекте есть особое значение.
- Слова, которые разные стейкхолдеры понимают по-разному.
- Сокращения и аббревиатуры.
Как писать определение
- Одно-два предложения, не ссылаясь на само определяемое слово; на языке предметной области, а не реализации.
- Если у термина есть синонимы — перечислите их; если есть похожий термин, с которым его путают, — отметьте различие.
Когда добавлять
- Как только термин впервые вызвал вопрос «а что мы под этим понимаем?» — он готов к внесению в глоссарий.
7. Запросы стейкхолдеров
Запросы стейкхолдеров — это собрание всего, что стейкхолдеры просят от системы, в их собственных словах, вместе с тем, как каждый запрос был обработан.
7.1. Смысл артефакта
Назначение артефакта — собрать в одном месте все запросы, поступившие на проект, и зафиксировать, что с каждым из них стало. Это входная воронка требований.
Здесь важно вспомнить цепочку из главы о понятиях: потребность → запрос → требование. Запрос — это ещё не требование, а сырой вход, который предстоит осмыслить. Источники запросов разнообразны: интервью и совещания, запросы на изменение, запросы предложений, обращения в поддержку. Через этот же артефакт проходит и новый вход из параллельной ветви процесса — управления изменяющимися требованиями.
Главное правило: не терять ни один запрос. Даже отклонённый запрос остаётся в списке — с пометкой, почему он отклонён.
7.2. Компоненты и их смысл
- Введение. Назначение, охват и источники запросов.
Список запросов. Каждый запрос сопровождается набором атрибутов. Набор подбирается под проект, но полезный минимум таков:
Таблица 4.: Атрибуты запроса стейкхолдера. Атрибут Что фиксирует Источник / стейкхолдер кто высказал запрос Формулировка что именно просят — в словах стейкхолдера Обоснование какая потребность стоит за запросом Приоритет насколько это важно Статус как запрос обработан
За формулировкой всегда ищите потребность: стейкхолдер часто называет решение («сделайте кнопку», «нужен отчёт»), а не проблему, которую хочет решить. Особенно это заметно у тех, кто пришёл с конкретным продуктом и мыслит его интерфейсом (см. «Что» и «зачем», а не «как»).
7.3. Мастер выявления
По каждому запросу
- Кто его высказал — конкретный стейкхолдер или источник?
- Что именно просят — в словах самого стейкхолдера, а не в вашей интерпретации?
- Зачем это нужно — какая потребность стоит за запросом?
- Насколько это приоритетно для стейкхолдера?
- Каков статус: принят, отклонён, отложен, уже превращён в требование? Если отклонён — почему?
Охват
- Всем ли стейкхолдерам дали возможность добавить свои запросы? Пропущенный стейкхолдер — это пропущенный пласт запросов, который всплывёт поздно.
8. Спецификация требований к ПО
Спецификация требований к ПО (её международный аналог — SRS, Software Requirements Specification; далее для краткости — спецификация требований) — это контейнер требований к системе. В отличие от Виденья, которое смотрит на систему сверху, спецификация требований описывает её подробно — настолько, чтобы по ней можно было строить.
В российской практике под техническим заданием (ТЗ) — особенно оформленным по государственным стандартам, таким как ГОСТ 34.602 или ГОСТ 19, — понимают гибридный документ: он соединяет требования (что система должна делать) с проектными решениями (как она устроена: структура системы, состав технических средств, механизмы защиты) и вдобавок имеет статус юридического приложения к договору — изменить подписанное ТЗ можно лишь через формальное дополнительное соглашение.
Наш документ принципиально иной. Это чистая спецификация требований: только проблемное пространство (что нужно), без проектных и архитектурных решений, и она уточняется итеративно, а не замораживается контрактом. Именно поэтому мы называем её спецификацией требований к ПО, а не ТЗ.
8.1. Смысл артефакта
Спецификация требований складывается из двух частей: дополнительной спецификации (нефункциональные и сквозные требования) и модели юз-кейсов (функциональные требования в контексте). Вместе они дают полную картину: что система делает — через юз-кейсы, и какой она должна быть — через дополнительную спецификацию. Это не отдельный от них документ, а рамка, которая их объединяет.
Как и остальные артефакты, спецификация требований наполняется не сразу: она растёт на шагах определения и уточнения определения системы, проход за проходом становясь подробнее.
8.2. Дополнительная спецификация
Дополнительная спецификация собирает всё, что не ложится в отдельный юз-кейс: нефункциональные требования (качества всей системы) и сквозные функции, общие для неё целиком.
8.2.1. Смысл и компоненты
Реальный шаблон организован по категориям качества.
- Функциональность — сквозные функции, общие для системы (например, журналирование ошибок или единый вход), не привязанные к одному юз-кейсу.
- Удобство использования — требования к простоте освоения и повседневной работы.
- Надёжность — доступность, среднее время между отказами, поведение при сбоях.
- Производительность — время отклика, число одновременных пользователей, пропускная способность.
- Сопровождаемость — насколько легко систему обслуживать и обновлять.
- Проектные ограничения — заранее заданные технологии, платформы, стандарты, требования совместимости.
При необходимости добавляют и другие разделы — применимые стандарты, внешние интерфейсы, лицензионные и правовые требования. По сути это те самые нефункциональные требования из главы о понятиях, теперь собранные в одном месте и разложенные по категориям.
8.2.2. Мастер выявления
По каждой категории — свой вопрос.
- Функциональность: какие функции нужны системе целиком, вне отдельных юз-кейсов?
- Удобство использования: каким требованиям к простоте освоения и работы система должна отвечать?
- Надёжность: какова требуемая доступность и как система должна вести себя при сбое?
- Производительность: каково допустимое время отклика и ожидаемая нагрузка — одновременные пользователи, объёмы данных?
- Сопровождаемость: какие требования к обслуживанию, обновлению и диагностике?
- Проектные ограничения: какие технологии, платформы и стандарты заданы заранее и обязательны?
Совет: формулируйте измеримо. Не «быстро», а «не дольше двух секунд»; не «надёжно», а «доступность не ниже 99,9 %». Непроверяемое требование бесполезно.
8.3. Модель юз-кейсов
Модель юз-кейсов подаёт функциональные требования в контексте — через акторов и их юз-кейсы. Модель — это набор акторов, набор юз-кейсов и связи между ними.
8.3.1. Актор
Актор — это роль снаружи границ системы, взаимодействующая с ней: человек в роли или внешняя система. Чтобы выявить акторов, посмотрите на границу системы: кто и что касается её снаружи? Каждая такая роль — кандидат в акторы. Описание актора минимально: имя (роль) и краткое пояснение — кого или что он представляет и зачем обращается к системе.
Мастер выявления
- Кто и что находится снаружи системы и взаимодействует с ней — люди в ролях, внешние системы?
- Для каждого: какую роль он играет и зачем обращается к системе?
- Не подменяете ли вы актора конкретным человеком? Актор — это роль, а не сотрудник.
8.3.2. Юз-кейс
Юз-кейс — описанный способ, которым актор достигает своей цели через систему. Реальный шаблон юз-кейса состоит из блоков.
- Название — цель актора, выраженная глаголом («Отследить статус заявки»).
- Краткое описание — одно-два предложения о сути.
- Основной поток событий — шаги успешного сценария, шаг за шагом.
- Альтернативные потоки — что происходит при отклонениях и ошибках.
- Специальные требования — требования, не выражаемые потоком (часто нефункциональные, привязанные именно к этому юз-кейсу).
- Предусловия — что должно быть верно до начала.
- Постусловия — что становится верным после завершения.
- Точки расширения — места, где поведение может дополняться.
Мастер выявления
- Название: какой цели достигает актор? Сформулируйте глаголом, от его лица.
- Краткое описание: в чём суть в двух фразах?
- Основной поток: опишите успешный сценарий шаг за шагом — что делает актор и что отвечает система.
- Альтернативные потоки: что если что-то пошло не так или есть другой путь? Перечислите отклонения.
- Специальные требования: есть ли требования к этому юз-кейсу, не видные в потоке (скорость, безопасность)?
- Предусловия и постусловия: что должно быть верно до начала и после завершения?
Совет: один юз-кейс — одна цель одного актора. Не сваливайте несколько целей в один.
И ещё: поток описывает намерения и действия («актор задаёт период», «система показывает просроченные заявки»), а не нажатия кнопок и переходы по экранам. Юз-кейс — это цель и её результат, а не сценарий работы с интерфейсом (см. «Что» и «зачем», а не «как»).
Заполнив дополнительную спецификацию и модель юз-кейсов, вы получаете спецификацию требований — описание системы, достаточно подробное, чтобы её строить. Вместе с Виденьем, глоссарием и запросами стейкхолдеров она образует минимальный, но полный набор артефактов, а мастера выявления проводят вас через каждый из них.
9. Заключение
Мы прошли путь от постановки проблемы до целостной картины системы. Стоит оглянуться: что именно у нас теперь есть и куда это ведёт.
9.1. Что мы собрали
За несколько итераций мы:
- очертили границы системы — что внутри, а что остаётся во внешнем мире;
- записали запросы стейкхолдеров — сырой вход, ничего не потеряв;
- собрали Виденье — проблему, стейкхолдеров, ключевые фичи и границы, взгляд сверху;
- договорились о едином словаре в глоссарии;
- описали, что система делает, — через юз-кейсы и акторов в модели юз-кейсов;
- описали, какой она должна быть, — через нефункциональные требования в дополнительной спецификации.
Вместе это — спецификация требований и Виденье: минимальный, но полный набор артефактов.
9.2. Система, описанная снаружи — и готовая к проектированию
Если методология соблюдалась дисциплинированно — без сползания в «как», — мы получили описание системы снаружи: концептуальное, с функциональной и нефункциональной точек зрения, без единого проектного решения. Мы знаем, что система должна делать и какой ей быть, но ещё не решали, как она устроена внутри.
И это ровно то, что нужно для следующего этапа — проектирования системы. На чистом проблемном пространстве проектировщик выделяет ограниченные контексты, определяет подсистемы, выстраивает слоистую архитектуру. Наши артефакты дают ему весь необходимый вход — и ни одним преждевременным решением не связывают ему руки.
9.3. Артефакты живут и версионируются
Требования не застывают. Они уточняются от итерации к итерации, а параллельная ветвь управления изменениями постоянно приносит новый вход. Значит, артефакты постоянно обновляются — и это порождает отдельную дисциплину: хранение их версий. Кто, когда и что изменил; какая редакция действует сейчас; чем текущая отличается от согласованной. Управление версиями артефактов выходит за рамки этого руководства, но помнить о его необходимости важно: без него набор артефактов быстро перестаёт отражать реальность.
9.4. Требования как договорённость со стейкхолдерами
Зафиксированная контрольная точка требований — согласованная со стейкхолдерами редакция — становится негласным договором. Она удерживает объём от расползания, защищает бюджет и рассудок команды и не даёт вырасти недобросовестности: то, о чём договорились, записано и подтверждено.
Коммерческие вопросы — цена, сроки, условия — это совершенно отдельная материя. Но хорошо записанные и согласованные требования — бесценный актив и для коммерческой команды: именно на них она опирается, обсуждая границы работ и их изменения.
9.5. Что дальше и что остаётся за рамками
Два продолжения этой работы лежат за пределами руководства, но о них стоит знать.
- Матрица трассируемости. Для крупной системы связи между требованиями и тем, что из них следует, оформляют в виде матрицы трассируемости. Она позволяет при изменении требования наверху увидеть и поправить всё, что от него зависит внизу — вплоть до решения и кода. Построение и ведение такой матрицы — отдельная дисциплина (мы уже оговаривали, что трассируемость живёт вне этого руководства).
- Приёмочные тесты. Приёмочные тесты формируются напрямую из юз-кейсов и нефункциональных требований и поддерживаются в согласии с ними при каждом изменении. Идея проста: если система проходит приёмочные тесты, значит, она в основном удовлетворяет требованиям. Так требования замыкаются на проверку, а не остаются декларацией.
На этом набор мастеров завершается. Следуя им, аналитик описывает систему честно и полно — со стороны потребности, — и передаёт дальше не догадки, а проверяемую основу для проектирования, договорённостей и приёмки.