Инженерия требований

Требования в гибких проектах

Коротко Гибким проектам не нужен особый вид требований: чтобы создать правильный продукт, разработчикам нужна одна и та же информация при любом жизненном цикле. Меняется другое — когда появляются детали, насколько они глубоки и сколько из них записывают.

По материалам: К. Вигерс, Дж. Битти, «Разработка требований к программному обеспечению», 3-е изд. (Microsoft Press, 2013), гл. 20.

На этой странице

Главные идеи#

Чем отличаются такие проекты#

Вигерс и Битти противопоставляют два подхода. Прогнозный (каскадный) подход снижает риски за счёт основательного планирования до начала разработки и работает, когда требования ясны и стабильны. Адаптивный (гибкий) подход исходит из того, что изменения неизбежны, и планирует короткими циклами. Авторы отмечают, что ещё в исходной статье Ройса 1970 года о каскадной модели строгий однократный проход назван рискованным и рекомендована итеративность. Их главный тезис: «гибких требований» не бывает, есть лишь смещение акцентов: - Участие заказчика продолжается весь проект, а не только в начале. - Документация — это минимум, который даёт разработчикам и тестировщикам точные ориентиры; всё сверх него — потери. - Сроки: высокоуровневые истории наполняют бэклог рано; детали добавляют непосредственно перед тем, как история попадает в итерацию, в небольшом цикле выявления, анализа, спецификации и валидации. - Изменений ждут, а не сопротивляются им.

Один бэклог#

Ссылаясь на Майка Кона, авторы советуют вести один бэклог (backlog) на проект, в котором лежат и истории, и дефекты: если списков несколько, приоритеты нельзя сравнить. Приоритеты в бэклоге никогда не фиксируются окончательно.

Атрибуты качества — с самого начала#

Производительность, доступность и другие атрибуты качества определяют архитектуру. Ждать «их» итерации, как с обычной функциональностью, нельзя; выявляйте их заранее.

Историям нужен редактор#

Истории, которые пишут люди без опыта анализа, в том числе сами заказчики, часто неточны. Кто-то с навыками бизнес-анализа должен доработать их до реализации.

Эпики, функции и истории#

  • Пользовательская история (user story): по размеру помещается в одну итерацию.
  • Эпик (epic): авторы приписывают этот термин Майку Кону; это история, слишком большая для одной итерации. Разбейте её на истории поменьше, при необходимости через эпики поменьше.
  • Функция (feature): набор возможностей, ценный для пользователей; может охватывать одну историю, несколько историй или несколько эпиков.

Минимальная продаваемая функциональность (minimum marketable feature, MMF) — понятие, которое ввели Денн и Клеланд-Хуанг (Denne, Cleland-Huang), — это наименьший набор историй, который команда может поставить разом и который всё ещё даёт заказчику реальную ценность. Не зацикливайтесь на ярлыках: важнее качество требований.

Ждите изменений, но смотрите вперёд#

Рефлекс бизнес-аналитика меняется с «это за границами проекта» на «давайте обсудим». Ожидать изменений не значит игнорировать будущее: взгляд вперёд позволяет команде выбрать более расширяемую архитектуру, не проектируя под каждый гипотетический случай. Удалять элементы из бэклога тоже нормально — из-за проблем с реализацией, находок владельца продукта или тестировщиков или более ценной работы.

Без пуризма#

Авторы описывают организацию, где попытка внедрить agile «по учебнику» везде и сразу провалилась. Одна команда остановилась на гибриде (бэклог, трёхнедельные итерации, детальные требования на каждую итерацию), и большинство гибких практик прижилось только после того, как их перестали навязывать. Совет авторов: выбирайте практики под свой контекст, начинайте с пилотного проекта и на первые несколько итераций пригласите опытного коуча.

Как применять#

  1. Создайте один бэклог и наполните его высокоуровневыми историями, выведенными из бизнес-целей.
  2. Выявите ключевые атрибуты качества до архитектурных решений.
  3. Перед каждой итерацией дорабатывайте верхние истории: разбивайте эпики, добавляйте критерии приёмки, сверяйте термины с глоссарием.
  4. Сгруппируйте истории в функции и определите первую минимальную продаваемую функциональность.
  5. Пересматривайте приоритеты в каждой итерации; изменения, которые затрагивают общие границы, бюджет или сроки, передавайте на уровень выше.

Пример#

В «Мастерской», вымышленной сети веломастерских, бэклог начинается с эпика «Онлайн-запись». Аналитик разбивает его на истории, например «Как клиент, я хочу видеть свободное время в ближайшей мастерской, чтобы выбрать удобное» и «Как сотрудник стойки приёма, я хочу видеть сегодняшние онлайн-записи, чтобы планировать приём велосипедов». Функция «Обновления статуса ремонта» охватывает истории для механиков (установить статус) и для клиентов (получить SMS). Первая MMF — запись в одну пилотную мастерскую с подтверждением по электронной почте. Перед итерацией 1 команда согласует атрибут качества, который определит архитектуру: календарь записи должен быстро откликаться в субботний утренний пик.

Подводные камни#

  • «Agile — значит без документации» → пишите минимум, который позволяет разработчикам и тестировщикам работать точно.
  • Истории принимают ровно в том виде, как их написали заинтересованные стороны → сначала доработайте их.
  • Отдельные бэклоги для функций и дефектов → один список, один набор приоритетов.
  • Производительность и безопасность откладывают на потом → выявляйте их до того, как определена архитектура.

Чек-лист#

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

Источники и что почитать#

  • K. Wiegers, J. Beatty. Software Requirements, 3rd ed. Microsoft Press, 2013. Рус. изд.: К. Вигерс, Дж. Битти. Разработка требований к программному обеспечению, 3-е изд. М.: Русская редакция; СПб.: БХВ-Петербург, 2014. Гл. 20 (включая ссылки авторов на Ройса, Кона, Денна и Клеланд-Хуанг).