TL; DR
Історії користувачів - це документування того, яку вартість слід додати продукту та чому. Деталі щодо впровадження (наприклад, як значення слід додавати, перевіряти, вимірювати чи затверджувати) обмежують розповідь, але не містять їх. Вони свідомо залишаються як окремі артефакти, щоб підтримувати гнучкість та спритність у рамках.
Деталі специфікацій та впровадження найчастіше фіксуються в інших артефактах, таких як Сценарії прийняття-тестування (ATDD), Тестово-керована розробка (TDD), та сценарії та сценарії розвитку, керовані поведінкою (BDD). Ці конкретні артефакти не покладені на рамки Scrum, але вони, безумовно, дадуть вам хорошу відправну точку, якщо у вас ще немає інших ефективних засобів управління процесами.
Історії користувачів не є специфікаціями
Оригінальний плакат (ОП) задав наступне питання :
[A] Клієнт хоче різної обробки для різних кредитних карток, існують суворі вимоги, які повинні бути впроваджені та відомі, щоб можна було писати тестові випадки ... ДЕ МОЖЕ Я ВСТУПИТИ ЇЇ, АБО НЕ В ІСТОРІЇ?
Історія користувача - це функція, яка забезпечує цінність , надає певний контекст для керівництва розмовами про реалізацію та точку зору, пов’язану із споживачем цінності, який отримає користь від цінності, наданої функцією.
Вся суть історії користувача полягає в тому, що деталі реалізації не є наказовими. Команда вільна реалізувати функцію будь-яким способом, який доставляє визначене значення споживачам цінності у відповідному контексті.
Робочий приклад
Прикладна історія користувача
Це простіше пояснити, якщо ви почнете з менш неоднозначного набору історій користувачів. Оскільки ОП не надала дію історію користувача, яка відповідає мнемоністичній INVEST , я вигадаю її заради прикладу. Розглянемо наступну історію:
Як користувач, який вважає за краще платити карткою Discover,
я хотів би здійснити покупки за допомогою картки Discover,
щоб я не обмежувався Visa, Mastercard або American Express.
Це забезпечує конкретну особливість, надає певний контекст, який може керувати рішеннями щодо впровадження, які повинна прийняти команда, і визначає споживача цінності як клієнта, що володіє карткою Disco-Card. Це не набір специфікацій, але це те, що потрібно для правильних розмов із замовником та командою про те, як найкраще реалізувати історію під час ітерації розробки.
Аналіз та реалізація
Фактична реалізація залежить від команди. Команді доведеться зробити аналіз, щоб визначити:
- Найпростіший спосіб реалізувати нову функцію.
- Який із різних варіантів впровадження буде найлегше підтримати вперед, не накопичуючи технічної заборгованості.
- Як застосувати принципи відкритого закритого типу та принципи YAGNI, щоб гарантувати надійність нової функції без надмірної інженерії.
Одним із основних принципів Agile Manifesto є співпраця з клієнтами. Крос-функціональна, що самоорганізується команда очікується , щоб мати можливість співпрацювати з клієнтом , щоб виробити деталі реалізації в рамках керівних принципів , передбачених в призначеній для користувача історії.
Якщо ваші історії користувачів написані не так добре, або якщо команда не має навичок або зрілості процесу, щоб зробити достатньо просто аналіз, який вимагає їх спритний фреймворк, то це, очевидно, буде набагато складніше, ніж потрібно. Цілі книги написані на тему, як створити хороші історії користувачів на належному рівні деталізації; На жаль, срібної кулі немає, але це сприйняття для спритних команд.
Дизайн, керований тестом та поведінка
Найкращий спосіб забезпечити обґрунтованість аналізу та реалізацію як розумної, так і сприятливої - це використання практик TDD та BDD. Наприклад, враховуючи вищезгадану історію, команда повинна фіксувати заплановану реалізацію за допомогою артефактів, таких як:
Особливості огірків із тестовими сценаріями.
Це найкорисніше для керування розробкою тестів на прийняття та для документування очікувань користувачів щодо поведінки програми. Наприклад, історія користувача повинна мати одну чи більше пов'язаних з ними функцій Cucumber, що описують, як користувач може перевірити карту Discover і як виглядає цей процес для користувача.
Тести RSpec, які підтверджують поведінку (не внутрішні деталі реалізації) нових функцій коду.
Це найбільш корисно для документування та перевірки передбачуваної поведінки функції в програмі. Наприклад, історія користувача призведе до створення тестів для одиниць та інтеграції, які гарантують, що за допомогою картки Discover виклик будь-якої поведінки, яка залежить від картки, яку програма вимагає для авторизації продажу через шлюз платежів.
Конкретні інструменти не мають значення. Якщо вам не подобається огірок або RSpec, використовуйте будь-які інструменти чи методології, які найкраще підходять для вашої команди. Однак справа в тому, що деталі реалізації базуються на історії користувача , але вони не прописані нею . Натомість реалізація (або технічні характеристики, якщо ви хочете) - це деталі, які слід опрацювати під час розробки функції спільно.