Новосибирский Государственный Университет
Опубликован: 20.08.2004 | Доступ: свободный | Студентов: 4923 / 487 | Оценка: 4.01 / 3.23 | Длительность: 18:07:00
ISBN: 978-5-9556-0013-0
Лекция 10:

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

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

Инструментальная спиралевидная модель

Спираль, раскручивающаяся от центра, послужила основой для многочисленных вариаций на тему отражения в модели жизненного цикла итеративного развития проекта. По-видимому, первым предложил ее Боэм в [33]. В этой и в ряде последующих публикаций Боэм настоятельно рекомендует применять итеративное наращивание и использование прототипирования в качестве базовых методов развития программных проектов. По его мнению, эти методы успешно противостоят многим рискам при реализации программных проектов. Риски, итеративное наращивание и прототипирование — основа спиральной модели Боэма, один из вариантов которой мы приводим на рис. 10.4.

Модель раскручивающейся спирали по Боэму

увеличить изображение
Рис. 10.4. Модель раскручивающейся спирали по Боэму

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

В квадрантах раскручивания спирали предусматриваются следующие действия (в описании их порядок соответствует движению по спирали от центра).

  • Определение целей, альтернативных вариантов и ограничений.

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

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

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

  • Оценка альтернативных вариантов, идентификация и разрешение рисков.

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

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

    Модель не регламентирует характер прототипирования и изучения прототипов. Предполагается, что разработка прототипа требует затрат меньше, чем прямая реализация проверяемого решения.

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

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

    Прототип внутреннего витка обычно определяет концептуальное рассмотрение проекта. Этот рабочий продукт фиксирует решения, которые позволяют планировать процесс развития проекта.

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

    Последующие витки и их прототипы относятся к конкретизированным задачам, возникающим при воплощении выработанных концепций.

  • Разработка и тестирование продукта на очередной итерации.

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

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

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

  • Планирование следующей итерации.

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

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

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

С точки зрения представленных выше критериев инструментальности модель можно охарактеризовать следующим образом. Основное достоинство модели связывается с ее расширяемостью. Обсуждая проект, разработчики могут выстраивать стратегии достаточно глубоко и привязывать к спирали свои этапы, определяемые потребностями стратегии. Важно, что детализированное рассмотрение процесса достаточно ограничивать уровнем одной итерации или даже одного витка. Более поздние витки можно только обозначить, чтобы конкретизировать их, когда появится необходимая информация. По этой причине для данной модели масштабируемость не считается существенным свойством — при продвижении проекта к результатам его фактический цикл разработки целенаправленно уточняется. Конкретное планирование действий каждого из витков для данной модели не рассматривается. Оно осуществляется на более низком уровне, нежели разбиение жизненного цикла на этапы. За счет этого атрибутивность для модели Боэма становится не очень важным свойством — доступ ко всем нужным атрибутам осуществляется при обращении к моделям уровня конкретного планирования.

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

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Дарья Федотова
Дарья Федотова
Сергей Березовский
Сергей Березовский

В рамках проф. переподготовки по программе "Программирование"

Есть курсы, которые я уже прошел. Но войдя в курс я вижу, что они не зачтены (Язык Ассемблера и архитектура ЭВМ, Программирование на С++ для профессионалов). Это как?

Сергей Горбунов
Сергей Горбунов
Украина, Киев