Жизненный цикл программы¶
Жизненный цикл программы — последовательность этапов, через которые проходит программное обеспечение от появления идеи до его вывода из эксплуатации. Понятие описывает структурированный подход к разработке, сопровождению и устареванию программного продукта и лежит в основе методологий программной инженерии.
¶Основные этапы
Типичный жизненный цикл включает следующие фазы:
| Этап | Содержание |
|---|---|
| Планирование | Определение целей, сроков, бюджета, рисков |
| Анализ требований | Формирование функциональных и нефункциональных требований |
| Проектирование | Архитектура, структура данных, интерфейсы |
| Реализация (кодирование) | Написание и сборка исходного кода |
| Тестирование | Проверка на соответствие требованиям, выявление дефектов |
| Внедрение | Развёртывание в эксплуатации |
| Сопровождение | Исправление ошибок, адаптация, развитие |
| Вывод из эксплуатации | Прекращение поддержки, архивирование |
Стандарты 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)
