Пользовательские истории и требования очень разные звери.
Требования
Требования предполагают, что дизайн приложения выполняется заранее, и что разработка является реализацией этого проекта. Поэтому требования направлены на то, как реализовать функциональность.
Пример требования:
- Создайте форму контакта пользователя со следующими полями: имя, фамилия, адрес электронной почты, свободный текст и кнопка отправки. Когда кнопка отправки нажата, электронная почта отправляется в нашу службу поддержки.
Пользовательские истории
Пользовательские истории сосредотачиваются на том, чего нужно достичь, и настаивают на том, что дизайн продукта сделан в последнюю минуту, и это сотрудничество между разработчиком продукта и разработчиком. Детали определяются во время реализации на основе возможности.
Пример истории:
- Как пользователь Jimmy, я хочу связаться с вашей службой поддержки, когда я не могу использовать сайт должным образом, чтобы они могли мне помочь.
В чем разница?
Как видите, разница в количестве предоставленных деталей, безусловно, различна, но есть также много информации, которая доступна только в истории, а именно цель , которой мы пытаемся достичь с помощью этой функции.
Хотя может показаться, что цель относительно не важна, это ошибочное предположение в области гибкой разработки. Как правило, есть два случая, в которых знание цели очень важно: снижение стоимости возможностей и обеспечение гибкости.
Стоимость возможности
Если в требовании есть скрытые предположения, это может быть очень трудно достичь. Например: есть ли почтовый сервер? Если нет, то для разработки требования может потребоваться гораздо больше времени. В некоторых других случаях из-за дизайна может быть упущен более простой способ достижения той же цели.
Напротив, пользовательская история о пользователе, обращающемся в наш отдел поддержки. Если отправка почты неосуществима или слишком дорога, мы можем сразу же разработать другое решение: написать в базу данных, например, или использовать форму через Google Docs, или просто указать адрес электронной почты вместо формы. Это не может быть легко сделано с требованием, но это легко сделать с историей и представителем продукта.
проворство
По этой причине при наличии требований мы обычно склонны заранее обдумывать эти скрытые предположения и следить за тем, чтобы не было заминок. Так что в этом случае может быть другое требование, запланированное заранее, чтобы убедиться, что почтовый сервер присутствует.
Это приводит нас к еще одной огромной разнице между историями и требованиями, которая заключается в иерархии . Как я показал выше, требования по своей природе должны быть упорядочены в некоторой естественной иерархии, чтобы были соблюдены зависимости. Истории, с другой стороны, фокусируются на цели и не имеют таких ограничений.
Это сделано специально, так как в Agile принципиально важно добавлять, удалять, перепланировать и изменять истории по мере необходимости во время выполнения проекта. Требования, как правило, могут быть добавлены, иногда изменены или удалены, но, как правило, очень болезненно перемещать их из-за всех зависимостей. Это просто не очень часто. Если вы работаете с требованиями, ваша гибкая реализация пострадает или, вероятно, не будет очень гибкой в смысле возможности принять изменения.