Суть эволюционной модели состоит в том, что многие стадии повторяются неоднократно. Так, после анализа требований производится разработка некоторого прототипа, удовлетворяющего этим требованиям. После этого прототип может быть показан пользователям. Далее – уточнение требований и вновь проектирование, реализация, отладка и тестирование. В результате нескольких повторений этого процесса на выходе получается продукт, удовлетворяющий пожеланиям пользователей. Заметим, что вместе с продуктом развивается и документация к нему.
Недостатки эволюционного подхода в плохой структурированности системы, отсутствия внятного подробного проекта на начальных этапах, необходимости в средствах быстрой разработки. Соответственно, подход хорошо подходит для малых и средних проектов.
Итерационный подход
Часто подходы, перечисленные ранее, используется в совокупности. В том смысле, что на некоторых стадиях при их детализации можно пользоваться как каскадной, так и эволюционной моделью. Полезность этого обусловлена реальными условиями, в которых, в частности, требования почти всегда меняются в ходе разработки. Соответственно, необходимо иметь возможность адекватно реагировать, а именно, выполнять новую итерацию, заново проходя все или почти все этапы с целью создания того, что будет удовлетворять пожеланиям пользователя.
Рассмотрим две популярные гибридные модели, использующих различные особенности перечисленных выше моделей, и основанные на итерациях.
Модель пошаговой разработки
Модель пошаговой разработки (Миллс) состоит в выполнении стандартных шагов. В итоге каждого шага – работающий прототип. Требования фиксированы во время шага. Для шага можно применять каскадную или эволюционную модель.
Особенность состоит в том, что наиболее важные для заказчика компоненты разрабатываются в самом начале, в результате чего он может оценить, насколько конечный продукт будет соответствовать его потребностям, и при необходимости внести коррективы.
Одно из ответвлений – Экстремальное программирование.