Руководство по Agile · Agile за пределами разработки ПО
Как работает Agile-разработка ПО: практики и лучшие практики
Именно с разработки ПО начался Agile. Команды поставляют работающее ПО короткими итерациями, опираясь на инженерные практики, которые поддерживают высокое качество при меняющихся требованиях.
Главное
- Agile-команды разработки поставляют работающее ПО короткими итерациями.
- TDD, CI/CD, ревью кода и рефакторинг поддерживают высокое качество в условиях изменений.
- DevOps распространяет Agile на выпуск и эксплуатацию.
Цикл разработки
- Владелец продукта упорядочивает бэклог пользовательских историй.
- В Планирование спринтаразработчики выбирают истории и разбивают их на задачи.
- Разработчики пишут код и автоматизированные тесты вместе.
- Код проходит ревью и часто сливается в общую основную ветку.
- Непрерывная интеграция автоматически собирает и тестирует каждое изменение.
- Готовые истории демонстрируются на обзоре спринта и выпускаются — иногда много раз в день.
См. жизненный цикл 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-разработке ПО?
Достаточно небольшой, чтобы её можно было закончить за несколько дней, а значит, создать, протестировать и интегрировать в рамках спринта. См. пользовательских историй.