— Итеративность — проект разделен на итерации (спирали), каждая из которых состоит из определения целей, анализа рисков, разработки и тестирования.
— Управление рисками — особое внимание уделяют анализу рисков на ранних этапах каждой итерации. Это позволяет предотвратить или минимизировать влияние рисков на проект.
— Гибкость — изменения можно вносить на любом этапе разработки.
— Прототипирование — создание схематичных образов будущих компонентов системы, что сокращает неопределенности и позволяет проверить концепции до их реализации.
— Эффективное управление рисками — проблемы выявляют на ранних этапах, что снижает риски для проекта.
— Гибкость в изменениях — подход позволяет быстрее и эффективнее адаптироваться под потребности заказчиков.
— Подходит для больших и сложных проектов, где трудно определить все требования заранее.
— Инкрементальная доставка — получая конечный продукт по частям, заказчик может на ранних стадиях проекта использовать их и оценить удовлетворенность.
— Сложность управления — большое количество этапов и итераций затрудняет управление проектом.
— Высокая стоимость — анализ рисков и прототипирование с каждой итерацией увеличивают стоимость проекта.
— Требуется опыт — сложно качественно руководить проектом без опыта в управлении рисками и проектами.
— Определение целей — происходит сбор требований и определение целей спирали (инкремента).
— Анализ рисков — выполняется идентификация, анализ и разработка стратегий для минимизации рисков в этой итерации.
— Реализация и тестирование — разработка, а затем тестирование прототипа или части продукта на основе анализа рисков и требований.
— Планирование следующей итерации — оценка результатов текущей итерации и планирование следующих шагов для реализации проекта.
6.2.3. V — Model
V — Model — расширение Waterfall модели с акцентом на важности тестирования в каждом этапе разработки. Модель подходит для проектов, в которых требования ясны с самого начала и маловероятно будут меняться. Наиболее полезна в областях с высокими требованиями к надежности и безопасности, например авиационная и автомобильная промышленности, где тестирование на каждом этапе разработки особенно необходимо.
— Симметричность — каждому этапу разработки на левой стороне «V» соответствует этап тестирования на правой стороне. Это делает модель и ее акцент понятными.
— Раннее включение тестирования — тестирование стартует с ранних этапов разработки.
— Четкая структура — этапы выполняют последовательно с четко определенными входами и выходами.
— Улучшенное качество — благодаря раннему планированию и включению тестирования, а также четкому соответствию этапам разработки, возможно улучшить качество конечного продукта.
— Ясность процесса — простая и четкая структура, а также соответствие этапов разработки этапам тестирования обеспечивают прозрачность.
— Эффективное выявление ошибок — V — образность модели помогает обнаруживать и устранять ошибки на ранних этапах разработки.
— Негибкость — после старта проекта данная модель имеет ограниченную гибкость в плане изменения требований.
— Риск пропуска ошибок — пропущенные на этапе разработки ошибки могут остаться незамеченными до соответствующего этапа тестирования.
— Затраты на изменения — внесение изменений после начала процесса тестирования может быть дорогостоящим из — за необходимости возвращаться к предыдущим этапам разработки.
— Определение требований — установление функциональных и нефункциональных требований, которые необходимо реализовать.
— Системное проектирование — определение высокоуровневых абстракций, таких как технологии, которые будут использовать; архитектура системы и ее дизайн.
— Архитектурное проектирование — разработка модулей системы и архитектуры компонентов, включая способы взаимодействия.
— Модульное проектирование — более глубокое и подробное проектирование отдельных модулей системы и компонентов.
— Реализация — разработка системы по созданным ранее абстракциям архитектурного и модульного проектирования.
— Модульное тестирование — проверка того, что отдельные модули соответствуют ранее разработанному дизайну и требованиям.
— Интеграционное тестирование — проверка взаимодействия между компонентами и модулями системы.
— Системное тестирование — проверка системы целиком на соответствие требованиям.
— Приемочное тестирование — включает в себя валидацию готового проекта и проверку готовности для работы с конечными пользователями.
6.2.4. Iterative and Incremental Development