Существующие модели ЖЦ определяют порядок
исполнения этапов в ходе разработки, а также критерии перехода от этапа к
этапу. К настоящему времени наибольшее распространение получили следующие три
основные модели ЖЦ:
1) Каскадная модель (70-80 гг.) -
предполагает переход на следующий этап после полного завершения работ
предыдущего этапа.
2) Поэтапная модель с промежуточным
контролем (80-85 гг.) - итерационная модель разработки ПО
с циклами обратной связи между этапами.
3) Спиральная модель (86-90 гг.) - делает
упор на начальные этапы ЖЦ (анализ требований, проектирование спецификаций,
предварительное и детальное проектирование).
Основные
характеристики каскадного способа: разбиение всей разработки на этапы; переход
с одного этапа на следующий происходит только после полного завершения работы
на текущем этапе; возможность планировать сроки завершения всех работ и
соответствующие затраты; результатами каждого этапа являются технические
решения и полный комплект проектной документации, отвечающей критериям полноты
и согласованности, достаточной для того, чтобы разработка могла быть продолжена
другой командой разработчиков; исходными для каждого этапа являются документы и
решения, полученные на предыдущем этапе.
Каскадный подход хорошо зарекомендовал себя
при разработке не сложного ПО, когда каждая программа представляет собой единое целое. При
построении такого ПО в самом
начале разработки можно достаточно точно и полно сформулировать все требования,
с тем, чтобы предоставить разработчикам свободу реализовать их как можно лучше
с технической точки зрения.
Основной недостаток каскадного подхода:
требования к ПО "заморожены" в виде
технического задания на все время его создания. Пользователи могут внести свои
замечания только после того, как работа над ПО будет
полностью завершена. В случае неточного изложения требований или их изменения в
течение длительного периода создания ПО, пользователи получают систему, не удовлетворяющую их
потребностям. Модели (как функциональные, так и информационные)
автоматизируемого объекта могут устареть одновременно с их утверждением.
В модели с промежуточным контролем
(разновидности каскадной модели) межэтапные корректировки обеспечивают большие
гибкость и надежность по сравнению с каскадной моделью, хотя и увеличивают весь
период создания.
Спиральная модель ЖЦ, делающая упор на
начальные этапы ЖЦ: анализ требований, определение спецификаций и
проектирование (предварительное и детальное).
На этих этапах реализуемость технических
решений проверяется путем создания прототипов приложений, которые
демонстрируются заказчику, обсуждаются.
Под прототипом обычно понимают набор программ, моделирующих
(изображающих, эмулирующих) работу готовой системы.
Каждый виток спирали соответствует созданию
фрагмента или версии ПО, на
нем уточняются цели и характеристики проекта, определяется его качество и
планируются работы следующего витка спирали. Таким образом, углубляются и
последовательно конкретизируются детали проекта. Разработка итерациями отражает
объективно существующий спиральный цикл создания ПО.
Неполное завершение работ на каждом этапе позволяет переходить на следующий
этап, не дожидаясь полного завершения работы на текущем этапе. При итеративном
способе разработки недостающую работу можно будет выполнить на следующей
итерации. Главная задача - как можно быстрее показать пользователям
работоспособный продукт, тем самым, активизируя процесс уточнения и дополнения
требований, исправления ошибок, обусловленных неопределенностью или
некорректностью технических заданий и спецификаций требований. Спиральная
модель не исключает использования каскадного подхода на завершающих стадиях
проекта в тех случаях, когда требования к системе оказываются полностью
определенными. Основная проблема спирального цикла - определение момента
перехода на следующий этап. Для ее решения необходимо ввести временные
ограничения на каждый из этапов ЖЦ. Переход осуществляется в соответствии с
планом, даже если не вся запланированная работа закончена. План составляется на
основе статистических данных, полученных в предыдущих проектах, и личного опыта
разработчиков. Другими недостатками спиральной модели являются: трудоемкость
внесения изменений; большой объем документации по проекту, затрудняющий
программирование; сложность переноса на другие платформы.