Agile — это термин, используемый для описания подхода к разработке программного обеспечения, который акцентирует внимание на постепенной доставке, командной работе, непрерывном планировании и непрерывном обучении, а не на попытке доставить всё сразу в конце.
Agile делает акцент на поддержании процесса в лёгкой форме и создании минимально жизнеспособного продукта (MVP), проходя через множество итераций, пока не появится конечный результат. Обратная связь непрерывно собирается и внедряется. Короче говоря, это более динамичный процесс, в котором все работают к общей цели.

Разработка программного обеспечения по методологии Agile
Scrum и другие ведущие методы Agile
Agile — это установка — совокупность ценностей и принципов. Это способ мышления и действия. Agile означает короткие циклы, итеративную и поэтапную доставку, быстрое проваление, сбор обратной связи, быструю доставку бизнес-ценности и фокус на людях, сотрудничестве и взаимодействии. Agile — это установка прозрачности, проверки и адаптации. Однако Agile не включает в себя никакиероли, события илиартефакты. Это установка. Например, Scrum — один из широко используемых фреймворков в рамках Agile, помогающий стать более гибким. Однако движение Agile включает в себя множество других фреймворков, таких как Kanban, XP, Crystal и другие, как показано ниже:

Scrum в рамках Agile
Scrum
Scrum — это фреймворк, который люди используют для решения сложных адаптивных задач, одновременно эффективно и креативно доставляя продукты высокой ценности. Он используется для управления проектами разработки программного обеспечения и разработки продуктов или приложений. Его фокус — на адаптивных стратегиях разработки продуктов, при которых межфункциональные команды работают вместе, чтобы достичь общей цели за 2–4 недели (спринт). Он состоит из серии ценностей, артефактов, ролей, церемоний, правил и лучших практик.
Lean
Lean возникло из системы производства Тойота (TPS), которая революционизировала производство физических товаров в 1950-х, 1960-х и последующие годы. Хотя Lean сохранило своё положение в производстве, оно также нашло новые применения в работе с знаниями, помогая компаниям во всех отраслях **устранять потери, улучшать процессы и способствовать инновациям**. Разработка программного обеспечения — естественное применение методов Lean, поскольку, как и производство, она часто следует установленным процессам, имеет определённые критерии приемки и приводит к доставке осязаемой ценности. Ключевые концепции, руководящие всеми практиками Lean, известны как опорные столпы Lean. Они следующие:
- Непрерывное улучшение
- Уважение к людям
- Лёгкое лидерство
Kanban
Kanban — это высоко визуальный метод управления рабочими процессами, широко используемый в командах Lean. Фактически 83% команд Lean-производства используют Kanban для визуализации и активного управления созданием продукта, делая акцент на непрерывной доставке без перегрузки команды разработки. Как и Scrum, Kanban — это процесс, предназначенный для более эффективного взаимодействия команд.
Kanban основан на трёх основных принципах:
- Визуализируйте свою работу сегодня (рабочий процесс): Просмотр всех элементов в контексте друг друга может дать богатую, содержательную информацию.
- Ограниченное количество работ в процессе (WIP): Это помогает сбалансировать подходы, основанные на потоке, чтобы команды не начинали и не брали на себя слишком много работы сразу.
- Улучшить процесс: Когда задача завершена, следующий по приоритету элемент в бэклоге активируется.
Канбан способствует непрерывному сотрудничеству, определяя оптимальный рабочий процесс команды и поощряя активное, непрерывное обучение и улучшение.
Метод динамической разработки систем (DSDM)
DSDM — это система, состоящая из восьми принципов, включая жизненный цикл и продукт, роли и обязанности, а также несколько лучших практик. Эти принципы поддерживают и обеспечивают раннюю доставку стратегически важных бизнес-преимуществ, тем самым обеспечивая наилучший возврат инвестиций (ROI) для организаций.
DSDM — это метод, который ставит планирование и качество выше функций. Он фиксирует стоимость, качество и сроки с самого начала и использует метод приоритизации MoSCoW для разделения требований к проекту на четыре типа:
- MДолжны иметь
- SДолжны иметь
- CМогли бы иметь
- WНе должны иметь
Восемь поддерживающих принципов DSDM Atern [13] направляют команды в отношении установок и мышления, которые им необходимо принять для последовательной доставки ценности.
- Фокус на потребности бизнеса
- Сдать вовремя
- Сотрудничать
- Никогда не жертвовать качеством
- Строить поэтапно на прочном фундаменте
- Итеративная разработка
- Непрерывная ясная коммуникация
- Демонстрировать контроль
Экстремальное программирование (XP)
Изначально описано Кентом Беком,Экстремальное программирование (XP) стало одним из самых популярных и спорных методов Agile. XP — это дисциплинированный подход к быстрой и непрерывной доставке высококачественного программного обеспечения. Он направлен на повышение качества программного обеспечения и реактивности на изменяющиеся потребности клиентов. Он поощряет высокое участие клиентов, быстрые циклы обратной связи, непрерывное тестирование, непрерывное планирование и тесное сотрудничество команды, обеспечивая поставку рабочего программного обеспечения на очень частых интервалах (обычно каждые 1–3 недели).
Название метода происходит от идеи взять полезные элементы из традиционных практик инженерии программного обеспечения и довести их до «экстремального» уровня. Например, проверка кода считается полезной практикой. В экстремальной форме код непрерывно проверяется с помощью практики парного программирования.
Оригинальная рамочная модель XP основана на четырех основных ценностях — простоте, коммуникации, обратной связи и смелости.
Она также включает двенадцать поддерживающих практик:
- Игра планирования
- Малые релизы
- Тесты приемки клиентом
- Простой дизайн
- Парное программирование
- Разработка, управляемая тестами
- Рефакторинг
- Непрерывная интеграция
- Общая ответственность за код
- Стандарты кодирования
- Метафора
- Устойчивое развитие

Экстремальное программирование
Разработка, управляемая функциями (FDD)
Разработка, управляемая функциями (FDD), была представлена Джеффом Де Лука в 1997 году в ходе проекта разработки программного обеспечения в крупном сингапурском банке. Это итеративный и поэтапный процесс разработки программного обеспечения, а также подход Agile к созданию программного обеспечения. FDD интегрирует многие широко признанные лучшие практики отрасли в единое целое. Эти практики основаны на перспективе ценности клиента — функциях. Основная цель — регулярно и вовремя предоставлять осязаемое, работающее программное обеспечение. Ключевое преимущество использования FDD заключается в том, что она может масштабироваться на большие команды благодаря концепции «достаточного проектирования» (JEDI). Благодаря своей функциональной ориентации FDD является отличным решением для поддержания контроля над Agile, поэтапными и по своей сути сложными проектами. Она состоит из пяти основных этапов:
- Разработать общую модель
- Создать список функций
- Планирование по функциям
- Проектирование по функциям
- Разработка по функциям

Разработка, управляемая функциями (FDD)
Каждый проект имеет свою уникальную модель, которая генерирует список функций. Последние три этапа — это короткие итерации, каждая из которых длится не более двух недель. Если задача занимает больше двух недель, она разбивается на более мелкие функции.
Кристалл
Методы Кристалл были разработаны Алистером Кокберном в середине 1990-х годов как серия подходов (семейство Кристалл). Эти методы основаны на многолетнем опыте обучения и интервью с командами. Исследование Кокберна показало, что команды, которых он интервьюировал, не следовали формальным методологиям, но всё же успешно завершали проекты. Семейство Кристалл — это способ Кокберна систематизировать то, что делали эти успешные команды. Методы Кристалл в первую очередь сосредоточены на:
- Люди
- Взаимодействие
- Общность
- Навык
- Талант
- Коммуникация
Манифест Агил
Термин «Агил» был придуман в Манифесте Агил 2001 года. Манифест направлен на установление принципов, направляющих лучшие практики разработки программного обеспечения. Манифест Агил состоит из четырех основных ценностей. Чтение Манифеста Агил не означает, что элементы справа не имеют ценности — напротив, Агил ценит элементы слева больше.

Манифест Агил
Теперь давайте рассмотрим первую строку Манифеста Агил. Эта строка гласит, что мы ценим людей, их взаимодействие, коммуникацию и сотрудничество больше, чем различные широкие процессы и инструменты. Конечно, процессы и инструменты ценны, но они становятся еще более ценными, когда действительно поддерживают людей, работающих вместе для создания продуктов высокого качества. То, что мы часто видим в многих организациях, — это то, что процессы и инструменты превращаются в цели сами по себе. С точки зрения Агил, мы смотрим на это иначе. Процессы и инструменты должны поддерживать людей, работающих вместе, для создания ценности для клиентов.
Принципы Агил
В дополнение к Манифесту Агил, Альянс Агил также определил набор из 12 принципов, которые предоставляют руководство и более подробные объяснения, выходящие за рамки манифеста:

Принципы Манифеста Агил
- Наши главные приоритеты — удовлетворение клиента за счет ранней и непрерывной доставки ценного программного обеспечения.
- Приветствуем изменение требований, даже на поздних этапах разработки. Агил-процессы используют изменения в интересах конкурентного преимущества клиента.
- Регулярно доставляйте рабочее программное обеспечение — от нескольких недель до нескольких месяцев, предпочтение отдавая более коротким срокам.
- Бизнес-представители и разработчики должны работать вместе ежедневно на протяжении всего проекта.
- Стройте проекты вокруг мотивированных людей. Обеспечьте им необходимую среду и поддержку, и доверьтесь им в выполнении задач.
- Наиболее эффективный способ передачи информации внутри команды разработки — личное общение.
- Рабочее программное обеспечение — это основной показатель прогресса.
- Агил-процессы способствуют устойчивой разработке. Спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп неограниченно долго.
- Непрерывное внимание к техническому превосходству и хорошему дизайну повышает гибкость.
- Простота — это искусство максимизации объема работы, которая не выполняется — является необходимой.
- Лучшие архитектуры, требования и проекты возникают из саморегулирующихся команд. Команды регулярно анализируют, как они могут стать более эффективными, и соответственно корректируют свое поведение.
Краткое содержание
Агил-разработка — популярный термин в индустрии разработки программного обеспечения — альтернативный способ управления проектами разработки программного обеспечения. Это не конкретная методология разработки программного обеспечения, а скорее совокупность методов и практик, основанных на ценностях и принципах, изложенных в Манифесте Агил. Решения развиваются благодаря сотрудничеству между саморегулирующимися межфункциональными командами, используя практики, соответствующие их контексту.