Блог SkillsCup.com

Сленг: Итеративный процесс

Главное

Iteration – повторение. Итеративный подход — выполнение всех типов работ параллельно в ходе фиксированных коротких интервалов времени – итераций. При создании ПО в ходе итерации одновременно идут:
  • уточнение требований,
  • разработка ПО и его интеграция,
  • тестирование (или сначала подготовка к нему).

Часто противопоставляется водопадному процессу (каскадному, waterfall).
Каждую итерацию можно считать мини-проектом, в конце которого нужно получить готовый результат.

Популярные итеративные подходы

  1. Scrum (официальный сайт). Итерация называется Sprint
  2. Extreme Programming (официальный сайт)
  3. Rational Unified Process

Длина итерации

  1. Scrum – спринт 1 месяц или меньше. Стабильная длительность.
  2. Extreme Programming – итерация от 1 до 3 недель, длина фиксируется на весь проект.
  3. Rational Unified Process

При большей длительности итерации:
  • цель может потерять актуальность,
  • повышается комплексность: связанные работы, дефекты, интеграции, недоработки;
  • возрастают риски/неопределенности. (См. также "Конус неопределенности при оценке и планировании".)

Преимущества итеративного подхода

  1. При правильном использовании позволяет применять подход Risks first (Fail fast), в ходе которого критические риски проверяются на ранних итерациях, и это приводит к снижению рисков, а значит и затрат на их митигацию и устранение. Риски сделать не то или не так ограничиваются стоимостью и трудозатратами одной итерации.
  2. Частое получение обратной связи от заказчиков и других заинетресованных лиц. Проверка того, что создается именно то, что нужно. Нивелирование симптомов "Я точно знаю, чего хочу... Ой, нет, не этого" и "Да, это то, что написано в ТЗ, но не то, что мне нужно". Повышаются шансы создать продукт, нужный клиентам/пользователям (CustDev).
  3. Возможность изменения приоритетов (последовательности реализации) каждую итерацию. Проще адаптация к изменениям планов, решений, требований, технологий.
  4. Возможна фокусировка на самом важном аспекте проекта в каждой итерации.
  5. Непрерывное тестирование всех видов: и локальное, и интеграционное, и пользовательское, и др.
  6. Как следствие – повышение качества в целом.
  7. Более равномерная загрузка участников проекта.
  8. Стабильная мотивация, потому что окончание каждой итерации = маленький deadline.
  9. Применение опыта предыдущих циклов. Результаты предыдущих итераций становятся основой для оценки и планирования следующих итераций. Опора на фактическую информацию повышает точность.
  10. Тредозатраты равномернее распределяются по всему проекту.
  11. Проще понимать текущий статус проекта, особенно если процесс итеративный и инкрементальный.

Ограничения итеративного подхода

  1. Бывает сложно преодолеть барьер: "Да разве можно начитать разработку – еще ведь не все продумано и понятно."
  2. Подходит не для всех отраслей.
  3. Требовательнее к составу команды и компетенциям участников.
  4. Больше подходит для проектных организацонных структур. Возможны трудности с назначением сотрудников в функциональных организационных структурах.

Читайте также:

Эту тему мы подробно обсуждаем с группой на курсе "Основы Agile и Scrum". Полный список курсов и воркшопов читайте здесь
Agile