Гибкие методологии разработки ПО в реальном мире

55
Agile в реальном мире

Upload: tech-talks-nsu

Post on 15-Apr-2017

246 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Гибкие методологии разработки ПО в реальном мире

Agile в реальном мире

Page 2: Гибкие методологии разработки ПО в реальном мире

Содержание доклада

● Зачем нужны модели и методологии разработки ПО?● Реалии разработки программного обеспечения● Обзор основных моделей разработки ПО● Опыт внедрения Scrum в команде● Бесплатные средства/сервисы для улучшения качества ПО

Page 3: Гибкие методологии разработки ПО в реальном мире

Зачем?

● Продукт должен быть завершен и должен соответствовать требованиям

● Продукт должен быть качественным● Сроки должны быть предсказуемы

Page 4: Гибкие методологии разработки ПО в реальном мире

Зачем программисту?

● Трезвая оценка своих сил● Удовольствие от достижения поставленных целей● Никаких меньше переработок, авралов, страданий● Повышение квалификации через взаимодействие с командой● Возможность всем говорить, что у вас Scrum, XP,

$METHODOLOGY_NAME

Page 5: Гибкие методологии разработки ПО в реальном мире

Реалии разработки ПО

Page 6: Гибкие методологии разработки ПО в реальном мире

Самый плохой вариант

Page 7: Гибкие методологии разработки ПО в реальном мире

Cowboy koding

Page 8: Гибкие методологии разработки ПО в реальном мире
Page 9: Гибкие методологии разработки ПО в реальном мире

Заказчик принимает проект

Page 10: Гибкие методологии разработки ПО в реальном мире

В итоге

● Заваленные сроки● Баги, тысячи их● Переработки● Упадок мотивации● Злые шутки про программистов

Page 11: Гибкие методологии разработки ПО в реальном мире

Модели процесса разработки ПО

Модель предсказывает поведение систем

Page 12: Гибкие методологии разработки ПО в реальном мире

Водопад (каскадная модель)

Page 13: Гибкие методологии разработки ПО в реальном мире

Спиральная

Page 14: Гибкие методологии разработки ПО в реальном мире

Итеративная

Page 15: Гибкие методологии разработки ПО в реальном мире

Методологии разработки ПО

Методология разработки ПО - это набор рекомендаций и правил, направленных на то, чтобы система функционировала.

Page 16: Гибкие методологии разработки ПО в реальном мире

Гибкие (Agile) методологии разработки ПО

Гибкие методологии ориентируются на:

● Взаимодействие внутри группы● Готовность к изменениям требований● Эволюционное развитие продукта

Page 17: Гибкие методологии разработки ПО в реальном мире

Agile-манифест

● Люди и взаимодействие важнее процессов и инструментов● Работающий продукт важнее исчерпывающей документации● Сотрудничество с заказчиком важнее согласования условий

контракта● Готовность к изменениям важнее следования

первоначальному плану

http://agilemanifesto.org/iso/ru/

Page 18: Гибкие методологии разработки ПО в реальном мире

Методологии, основанные на Agile

● Экстремальное программирование (XP)● Kanban● Scrum● ...

Page 19: Гибкие методологии разработки ПО в реальном мире

10th Annual State of Agile Survey – VersionOne

Page 20: Гибкие методологии разработки ПО в реальном мире

XP

● Большое внимание уделяется тестированию● Непрерывная интеграция/доставка● KISS (Keep It Simple Stupid)● Парное программирование● Короткие итерации● Тесное взаимодействие с заказчиком● Частый и простой рефакторинг (п. 1)

Page 21: Гибкие методологии разработки ПО в реальном мире

Kanban

● Визуализация производства (конвейер)● Ограничение одновременного количества задач● Отсутствие спринтов● Нет как такового планирования

Page 22: Гибкие методологии разработки ПО в реальном мире

Kanban

Page 23: Гибкие методологии разработки ПО в реальном мире

Scrum

● Итерации (спринты)● Бэклог проекта/спринта● Планирование● Scrum-митинги● Демо● Ретроспектива

Page 24: Гибкие методологии разработки ПО в реальном мире

Плюсы Scrum

● Предсказуемый результат● Задачи отсортированы по приоритету● Рабочий продукт (новый функционал) каждую итерацию● Вся команда вовлечена в процесс

Page 25: Гибкие методологии разработки ПО в реальном мире
Page 26: Гибкие методологии разработки ПО в реальном мире

Scrum board

Page 27: Гибкие методологии разработки ПО в реальном мире

Основные роли в Scrum

Page 28: Гибкие методологии разработки ПО в реальном мире

Product owner (владелец продукта)

● Представляет интересы пользователей

● Формирует требования● Решает какой функционал

включать в релиз

Page 29: Гибкие методологии разработки ПО в реальном мире

Scrum master

● Проводит ежедневные митинги● Следит за правилами● Технически подкован● Принимает участие в Scrum of

Scrums

Page 30: Гибкие методологии разработки ПО в реальном мире

Development team (команда)

● Разработка● Тестирование● Автономная самодостаточная

команда● Все вовлечены в процесс● Включает в себя все основные

роли

Page 31: Гибкие методологии разработки ПО в реальном мире

Опыт внедрения Scrum

● Отрицание● Гнев ● Торг ● Депрессия● Принятие● …● PROFIT!

Page 32: Гибкие методологии разработки ПО в реальном мире

Основные техники

Page 33: Гибкие методологии разработки ПО в реальном мире

Немного о проекте и требованиях

● Является частью большого Enterprise проекта● Проект является фреймворком (используется разработчиками)● Необходимы относительно частые релизы (2-4 раза в месяц)● Требуется высокая стабильность и предсказуемость● Необходимо взаимодействие с пользователями фреймворка

Page 34: Гибкие методологии разработки ПО в реальном мире

Рекомендации по переходу

● Гибкая методология - гибкий переход● Нужно понимать для чего тот или иной артефакт методологии● Переходить желательно постепенно, поочередно внедряя те или

иные практики● Scrum - не цель, а средство

Page 35: Гибкие методологии разработки ПО в реальном мире

1. Приоритет задач

Page 36: Гибкие методологии разработки ПО в реальном мире

2. Итерации

● Короткие, 1-3 недели● Начало в один и тот же день недели● Итерации выровнены по командам на всем проекте

Page 37: Гибкие методологии разработки ПО в реальном мире

3. Совещания (Meetings)

● Короткие 10-15 минут● Без технических подробностей● Что сделали с последнего совещания, что сделаем к

следующему, какие есть трудности

Page 38: Гибкие методологии разработки ПО в реальном мире

4. Планирования итераций

● Производится каждую итерацию● Занимает 1-2 часа

Page 39: Гибкие методологии разработки ПО в реальном мире

5. Ретроспективы

● Результат итерации● Обзор успехов/сложностей итерации● Что продолжаем делать, что прекращаем делать, что попробуем

в следующей итерации● Работа над ошибками

Page 40: Гибкие методологии разработки ПО в реальном мире

6. Демо

● Демонстрация результатов● Все принимают участие● Демонстрируется только готовый функционал

Page 41: Гибкие методологии разработки ПО в реальном мире

Burndown

Page 42: Гибкие методологии разработки ПО в реальном мире

Модификация Scrum

● Гибкая методология - гибкие правила● Scrum - не религия● Scrum можно сделать удобнее добавляя/удаляя артефакты● Использовать практики необходимо с умом● Люди и взаимодействие важнее процессов и инструментов

Page 43: Гибкие методологии разработки ПО в реальном мире
Page 44: Гибкие методологии разработки ПО в реальном мире
Page 45: Гибкие методологии разработки ПО в реальном мире

● Planning Poker бесполезен в случае, если команда состоит из одного разработчика и тестировщика

● TDD, Code Review и некоторые другие элементы не нужны на прототипах

● Планирование не имеет смысла, если программист занимается ТОЛЬКО багфиксами

● Story Points (те самые попугаи) неприменимы в командах в случае если члены команды не равны по квалификации. Клиент/ПМ просит оценку в часах

● Метрики производительности команды сводят работу больше к набору очков, чем к выполнению задач

Page 46: Гибкие методологии разработки ПО в реальном мире

Что добавили?

● Непрерывная интеграция● Многоуровневое тестирование ● Коллективное владение кодом● Рефакторинг● Brainstorming

Page 47: Гибкие методологии разработки ПО в реальном мире

Что убрали?

● Покер планирования● Очки скрама● Дополнительные роли

Page 48: Гибкие методологии разработки ПО в реальном мире

Что делать с багами?

● Вводить резерв на багфиксы 10-25%● Организовывать систему по примеру стека (при добавлении чего

то более важного в спринт, что-то менее важное выпадает)

Page 49: Гибкие методологии разработки ПО в реальном мире

А с тестированием?

● QA как разделяемый ресурс● QA как часть команды● QA отсутствует

Page 50: Гибкие методологии разработки ПО в реальном мире

Когда Agile НЕ работает

● Медицинское, военное, космическое ПО● Исследовательская работа● Гос-заказы● Если нет цели создавать качественное ПО в разумные сроки● Все остальные случаи, когда ничего не поможет, такие как низкая

квалификация, отсутствие бюджета, нереальные сроки

Page 51: Гибкие методологии разработки ПО в реальном мире

Контроль версий, инспекция кода (Code review)

https://github.com

https://bitbucket.org

Page 52: Гибкие методологии разработки ПО в реальном мире

Непрерывная интеграция

https://jenkins.io

https://jetbrains.com/teamcity

https://travis-ci.org

Page 53: Гибкие методологии разработки ПО в реальном мире

Вспомогательные средства

https://trello.com

https://draw.io

https://slack.com

Page 54: Гибкие методологии разработки ПО в реальном мире

https://quiz.xored.com

Page 55: Гибкие методологии разработки ПО в реальном мире

Спасибо!

Контакты:Антон Демин (докладчик): [email protected]Ольга Краснянская (HR): [email protected]