Экстремальное программирование ХР
Что такое XP?
Waterfall • Все требования должны быть определены и детально описаны до начала разработки; • Дорого и медленно; • Чувствителен к изменениям; • Мало возможностей для конечного пользователя повлиять на цели проекта и требования к продукту; • Зачастую проблемы выявляются на этапе тестирования; • Много документации, много технической документации, которая не понятна конечному пользователю или заказчику.
Agile. Основные идеи • люди и взаимодействие важнее процессов и инструментов; • работающий продукт важнее исчерпывающей документации; • сотрудничество с заказчиком важнее согласования условий контракта; • готовность к изменениям важнее следования первоначальному плану.
Риски?
Примеры рисков • • Смещение графиков Закрытие проекта Система теряет полезность Количество дефектов и недочетов Несоответствие решаемой проблеме Изменение характера бизнеса Недостаток возможностей Текучка кадров
XP как управление авто
Тройственная ограниченность
Объем работы
4 ценности • Коммуникация • Простота • Обратная связь • Храбрость
Фундаментальные принципы • быстрая обратная связь; • приемлемая простота; • постепенное изменение; • приемлемое изменение; • качественная работа.
Основные приёмы • • • Игра в планирование Небольшие версии Метафора Просто дизайн Тестирование Рефакторинг Парное программирование Коллективное владение кодом Непрерывная интеграция Заказчик всегда рядом Стандарты кодирования 40 часовая рабочая неделя
Метафора
Игра в планирование
Цели • Собрать команду вместе • Определить объем работ • Оценить затраты и график работ • Добиться появления у каждого заинтересованного лица ощущения того, что система действительно может быть реализована • Определить исходные данные для обратной связи
Планирование релиза(1 -6 мес. ) 1. Фаза исследований – Написание истории – Оценка истории (планинг покер) – Разделение истории 2. Фаза передачи – – Сортировка в соответствии с ценностью Сортировка в соответствии с риском Определение скорости Определение объема работ 3. Управляющая фаза – – Итерация Регенерация Новая история Переоценка
Планирование итерации(1 -3 нед. ) 1. Фаза исследования – Написание задачи – Разделение задачи/комбинация задач 2. Фаза подтверждения – – Принятие задачи Оценка задачи Определение фактора нагрузки Балансировка 3. Фаза управления – – Реализация задачи Отслеживание прогресса Регенерация Проверка истории
Простой дизайн vs
Программисты любят делать так
Небольшие релизы
Тестирование
Виды тестов • Модульные тесты • Функциональные тесты • и другие
Разработка через тестирование
Бонусы от TDD • • • уверенность в работоспособности безболезненное внесение изменений можно посмотреть на свой код со стороны некий аналог документации меньшее время отладки уменьшение зависимостей
Заказчик всегда рядом
Рефакторинг
Признаки плохого кода • • дублирование кода; длинный метод; большой класс; длинный список параметров; «жадные» функции; избыточные временные переменные; классы данных; несгруппированные данные
Методы рефакторинга • • Выделение класса Выделение метода Выделение локальной переменной Переименование метода Перемещение метода Инкапсуляция поля Введение параметра И т. д.
Парное программирование
Непрерывная интеграция
Процесс CI
Коллективное владение
Стандарты кодирования
40 -часовая рабочая неделя
Как это работает?
Еще раз