Пользовательские истории

По́льзовательские исто́рии — это неформальное, естественно-языковое описание функциональных возможностей программной системы. В разработке программного обеспечения и управлении продуктом пользовательские истории фиксируют требования к системе с точки зрения конечного пользователя или пользователя системы и могут записываться на карточках, стикерах или в специализированном программном обеспечении для управления проектами[1]. В зависимости от продукта, пользовательские истории могут составляться разными стейкхолдерами: клиентом, пользователем, руководителем или командой разработчиков.

Пользовательские истории представляют собой разновидность граничных объектов. Они способствуют осмыслению (sensemaking) и коммуникации и могут помогать командам документировать своё понимание системы и контекста её использования[2].

История

  • 1997: Кент Бек вводит концепцию пользовательских историй в проекте Chrysler C3 в Детройте.
  • 1998: Алистэр Кокбёрн, посетив проект C3, формулирует фразу: «Пользовательская история — это обещание поговорить»[3].
  • 1999: Кент Бек публикует первую редакцию книги «Extreme Programming Explained», описывая экстремальное программирование (XP)[4] и применение пользовательских историй в игре по планированию.
  • 2001: Рон Джеффрис предлагает «формулу трёх C» для создания пользовательской истории:[5]
    • Карта — физический носитель идеи (карточка или стикер);
    • Беседа — обсуждение между стейкхолдерами (клиенты, пользователи, разработчики, тестировщики);
    • Подтверждение — удостоверение того, что цели обсуждения достигнуты.
  • 2001: Команда XP в Connextra[6] в Лондоне разрабатывает собственный формат пользовательских историй.
  • 2004: Майк Коэн (распространяет принципы пользовательских историй за пределы карточек в своей книге User Stories Applied: For Agile Software Development[7], которая стала стандартным источником по теме согласно мнению Мартин Фаулер[8]. Коэн считает Рэйчел Дэвис изобретательницей формата, хотя Дэвис подчёркивает, что это была командная работа[9].
  • 2014: После публикаций в 2005[10] и блоге в 2008[11], Джефф Пэттон публикует технику мэппинга пользовательских историй для систематизации и визуализации их взаимосвязей[12].

Принцип

Пользовательские истории пишутся пользователями либо для пользователей с целью повлиять на функциональность разрабатываемой системы. В некоторых командах за формирование и организацию пользовательских историй в бэклоге продукта отвечает менеджер продукта (или владелец продукта в Scrum), в других — пользовательскую историю может записать любой участник команды. Их можно формулировать на основе обсуждений со стейкхолдерами, персон, либо спонтанно.

Типовые шаблоны

Стиль и шаблон формулировки пользовательских историй может различаться.

Наиболее распространён — «шаблон Connextra»:

Как <роль> я хочу <возможность>, чтобы <выгода>

Майк Коэн советует считать уточняющее условие («чтобы» — so that) опциональным, хотя оно часто бывает полезным[13].

Крис Маттс предложил вариант шаблона с упором на ценность фичи:[14]

Чтобы <выгода>, как <роль> я хочу <цель/желание>

Другой шаблон, основанный на пяти вопросительных «W», формулируется так:[15]

Как <кто> <когда> <где> я хочу <что>, потому что <почему>

Для выявления уязвимостей используют т. н. «злонамеренные пользовательские истории» (evil user stories, abuse user stories) от лица атакующего:[16]

Как недовольный сотрудник, я хочу стереть базу пользователей, чтобы навредить компании

Примеры

Скрининговый опрос (эпик)
Как менеджер по персоналу я хочу создавать опросы для первичного отбора, чтобы понять, стоит ли направлять кандидатов к профилирующему руководителю[17].
Просмотр викторин
Как менеджер я хочу просматривать свои квизы, чтобы вспомнить, что у меня уже есть, и решить, стоит ли их обновить или создать новые[17].
Частичный бэкап
Как пользователь, я могу указать папки, которые не следует копировать в резервную копию, чтобы на диске не хранилось лишнего[18].

Использование

Пользовательские истории — центральный элемент многих гибких методик разработки программного обеспечения (например, в экстремальном программировании — часть игры по планированию). Приоритезацию историй производит заказчик (или владелец продукта в Scrum), отмечая, какие из них наиболее важны для системы; затем истории разбивают на задачи и оценивают (например, в очках Фибоначчи: 1, 2, 3, 5, 8, 13 — простейшим задачам даётся 1 балл).

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

Истории можно детализировать базируясь на итогах обсуждения — добавлять примечания, вложения и критерии приёмки.

Критерии приёмки

Майк Коэн определяет критерии приёмки как «заметки о том, что должна делать история, чтобы владелец продукта мог считать её завершённой»[19]. Критерии определяют границы истории и служат для подтверждения её корректного выполнения.

Объём детализации зависит от команды, проекта и программы. Иногда включают «предшествующие условия», например: «пользователь уже вошёл в систему и редактировал свои данные». Критерии могут быть заданы в формате Given-When-Then либо списком требований от заказчика[19]. История считается завершённой, только когда все критерии выполнены.

Преимущества

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

Ограничения

К ограничениям пользовательских историй относят:

  • Проблема масштабирования: карточки сложно поддерживать для крупных проектов либо распределённых команд, они плохо масштабируются.
  • Нечёткость и неполнота: карточки служат началом беседы; в силу краткости и неформальности они неоднозначны и не всегда содержат все технические детали. Истории не подходят для формальных соглашений и контрактов[21].
  • Отсутствие нефункциональных требований: редко фиксируются требования производительности, времени отклика, и другие нефункциональные параметры.
  • Не определяют техническую реализацию: истории формулируются с бизнес-точки зрения, но при реализации могут выявиться ограничивающие технические детали, выходящие за рамки одной истории. Иногда помогает декомпозиция; иногда пишутся специальные «технические» истории, которые неочевидны для бизнеса.

Связь с эпиками, темами и инициативами/программами

Пользовательские истории могут объединяться в группы — по смыслу, по структуре продукта или по организации процесса. В ряде фреймворков инициативы называются также программами. Терминология различается в зависимости от подхода: одни смотрят с точки зрения продукта (фичи и владельцы продукта), другие — с точки зрения организации (задачи).

undefined

Например, в Jira используется иерархия: первый уровень — «пользовательские истории», второй — «эпики» (группы историй), третий — «инициативы» (группы эпиков). В Jira «темы» позволяют объединять объекты разного уровня[22][23].

Термин «тема» при этом может означать как организационную единицу (сколько времени потрачено на определённую тему), так и набор задач для отдельного пользователя, объединённых общей целью. Жёсткого стандарта нет, подходы различаются[24][25][26][27][28][29].

Тема

Группа эпиков или других крупных и взаимосвязанных историй. Эпик часто трактуется как работа, требующая нескольких спринтов или целого пакета релизов.

Инициатива

Иерархически объединённая группа тем, эпиков или историй[30].

Эпик

Несколько тем или историй, объединённых онтологически или по смыслу.

Мэппинг пользовательских историй

undefined

Мэппинг пользовательских историй[31] — техника структурирования историй по «нарративной линии», которая помогает увидеть продукт целиком. Её разработал Джефф Пэттон в 2005—2014, чтобы избежать потери фокуса из-за детализации отдельных историй.

В мэппинге историй[32] сначала на воркшопах с пользователями выделяются основные бизнес-активности. Каждая из них может включать разные типы пользователей или персон.

Далее определяют ключевые задачи пользователей, формируя и поддерживая горизонтальную нарративную линию на протяжении проекта. Последующие истории либо включаются в главный поток, либо привязываются вертикально к отдельным задачам.

Горизонтальная ось отображает покрытие целей продукта, вертикальная — потребности каждого пользователя.

Такой подход позволяет описывать даже большие системы, не теряя целостной картины.

Мэппинг удобно даёт двумерную визуализацию бэклога: сверху — эпики/темы/активности (связанные с этапами рабочего процесса пользователя), снизу — приоритизированные истории. Первый горизонтальный слой — «walking skeleton» (основа), ниже — детализация[33][34].

Картирование пользовательского пути (User journey map)

Карта пользовательского пути[35] строится для одного типа пользователя; её нарратив лежит в хронологии выполнения задач для достижения цели.

Это позволяет визуально отобразить пользовательский опыт в развитии. По отзывам пользователей можно определить узкие места, негатив или удовлетворённые/неудовлетворённые потребности. Техника применяется для проектирования интерфейса с опорой на пользовательский опыт[36] и вовлечения пользователей в совместное проектирование[37].

Сравнение с вариантами использования (use cases)

Вариант использования описывается как «обобщённое описание множества взаимодействий между системой и одним или несколькими акторами, где актор — это пользователь или другая система»[38]. Несмотря на схожесть, между пользовательскими историями и вариантами использования есть различия и в детализации, и в назначении.

Пользовательские истории Варианты использования
Сходства
  • Обычно формулируются на бытовом языке пользователя, помогают понять целевые задачи системы
  • Также пишутся на рабочем языке пользователей, способствуют коммуникации с заказчиком
Отличия
  • Предлагают компактную и легко понятную форму, оставляют детали открытыми для интерпретаций и обсуждения
  • Группируют требования в пошаговые сценарии достижения целей, акцентируются на целях пользователя и описывают, как система их удовлетворяет[39]
  • Описывают последовательность взаимодействий в более формализованном виде, содержат все необходимые для реализации детали
Шаблон Как <тип пользователя>, я могу <некоторая цель>, чтобы <некоторая причина>.[18]
  • Заголовок: «цель варианта использования»
  • Основной сценарий успеха: пронумерованный список шагов
    • Шаг: «лаконичное описание взаимодействия между актором и системой»
  • Исключения: отдельные списки с указанием условий ветвления («3a» — альтернатива к шагу 3)

Кент Бек, Алистэр Кокбёрн, Мартин Фаулер и др. разбирали это различие на wiki c2.com (сообщество экстремального программирования)[40].

Примечания

  1. Димитриевич, Соня; Йованович, Елена; Деведжич, Владан (2015). “Сравнительное исследование программных инструментов для управления пользовательскими историями”. Information and Software Technology [англ.]. 57: 352—368. DOI:10.1016/j.infsof.2014.05.012. Дата обращения 2024-06-30. |access-date= требует |url= (справка)
  2. Ralph, Paul (2015). “The Sensemaking-coevolution-implementation theory of software design”. Science of Computer Programming. 101: 21—41. arXiv:1302.4061. DOI:10.1016/j.scico.2014.11.007. S2CID 6154223.
  3. Происхождение истории как обещания поговорить. alistair.cockburn.us. Дата обращения: 30 июня 2024. Архивировано 22 июня 2021 года.
  4. Beck, Kent. Extreme Programming Explained: Embrace Change. — Addison-Wesley, 1999. — ISBN 9780201616415.
  5. Jeffries, Ron Essential XP: Card, Conversation, Confirmation (30 августа 2001). Дата обращения: 30 июня 2024. Архивировано 12 мая 2017 года.
  6. User Story Template. agilealliance.org (17 декабря 2015). Дата обращения: 30 июня 2024. Архивировано 6 июня 2020 года.
  7. Cohn, Mike. User Stories Applied: For Agile Software Development. — Addison-Wesley, 2004. — ISBN 0321205685.
  8. Fowler, Martin User Story. martinfowler.com (22 апреля 2013). Дата обращения: 30 июня 2024. Архивировано 14 июля 2019 года.
  9. Cohn, Mike What Is a User Story Template and Why Does It Work So Well? (англ.). Mountain Goat Software. Дата обращения: 9 января 2025.
  10. Patton, Jeff (январь 2005). “It's All In How You Slice It”. Better Software Magazine: 16—22, 40. Архивировано из оригинала 16 июля 2019. Дата обращения 2024-06-30. Используется устаревший параметр |url-status= (справка); Проверьте дату в |date= (справка на английском)
  11. Patton, Jeff The New User Story Backlog is a Map. Jeff Patton & Associates (8 октября 2008). Дата обращения: 30 июня 2024. Архивировано 18 июля 2019 года.
  12. Patton, Jeff. User story mapping. — First. — Beijing, 2014. — ISBN 9781491904909.
  13. Cohn, Mike Advantages of the "As a user, I want" user story template. Mountaingoatsoftware.com (25 апреля 2008). — «While I consider the so-that clause optional, I really like this template.» Дата обращения: 30 июня 2024. Архивировано 18 декабря 2016 года.
  14. Marcano, Antony Old Favourite: Feature Injection User Stories on a Business Value Theme. Antonymarcano.com (24 марта 2011). Дата обращения: 30 июня 2024. Архивировано 2 июля 2012 года.
  15. User Story. t2informatik GmbH (25 сентября 2019). — «"As (who) (when) (where), I (want) because (why)." — this phrase is based on typical W questions: who, when, where, what and why.» Дата обращения: 30 июня 2024. Архивировано 3 февраля 2020 года.
  16. Van der Veer, Rob SAMM Agile guidance. GitHub (18 мая 2020). Архивировано 23 января 2025 года.
  17. 1 2 Cowan, Alexander Your Best Agile User Story. Cowan+. Дата обращения: 30 июня 2024. Архивировано 25 марта 2016 года.
  18. 1 2 Cohn, Mike User Stories. Mountain Goat Software. Дата обращения: 30 июня 2024. Архивировано 30 апреля 2016 года.
  19. 1 2 Cohn, Mike The Two Ways to Add Detail to User Stories. Mountain Goat Software blog. Дата обращения: 30 июня 2024. Архивировано 8 апреля 2019 года.
  20. Ralph, Paul. Is Requirements Engineering Inherently Counterproductive? // 2015 IEEE/ACM 5th International Workshop on the Twin Peaks of Requirements and Architecture / Paul Ralph, Rahul Mohanani. — IEEE, 2015. — P. 20–23. — ISBN 978-1-4673-7100-1. — doi:10.1109/TwinPeaks.2015.12.
  21. Limitations of user stories. Ferolen.com (15 апреля 2008). Дата обращения: 30 июня 2024. Архивировано 13 апреля 2014 года.
  22. Epics, Themes, Stories, and Initiatives. Atlassian. Дата обращения: 30 июня 2024. Архивировано 30 января 2019 года.
  23. User Stories. Atlassian. Дата обращения: 30 июня 2024. Архивировано 5 февраля 2019 года.
  24. Cohn, Mike User Stories, Epics and Themes. Mountain Goat Software. Дата обращения: 30 июня 2024. Архивировано 4 февраля 2019 года.
  25. Scrum Alliance Member-Submitted Informational Articles. Дата обращения: 30 июня 2024. Архивировано 11 сентября 2018 года.
  26. Guay, Constantin Scrum tips: Differences between epics, stories, themes and features (26 января 2018). Дата обращения: 30 июня 2024. Архивировано 19 ноября 2018 года.
  27. User Stories, Epics & Themes (8 декабря 2021). Дата обращения: 30 июня 2024. Архивировано 9 февраля 2019 года.
  28. Cohn, Mike You Don't Need a Complicated Story Hierarchy. Mountain Goat Software. Дата обращения: 30 июня 2024. Архивировано 10 мая 2019 года.
  29. Britsch, Marcel The Basics: Epics, Stories, Themes & Features. The Digital Business Analyst (5 сентября 2017). Дата обращения: 30 июня 2024. Архивировано 21 сентября 2017 года.
  30. Configuring initiatives and other hierarchy levels - Atlassian Documentation. confluence.atlassian.com. — «An 'initiative' is a very large body of work, which spans multiple epics and sometimes, multiple teams. [...] An initiative is also an issue type in Jira.» Дата обращения: 30 июня 2024. Архивировано 5 февраля 2020 года.
  31. Patton, Jeff The new user story backlog is a map (8 октября 2008). Дата обращения: 30 июня 2024. Архивировано 14 мая 2017 года.
  32. Patton, Jeff (Software developer). User story mapping. — First. — Beijing, 2014. — ISBN 978-1-4919-0490-9.
  33. Cockburn, Alistair Walking Skeleton. Дата обращения: 30 июня 2024. Архивировано 24 сентября 2013 года.
  34. Story Mapping. Agile Alliance (17 декабря 2015). Дата обращения: 30 июня 2024. Архивировано 23 июня 2016 года.
  35. Experience, World Leaders in Research-Based User Journey Mapping 101 (англ.). Nielsen Norman Group. Дата обращения: 30 июня 2024. Архивировано 19 марта 2020 года.
  36. Richardson, Adam. Using Customer Journey Maps to Improve Customer Experience, Harvard Business Review (15 ноября 2010). Архивировано 22 марта 2020. Дата обращения: 30 июня 2024.
  37. “Subversive participatory design”. Proceedings of the 14th Participatory Design Conference: Short Papers, Interactive Exhibitions, Workshops - Volume 2 [англ.]. DOI:10.1145/2948076.2948085. HDL:11572/167104. S2CID 15915593. Дата обращения 2024-06-30. |access-date= требует |url= (справка)
  38. Cohn, Mike Project Advantages of User Stories as Requirements. Mountaingoatsoftware.com. Дата обращения: 30 июня 2024. Архивировано 18 апреля 2012 года.
  39. Fowler, Martin UseCasesAndStories (18 августа 2003). Дата обращения: 30 июня 2024. Архивировано 27 сентября 2017 года.
  40. User Story And Use Case Comparison. C2.com. Дата обращения: 30 июня 2024. Архивировано 2 сентября 2016 года.

Литература

Категории