Гибкие методологии разработки, Методология экстремального

advertisement
Гибкие методологии разработки,
Методология экстремального
программирования, 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
Download