Agile software development (гибкий подход к разработке программного обеспечения) — это термин, обозначающий набор практик и структур, основанных на 12 принципах и 4 идеях Manifesto for Agile Software Development. К таким методологиям относят SCRUM, Kanban, Lean, DSDM, BDD, FDD (Feature-Driven Development), а также Extreme Programming.
Проект, реализуемый с использованием Agile, развивается благодаря совместным усилиям самоорганизующихся и кросс-функциональных команд разработки, их заказчиков и конечных пользователей. Декларирует адаптивное планирование, эволюционное развитие, коммуникацию лицом к лицу, системное использование обратной связи, быструю разработку и постоянное улучшение в рамках оперативного и гибкого реагирования на изменения.
Agile-подходы главным образом обеспечивают минимизацию рисков, которая достигается через разделение процесса разработки на короткие итерации (циклы по 2–3 недели).
Каждый цикл подразумевает одновременную работу над следующими пунктами:
- планирование;
- анализ требований;
- проектирование;
- кодирование;
- модульное тестирование;
- приемочное тестирование.
В конце каждой итерации продукт представляется клиентам и прочим значимым участникам проекта, после чего ведётся анализ и переоценка приоритетов разработки. Таким образом, agile-продукт номинально готов к выпуску в конце каждой итерации.
Agile полезен для проектной работы в небольших командах, чья деятельность подразумевает постоянное создание чего-то нового (например, отделы маркетинга, IT-департаменты и т. д.).
4 идеи Agile Manifesto:
- люди и их взаимодействие важнее, чем инструменты и процессы;
- работающий продукт важнее подробной документации;
- отношения с заказчиком важнее, чем согласование условий контракта;
- способность к гибкости важнее исходного плана.
12 принципов Agile Manifesto:
- главный приоритет — удовлетворение клиента путем своевременной поставки ПО;
- готовность к изменениям даже на поздних стадиях разработки может обеспечить конкурентные преимущества для клиента;
- поставка работающего ПО в короткие сроки (от 2 недель до нескольких месяцев);
- взаимодействие заказчика с разработчиками ежедневно на протяжении всего проекта;
- создание проектов в среде мотивированных людей, которым дается необходимая среда и поддержка для выполнения работы;
- лучший способ передачи информации в команду разработчиков — личный разговор;
- основная мера прогресса — работающее ПО;
- спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп в неопределенные сроки;
- внимание к хорошему дизайну и техническому совершенству повышает гибкость;
- простота — это искусство минимизировать количество лишней работы;
- лучшие решения возникают у самоорганизующихся команд;
- команда систематически анализирует и корректирует стиль своей работы.
Отличительная особенность Agile от других подходов к разработке программного обеспечения — сосредоточенность на людях и их взаимодействии.