logo search
TP_3_att

Понятие версии программного продукта и системы контроля версий

Проблема контроля версий является одной из фундаментальных проблем программной инженерии в силу невозможности практической реализации линейной стратегии разработки программных средств и коллективного характера процесса разработки. При индивидуальной работе над проектом разработчик вынужден хранить 2 и более версий системы, чтобы иметь возможность вернуться на предыдущие стадии разработки. При коллективной разработке ситуация усложняется, поскольку возникают проблемы семантической совместимости фрагментов программного кода, созданных отдельными разработчиками, и оповещения об изменениях, вносимых в ранее написанный код каждым из разработчиков. Одним из аспектов нового подхода к организации разработки стало использование систем управления версиями – Version Control Systems (VCS). Система управления версиями - комплекс ПО, назначением которого является централизованное хранение и обработка всех или большей части файлов, из которых состоит проект некоего программного продукта.

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

Понятие «версия» в разных системах трактуется 2 способами.

Одни системы (например, CVS) поддерживают версионность файлов; это означает, что любой файл, появляющийся в проекте, получает собственный номер версии (обычно — номер 1, условной «нулевой» версией файла считается пустой файл с тем же именем). При каждой фиксации разработчиком изменений, затрагивающих файл, файл получает новый, обычно следующий по порядку, номер версии. Поскольку фиксации обычно затрагивают только часть файлов в репозитории, номера версий файлов, со временем расходятся, и проект в целом никакого «номера версии» не имеет, т.к. состоит из множества файлов с различными номерами версий.

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