— Парное программирование — код пишется в парах, что повышает его качество и упрощает обмен знаниями внутри команды.
— Разработка через тестирование — сначала для новой функциональности пишут тесты, а затем код, который должен их проходить.
— Непрерывная интеграция — разработанный код регулярно интегрируют и тестируют для выявления и устранения ошибок как можно раньше.
— Рефакторинг — регулярное улучшение кода для его упрощения и увеличения читаемости, а также расширяемости.
Преимущества:
— Гибкость к изменениям требований — их можно вносить даже на последних этапах разработки, что делает ее очень гибкой.
— Высокое качество продукта — применяемые эффективные подходы в разработке позволяют сократить ошибки до появления приложения у пользователей и получить качественный продукт.
— Эффективное общение в команде — используемые подходы разработки делают общение в команде достаточно тесным и эффективным.
— Ускорение процесса разработки — за счет непрерывной интеграции и регулярных релизов ускоряется получение обратной связи.
Недостатки:
— Не всегда подходит для больших команд — эффективность таких практик разработки как парное программирование может заметно снизиться в больших командах.
— Необходимость строгой дисциплины — применяемые практики разработки приложений эффективны при их жестком соблюдении, что могут делать не все команды.
— Может оказаться избыточным для небольших проектов — часть практик разработки могут оказаться явно избыточными для простых или довольно краткосрочных проектов.
Этапы:
— Планирование — выбор пользовательских историй для текущей итерации.
— Проектирование — простое верхнеуровневое проектирование изменений в системе.
— Кодирование — разработка пользовательских историй с использованием техник через тестирование, парное программирование и непрерывную интеграцию.
— Тестирование — проверка функционала и изменений автоматизированными тестами.
— Рефакторинг — улучшение существующего кода без изменения его функциональности.
6.2.7. Scrum
Scrum — популярный в разработке программного обеспечения гибкий фреймворк для управления проектами. В его основе итерационно — инкрементальная разработка, где работа над проектом делится на итерации (спринты). Он ориентирован на постоянное улучшение, сотрудничество и подходит для проектов, где необходима быстрая реакция на изменения.
Особенности:
— Роли — все участники команды играют одну из трёх ключевых ролей: Владелец Продукта (Product Owner), Скрам — мастер (Scrum Master) и Команда разработки (Development Team).
— Спринты — работа над проектом делится на итерации с фиксированной длинной (обычно от 2 до 4 недель), в течение спринтов команда создает и доставляет инкременты продукта.
— События Scrum — мероприятия для координации работы команды. Включают ежедневные встречи, планирование, обзор и ретроспективу спринта.
— Артефакты Scrum — важные элементы для достижения глобальных целей. Основные артефакты это Бэклог Продукта, Бэклог Спринта и Инкремент.
Преимущества:
— Гибкость и адаптивность — позволяет быстро и эффективно вносить изменения в продукт на основе обратной связи.
— Повышенная производительность — структура работы четкая, а спринты короткие. Это позволяет командам сосредоточиться на одной или нескольких небольших целях.
— Прозрачность процесса — регулярные встречи и оценки делают работу всех участников команды прозрачной и видимой.
— Ранняя доставка ценности — ценные для пользователя инкременты доставляют часто и в виде работающего продукта.
Недостатки:
— Зависимость от самоорганизации команды — для эффективной работы требуется высокий уровень самодисциплины и самоорганизации всех участников команды, что не всегда легко достижимо.
— Необходимость активного участия владельца продукта — эффективность фреймворка падает, если владелец продукта не уделяет достаточно времени исполнению своей роли.
— Сложность масштабирования — несмотря на существование фреймворков, таких как SAFe, Scrum сложно использовать в больших компаниях или проектах.
Этапы (События Scrum):
— Планирование Спринта — команда выбирает задачи из Бэклога Продукта для включения в Спринт, определяет цель спринта, планирует работу.
— Ежедневные Scrum встречи — короткое собрание участников команды для обсуждения текущего прогресса и планирования работы на следующий день.