Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программная инженерия (Ехлаков Ю.П.).doc
Скачиваний:
158
Добавлен:
09.11.2018
Размер:
1.48 Mб
Скачать
      1. Модели жизненного цикла программных продуктов

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

Большинство существующих моделей жизненного цикла ПО являются разновидностями трех классических моделей:

  • каскадной (ступенчатой или водопадной);

  • эволюционной (итеративной или инкрементальной);

  • спиральной.

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

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

Рис. 13. Каскадная модель жизненного цикла.

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

Спиральная модель основывается на итерационной процедуре использования каскадной модели. Отличие этой модели от каскадной состоит в возможности обеспечения многоразового возвращения к процессу формулирования требований и к повторной разработке с любого процесса выполнения работ. Каждый новый виток спирали предполагает создание фрагмента или версии ПО, уточняются требования к ПО, оценивается качество разработанного фрагмента ПО и планируются работы следующего витка. Таким образом, углубляются и конкретизируются все детали проектируемого ПО и в результате получается окончательный вариант, который удовлетворяет всем требованиям заказчика (рис. 14) [1].

Рис. 14. Спиральная модель жизненного цикла

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

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

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

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