exam

Жизненный цикл программного обеспечения.

Жизненный цикл программного обеспечения (Software Development Life Cycle, SDLC) — это структурированный процесс создания и поддержки ПО от зарождения идеи до вывода из эксплуатации.

Основные этапы классического SDLC

  • Идея и планирование. Формируют концепцию продукта, оценивают экономическую и техническую целесообразность, определяют цели, бюджет, сроки, риски и ключевые метрики успеха. Создают устав проекта и дорожную карту.
  • Анализ требований. Собирают и систематизируют требования от стейкхолдеров: функциональные (что система должна делать) и нефункциональные (производительность, безопасность, масштабируемость, удобство использования). Результат — спецификация требований (SRS).
  • Проектирование. Разрабатывают архитектуру системы, выбирают технологический стек, проектируют базы данных и интерфейсы. Создают диаграммы (UML, ER‑диаграммы), прототипы и макеты UI/UX. Фиксируют решения в архитектурной документации.
  • Разработка. Программисты реализуют функционал в соответствии с проектной документацией. Используют системы контроля версий (Git), следуют стандартам кодирования, проводят код‑ревью. Часто применяют практики CI (непрерывной интеграции).
  • Тестирование. Проверяют корректность работы ПО на разных уровнях: модульное (отдельные компоненты), интеграционное (взаимодействие модулей), системное (вся система), приёмочное (соответствие ожиданиям заказчика), а также нагрузочное и тестирование безопасности.
  • Развёртывание. Продукт запускают в рабочей среде (production). Применяют стратегии минимизации рисков: сине‑зелёное развёртывание, канареечные релизы, поэтапное внедрение. Настраивают мониторинг и алертинг.
  • Сопровождение и поддержка. Исправляют ошибки, выпускают обновления и патчи, добавляют новые функции. Собирают обратную связь, анализируют метрики использования, оптимизируют производительность.
  • Вывод из эксплуатации. Когда продукт морально или технически устаревает, его постепенно выводят из использования: уведомляют пользователей, переносят данные, отключают сервисы и архивируют документацию.

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

Порядок и характер этапов зависят от выбранной модели:

  • Waterfall (каскадная модель). Строго последовательные этапы: каждый следующий начинается только после полного завершения предыдущего. Подходит для проектов с чётко определёнными и стабильными требованиями.
  • V‑модель. Вариация каскадной модели, где каждому этапу разработки соответствует этап тестирования (например, анализу требований — приёмочное тестирование, проектированию архитектуры — интеграционное). Делает акцент на верификации и валидации.
  • Инкрементная и итеративная модели. Продукт разрабатывают частями (инкрементами) или через повторяющиеся циклы (итерации), постепенно наращивая функциональность.
  • Agile (гибкие методологии). Итеративная разработка с короткими спринтами (например, в Scrum) и частой обратной связью. Акцент на адаптивность, сотрудничество и ценность для пользователя.
  • Спиральная модель. Сочетает итеративность и управление рисками: каждый виток включает планирование, анализ рисков, разработку и оценку. Подходит для крупных и рискованных проектов.
  • DevOps. Не столько модель разработки, сколько подход к объединению разработки и эксплуатации: непрерывная интеграция, доставка и развёртывание (CI/CD), автоматизация и тесное взаимодействие команд.

Практические нюансы

  • Пересечение и возврат между этапами. В реальных проектах этапы часто перекрываются или повторяются. Например, при изменении требований возвращаются к анализу и проектированию.
  • Документация. Важна на каждом этапе: помогает новым участникам команды, снижает риски при передаче знаний и служит основой для аудита и улучшений.
  • Метрики и контроль качества. Используют метрики покрытия тестами, количество дефектов, время отклика, удовлетворённость пользователей и другие показатели для оценки прогресса и качества продукта.
  • Управление изменениями. Формализованные процессы (Change Management) помогают оценивать влияние изменений на сроки, бюджет и качество, а также согласовывать их со стейкхолдерами.