Спиральная модель жизненного цикла разработки ПО
Модель отображает базовую концепцию, которая заключается в том, что каждый цикл представляет собой набор операций, которому соответствует такое же количество стадий, как и в модели каскадного процесса. Причем принимается во внимание каждая составляющая часть продукта, и каждый уровень сложности, начиная с общей формулировки потребностей и заканчивая кодированием каждой отдельной программы.
Как показано на рис., в каждый квадрант модели входят целевые и вспомогательные действия.
• Определение целей, альтернативных вариантов и ограничений. Выполняется определение целей, таких как рабочая характеристика, выполняемые функции, возможность внесения изменений, решающих факторов достижения успеха и аппаратного/программного интерфейса. Определяются альтернативные способы реализации этой части продукта (конструирование, повторное использование, покупка, субдоговор и т.п.); определяются ограничения, налагаемые на применение альтернативных вариантов (затраты, график выполнения, интерфейс, ограничения, относящиеся к среде и др.). Создается документация, подтверждающая риски, связанные с недостатком опыта в данной сфере, применением новой технологии, жесткими графиками, плохо организованными процессами и т.д.
• Оценка альтернативных вариантов, идентификация и разрешение рисков. Выполняется оценка альтернативных вариантов, относящихся к целям и ограничениям; выполняется определение и разрешение рисков (менеджмент рисков, методика экономически выгодного выбора источников разрешения, оценка остальных связанных с риском ситуаций, когда деньги могут быть потеряны из-за продолжения разработки системы (решения о прекращении/продолжении работ над проектом и т.п.);
• Разработка продукта следующего уровня. Типичные действия, выполняемые в этом квадранте, могут включать в себя создание проекта, критический анализ проекта, разработку кода, проверку кода, тестирование и компоновку продукта. Первая создаваемая версия продукта основывается на том, что попадает в поле зрения заказчика. Затем начинается фаза планирования: программа возвращается в исходное состояние с целью учета реакции клиента. Каждая последующая версия более точно воплощает требования заказчика. Степень вносимых изменений от одной версии программы к следующей уменьшается с каждой новой версией, что в конечном счете приводит к получению функциональной системы;
• Планирование следующей фазы. Типичные действия в этом квадранте могут включать в себя разработку плана проекта, разработку плана менеджмента конфигурации, разработку плана тестирования и разработку плана установки программного продукта.
Для каждой итерации следует определить цели, альтернативные варианты и ограничения; установить и разрешить риски; дать оценку альтернативным вариантам; разработать результативные данные для этой итерации и подтвердить их правильность; спланировать следующую итерацию. Затем следует выбрать метод осуществления следующей итерации в случае, если требуется ее выполнять.
В квадрантах отсутствует заданное количество циклов. Их количество нужно выбрать по необходимости, а итерации можно адаптировать под определенный проект.
Следует отметить тот факт, что кодирование выполняется значительно позже, чем в других моделях. Смысл заключается в том, чтобы минимизировать риск посредством последовательных уточнений требований, выдвигаемых пользователем. В каждом «мини-проекте» (движении по спирали) рассматривается один или несколько главных факторов риска, начиная с фактора наивысшего риска. Типичные риски включают в себя неправильно истолкованные требования, архитектуру, потенциальные проблемы, связанные с эксплуатацией продукта, проблемы в базовой технологии и т.д. Первая версия и первоначальная пригодность для эксплуатации (Initial operational capability, IOC) – это первый шанс заказчика на тестирование системы, после чего следует другой набор действий по планированию, приводящих к началу следующей итерации. Важно также отметить, что эта модель не использует традиционных структурных методов – эти методы появляются в конце (т.е. во внешнем цикле) спирали. Версия, получаемая в результате проведения пользователями приемочных испытаний, сдается перед наступлением стадии конечной пригодности для эксплуатации (Final operational capability, FOC), т.е. точно так же, как это происходит в каскадной модели.
Поскольку спиральная модель была разработана с большей тщательностью, чем другие методики, в разработке по принципу спирали особое внимание уделено оценке альтернативных вариантов и оценке рисков. Критический анализ, осуществляемый в конце каждой фазы, обеспечивает переход к следующей фазе или в случае необходимости определяет потребность в повторном выполнении каждой фазы. Преимущества спиральной модели заключаются в том, что в ней особое внимание уделяется таким процедурам, как анализ рисков, а также в возможности адаптировать ее к различным принципам построения жизненного цикла. Если спиральная модель применяется при демонстрациях, определении базовой линии и менеджменте конфигурации, можно добиться непрерывного участия клиентов в процессе разработки и обеспечить упорядочение процесса выполнения.
Преимущества спиральной модели
При использовании спиральной модели при выполнении проекта, для которого она в достаточной мере подходит, проявляются следующие преимущества:
• Спиральная модель разрешает пользователям «увидеть» систему на ранних этапах, что обеспечивается посредством использования ускоренного прототипирования в жизненном цикле разработки ПО
• Обеспечивается определение непреодолимых рисков без особых дополнительных затрат
• Эта модель разрешает пользователям активно принимать участие при планировании, анализе рисков, разработке, а также при выполнении оценочных действий
• Она обеспечивает разбиение большого потенциального объема работы по разработке продукта на небольшие части, в которых сначала реализуются решающие функции с высокой степенью риска, позволяющие устранить необходимость продолжения работ над проектом (таким образом, в случае необходимости становится возможным прекратить работу над проектом и уменьшаются расходы);
• В модели предусмотрена возможность гибкого проектирования, поскольку в ней воплощены преимущества каскадной модели, и в то же время, разрешены итерации по всем фазам этой же модели;
• Реализованы преимущества инкрементной модели, а именно выпуск инкрементов, сокращение графика посредством перекрывания инкрементов, рассортированных по версиям, и неизменяемость ресурсов при постепенном росте системы;
• Здесь не ставится цель выполнить невозможное – довести конструкцию до совершенства
• Обратная связь по направлению от пользователей к разработчикам выполняется с высокой частотой и на ранних этапах модели, что обеспечивает создание нужного продукта высокого качества
• Происходит усовершенствование административного управления над процессом обеспечения качества, правильностью выполнения процесса разработки, затратами, соблюдением графика и кадровым обеспечением, что достигается путем выполнения обзора в конце каждой итерации
• Повышается продуктивность благодаря применению пригодных для повторного использования свойств
• Повышается вероятность предсказуемого поведения системы с помощью уточнения поставленных целей
• При использовании спиральной модели не нужно распределять заранее все необходимые для выполнения проекта финансовые ресурсы
• Можно выполнять частую оценку совокупных затрат, а уменьшение рисков связано с затратами
Недостатки спиральной модели
При использовании спиральной модели относительно проекта, для которого она не подходит в достаточной мере, проявляются следующие недостатки.
• Если проект имеет низкую степень риска или небольшие размеры, модель может оказаться дорогостоящей. Оценка рисков после прохождения каждой спирали связана с большими затратами
• Модель имеет усложненную структуру, поэтому может быть затруднено ее применение разработчиками, менеджерами и заказчиками
• Серьезная нужда в высокопрофессиональных знаниях для оценки рисков
• Спираль может продолжаться до бесконечности, поскольку каждая ответная реакция заказчика на созданную версию может порождать новый цикл, что отдаляет окончание работы над проектом (принятие общего решения о прекращении процесса разработки)
• Большое количество промежуточных стадий может привести к необходимости в обработке внутренней дополнительной и внешней документации
• Использование модели может оказаться дорогостоящим и даже недопустимым по средствам, так как время, затраченное на планирование, повторное определение целей, выполнение анализа рисков и прототипирование, может быть чрезмерным
• При выполнении действий на этапе вне процесса разработки возникает необходимость в переназначении разработчиков
• Могут возникнуть затруднения при определении целей и стадий, указывающих на готовность продолжать процесс разработки на следующей итерации
• Отсутствие хорошего средства или метода прототипирования может сделать использование модели неудобным
• В производстве использование спиральной модели еще не получило такого широкого масштаба, как применение других моделей
Некоторые пользователи этого метода разработали упрощенную версию
Область применения спиральной модели
Менеджер проекта может быть уверен в целесообразности применения спиральной модели, если для этого существует хотя бы одна из следующего перечня причин:
• Когда создание прототипа представляет собой подходящий тип разработки продукта
• Когда важно сообщить, каким образом будет происходить увеличение затрат, и подсчитать затраты, связанные с выполнением действий из квадранта риска
• Когда организация обладает навыками, требуемыми для адаптации модели
• Для проектов, выполнение которых сопряжено со средней и высокой степенью риска
• Когда нет смысла браться за выполнение долгосрочного проекта из-за потенциальных изменений, которые могут произойти в экономических приоритетах, и когда такая неопределенность может вызвать ограничение во времени
• Когда речь идет о применении новой технологии, и когда необходимо протестировать базовые концепции
• Когда пользователи не уверены в своих потребностях
• Когда требования слишком сложные
• При разработке новой функции или новой серии продуктов
• Когда ожидаются существенные изменения, например, при изучении или исследовательской работе
• Когда важно сконцентрировать внимание на неизменяемых или известных частях, причем сбор информации об изменяющихся частях еще не закончен
• В случае больших проектов
• Для организаций, которые не могут себе позволить выделить заранее все необходимые для выполнения проекта денежные средства, и когда в процессе разработки отсутствует финансовая поддержка
• При выполнении затянувшихся проектов, которые могут вызывать раздражение у менеджеров и заказчиков
• Когда преимущества разработки невозможно точно определить, а достижение успеха не гарантировано
• С целью демонстрации качества и достижения целей за короткий период времени
• Когда в процесс вовлекаются новые технологии, такие как впервые применяемые объектно-ориентированные принципы
• При разработке систем, требующих большого объема вычислений, таких как системы, обеспечивающие принятие решений
• При выполнении бизнес-проектов, а также проектов в области аэрокосмической промышленности, обороны и инжиниринга, где использование спиральной модели уже получило популярность