Agile - это группа методологий, в каждой из которых прослеживается стремление к безостановочному выполнению циклов обратной связи и непрерывному совершенствованию. Узнайте основы Agile, его преимущества, типы методологий и организацию Agile-команды.
Cодержание
Agile не сводится к ряду собраний и конкретным приемам разработки. Agile - это группа методологий, в каждой из которых прослеживается стремление к безостановочному выполнению циклов обратной связи и непрерывному совершенствованию.
Основы Agile
При использовании традиционного каскадного подхода к разработке один специалист заканчивает работу над проектом и передает эстафету следующему, самоустраняясь от участия в дальнейшем процессе. В отличие от этой модели, agile предполагает активное взаимодействие между участниками многофункциональных команд. В основе agile лежат открытое общение, совместная работа, адаптация и доверительные отношения между участниками команды. Хотя обычно за расстановку приоритетов между поставляемыми функциями отвечает руководитель проекта или владелец продукта, то, как будет выполняться работа, решает команда. Она самостоятельно выбирает, какие части работы выполнить и как разделить обязанности между участниками.
В первой версии Манифеста agile не были закреплены двухнедельные итерации или оптимальный размер команды. В нем просто были перечислены основные ценности, в центре которых были люди.
Преимущества Agile
Команды переходят на agile, чтобы быстро реагировать на изменения на рынке или отзывы клиентов и не нарушать планы, составленные на год вперед. Команда, которая осуществляет планирование по принципу достаточности и поставляет продукт часто и небольшими «порциями», может получить отзывы об изменениях и учесть их при составлении будущих планов без лишних затрат.
Дело не только в показателях. Главное — это люди. Согласно Манифесту Agile, естественное человеческое отношение при взаимодействии важнее неукоснительного следования инструкциям. Сотрудничество с клиентами и коллегами важнее стандартных договоренностей. А решение проблемы клиента важнее проработанной до мелочей документации.
Agile-команда имеет общую цель и достигает ее наиболее эффективным, по ее мнению, способом. Каждая команда устанавливает свои критерии качества, удобства пользования и готовности работы. По ним можно оценить скорость выполнения работы команды. Поначалу руководителей компаний может пугать мысль о том, чтобы доверить agile-команде такую ответственность. Однако со временем они обнаруживают, что это доверие только усиливает чувство ответственности и команда прилагает все усилия для достижения общей цели.
См. также
Типы Agile-методологий
Agile - это общее название нескольких методик, объединенных идеей гибкости работы. В эту группу входят разные методы, такие как:
- Scrum
- Kanban
- XP (Extreme Programming)
- Crystal
Принципы Agile
Agile-подход к разработке строится на нескольких принципах:
- Предпочтение взаимодействию и общению сотрудников над процессами и инструментами.
- Предоставление работающего программного продукта вместо подробной документации.
- Сотрудничество с клиентами вместо заключения договора о переговорах.
- Готовность к изменениям вместо следования плану.
Организация Agile-команды
Работать по методологии Agile значит отказаться от стандартных принципов управления, потому что это не способ руководства, а способ взаимодействия. Команда разработки включает роли, которые берут на себя сотрудники из разных отделов. В сфере IT наиболее необходимые роли в Agile-проекте - это:
- Product Owner - отвечает за формулировку требований к продукту.
- Scrum Master - обеспечивает соблюдение Scrum-процесса и устранение препятствий.
- Разработчики - отвечают за создание и тестирование программного продукта.
- Тестировщики - проводят тестирование и обеспечивают качество продукта.
При этом даже человек на должности product owner формально не является руководителем, он просто берет на себя ответственность за формулировку требований к продукту: доносит до остальной команды видение того, как должен выглядеть продукт и каким функционалом он должен обладать.
Agile-подход к разработке проектов является гибким и эффективным способом достижения результатов. Он позволяет командам быстро адаптироваться к изменениям и взаимодействовать наиболее эффективным способом. В результате, продукт соответствует требованиям клиентов и ожиданиям рынка. Применение Agile-методологий может быть осуществлено в различных областях, таких как разработка программного обеспечения, управление проектами и другие.
См. также
Что нам скажет Википедия?
Гибкие методики разработки (англ. agile software development, agile-разработка) — обобщающий термин для целого ряда подходов и практик, основанных на ценностях Манифеста гибкой разработки программного обеспечения и 12 принципах, лежащих в его основе.
К гибким методикам, в частности, относят экстремальное программирование, DSDM, Scrum, FDD, BDD и другие.
Большинство гибких методик нацелены на минимизацию рисков путём сведения разработки к серии коротких циклов, называемых итерациями, которые обычно длятся две-три недели. Каждая итерация сама по себе выглядит как программный проект в миниатюре и включает все задачи, необходимые для выдачи мини-прироста по функциональности: планирование, анализ требований, проектирование, программирование, тестирование и документирование. Хотя отдельная итерация, как правило, недостаточна для выпуска новой версии продукта, подразумевается, что гибкий программный проект готов к выпуску в конце каждой итерации. По окончании каждой итерации команда выполняет переоценку приоритетов разработки.
Agile-методы делают упор на непосредственном общении лицом к лицу. Большинство agile-команд расположены в одном офисе, иногда называемом англ. bullpen. Как минимум, она включает и «заказчиков» (англ. product owner — заказчик или его полномочный представитель, определяющий требования к продукту; эту роль может выполнять менеджер проекта, бизнес-аналитик или клиент). Офис может также включать тестировщиков, дизайнеров интерфейса, технических писателей и менеджеров.
Основной метрикой agile-методов является рабочий продукт. Отдавая предпочтение непосредственному общению, agile-методы уменьшают объём письменной документации по сравнению с другими методами. Это привело к критике этих методов как недисциплинированных.
В течение 1990-х годов ряд легких методов разработки программного обеспечения развивался в ответ на преобладающие тяжелые методы, которые критики называли чрезмерно регулируемыми, планируемыми и микроуправляемыми. К ним относятся: быстрая разработка приложений (RAD) с 1991 года; унифицированный процесс и метод разработки динамических систем с 1994 года; Scrum, с 1995 года; Crystal Clear и экстремальное программирование (XP), как с 1996 года; и функционально-ориентированная разработка, начиная с 1997 года. Хотя все они возникли до публикации Манифеста гибкой методологии разработки программного обеспечения, теперь они все вместе называются гибкими методами разработки программного обеспечения.
В феврале 2001 года в штате Юта США был выпущен «Манифест гибкой разработки программного обеспечения». Он являлся альтернативой управляемым документацией «тяжеловесным» практикам разработки программного обеспечения, таким как «метод водопада», являвшимся золотым стандартом разработки в то время. Данный манифест был одобрен и подписан представителями методологий: экстремального программирования, Crystal Clear, DSDM, Feature driven development, Scrum, Adaptive software development, Pragmatic Programming. Гибкая методология разработки использовалась многими компаниями и до принятия манифеста, однако вхождение Agile-разработки в массы произошло именно после этого события.
Agile — семейство процессов разработки, а не единственный подход в разработке программного обеспечения, и определяется Agile Manifesto. Agile не включает практики, а определяет ценности и принципы, которыми руководствуются команды.
Agile Manifesto разработан и принят 11—13 февраля 2001 года на лыжном курорте The Lodge at Snowbird в горах Юты. Agile Manifesto содержит 4 основные идеи и 12 принципов. Примечательно, что Agile Manifesto не содержит практических советов.
Один из повторяющихся пунктов критики: при agile-подходе часто пренебрегают созданием плана («дорожной карты») развития продукта, равно как и управлением требованиями, в процессе которого и формируется такая «карта». Гибкий подход к управлению требованиями не подразумевает далеко идущих планов (по сути, управления требованиями просто не существует в данной методологии), а подразумевает возможность заказчика вдруг и неожиданно в конце каждой итерации выставлять новые требования, часто противоречащие архитектуре уже созданного и поставляемого продукта. Такое иногда приводит к катастрофическим «авралам» с массовым рефакторингом и переделками практически на каждой очередной итерации.
Кроме того, считается, что работа в agile мотивирует разработчиков решать все поступившие задачи простейшим и быстрейшим возможным способом, при этом зачастую не обращая внимания на правильность кода с точки зрения требований нижележащей платформы (подход «работает — и ладно»), при этом не учитывается, что код может перестать работать при дальнейшем изменении. Это приводит к снижению качества продукта и накоплению дефектов (см. «технический долг»).
Существуют методологии, которые придерживаются ценностей и принципов заявленных в Agile Manifesto, некоторые из них:
- Scrum;
- Extreme Programming (XP);
- Lean Development (LD);
- Feature Driven Development (FDD);
- Dynamic Systems Development Method (DSDM);
- Crystal Clear.