Главное
Iteration – повторение. Итеративный подход — выполнение всех типов работ параллельно в ходе фиксированных коротких интервалов времени – итераций. При создании ПО в ходе итерации одновременно идут:- уточнение требований,
- разработка ПО и его интеграция,
- тестирование (или сначала подготовка к нему).
Часто противопоставляется водопадному процессу (каскадному, waterfall).
Каждую итерацию можно считать мини-проектом, в конце которого нужно получить готовый результат.
Популярные итеративные подходы
- Scrum (официальный сайт). Итерация называется Sprint
- Extreme Programming (официальный сайт)
- Rational Unified Process
Длина итерации
- Scrum – спринт 1 месяц или меньше. Стабильная длительность.
- Extreme Programming – итерация от 1 до 3 недель, длина фиксируется на весь проект.
- Rational Unified Process
При большей длительности итерации:
- цель может потерять актуальность,
- повышается комплексность: связанные работы, дефекты, интеграции, недоработки;
- возрастают риски/неопределенности. (См. также "Конус неопределенности при оценке и планировании".)
Преимущества итеративного подхода
- При правильном использовании позволяет применять подход Risks first (Fail fast), в ходе которого критические риски проверяются на ранних итерациях, и это приводит к снижению рисков, а значит и затрат на их митигацию и устранение. Риски сделать не то или не так ограничиваются стоимостью и трудозатратами одной итерации.
- Частое получение обратной связи от заказчиков и других заинетресованных лиц. Проверка того, что создается именно то, что нужно. Нивелирование симптомов "Я точно знаю, чего хочу... Ой, нет, не этого" и "Да, это то, что написано в ТЗ, но не то, что мне нужно". Повышаются шансы создать продукт, нужный клиентам/пользователям (CustDev).
- Возможность изменения приоритетов (последовательности реализации) каждую итерацию. Проще адаптация к изменениям планов, решений, требований, технологий.
- Возможна фокусировка на самом важном аспекте проекта в каждой итерации.
- Непрерывное тестирование всех видов: и локальное, и интеграционное, и пользовательское, и др.
- Как следствие – повышение качества в целом.
- Более равномерная загрузка участников проекта.
- Стабильная мотивация, потому что окончание каждой итерации = маленький deadline.
- Применение опыта предыдущих циклов. Результаты предыдущих итераций становятся основой для оценки и планирования следующих итераций. Опора на фактическую информацию повышает точность.
- Тредозатраты равномернее распределяются по всему проекту.
- Проще понимать текущий статус проекта, особенно если процесс итеративный и инкрементальный.
Ограничения итеративного подхода
- Бывает сложно преодолеть барьер: "Да разве можно начитать разработку – еще ведь не все продумано и понятно."
- Подходит не для всех отраслей.
- Требовательнее к составу команды и компетенциям участников.
- Больше подходит для проектных организацонных структур. Возможны трудности с назначением сотрудников в функциональных организационных структурах.
Читайте также:
- Спринт в Скраме
- Водопадный процесс (каскадный, waterfall)
- Конус неопределенности при оценке и планировании
- Цикл PDSA/PDCA
Эту тему мы подробно обсуждаем с группой на курсе "Основы Agile и Scrum". Полный список курсов и воркшопов читайте здесь.