Лекция 2.3 — XP и User Stories
1 / 17

Лекция 2.3

Проектирование информационных систем
Extreme Programming (XP) и User Stories

← → или Пробел для навигации

План лекции

  • Теория (30 мин): Extreme Programming (XP). Формат User Story. Критерии INVEST.
  • Примеры (20 мин): Переписывание сухих требований в User Stories.
  • Практика (30 мин): Написание Product Backlog в формате User Stories.

Extreme Programming (XP)

  • Создана Кентом Беком в конце 1990-х (проект C3, Chrysler)
  • Название — «вывернули наизнанку» традиционные подходы
  • Из XP пришли в индустрию:
    • User Stories
    • Парное программирование
    • TDD (Test-Driven Development)
    • Непрерывная интеграция (CI)
    • Рефакторинг
«Если что-то хорошо — делай этого очень много»

5 ценностей XP

💬 Коммуникация

Все проблемы — от недостатка общения

✨ Простота

Делай только то, что нужно сегодня

🔄 Обратная связь

Тесты, демо, корректировка курса

🦁 Мужество

Не бойся менять план и выбрасывать код

🤝 Уважение

Без уважения остальные 4 ценности не работают

12 практик XP

🔄 Гибкость процесса

• Planning Game
• Маленькие релизы
• Принятие изменений

💻 Инженерные

• Парное программирование
• TDD
• Рефакторинг
• CI
• Простой дизайн

👥 Командные

• Общий язык
• Метафора
• Рациональный темп (40 ч/нед)

XP vs Scrum

  • Scrum — про организацию процесса (роли, события)
  • XP — про инженерные практики (как писать код)
  • Они не конкурируют — они дополняют друг друга
  • Многие команды используют Scrum + XP-практики
XP подарил Scrum главный артефакт — User Stories

User Story

  • Предложена Кентом Беком в рамках XP
  • Популяризирована Роном Джеффрисом и Майком Коном
  • Короткий текст о требовании с точки зрения пользователя
«User Story — это обещание разговора, а не ТЗ на 10 страниц»

Формат User Story

Как <РОЛЬ>,
я хочу <ДЕЙСТВИЕ>,
чтобы <ЦЕННОСТЬ>.
  • Роль — КТО это хочет?
  • Действие — ЧТО он хочет сделать?
  • Ценность — ЗАЧЕМ ему это?

Примеры User Stories

❌ Сухое требование

«Реализовать REST API эндпоинт POST /api/cart/items»

✅ User Story

«Как покупатель, я хочу добавлять товары в корзину, чтобы не потерять выбранные позиции»

❌ Сухое требование

«Сделать кнопку "Экспорт в PDF"»

✅ User Story

«Как бухгалтер, я хочу выгружать отчёт в PDF, чтобы отправить его клиенту»

3 «Си» User Story

По Рону Джеффрису:

📇 Card

История помещается на стикер. Короткий текст, не ТЗ.

💬 Conversation

Детали обсуждаются устно. История — приглашение к разговору.

✓ Confirmation

Есть критерии приёмки (Acceptance Criteria).

Acceptance Criteria

Список условий, при которых история считается выполненной.

Пример: промокод

  • Поле ввода отображается на экране оформления заказа
  • При вводе валидного промокода сумма пересчитывается
  • При невалидном — сообщение об ошибке
  • Промокод применяется только один раз
  • Если истёк — не применяется

Критерии INVEST

По Джимy Маккарти и Майку Кону:

I
Independent
Независимая
N
Negotiable
Договороспособная
V
Valuable
Ценная
E
Estimable
Оцениваемая
S
Small
Маленькая
T
Testable
Тестируемая

INVEST в деталях

  • I — Independent: можно выполнить отдельно от других
  • N — Negotiable: не контракт, а приглашение к обсуждению
  • V — Valuable: приносит ценность пользователю или бизнесу
  • E — Estimable: команда может оценить сложность
  • S — Small: помещается в один спринт
  • T — Testable: есть чёткие критерии приёмки
Если хотя бы один критерий не выполняется — история «сырая»

Переписываем сухие требования

❌ До

«Оптимизировать SQL-запросы к базе данных»

✅ После

«Как зритель, я хочу, чтобы список фильмов загружался ≤ 1 секунды, чтобы не ждать и сразу выбирать сеанс»

❌ До

«Реализовать CRUD для управления фильмами»

✅ После

4 отдельные истории: создание, чтение, обновление, удаление — каждая со своей ценностью для администратора

Практика (30 минут)

🎯 Задание

Написать Product Backlog в формате User Stories для системы «Бронирование билетов в кино».

📝 Шаги:

  • Шаг 1 (15 мин): Напишите 10 User Stories по списку функциональности
  • Шаг 2 (5 мин): Проверьте каждую по INVEST
  • Шаг 3 (5 мин): Добавьте Acceptance Criteria для 3 историй
  • Шаг 4 (5 мин): Расставьте приоритеты (🔴 критический / 🟢 высокий / 🟡 средний / 🔵 низкий)

Резюме

  • XP — Agile-методология, подарившая User Stories, TDD, парное программирование
  • User Story — формат: «Как <РОЛЬ>, я хочу <ДЕЙСТВИЕ>, чтобы <ЦЕННОСТЬ>»
  • 3 «Си»: Card, Conversation, Confirmation
  • Acceptance Criteria — чёткие условия выполнения
  • INVEST — 6 критериев качества истории
  • Сухие требования переписываем в User Stories, добавляя роль и ценность
  • Технические задачи тоже можно оборачивать в User Stories

Домашнее задание

📚 Базовое

Напишите 10 User Stories для системы «Онлайн-библиотека». Проверьте по INVEST. Для 3 историй — Acceptance Criteria.

🚀 Продвинутое

Найдите «сухое» техническое требование и перепишите его в User Story. Покажите «до» и «после».

⭐ Со звездочкой

Прочитайте главу про INVEST у Майка Кона. Напишите резюме (300 слов) о самом сложном критерии.

Спасибо за внимание! 🎓