«И они жили долго и счастливо» возможно только в сказке, невозможно создать программную систему, которая не потребует изменений в будущем. Как только успешно разработанное программное обеспечение вводится в эксплуатацию, возникают новые требования к системе, обу-словленные непрерывным развитием бизнес-процессов и все возрастающими общими требованиями к программным системам. Иногда в системе следует изменить некоторые составляющие в целях повышения производительности или улучшения других характеристик, а также для исправления обнаруженных ошибок. Все это требует дальнейшего развития системы уже после ее ввода в эксплуатацию, и этот непрерывный процесс – сопровождения следует планировать как можно раньше, чтобы обеспечить экономическую эффективность поддержки ПО.
Разработка ПО не заканчивается выпуском. Выпуск — это начало длительного жизненного цикла системы в изменяющейся среде.
1. Необходимость эволюции ПО
Процесс сопровождения активируется при внесении изменений в программные коды и документы конкретного программного средства вследствие обнаруженных в нем несоответствий или необходимости его практического применения в условиях соответствующей среды. Его целью является модификация существующего программного продукта, обеспечивающая его целостность.
Главная задача сопровождения:
Сохранить ценность программного продукта путем управляемого изменения его кода, данных, документации и архитектуры.
Причины изменений
|
--------------------------------
| | |
Ошибки Новые Изменение
системы требования среды
| | |
Corrective Perfective Adaptive
Инженерная задача
Есть запрос:
«Нужно изменить систему».
Определите:
- почему требуется изменение;
- какой тип изменения;
- какие элементы системы оно затронет;
- какие риски возникнут.
Артефакт
Запрос на изменение
2. Типы сопровождения ПО
| Тип сопровождения | Назначение | Пример |
|---|---|---|
| Корректирующее | Исправление ошибок | Исправление найденного дефекта |
| Адаптивное | Приспособление к изменению среды | Новая версия ОС, БД, законодательство |
| Совершенствующее | Улучшение характеристик и расширение функций | Новая возможность, улучшение интерфейса |
| Профилактическое | Предотвращение будущих проблем | Рефакторинг, обновление архитектуры |
Тип изменения определяет характер инженерной работы, но любое изменение должно оцениваться с точки зрения его влияния на существующую систему.

Артефакт
Классификация изменений
3. Этапы процесса сопровождения
Запрос на изменение
↓
Анализ влияния
↓
Оценка стоимости
↓
Одобрение изменения
↓
Реализация
↓
Тестирование
↓
Выпуск новой версии
Перед реализацией изменения необходимо определить его область распространения по системе.
Анализ влияния
Перед реализацией изменения необходимо определить его область распространения по системе.
Инженерная задача
Дано изменение:
«Добавить оплату через новый способ».
Определить:
- какие требования изменятся;
- какие компоненты затронуты;
- какие интерфейсы изменятся;
- какие модули придется изменить;
- какие тесты необходимо добавить;
- какую документацию обновить.
Артефакт
Отчет анализа влияния
Оценка стоимости и риска изменения
После impact analysis возникает естественный вопрос:
Стоит ли вообще вносить изменение?
Инженерная задача
Для изменения оценить:
- трудоемкость;
- затронутые компоненты;
- технический риск;
- риск регрессии;
- стоимость тестирования;
- необходимость изменения документации.
Артефакт
Оценка риска
решение о принятии/отклонении
4. Методы эволюции ПО
4.1 Рефакторинг
Изменение внутренней структуры без изменения внешнего поведения.
До:
Большой сложный модуль
После:
Набор понятных компонентов
4.2 Реинжиниринг
Перестройка существующей системы для повышения сопровождаемости.
Например:
Legacy System
↓
Reverse Engineering
↓
Новая архитектура
4.3 Миграция системы
Перенос на новую платформу:
- новая БД;
- облачная инфраструктура;
- новый язык;
- новая архитектура.
5. Наследуемые системы (Legacy Systems)
Legacy-система — это программная система, которая продолжает использоваться, но ее изменение затруднено из-за возраста, сложности или отсутствия документации.
| Проблема | Причина |
|---|---|
| Высокая стоимость изменений | Сложная архитектура |
| Потеря знаний | Уход разработчиков |
| Отсутствие тестов | Историческое развитие |
| Технологическое устаревание | Старые платформы |
Инженерная задача
Дана legacy-система без актуальной документации.
Необходимо:
- восстановить понимание системы;
- определить текущую архитектуру;
- выявить проблемные места;
- спроектировать целевое состояние;
- определить путь перехода.
Артефакты
- текущая архитектура;
- целевая архитектура;
- план миграции.
6. Снятие с эксплуатации

Снятие с эксплуатации — такое же инженерное решение, как создание новой системы.
Инженерная задача
Принять решение:
Систему продолжать развивать или выводить из эксплуатации?
Оценить:
- стоимость сопровождения;
- технический долг;
- ценность системы;
- наличие замены;
- стоимость миграции;
- риски прекращения работы.
Артефакт
План ввывода из эксплуатации