Открыть сервисСервис

Жизненный цикл программы

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

Основные этапы

Типичный жизненный цикл включает следующие фазы:

ЭтапСодержание
ПланированиеОпределение целей, сроков, бюджета, рисков
Анализ требованийФормирование функциональных и нефункциональных требований
ПроектированиеАрхитектура, структура данных, интерфейсы
Реализация (кодирование)Написание и сборка исходного кода
ТестированиеПроверка на соответствие требованиям, выявление дефектов
ВнедрениеРазвёртывание в эксплуатации
СопровождениеИсправление ошибок, адаптация, развитие
Вывод из эксплуатацииПрекращение поддержки, архивирование

Стандарты ISO/IEC/IEEE 12207 описывают процессы жизненного цикла программного обеспечения как совокупность взаимосвязанных процессов: приобретения, поставки, разработки, эксплуатации, сопровождения и утилизации.

Модели жизненного цикла

Каскадная модель (водопад)

Классическая модель, предложенная Уинстоном Ройсом в 1970 году, предполагает последовательное прохождение этапов, где результат каждого этапа служит входом для следующего. Переход к следующей фазе возможен только после завершения предыдущей. Модель проста в управлении, но плохо переносит изменения требований.

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

Предложена Барри Боэмом в 1986 году. Разработка разбивается на итерации (петли спирали), каждая из которых проходит через этапы планирования, анализа рисков, проектирования и тестирования. Подходит для крупных проектов с высокими рисками.

Итеративная и инкрементальная модель

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

Гибкие методологии (Agile)

Agile-манифест (2001) провозгласил приоритет гибкости, совместной работы с заказчиком и готового к использованию продукта. К популярным фреймворкам относятся Scrum, Kanban и Extreme Programming. В России гибкие методологии активно применяются в ИТ-компаниях с 2010-х годов.

Комбинированные модели

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

Сопровождение и развитие

После внедрения программное обеспечение переходит в стадию сопровождения, которая занимает основную часть ресурсов на протяжении жизненного цикла. По различным оценкам, на сопровождение приходится от 60 до 80 % затрат. Выделяют четыре вида сопровождения:

  • корректирующее — исправление выявленных дефектов;
  • адаптивное — приспособление к изменению окружения (новые ОС, оборудование, законодательство);
  • улучшающее — добавление функциональности;
  • профилактическое — предупреждение будущих сбоев.

Вывод из эксплуатации

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

Стандарты и нормативная база

В России жизненный цикл программного обеспечения регулируется рядом стандартов и отраслевых документов. ГОСТ Р ИСО/МЭК 12207 устанавливает процессы жизненного цикла. ГОСТ 34.601-90 описывает автоматизированные системы как создаваемые, сопровождаемые и модернизируемые. Государственные закупки программного обеспечения в России регулируются Федеральным законом № 44-ФЗ и № 223-ФЗ, которые требуют обоснования этапов жизненного цикла в техническом задании.

Практическое значение

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

Источники:

  • ГОСТ Р ИСО/МЭК 12207-2010 «Информационные технологии. Процессы жизненного цикла программных средств»
  • ГОСТ 34.601-90 «Информационные технологии. Автоматизированные системы. Стадии создания»
  • ISO/IEC/IEEE 12207:2017 — Systems and software engineering — Software life cycle processes
  • Б. Боэм «A Spiral Model of Software Development and Enhancement» (1986)
  • Agile Manifesto (2001)
  • У. Ройс «Managing the Development of Large Software Systems» (1970)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru