Концепция: Итерация
В этом разделе обсуждается концепция итерации и ее применение в разработке программного обеспечения.
Взаимосвязи
Связанные элементы
Основное описание

Что такое итерация?

Итерация представляет собой совокупность операций, в результате которой создаются выпуск продукта: стабильная исполняемая версия вместе со вспомогательными элементами, необходимыми для работы с ним. Таким образом, итерацию можно рассматривать в качестве одного полного прохода по всем дисциплинам, как минимум, включая управление требованиями, анализ и проектирование, реализация и тестирование. Итерацию можно сравнить с небольшим проектом водопадной модели. Обратите внимание на то, что критерии оценки устанавливаются отдельно для каждой итерации при ее планировании. У выпуска будет запланированный набор функций, который можно будет продемонстрировать. Продолжительность итерации зависит от масштабов и характера проекта, но в большинстве случаев в каждой итерации выполняется несколько компиляций продукта, согласно плану компоновки интеграции для конкретной итерации. Такой подход - следствие применение принципа непрерывной интеграции, рекомендованного в Rational Unified Process (RUP): по мере готовности автономно тестируемые компоненты интегрируются в систему, а затем система компонуется и тестируется на предмет правильности интеграции. При таком подходе набор функций интегрированного продукта расширяется по мере выполнения итерации и постепенно приближается к задачам, поставленным на этапе планирования итерации. Каждую компиляцию можно считать миниатюрной итерацией за той лишь разницей, что итерации требуют другого планирования и формальной оценки результатов. В некоторых проектах целесообразно компилировать продукт каждый день, однако такие компиляции нельзя назвать итерациями в определении RUP, если только это не миниатюрный проект, выполняемый одним программистом. Даже в малых проектах, над которыми работают несколько разработчиков (например, 5 программистов пишут 10000 строк кода), очень сложно реализовать итерации длительностью менее недели. Причины этого изложены в разделе Рекомендация: план разработки программного обеспечения.

Зачем нужны итерации?

Раньше большинство проектов сводилось к однократному последовательному выполнению всех предусмотренных дисциплин. Такой жизненный цикл называется водопадным:

Диаграмма, на которой показана итерация, простирающаяся от создания модели до развертывания продукта

Для такого подхода характерно накапливание огромного количества недоработок в сфере интеграции к концу цикла реализации, когда продукт впервые компилируется и начинается его тестирование. Всплывают ошибки, не замеченные на этапах анализа, проектирования и реализации, и проект практически останавливается на длительное время, в течение которого будут исправляться ошибки.

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

На диаграмме 3 показаны несколько последовательных итераций, простирающихся от разработки модели до развертывания.

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

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

Диаграмма, описанная в тексте.

Эволюция информационного наполнения на различных этапах разработки.

Малая веха

Каждая итерация завершается малой вехой, в которой проверяется соответствие результата выполнения итерации критериям оценки, установленным для данной конкретной итерации.