Зарегистрируйся в два клика и получи неограниченный доступ к материалам,а также промокод на новый заказ в Автор24. Это бесплатно.
Введение
Следует начать с того, что разработка программного обеспечения (ПО) является достаточно трудоемким процессом. Любое программное обеспечение, за исключением очень маленьких программ, должно поддерживаться. Исходный код, файлы сборки и конфигурации, а также документация должны быть отслежены, то есть должна вестись история изменений. Особенно в настоящее время, когда рынок заставляет разработчиков программного обеспечения разрабатывать несколько версий продукта, которые ориентируются на разные платформы.
Актуальность работы состоит в том, что сегодня при разработке крупных и достаточно сложных проектов, которые непосредственно связаны с созданием ПО, а также для хранения исходных кодов разрабатываемой программы нашли свое широкое применение системы управления версий (от англ. Version Control System, VCS или Revision Control System) разрабатываемого проекта.
Необходимо подчеркнуть, что поддержка нескольких версий программного обеспечения является непростой задачей. Когда создают и вносят изменения в «основную» версию продукта, необходимо убедиться, что «побочные» версии продукта обновляются. Со временем процесс отслеживания и внесения изменений только усложняется. Для этого используются системы управления версиями. Правильный выбор системы значительно облегчит процесс поддержки программного обеспечения и поможет избежать многих ошибок.
Цель работы – исследовать инструментальные средства управления версиями ПО. Поставленная цель предполагает решение следующих задач:
рассмотреть понятие и классификацию систем управления версиями;
проанализировать наиболее популярные системы управления версиями.
При написании работы использовались такие методы, как изучение научных статей и литературы, а также их сравнительный анализ.
1 ПОНЯТИЕ И КЛАССИФИКАЦИЯ СИСТЕМ УПРАВЛЕНИЯ ВЕРСИЯМИ
Система управления (контроля) версиями - это класс программных продуктов, направленных на решение ряда задач, с которыми ежедневно сталкивается каждый разработчик программного обеспечения [1, с. 15]. Другими словами, система контроля версий - это централизованная система хранения и учета программных продуктов, а также документации.
Основная задача системы управления версиями состоит в обеспечении совместного редактирования, а также распределения информации. С помощью системы управления версиями программист или разработчик программного обеспечения может отслеживать изменения в коде своего программного продукта в процессе его разработки. В настоящее время существует множество систем управления версиями. Наиболее распространенными являются:
Revision Control System (RCS);
Concurrent Versions System (CVS);
Subversion (SVN).
Таким образом, можно подчеркнуть, что система контроля версий (СКВ) - это система, которая регистрирует все изменения в файлах, а в дальнейшем позволяет вернуться к их более ранним версиям и определить, кем и когда были сделаны конкретные изменения [2, с. 539].
При этом существует два типа систем управления версиями: централизованные и распределенные. Централизованные системы управления версиями (CVS, Subversion, Perforce) (рис. 1.1) имеют центральный сервер, на котором хранятся все данные, и ряд клиентов, получающих с него копии файлов. В таких системах всегда понятно, кто чем занимается в проекте, и ими легче управлять.
Рис. 1.1 - Централизованные системы управления версиями
Клиент-серверная модель: один центральный репозиторий, с которым разработчики взаимодействуют по сети.
В свою очередь, распределённые системы контроля версий (Git, Mercurial, Bazaar) (рис. 1.2) вместо традиционной клиент-серверной модели используют распределённую, особенностью которой является то, что все изменения хранятся в локальном хранилище на компьютере и при необходимости синхронизируются с другими. В этом случае устраняется зависимость от центрального сервера, можно вести работу даже без сетевого соединения с ним.
Рис. 1.2 - Распределенные системы управления версиями
Существует много различных систем управления версиями ПО, но в данной работе мы рассмотрим только четыре наиболее популярных из них. Это Git, Mercurial, Concurrent Versions System (CVS) и Apache Subversion (SVN).
CVS (Concurrent Versions System). Она поддерживает управление версиями файлов. Это значит, что любой файл, который появляется в проекте, получает свой номер версии (обычно-номер 1, условная 0 версия файла - это пустой файл с таким же именем) [3, с. 74]. Каждый раз, когда разработчик фиксирует изменения, влияющие на файл, соответствующая часть зафиксированных изменений применяется к файлу, и файл получает новый, обычно следующий по порядку, номер версии. В связи с тем, что фиксации обычно затрагивают только часть файлов в репозитории, номера версий файлов, доступных одновременно, со временем расходятся, и проект в целом (то есть весь набор файлов репозитория) фактически не имеет «номера версии», поскольку он состоит из множества файлов с разными номерами версий.
Далее, SubVersion (SVN)
. Для других систем термин «версия» относится не к одному файлу, а к репозиторию в целом. Вновь созданный пустой репозиторий имеет версию 1 или 0, любая фиксация изменений приводит к увеличению этого числа (то есть даже если один файл изменен на один байт, весь репозиторий считается измененным и получает новый номер версии). Номер версии отдельного файла здесь фактически не существует, условно можно считать таковым текущий номер версии репозитория (то есть считать, что с каждым внесенным в репозиторий изменением все его файлы меняют номер версии, даже те, которые не изменились). Говоря о «версии файла» в таких системах, имеют в виду версию репозитория, в котором файл был изменен в последний раз (до интересующего нас момента).
GIT - инструмент с открытым исходным кодом, контент-адресная файловая система, организующая поддержку нелинейного развития (тысячи параллельных ветвей) одновременно нескольких крупных проектов. Сравнивая GIT с «родственными» распределенными системами, можно отметить, что GIT изначально идеологически ориентирован на работу с изменениями, а не с файлами, «единицей обработки» для него является набор изменений или патч. Эта особенность прослеживается как в структуре самой системы (в частности, в структуре репозитория), так и в принципах построения команд; это влияет на производительность системы в ее различных видах использования и преимущества и недостатки GIT по сравнению с другими DVCS.
Наконец, Mercurial представляет собой кроссплатформенную распределенную систему управления версиями, предназначенная для эффективной работы с очень большими репозиториями кода. Наряду с традиционными возможностями систем управления версиями Mercurial поддерживает полностью децентрализованную работу (отсутствует понятие основного репозитория кода), ветвление (возможно ведение нескольких ветвей одного проекта и копирование изменений между ветвями), объединение репозиториев (что позволяет добиться «распределения» работы). Поддерживается обмен данными между репозиториями через HTTP / HTTPS, SSH, а также вручную с помощью пакетных наборов изменений.
Отметим, что современные системы управления версиями позволяют вести разработку в нескольких «ветках». Основной сферой контроля версий является коллективная разработка чего-либо (чаще всего это программа, но сфера программирования этим не ограничивается). Однако для одного разработчика контроль версий может быть полезен. Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходного кода разрабатываемой программы. Однако они могут успешно применяться и в других областях, где обрабатывается большое количество постоянно меняющихся электронных документов.
В частности, системы управления версиями применяются в САПР, обычно в составе систем управления данными об изделии (PDM) [4, с. 103]. Управление версиями используется в инструментах конфигурационного управления (Software Configuration Management Tools).
На протяжении многих лет использование системы управления версиями является обязательным для любой корпорации, компании или обычного пользователя. Общее, удобное, безопасное хранение исходных кодов с историей изменений, коллективное владение кодом, разделение задач и функционала приложения внутри коллектива. А также автоматизация сборки, развертывание и непрерывная интеграция.
2 СРАВНИТЕЛЬНЫЙ АНАЛИЗ ПОПУЛЯРНЫХ СИСТЕМ УПРАВЛЕНИЯ ВЕРСИЯМИ
Отметим, что, прежде всего, системы управления версиями создавались для того, чтобы облегчить командам разработчиков работу над совместными проектами, не создавая при этом путаницы. Такой системе не нужно отслеживать ветви кода, а также анализировать примечания к ним, так как используется центральный репозиторий, в котором все структурировано и упорядочено.
Основное отличие систем управления версиями заключается в том, что они могут быть либо клиент-серверными, либо децентрализованными. Далее, есть ли у них центральный репозиторий (сервер), откуда берется код и куда он возвращается с изменениями. Или это копия в локальном репозитории, которая обновляется пирами: более децентрализованная сеть, которая используется для синхронизации, обмена патчами (наборами изменений) и поддержания текущего кода.
Необходимо также принимать во внимание такие характеристики, как функциональность и быстродействие каждой конкретной системы контроля версий. Далее, рассмотрим наиболее популярные системы контроля версий (рис. 2.1).
Рис. 2.1 - Рейтинг систем контроля версий [5]
В настоящее время GIT является более распространенной. Наиболее удобно создание специализированных систем управления версиями на основе Git [6]
Закажи написание реферата по выбранной теме всего за пару кликов. Персональная работа в кратчайшее время!
Нужна помощь по теме или написание схожей работы? Свяжись напрямую с автором и обсуди заказ.
В файле вы найдете полный фрагмент работы доступный на сайте, а также промокод referat200 на новый заказ в Автор24.