Спиральная модель - Spiral model

Спиральная модель (Бем, 1988). Ряд заблуждений возникает из-за чрезмерного упрощения этой широко распространенной диаграммы (на этой диаграмме есть некоторые ошибки).[1]
Разработка программного обеспечения
Активность ядер
Парадигмы и модели
Методологии и рамки
Вспомогательные дисциплины
Практики
Инструменты
Стандарты и свод знаний
Глоссарии
Контуры

В спиральная модель риск-ориентированный процесс разработки программного обеспечения модель. Основываясь на уникальных моделях рисков данного проекта, спиральная модель направляет команду к принятию элементов одной или нескольких моделей процессов, таких как добавочный, водопад, или же эволюционное прототипирование.

История

Эта модель была впервые описана Барри Бем в своей статье 1986 года «Спиральная модель разработки и улучшения программного обеспечения».[2] В 1988 г. Бем опубликовал аналогичную статью.[3] для более широкой аудитории. В этих статьях представлена ​​диаграмма, которая была воспроизведена во многих последующих публикациях, посвященных спиральной модели.

В этих ранних статьях используется термин «модель процесса» для обозначения спиральной модели, а также инкрементального, водопадного, прототипного и других подходов. Однако характерное для спиральной модели сочетание характеристик других моделей процессов с учетом рисков уже присутствует:

Управляемое [R] isk подмножество шагов спиральной модели позволяет модели приспособить любую подходящую смесь ориентированного на спецификации, ориентированного на прототип, ориентированного на моделирование, ориентированного на автоматическое преобразование или другого подхода к разработке программного обеспечения.[3]

В более поздних публикациях[1] Бем описывает спиральную модель как «генератор модели процесса», где выбор, основанный на рисках проекта, создает подходящую модель процесса для проекта. Таким образом, инкрементная, каскадная, прототипная и другие модели процессов являются частными случаями спиральной модели, которые соответствуют шаблонам рисков определенных проектов.

Бем также выявляет ряд заблуждений, возникающих из-за чрезмерного упрощения исходной диаграммы спиральной модели. Он говорит, что наиболее опасными из этих заблуждений являются:

  • что спираль - это просто последовательность ступеней водопада;
  • что все мероприятия проекта следуют единой спиральной последовательности;
  • что все действия, указанные на диаграмме, должны выполняться в указанном порядке.

Хотя эти заблуждения могут соответствовать шаблонам рисков для некоторых проектов, они неверны для большинства проектов.

В отчете Национального исследовательского совета[4] эта модель была расширена, чтобы включить риски, связанные с людьми-пользователями.

Чтобы лучше отличить их от «опасных спиральных двойников», Бем перечисляет шесть характеристик, общих для всех аутентичных применений спиральной модели.[нужна цитата ]

Шесть инвариантов спиральной модели

Аутентичные приложения спиральной модели управляются циклами, которые всегда отображают шесть характеристик. Бем иллюстрирует каждый пример «опасного двойника спирали», который нарушает инвариант.[1]

Одновременное определение артефактов

Последовательное определение ключевых артефактов для проекта часто увеличивает возможность разработки системы, отвечающей «условиям победы» заинтересованных сторон (целям и ограничениям).

Этот инвариант исключает «опасные спиральные похожие» процессы, которые используют последовательность последовательных переходов водопада в условиях, где не применяются базовые допущения модели водопада. Бем перечисляет эти предположения следующим образом:

  1. Требования известны до реализации.
  2. Требования не имеют нерешенных последствий с высоким риском, таких как риски, связанные с затратами, графиком, производительностью, безопасностью, пользовательскими интерфейсами, влиянием на организацию и т. Д.
  3. Природа требований не сильно изменится в процессе разработки или эволюции.
  4. Требования совместимы с ожиданиями всех основных заинтересованных сторон системы, включая пользователей, заказчиков, разработчиков, специалистов по обслуживанию и инвесторов.
  5. Правильная архитектура для реализации требований хорошо известна.
  6. Достаточно календарного времени, чтобы продолжить последовательно.

В ситуациях, когда эти предположения действительно применимы, существует риск проекта не указывать требования и не действовать последовательно. Таким образом, водопадная модель становится частным случаем спиральной модели с учетом рисков.

Выполняйте четыре основных действия в каждом цикле

Этот инвариант определяет четыре действия, которые должны происходить в каждом цикле спиральной модели:

  1. Учитывайте условия победы всех заинтересованных сторон, критически важных для успеха.
  2. Определите и оцените альтернативные подходы для удовлетворения условий победы.
  3. Выявление и устранение рисков, связанных с выбранным подходом (ами).
  4. Получите одобрение от всех заинтересованных сторон, имеющих решающее значение для успеха, а также обязательство продолжить следующий цикл.

Циклы проектов, в которых не учитываются или не учитываются какие-либо из этих действий, рискуют потратить впустую усилия, выбрав варианты, которые неприемлемы для основных заинтересованных сторон или являются слишком рискованными.

Некоторые «опасные спиралевидные» процессы нарушают этот инвариант, исключая ключевые заинтересованные стороны из определенных последовательных фаз или циклов. Например, обслуживающий персонал и администраторы системы могут быть не приглашены для участия в определении и разработке системы. В результате система рискует не выполнить их условия выигрыша.

Риск определяет уровень усилий

Для любой деятельности по проекту (например, анализа требований, проектирования, прототипирования, тестирования) команда проекта должна решить, сколько усилий будет достаточно. В подлинных циклах спирального процесса эти решения принимаются путем минимизации общего риска.

Например, дополнительные затраты времени на тестирование программного продукта часто снижают риск из-за того, что рынок отвергает некачественный продукт. Однако дополнительное время тестирования может увеличить риск из-за раннего выхода конкурента на рынок. С точки зрения спиральной модели, тестирование следует проводить до тех пор, пока общий риск не будет минимизирован, и не более того.[нужна цитата ]

«Опасные спиральные двойники», которые нарушают этот инвариант, включают эволюционные процессы, которые игнорируют риск из-за проблем с масштабируемостью, и дополнительные процессы, которые вкладывают значительные средства в техническую архитектуру, которая должна быть перепроектирована или заменена с учетом будущих приращений продукта.

Риск определяет степень детализации

Для любого артефакта проекта (например, спецификации требований, проектной документации, плана тестирования) команда проекта должна решить, насколько подробно будет достаточно. В подлинных циклах спирального процесса эти решения принимаются путем минимизации общего риска.

Рассматривая спецификацию требований в качестве примера, проект должен точно указать те функции, в которых риск снижается за счет точной спецификации (например, интерфейсы между аппаратным и программным обеспечением, интерфейсы между основным и субподрядчиками). И наоборот, в проекте не следует точно определять те функции, для которых точная спецификация увеличивает риск (например, макеты графических экранов, поведение стандартных компонентов).

Используйте контрольные точки точки привязки

Первоначальное описание спиральной модели Бемом не включало каких-либо этапов процесса. В более поздних уточнениях он вводит три точки привязки, которые служат индикаторами прогресса и точками приверженности. Эти вехи опорных точек можно охарактеризовать ключевыми вопросами.

  1. Цели жизненного цикла. Есть ли достаточное определение технического и управленческого подхода к удовлетворению условий победы каждого? Если заинтересованные стороны согласны с ответом «Да», значит, проект прошел этот этап LCO. В противном случае проект может быть прекращен, или заинтересованные стороны могут перейти к другому циклу, чтобы попытаться получить ответ «Да».
  2. Архитектура жизненного цикла. Есть ли достаточное определение предпочтительного подхода к удовлетворению условий победы каждого, и все ли существенные риски устранены или уменьшены? Если заинтересованные стороны согласны с ответом «Да», значит, проект прошел эту веху LCA. В противном случае проект может быть прекращен, или заинтересованные стороны могут перейти к другому циклу, чтобы попытаться получить ответ «Да».
  3. Первоначальная эксплуатационная способность. Достаточно ли подготовлено программное обеспечение, сайт, пользователи, операторы и специалисты по обслуживанию, чтобы удовлетворить все условия победы, запустив систему? Если заинтересованные стороны согласны с ответом «Да», значит, проект прошел контрольную точку МОК и запускается. В противном случае проект может быть прекращен, или заинтересованные стороны могут перейти к другому циклу, чтобы попытаться получить ответ «Да».

«Опасные спиральные двойники», которые нарушают этот инвариант, включают эволюционные и инкрементные процессы, которые выделяют значительные ресурсы на реализацию решения с плохо определенной архитектурой.[требуется разъяснение ]

Три вехи точки привязки легко вписываются в рациональный унифицированный процесс (RUP), при этом LCO обозначает границу между этапами создания и разработки RUP, LCA обозначает границу между этапами разработки и строительства, а IOC обозначает границу между этапами строительства и перехода.

Сосредоточьтесь на системе и ее жизненном цикле

Этот инвариант подчеркивает важность всей системы и долгосрочные проблемы, охватывающие весь ее жизненный цикл. Он исключает «опасные двойники спирали», которые слишком сосредоточены на начальной разработке программного кода. Эти процессы могут быть результатом следования опубликованным подходам к объектно-ориентированному или структурированному анализу и проектированию программного обеспечения, при игнорировании других аспектов потребностей процесса проекта.

Рекомендации

  1. ^ а б c Бём, Б. (июль 2000 г.). «Спиральное развитие: опыт, принципы и уточнения» (PDF). Специальный отчет. Институт программной инженерии. CMU / SEI-2000-SR-008.
  2. ^ Бём Б. (август 1986 г.). «Спиральная модель разработки и улучшения программного обеспечения». Примечания по разработке программного обеспечения ACM SIGSOFT. 11 (4): 14–24. Дои:10.1145/12944.12948. S2CID  207165409.
  3. ^ а б Бём, Б. (май 1988 г.). «Спиральная модель разработки и улучшения программного обеспечения» (PDF). IEEE Computer. 21 (5): 61–72. Дои:10.1109/2.59. S2CID  1781829.
  4. ^ Pew, R.W .; Мавор, А.С., ред. (2007). Интеграция человека и системы в процессе разработки системы: новый взгляд. Вашингтон, округ Колумбия: Национальная академия прессы. ISBN  978-0-309-10720-4.