Статья опубликована в рамках: XIX Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 17 апреля 2017 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
ВЫБОР СИСТЕМЫ КОНТРОЛЯ ВЕРСИЙ ДЛЯ РАЗРАБОТКИ ПРОГРАММНОГО ПРОДУКТА
На современном этапе разработки программных продуктов чаще всего начинает использоваться командная удаленная работа над программным продуктом. Для технической поддержки работы с программным кодом, которая происходит параллельно, существует специальное программное обеспечение – системы контроля версий.
На современном этапе развития информационных систем и технологий рынок программного обеспечения предоставляет широкий выбор систем контроля версий. Данные системы имеют свои специфические особенности в наборе команд, организации хранения данных, администрировании, порядке взаимодействия с пользователем. Следовательно, исходя из целей и необходимых функциональных возможностей, для реализации того или иного проекта может быть использована система контроля версий, наиболее подходящая для составных операций процесса осуществления проекта. Для выбора наиболее подходящей именно под заданный программный проект системы контроля версий необходимо выделить критерии, которым должна соответствовать система, и проанализировав рынок СКВ, выбрать наиболее подходящую.
Таким образом, необходимо рассмотреть необходимый функционал для систем контроля версий, используемых при разработке программного продукта. Для данного процесса характерно наличие большое числа файлов, для которых необходимо выполнять отслеживание и фиксацию изменений. Кроме того, при удаленной работе программистов, система контроля версий должна обеспечивать механизмы по обмену версиями между программистами и, при необходимости, слияние всего частей в один проект.
Можно выделить следующие необходимые функциональные возможности, которыми должна обладать система контроля версий для разработки программного продукта:
– Сохранение. При изменении файла система позволяет программисту записать осуществленные изменения в репозиторий, что приводит к созданию новой версии проекта.
– Обновление. Поскольку над разработкой проектов трудится команда программистов, то они постоянно обновляют репозиторий измененными файлами, следовательно, система контроля версий должна отслеживать данные изменения и обновлять репозитории клиентов до актуальной версии.
– Объединение. Зачастую работа программистов происходит над одним и тем же файлом, следовательно, система контроля версий должна позволять объединить конечные версии файла.
– Решение конфликтов. Системы контроля версий не проводят объединения автоматически, сначала проводится проверка наличия конфликтов в соединяемых версиях. Если такие конфликты обнаружены, программист может внести необходимые изменения в файл для устранения конфликта слияния.
– Откат. Система контроля версий должна позволять возвращаться к предыдущим версиям файла, что может быть осуществлено через возможность копирования необходимого репозитория, перехода по веткам, а также возможность перехода к определенной фиксации (commit).
– Ветвление. Система контроля версий должна давать возможность организовывать параллельные ветки с целью контроля нескольких направлений развития программного обеспечения, быстро переключаться между ними, объединять их (производить слияние).
Кроме этого, системы контроля версий могут отличаться по такой характеристике, как пользовательский интерфейс. В некоторых системах контроля версий предполагается работа через командную строку, что может выступать недостатком для определенного числа пользователей. Однако, для программистов не вызовет дополнительных неудобств отсутствие интерфейса, так как работа с командной строкой и кодом для них не вызывает затруднений.
Также, системы контроля версий можно разделить на две группы: централизованные и распределенные СКВ. Централизованные системы для сохранения отслеживаемых файлов проекта использует репозиторий, который размещен на отдельном сервере. В данном случае на клиентские компьютеры скачивает с сервера последняя версия программного продукта, где вносятся изменения и загружаются на сервер. Существенным недостатком выступает необходимость запрашивать сервер для загрузки необходимой версии проекта с целью просмотра предыдущих версий программного продукта.
В распределенных системах, при загрузке данных на клиентские компьютеры с репозитория, находящегося на сервере, скачиваются все сохраненные изменения, а не только последняя версия. Следовательно, операции копирования данных из репозитория достаточно длительные, однако, это окупается в отсутствие необходимости запрашивать сервер на скачивание предшествующих версий проекта. Кроме того, используя распределенные системы контроля, каждый пользователь имеет свой личный репозиторий, в который он локально сохраняет все свои изменения.
Таким образом, система контроля версий для разработки программного продукта должна быть распределенной, при необходимости давать возможность программисту создавать параллельные ветки, отслеживать сложные изменения, откатывать файлы на нужную версию, переключаться между ветками или объединять несколько веток в одну, содержащую все изменения.
Для выбора конкретной системы контроля версий, проведем анализ семи наиболее распространенных систем контроля версий: CVS (Concurrent Versions System), RCS (Revision Control System), Git, Subversion, Bazaar, TFS (Team Foundation Server), Mercurial. Для проведения сравнительного анализа выберем следующие критерии: простота использования СКВ, централизованная или распределенная СКВ, фиксирование версии файла или версии проекта, возможность одновременного внесения изменений в один файл, наличие ветвления. Сравнительная характеристика приведена в таблице 1.
Таблица 1
Сравнительная характеристика СКВ
|
Простота использования |
Централизованная или распределенная |
Фиксации |
Одновременное внесение изменений |
Наличие ветвления |
CVS |
Простая |
Централизованная |
Проекта |
Есть |
Нет |
RCS |
Простая |
Централизованная |
Файла |
Нет |
Нет |
Git |
Простая |
Распределенная |
Проекта |
Есть |
Есть |
Subversion |
Простая |
Централизованная |
Проекта |
Есть |
Нет |
Bazaar |
Простая |
Распределенная |
Проекта |
Есть |
Есть |
TFS |
Сложная |
Распределенная |
Проекта |
Есть |
Есть |
Mercurial |
Сложная |
Распределенная |
Проекта |
Есть |
Есть |
Для разработки программного продукта важными характеристиками будут выступать: распределенность системы и наличие ветвления, так как предполагается параллельная работа над проектом команды разработчиков.
Также, необходимо учесть статистику использования систем контроля версий для принятия решения. По статистике наиболее распространенными выступают следующие системы контроля версий: Git, Subversion (SVN), Mercurial, CVS, Bazaar.
Таким образом, предпочтение стоит отдать системе контроля версий Git для проектов по разработке программных продуктов. Использование в процессе разработки программного продукта систему контроля версий Git позволяет выполнять все необходимые действия над файлами и версиями файлов, которые хранятся в репозитории. Данная система обеспечивает гибкую систему ветвления проектов и слияния веток между собой, высокую производительность и скорость работы, а также предоставляет удобный и интуитивно понятный набор команд. Кроме того, широкая распространенность и качественная документация также являются преимуществами, из-за которых стоит отдать предпочтение данной системе контроля версий для разработки программного продукта.
Список литературы:
- Яковлева Е.А. Обзор современных систем контроля версий [Электронный ресурс] // Материалы VIII Международной студенческой электронной научной конференции «Студенческий научный форум» URL: http://www.scienceforum.ru/2017/2237/26203 (дата обращения: 12.04.2017)
- Loeliger J., McCullough M. Vertion Control with Git – O'Reilly Media, 2012. - 456p.
- Sink E. Vertion Control by Example – Pyrenean Gold Press, 2011 – 288p.
дипломов
Оставить комментарий