**Модель жизненного цикла программного обеспечения** Структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта. Эти модели можно разделить на 3 основных группы: 1)Инженерный подход 2)С учетом специфики задачи 3)Современные технологии быстрой разработки Теперь рассмотрим непосредственно существующие модели (подклассы) и оценим их преимущества и недостатки. **Модель кодирования и устранения ошибок** Совершенно простая модель, характерная для студентов ВУЗов. Именно по этой модели большинство студентов разрабатывают, ну скажем лабораторные работы. Данная модель имеет следующий алгоритм: 1)Постановка задачи 2)Выполнение 3)Проверка результата 4)При необходимости переход к первому пункту Модель также ужасно устаревшая. Характерна для 1960-1970 гг., по-этому преимуществ перед следующими моделями в нашем обзоре практически не имеет, а недостатки на лицо. Относится к первой группе моделей. **Каскадная модель жизненного цикла программного обеспечения (водопад)** Алгоритм данного метода, который я привожу на схеме, имеет ряд преимуществ перед алгоритмом предыдущей модели, но также имеет и ряд весомых недостатков. ![Каскадная.gif](Каскадная.gif) **Преимущества:** 1)Последовательное выполнение этапов проекта в строгом фиксированном порядке 2)Позволяет оценивать качество продукта на каждом этапе **Недостатки:** 1)Отсутствие обратных связей между этапами 2)Не соответствует реальным условиям разработки программного продукта Относится к первой группе моделей. **Каскадная модель с промежуточным контролем (водоворот)** Данная модель является почти эквивалентной по алгоритму предыдущей модели, однако при этом имеет обратные связи с каждым этапом жизненного цикла, при этом порождает очень весомый недостаток: 10-ти кратное увеличение затрат на разработку. Относится к первой группе моделей. **V модель (разработка через тестирование)** Данная модель имеет более приближенный к современным методам алгоритм, однако все еще имеет ряд недостатков. Является одной из основных практик экстремального программирования. ![V модель](V модель) **Модель на основе разработки прототипа** Данная модель основывается на разработки прототипов и прототипирования продукта. **Прототипирование** используется на ранних стадиях жизненного цикла программного обеспечения: 1)Прояснить не ясные требования (прототип UI) 2)Выбрать одно из ряда концептуальных решений (реализация сцинариев) 3)Проанализировать осуществимость проекта **Классификация протопипов:** 1)Горизонтальные и вертикальные 2)Одноразовые и эволюционные 3)бумажные и раскадровки **Горизонтальные прототипы** — моделирует исключительно UI не затрагивая логику обработки и базу данных. **Вертикальные прототипы** — проверка архитектурных решений. **Одноразовые прототипы** — для быстрой разработки. **Эволюционные прототипы** — первое приближение эволюционной системы. Модель принадлежит второй группе. **Спиральная модель жизненного цикла программного обеспечения** Спиральная модель представляет собой процесс разработки программного обеспечения, сочетающий в себе как проектирование, так и постадийное прототипирование с целью сочетания преимуществ восходящей и нисходящей концепции. ![Спиральная модель](Спиральная модель) **Преимущества:** 1)Быстрое получение результата 2)Повышение конкурентоспособности 3)Изменяющиеся требования — не проблема **Недостатки:** 1)Отсутствие регламентации стадий Третьей группе принадлежат такие модели как экстремальное программирование (XP), SCRUM, инкриментальная модель (RUP), но о них я бы хотел рассказать в отдельном топике. **Большое спасибо за внимание!**