Спиральная модель также является одной из итеративных моделей разработки.
Впервые спиральную модель описал Барри Боэм (Barry Boehm) в своей статье 1986 года. Течение процесс изображает спираль. Первый виток (повторение) может быть, например, связан с исследованиями осуществимости системы, второй – с описанием требований, следующий – с планированием и т.д. Несколько витков в основном связаны с реализацией программного обеспечения, причем его создание происходит поэтапно (инкрементально). Однако, конечно, не следует уравнивать витки спирали с обычными фазами процесса разработки. Каждый виток разделен от 3 до 6 секторов (разные авторы делят по-разному). Каждый виток начинается планированием ближайших задач и оценкой рисков и заканчивается так называемым клиентом, то есть задача должна быть выполнена и протестирована. Трудоемкость секторов не должна быть одинаковой. По Боэму имеется 4 сектора (см. также рисунок 1-3):
1. Постановка задач (Objective setting) – определяются цели этой фазы, то есть витка, ограничения процесса, результаты, план управления, потенциальные риски и альтернативные стратегии, исходя из рисков.
2. Оценивание и сокращение рисков (Risk assessment and reduction) – для каждого найденного риска делается анализ, предпринимаются некоторые действия для сокращения рисков (например, риск, чьи требования не являются адекватными: изготавливается прототип).
3. Разработка и проверка достоверности (Development and validation) – выбирается модель разработки, исходящая из оцененных рисков (модель должна быть такой, чтобы помочь снизить риски). Например, если в пользовательском интерфейсе имеется самый большой риск, то тогда может помочь прототипирование.
4. Планирования (Planning) – проект рассматривается и делается решение о том, переходить ли на следующий виток, если решают продолжить, делается план для следующей фазы.
Пример спиральной модели изображен на рисунке 1-3. Реальный процесс разработки может видоизменяться в числе вариаций, так и в части расположения видов деятельностей.
Рисунок 1-3. Спиральная модель (Boehm 1988) (Источник: слайды I. Sommerville “Software Engineering”)Наиболее важным отличием этой модели от других является учет рисков. Риск – это вероятность того, что что-то может пойти не так. Из-за материализации рисков превышаются сроки, и происходит перерасход средств, поэтому необходимо учитывать риски и принимать меры по их смягчению. По Соммервиллю точно такую модель используют редко, но она помогла понять природу итеративной разработки, и направила внимание на необходимость учета рисков.