Гибкие (англ. agile ) методики разработки позволяют сократить затраты на разработку до 40%. Они нацелены на минимизацию рисков неудачи проекта.
Концепция гибкой разработки родилась в 90х годах прошлого века, под влиянием масштабного кризиса отрасли разработки ПО, когда классическая "водопадная" ("waterfall") модель стала неэффективной и приводила к постоянным срывам сроков проектов, притом, что команды разработчиков работали более 100 (!!!) часов в неделю (!!!!!). В настоящее время "гибкие" методики используются всеми ведущими мировыми компаниям - Google, Microsoft, Intel.
Наша компания применяет гибкие методики в разработке сайтов и порталов с 2004 года.
Гибкая методология разработки (англ. Agile software development) — это концептуальный каркас, в рамках которого выполняется разработка программного обеспечения. Существует несколько подобных методик.
Большинство гибких методологий нацелены на минимизацию рисков, путём сведения разработки к серии коротких циклов, называемых итерациями, которые обычно длятся одну-две недели. Каждая итерация сама по себе выглядит как программный проект в миниатюре, и включает все задачи, необходимые для выдачи мини-прироста по функциональности:
- планирование,
- анализ требований,
- проектирование,
- кодирование,
- тестирование,
- документирование.
Хотя отдельная итерация, как правило, недостаточна для выпуска новой версии продукта, подразумевается, что гибкий программный проект готов к выпуску в конце каждой итерации. По окончании каждой итерации, команда выполняет переоценку приоритетов разработки.
Agile-методы делают упор на непосредственное общение лицом к лицу. Большинство agile-команд расположены в одном офисе, иногда называемом bullpen. Как минимум, она включает и «заказчиков» (product owner - заказчик или его полномочный представитель, определяющий требования к продукту; эту роль может выполнять менеджер проекта, бизнес-аналитик или клиент). Офис может также включать тестировщиков, дизайнеров интерфейса, технических писателей и менеджеров.
Основной метрикой agile-методов является рабочий продукт. Отдавая предпочтение непосредственному общению, agile-методы уменьшают объем письменной документации, по сравнению с другими методами. Это привело к критике этих методов, как недисциплинированных.
Принципы Agile
Agile — семейство процессов разработки, а не единственный подход в разработке программного обеспечения, и определяется Agile Manifesto. Agile не включает практик, а определяет ценности и принципы, которыми руководствуются успешные команды.
Agile Manifesto разработан и принят 11-13 февраля 2001 года на лыжном курорте The Lodge at Snowbird в горах Юты. Манифест подписали представители следующих методологий eXtreme Programming (XP), Scrum, DSDM, Adaptive Software Development, Crystal Clear, Feature-Driven Development, Pragmatic Programming. Agile Manifesto cодержит 4 ценности, 12 принципов и не содержит практик.
Подход включает ценности, значимость которых нивелирована:
- личности и их взаимодействия важнее, чем процессы и инструменты;
- работающее программное обеспечение важнее, чем полная документация;
- сотрудничество с заказчиком важнее, чем контрактные обязательства;
- реакция на изменения важнее, чем следование плану.
Принципы, которые разъясняет Agile Manifesto:
- удовлетворение клиента за счёт ранней и бесперебойной поставки ценного ПО;
- приветствие изменения требований, даже в конце разработки ( это может повысить конкурентоспособность полученного продукта);
- частая поставка рабочего ПО (каждый месяц или неделю или ещё чаще);
- тесное, ежедневное общение заказчика с разработчиками на протяжении всего проекта;
- проектом занимаются мотивированные личности, которые обеспечены нужными условиями работы, поддержкой и доверием;
- рекомендуемый метод передачи информации — личный разговор (лицом к лицу);
- работающее ПО — лучший измеритель прогресса;
- спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределенный срок;
- постоянное внимание на улучшение технического мастерства и удобный дизайн;
- простота — искусство НЕ делать лишней работы;
- лучшие архитектура, требования и дизайн получаются у самоорганизованной команды;
- постоянная (частая) адаптация (улучшение эффективности работы) к изменяющимся обстоятельствам.