Гибкие методологии разработки, Методология экстремального программирования, Scrum Алексей Королев, ВМИ-311 1 Agile development (или гибкая методология разработки) 2 Что такое Agile? ● ● ● ● Итеративная разработка Постепенное развитие требований к продукту Самоорганизующиеся универсальные команды Взаимодействие между командами 3 История ● ● ● 1970-е: E. A. Edmonds, Tom Glib, Dan Gielan 1990-e: Unified Process, Scrum, Crystal Clear, XP, Adaptive Software Development, FDD, DSDM 2001: The Agile Manifesto (Манифест гибкой разработки) 4 Текст Манифеста: “Мы открываем для себя более совершенные методы разработки ПО, занимаясь разработкой сами и помогая в этом другим. Благодаря проделанной работе мы смогли осознать, что: ● ● Люди и общение важнее процессов и инструментов Работающий продукт важнее исчерпывающей документации ● Общение с заказчиком важнее торгов с ним ● Готовность к изменениям важнее следования плану Не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева.” 5 Принципы гибкой разработки: ● Итеративность и постепенное усложнение ● Общение без посредников ● Быстрая обратная связь и легкая адаптация ● Ориентация на качество 6 Итеративность и постепенное усложнение ● ● Проект разбивается на несколько небольших итераций, которые можно рассматривать как “мини-проекты”. Команды состоят из специалистов разного профиля, команда способна сама выполнить всю работу над итерацией 7 Общение без посредников Так, в команду обязательно входит представитель заказчика, заинтересованный в качестве продукта. Он выполняет две важные функции: ● отвечает на вопросы разработчиков (так, им не приходится писать менеджеру проекта, чтобы тот написал менеджеру заказчика, чтобы тот...) ● В конце итерации, вместе с самим заказчиком оценивает работу команду и (пере)определяет приоритеты 8 Быстрая обратная связь и легкая адаптация Как правило, при гибкой разработке устраиваются ежедневные встречи команды, где её участники говорят, что они сделали за вчерашний день, что собираются делать сегодня, и какие проблемы мешают выполнению работы. 9 Ориентация на качество Agile ставит целью качественный продукт. Поэтому в agile-методах широко используются TDD, CI, парное программирование, шаблоны проектирования, рефакторинг и так далее. 10 Плюсы и минусы Agile + Быстрый запуск + Быстрое реагирование на изменения + Связь в реальном времени между командой и клиентом - Требует высококвалифицированных и мотивированных специалистов - Требует много времени от клиента - Отсутствие долгосрочных планов - Малое количество документации 11 Когда использовать Agile? Когда нет четкого ожидаемого результата – например, при разработке веб-сайта ● Когда клиент готов регулярно тратить свое время на общение с командой ● В небольшой ориентированной на IT компании ● 12 Экстремальное программирование 13 Экстремальное программирование ● ● ● ● XP – методология, позволяющая разрабатывать более качественный продукт более эффективно. XP относится к изменениям требований к продукту как к естественной, неизбежной и даже желательной части разработки ПО. Методология XP включает в себя несколько базовых ценностей и приемов. Первое издание книги “Extreme Programming Explained” было опубликовано Кентом Бэком в 1999 году 14 Виды деятельности (Activities) ● Программирование (Coding) ● Тестирование (Testing) ● Слушание (Listening) ● Проектирование (Designing) 15 Ценности (Values) ● Общение (Communication) ● Простота (Simplicity) ● Обратная связь (Feedback) ● Смелость (Courage) ● Уважение (Respect) 16 Приемы XP (Practices) 1) Короткий цикл обратной связи (Fine scale feedback): ● ● ● ● Разработка через тестирование (Test driven development) Игра в планирование (Planning game) Заказчик всегда рядом (Whole team, Onsite customer) Парное программирование (Pair programming) 17 Приемы XP 2) Непрерывный, а не пакетный процесс: ● Непрерывная интеграция (Continuous Integration) ● Рефакторинг (Design Improvement, Refactor) ● Частые небольшие релизы (Small Releases) 18 Приемы XP 3) Понимание, разделяемое всеми: ● Простота (Simple design) ● Понимание архитектуры (System metaphor) ● ● Коллективное владение кодом (Collective code ownership) Стандарт кодирования (Coding standard or Coding conventions) 19 Приемы XP 4) Социальная защищенность программиста (Programmer welfare): ● 40-часовая рабочая неделя (Sustainable pace, Forty hour week) 20 Scrum 21 Что такое Scrum ● ● ● Scrum – гибкая методология разработки, в которой команда разработчиков работает как единое целое для достижения общей цели Позволяет команде самоорганизоваться благодаря ежедневному личному общению между всеми разработчиками. Ключевой принцип – понимание того, что во время работы над проектом заказчик может изменить свои требования. 22 Роли в Scrum: ● Владелец продукта (Product Owner) ● Команда разработчиков (Development Team) ● Скрам-мастер (Scrum Master) 23 Спринт ● ● ● Жесткие временные рамки (1-4 недели) Начинается с планирования спринта (spring planning meeting) В конце спринта продукт считается “готовым”. 24 Резервы (Backlogs) ● ● Резерв проекта (Project backlog) – список требований (user stories) к продукту Резерв спринта (Sprint backlog) – список требований, выбранных из резерва проекта для реализации 25 История (User Story) ● ID ● Название ● Важность ● Предварительная оценка в Story Point'ах ● Как продемонстрировать ● Примечания Владелец продукта не может напрямую сказать команде, какие истории должны войти в резерв спринта, но может изменить важность истории. 26 Диаграмма сгорания задач 27 Встречи (meetings) Планирование спринта (Sprint Planning): Из резерва проекта выбираются задачи ● ● ● ● ● Cоздается резерв спринта с оценкой в человеко-часах; Обсуждается и определяется, сколько работы будет сделано за спринт; Не больше 8 часов (первые 4 часа) Участвует владелец проекта и скрам команда: выбирают задачи из резерва продукта; (вторые 4 часа) Участвует только команда: обсуждают технические детали реализации, наполняют резерв спринта. 28 Как владелец продукта может повлиять на выбор историй: ● ● Изменить важность истории А В Б А В Б Разбить историю на подзадачи А В ● Упростить историю А А В Б А Б1 В Б2 Б В Б 29 Планирование, основанное на методе оценки производительности: 1) Считаем доступные человеко-дни 2) Умножаем на фокус-фактор 3) Выбираем задачи так, чтобы Story Point'ов в сумме вышло примерно столько же Фокус-фактор – коэффициент того, насколько команда сфокусирована на работе. Можно считать по итогам последнего спринта, разделив вес завершенных историй на потраченные человеко-дни. 30 Пример 1) Планируется двухнедельный спринт, т. е. это 10 человеко-дней за каждого участника команды. Андрей готов отработать все 10 дней, Борис собирается взять два отгула, а Василий половину рабочего времени работает над другим проектом. Итого: 10 + 8 + 5 = 23. 2) Во время прошлого спринта команда сделала историй на 20 story point'ов, потратив 33 человеко-дня. Получаем фокус-фактор, равный 60%. 3) Набираем историй примерно на 14 story point'ов 31 Учетные карточки ● Наглядный способ представления Product Backlog'а ● Истории напечатаны на бумажных листах ● Чем задача важнее, тем левее она на доске ● ● Подзадачи историй клеятся на стикеры под историями Всё это висит на стене в комнате встреч 32 Пример учетной карточки 33 Доска задач 34 Встречи Ежедневная встреча (Daily Scrum Meeting): ● ● ● ● Начинается всегда вовремя В одном и том же месте, в одно и то же время Не дольше 15 минут Участники отвечают на 3 вопроса (Что было сделано, что будет сделано, какие есть проблемы) 35 Встречи Обзор итогов спринта (Sprint review): ● ● ● ● ● Проводится в конце спринта Обзор сделанной работы и запланированной, но не сделанной Демонстрация проделанной работы заказчикам Недоделанная работа не может быть показана Не дольше 4 часов 36 Встречи Ретроспективное совещание (Retrospective meeting): ● ● Каждый участник команды высказывает мнение о прошедшем спринте Задается два вопроса: “Что было сделано хорошо?”, “Что нужно улучшить?” ● Не больше трех часов ● Помогает скрам-мастеру 37 Scrum vs XP ● ● ● Спринты скрама короче итераций XP В скраме заказчик может изменить требования только между спринтами В XP фичи реализуются последовательно, в скраме – в произвольном порядке Приемы XP и скрам часто используются вместе 38 Литература ● en.wikipedia.org/wiki/Scrum_(software_development) ● en.wikipedia.org/wiki/Extreme_Programming ● en.wikipedia.org/wiki/Agile_software_development ● scrum.org.ua 39