Механизмы и контроль внесения изменений в программный продукт
- Определение управления изменениями в разработке программного обеспечения.
Изменения оформляются в виде запросов (change request). Они связаны с исправлением ошибок,
расширением функциональности или адаптацией системы к новым условиям работы.
Источником запроса могут быть пользователи ПО, его заказчик или сами разработчики.
- Этапы обработки запроса:
- Запрос изучается на предмет адекватности и полноты.
- Оценивается приоритетность, круг пользователей, которые будут затронуты изменениями,
объём изменений и компоненты системы, которые необходимо модифицировать
- Создаётся план внесения изменений и тесты, позволяющие понять, что модификации произведены корректно.
Если тесты проходят удачно, запрос считается выполненным.
- Понятие управления версиями. Системы управления версиями (СУВ)
хранят всю историю продуктов разработки: исходных файлов, документации,
используемых библиотек и так далее. Главное назначение СУВ — облегчение параллельной
работы над приложением: они позволяют автоматически разрешить конфликты,
возникающие, когда одни и те же документы меняются несколькими разработчиками.
Методологии
- Управляемое процессом управление изменениями. Концентрируется на том, как сотрудники,
процедуры, методы, оборудование и инструменты интегрируются для достижения конечного результата.
Например, инструменты управляемого процессом управления изменениями интегрируются с процессом разработки,
а не находятся поверх него как отдельные операции.
- Методологии, подчёркивающие важность чётко регламентированных процессов. Например, модель CMM и стандарт
Международной организации по стандартизации ISO 9000.
- Подходы к внедрению изменений. Например, реактивный и проактивный подходы:
- Реактивный — предполагает реагирование на уже сложившуюся ситуацию, изменения проводятся с отставанием:
сначала возникает потребность, которая удовлетворяется через какое-то время.
- Проактивный — позволяет прогнозировать потребности и развивать систему в соответствии со стратегией бизнеса.
Инструменты
- Системы контроля версий (СКВ). Позволяют отслеживать историю изменений, возвращаться к предыдущим версиям,
сливать изменения из разных источников. Некоторые типы СКВ:
- Локальные — хранят все изменения и историю проекта на локальном
компьютере разработчика.
- Централизованные — хранят все изменения и историю проекта
на центральном сервере.
- Распределённые — распределяют историю проекта и все изменения
между разными копиями репозитория.
- Системы отслеживания проблем. Помогают командам управлять запросами и определять их приоритетность,
отслеживать их прогресс. Например, Jira, Trello и Redmine
- Конвейеры непрерывной интеграции/доставки (CI/CD). Автоматизируют процесс создания, тестирования и развёртывания
изменений кода. Например, Jenkins, GitLab CI/CD и CircleCI
- Интегрированные среды разработки (IDE). Некоторые IDE имеют встроенные инструменты для работы с СКВ,
что позволяет разработчикам легко интегрировать их в свой рабочий процесс.