Neural Project InstituteСертификация по управлению проектами для эпохи ИИ

Руководство по Agile · Agile за пределами разработки ПО

Как работает Agile-разработка ПО: практики и лучшие практики

Именно с разработки ПО начался Agile. Команды поставляют работающее ПО короткими итерациями, опираясь на инженерные практики, которые поддерживают высокое качество при меняющихся требованиях.

Главное

  • Agile-команды разработки поставляют работающее ПО короткими итерациями.
  • TDD, CI/CD, ревью кода и рефакторинг поддерживают высокое качество в условиях изменений.
  • DevOps распространяет Agile на выпуск и эксплуатацию.

Цикл разработки

  1. Владелец продукта упорядочивает бэклог пользовательских историй.
  2. В Планирование спринтаразработчики выбирают истории и разбивают их на задачи.
  3. Разработчики пишут код и автоматизированные тесты вместе.
  4. Код проходит ревью и часто сливается в общую основную ветку.
  5. Непрерывная интеграция автоматически собирает и тестирует каждое изменение.
  6. Готовые истории демонстрируются на обзоре спринта и выпускаются — иногда много раз в день.

См. жизненный цикл Agile-разработки , где описан процесс в целом.

Основные инженерные практики

ПрактикаЧто этоПочему это важно
Разработка через тестирование (TDD)Написать падающий тест, затем код, который его проходит, затем провести рефакторингМеньше дефектов, лучше архитектура
Непрерывная интеграция (CI)Сливать и тестировать код как минимум ежедневноПроблемы интеграции обнаруживаются рано
Непрерывная поставка (CD)Поддерживать ПО в постоянной готовности к релизу; автоматизировать развёртываниеБыстрые релизы с низким риском
Парное программированиеДва разработчика делят одну задачуКачество и обмен знаниями
Ревью кодаДругой разработчик проверяет каждое изменениеКачество и коллективное владение
РефакторингУлучшать структуру кода без изменения поведенияСохраняет код легко изменяемым
Разработка на основе магистрали (trunk-based)Короткоживущие ветки быстро сливаютсяИзбавляет от болезненных слияний

Agile и DevOps

DevOps распространяет Agile за пределы разработки — на эксплуатацию: команды владеют своим ПО в промышленной среде, автоматизируют инфраструктуру, отслеживают реальное использование и быстро восстанавливаются после сбоев. Широко используемые показатели DevOps — частота развёртываний, время выполнения изменений, доля неудачных изменений и время восстановления сервиса.

Рекомендации

  • Делайте истории достаточно небольшими, чтобы их можно было закончить за несколько дней.
  • Добавьте к критериям готовности (Definition of Done) требование об автоматизированных тестах.
  • Постоянно погашайте технический долг; резервируйте мощность в каждом спринте.
  • Автоматизируйте сборки, тесты и развёртывания.
  • Выпускайте небольшие изменения часто, используя флаги функций (feature flags), чтобы отделить развёртывание от релиза.
  • Вовлекайте пользователей рано и измеряйте реальное использование после релиза.
  • Проводите разборы инцидентов без поиска виноватых.

Бесплатные шаблоны по этой теме

Все шаблоны

Частые вопросы

В чём разница между Agile-разработкой ПО и DevOps?

Agile сосредоточен на том, как команды итеративно планируют и создают ПО; DevOps распространяет это сотрудничество и автоматизацию на выпуск и эксплуатацию ПО.

Нужна ли документация в Agile-разработке ПО?

Да: в объёме, достаточном, чтобы помочь пользователям и будущим разработчикам, — понятный код, автоматизированные тесты, документация API и краткие записи о решениях.

Что такое Agile-разработка ПО?

Создание ПО короткими итерациями небольшими кросс-функциональными командами с частой интеграцией, тестированием и выпуском, а также регулярной обратной связью от пользователей.

Что такое разработка через тестирование в Agile-разработке ПО?

Сначала пишется падающий автоматизированный тест, затем код, который его проходит, затем проводится рефакторинг. Это ведёт к меньшему числу дефектов и лучшей архитектуре.

Что такое непрерывная интеграция в Agile-разработке ПО?

Слияние и тестирование изменений кода как минимум ежедневно с автоматизированными сборками и тестами, чтобы проблемы интеграции обнаруживались рано.

В чём разница между непрерывной интеграцией и непрерывной поставкой в Agile-разработке ПО?

Непрерывная интеграция часто сливает и тестирует изменения; непрерывная поставка поддерживает ПО в постоянной готовности к релизу с автоматизированным развёртыванием.

Что такое парное программирование в Agile-разработке ПО?

Два разработчика работают над одной задачей за одним экраном, повышая качество и распространяя знания.

Что такое разработка на основе магистрали в Agile-разработке ПО?

Практика, при которой разработчики используют короткоживущие ветки и часто сливают их в основную ветку, избегая болезненных слияний.

Что такое рефакторинг в Agile-разработке ПО?

Улучшение структуры кода без изменения его поведения, чтобы его по-прежнему было легко менять.

Что такое технический долг в Agile-разработке ПО?

Будущая цена срезания углов в коде или проектировании. Если им не управлять, он замедляет команды и может проявляться в падении скорости.

Каким должен быть размер пользовательской истории в Agile-разработке ПО?

Достаточно небольшой, чтобы её можно было закончить за несколько дней, а значит, создать, протестировать и интегрировать в рамках спринта. См. пользовательских историй.