Лекция 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
Договороспособная
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 слов) о самом сложном критерии.
Спасибо за внимание! 🎓