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