Вы находитесь на странице: 1из 3

Педагогика

УДК:378.2
кандидат физико-математических наук,
доцент Джелдубаев Рашид Сейдалиевич
Государственное бюджетное образовательное учреждение
высшего образования Республики Крым
«Крымский инженерно-педагогический университет» (г. Симферополь);
кандидат физико-математических наук,
доцент Иванов Сергей Викторович
Государственное бюджетное образовательное учреждение
высшего образования Республики Крым
«Крымский инженерно-педагогический университет» (г. Симферополь);
кандидат физико-математических наук,
доцент Москалева Юлия Петровна
Государственное бюджетное образовательное учреждение
высшего образования Республики Крым
«Крымский инженерно-педагогический университет» (г. Симферополь)

ВЫБОР СИСИЕМЫ КОНТРОЛЯ ВЕРСИЙ ДЛЯ РАЗРАБОТКИ УЧЕБНОГО ПРОЕКТА

Аннотация. Статья посвящена обоснованию выбора системы контроля версий для разработки учебного проекта.
Анализ основных характеристик, востребованных IT сферой систем контроля, проводится с учетом специфики учебного
проекта.
Ключевые слова: учебный проект, системы контроля версий, Subversion (SVN), Git.
Annоtation. The article is devoted to the choice of version control system for the development of the training project.
Analysis of the most popular IT control systems is based on the specifics of the training project.
Keywords: training project, version control systems, Subversion (SVN), Git.

Введение. Настоящая работа посвящена обоснованию выбора системы контроля версий для разработки учебного
проекта. Обычной практикой современной IT сферы является создание программного продукта командой
разработчиков. Для технической поддержки одновременной работы с кодом проекта существует специальное
программное обеспечение – система контроля версий. Использование в образовательном процессе современных систем
контроля версий позволяет сформировать у выпускников программ магистратуры по направлению подготовки 09.04.03
«Прикладная Информатика» следующие компетенции:
1. способность применять современные методы и инструментальные средства прикладной информатики для
автоматизации и информатизации решения прикладных задач различных классов и создания ИС (ПК-11);
2. способность использовать информационные сервисы для автоматизации прикладных и информационных
процессов (ПК-23).
Использование систем контроля версий. Проанализируем как используются системы контроля версий в процессе
разработки. Каждая система контроля версиями имеет свои специфические особенности в наборе команд, порядке
работы пользователей и администрировании. Тем не менее, общий порядок работы для большинства систем совершенно
стереотипен. Как правило, системы контроля версий предоставляют следующие возможности [1]:
1. Сохранять все этапы разработки. Внеся изменения в один или несколько файлов проекта, программист
записывает изменения в репозиторий хранилище всех версий и изменений проекта. Стоит отметить, что сохраняется не
весь проект целиком, а, в целях экономии места и времени сохранения изменений (сервер с репозиторием может быть
удаленным, и, если проект - очень большой, то требуется достаточно большое время для передачи всех его файлов по
сети), в репозиторий добавляются только файлы, претерпевшие изменения.
2. Обновляется до последней версии разработанного программного обеспечения. Так как, обычно, над разработкой
проектов трудится целая команда специалистов, то они постоянно добавляют в репозиторий измененные файлы.
Поэтому одной из основных задач системы контроля версий является возможность отслеживать все эти изменения и
быстро обновлять программное обеспечение клиентов до актуальной версии.
3. Объединять изменения. Часто несколько программистов одновременно изменяют одни и те же файлы. Если
изменения не пересекаются, то системы контроля версий позволяют легко и просто объединить эти изменения.
4. Решать конфликты. Если несколько человек изменили один и тот же участок кода, то, автоматически,
объединить такие изменения – невозможно. Обычно, системы контроля версий предоставляют инструменты,
позволяющие вручную внести необходимые правки в тест программ, чтобы объединить конфликтующие части кода.
5. Откатываться к предыдущим версиям. Если выбранное направление в развитии проекта оказалось тупиковым
или содержащим ошибки, то системы контроля версий позволяют вернуть разработанное программное обеспечение к
одной из последней рабочей версии, просто, скопировав из репозитория нужную версию программного обеспечение,
либо отдельные файлы.
6. Сопровождение нескольких направлений развития программного обеспечения. Не всегда можно сразу сохранять
внесенные изменения. Часто приходится достаточно долго разрабатывать и отлаживать отдельные правки прежде, чем
их можно объединить с основным программным обеспечением. В этом случае многие системы контроля версий
позволяют организовывать параллельные ветки по контролю нескольких направлений развития программного
обеспечения, быстро переключаться между ними, а затем объединять их в единое целое.
Кроме этого, системы контроля версий обладают удобным интерфейсом для быстрого и простого выполнения
перечисленных выше действий и надежного контроля версий разрабатываемого программного обеспечения.
Каждой системе контроля версий присуще свои достоинства и недостатки, но, в общем, все они основываются на
одном и том же принципе: регистрации изменений в программном коде и сохранение каждого нового обнаруженного
изменения в новой версии, к которой можно вернуться в любой момент времени.
Несмотря на единый принцип работы, системы контроля версий можно разделить на две группы. Это –
централизованные системы контроля версий и распределенные. У них много общего, но есть и принципиальные
отличия.
Централизованные системы, такие как CVS и Subversion[3], для сохранения всех рабочих файлов контролируемого
проекта использует репозиторий, размещенный на отдельном сервере.
В этом случае для работы с системой контроля версий каждый участник проекта сначала скачивает с сервера
последнюю версию программного продукта, вносит в нее свои изменения и загружает на сервер полученный результат.
При этом работа ведется с последней версией программного продукта, а, если необходимо вернуться к одной из
предыдущих версий разработки, что бывает достаточно часто, приходится каждый раз запрашивать сервер и скачивать
необходимую версию.
После внесения всех корректировок в скаченную версию, она заливается на сервер, в качестве последней версии
разрабатываемого продукта. При этом, скорее всего, придется решать множество конфликтов, что бывает очень
сложным, так как откат на предыдущую версию может затронуть большое количество уже сохраненных изменений.
В распределенных системах, таких как Git[2], когда пользователи загружают данные из репозитория сервера,
скачиваются все сохраненные изменения, а не только последняя версия. Естественно, каждый раз скачивать весь
репозиторий не нужно, так как достаточно скопировать только те изменения, которых нет в локальном проекте
пользователя. Даже, несмотря на это, операции копирования данных из репозитория могут быть достаточно долгими, но
это с лихвой окупается при дальнейшем использовании распределенной системы контроля версий.
По сути, используя распределенные системы контроля, каждый пользователь имеет свой личный репозиторий, в
который он локально сохраняет все свои изменения. При необходимости создает параллельные ветки контроля версий
проекта, отслеживающие сложные изменения, которые пока что нельзя сохранять в основной версии разрабатываемого
проекта.
В любой момент откатиться на нужную версию проекта, переключиться между ветками или объединить несколько
параллельных веток в единую, содержащую все внесенные изменения. Все это делается без обращения к основному
серверу.
Загрузку же изменений в основной репозиторий можно произвести, когда все они отлажены и избавлены от
ошибок.
Обоснование выбора системы контроля версий для учебного проекта. Для проведения сравнительного анализа
выберем семь наиболее распространенных систем контроля версий: RCS (Revision Control System), CVS (Concurrent
Versions System), Subversion, Git, Bazaar, Mercurial, TFS (Team Foundation Server). Сравнение проведем по следующим
характеристикам систем контроля версий:
1. Простота использования СКВ (системы контроля версий):
1) СКВ является простой в использовании: RCS, CVS, Subversion (SVN), Monotone, Git, Bazaar;
2. Централизованная или распределенная СКВ:
1. Централизованная – RCS, CVS, Subversion (SVN);
2. Распределенная – Aegis, Monotone, Git, Bazaar, Mercurial, TFS.
2) СКВ является сложной в использовании: Aegis, Mercurial (из-за отсутствия удобного графического интерфейса)
, TFS.
3. Обеспечивает ли СКВ версии файла после обновления репозитория или версии проекта (фиксирование
изменений всех файлов на момент обновления репозитория):
1. Сохранение версии файла: RCS;
2. Сохранение версии проекта: CVS, Subversion (SVN), Aegis, Monotone, Git, Bazaar, Mercurial, TFS.
4. Возможность одновременно вносить изменения в один и тот же файл:
1. Есть возможность: CVS, Subversion (SVN), Aegis, Monotone, Git, Bazaar, Mercurial, TFS;
2. Нет возможности: RCS.
5. Характеристика поддержки ведения параллельных веток:
1. Хорошо поддерживает: Aegis, Monotone, Git, Bazaar, Mercurial, TFS;
2. Плохо поддерживает RCS, CVS, Subversion (SVN).
6. Графический интерфейс:
• Удобный: CVS, Subversion (SVN), Git, Bazaar;
• Неудобный или отсутствует RCS, Aegis, Monotone, Mercurial.
Для разработки учебного проекта важными характеристиками будем считать: простоту использования и
графический интерфейс. К непринципиальным характеристикам отнесем тип системы контроля версий и управление
ветками, так как разработка учебного проекта является жестко ограниченной временем семестра и не предполагает
параллельную разработку инкрементов. Версии для проекта, а не файлов и одновременную работу с одним файлом
поддерживают все современный системы контроля версий.
В качестве фактора влияющего на принятие решения рассмотрим статистику использования систем контроля
версий, приведенную на хорошо известном в IT сфере ресурсе http://habrahabr.ru/post/233935/:
При ответе на вопрос «Какие системы контроля версий Вы используете для работы?» 7364 голоса распределились
следующим образом: Git – 70%; Mercurial – 13,5%; Subversion (SVN) – 11%; TFS – 3%; другие – 1,5% и CVS – 1%.
При ответе на вопрос «Какие системы контроля версий Вы используете для собственных проектов?»
статистическая картина по выборке из 9539 голосов получилась такая: Git – 54%; Subversion (SVN) – 25%; Mercurial –
12%; TFS – 6%; другие – 2% и CVS – 1%.
С учетом того факта, что Git и Mercurial обычно выбирают для больших проектов получаем, что в качестве учебной
системы контроля версий лучше всего подойдет SVN (Subvertion).
Subversion – эта централизованная система управления версиями, созданная в 2000 году и основанная на
технологии клиент-сервер. Систему Subversion часто называют по имени клиентской части – SVN.
Принцип работы с Subversion: клиенты копируют изменения из репозитория и объединяют их с локальным
проектом пользователя. Если возникают конфликты локальных изменений и изменений, сохраненных в репозитории, то
такие ситуации разрешаются вручную. Затем в локальный проект вносятся изменения, и полученный результат
сохраняется в репозитории.
При работе с файлами, не позволяющими объединять изменения, может использоваться следующий принцип:
1. Файл скачивается из репозитория и блокируется (запрещается его скачивание из репозитория).
2. Вносятся необходимые изменения.
3. Загружается файл в репозиторий и разблокируется (разрешается его скачивание из репозитория другим
клиентам).
Во многом, из-за простоты в управлении, но в основном, из-за своей широкой функциональности, Subversion с
успехом конкурирует с распределенными системами контроля версий и даже успешно их вытесняет.
Остановимся подробнее на достоинствах и недостатках CVN. Достоинства:
1. Интуитивно понятная система команд.
2. Поддерживается большинство возможностей систем контроля версий.
3. Разнообразные графические интерфейсы и удобная работа из консоли.
4. Отслеживается история изменения файлов и каталогов даже после их переименования и перемещения.
5. Высокая эффективность работы, как с текстовыми, так и с бинарными файлами.
6. Встроенная поддержка во многие интегрированные средства разработки, такие как KDevelop, Zend Studio и
многие другие.
7. Возможность создания зеркальных копий репозитория.
8. Два типа репозитория – база данных или набор обычных файлов.
9. Возможность доступа к репозиторию через Apache с использованием протокола WebDAV.
10. Наличие удобного механизма создания меток и ветвей проектов.
11. Можно с каждым файлом и директорией связать определенный набор свойств, облегчающий взаимодействие с
системой контроля версии.
12. Широкое распространение позволяет быстро решить большинство возникающих проблем, обратившись к
данным, накопленным Интернет-сообществом.
В качестве недостатков отметим:
1. Полная копия репозитория хранится на локальном компьютере в скрытых файлах, что требует достаточно
большого объема памяти.
2. Существуют проблемы с переименованием файлов, если переименованный локально файл одним клиентом был в
это же время изменен другим клиентом и загружен в репозиторий.
3. Слабо поддерживаются операции слияния веток проекта.
4. Сложности с полным удалением информации о файлах попавших в репозиторий, так как в нем всегда остается
информация о предыдущих изменениях файла, и непредусмотрено никаких штатных средств для полного удаления
данных о файле из репозитория.
Как уже было отмечено выше, одним из важных условий выбора системы контроля версий для учебного проекта
является удобный графический интерфейс. Рынок программных продуктов предлагает большое количество вариантов
клиентов для SVN. Клиентские программы можно разделить на две группы — независимые и встроенные в среду
разработки. Наиболее известные независимые клиенты это TortoiseSVN и SmartSVN. C Microsoft Visual Studio можно
использовать AnkhSVN, Unified SCC и VisualSVN. Со средой разработки Eclipse используют Subclipse или Subversive,
для Delphi IDE существует DelphiXE Subversion.
Subversion – современная система контроля версий, обладающая широким набором инструментов, позволяющих
удовлетворить любые нужды для управления версиями проекта с помощью централизованной системы контроля. В
Интернете множество ресурсов посвящено особенностям Subversion, что позволяет быстро и качественно решать все
возникающие в ходе работы проблемы.
Простота установки, подготовки к работе и широкие возможности позволяют ставить subversion на одну из
лидирующих позиций в конкурентной гонке систем контроля версий.
Вывод. Т.о. для выбора системы контроля версий учебного проекта в настоящей работе проведен сравнительный
анализ современных систем контроля версий: RCS , CVS, Subversion, Git, Bazaar, Mercurial, TFS. Сравнение было
структурировано по характеристикам, оценки которых являются важными, для организации эффективного учебного
процесса. Ключевыми характеристиками стали: простота использования, наличие удобного графического интерфейса и
востребованность на рынке труда.
Отметим, что система контроля версий в разработке учебного проекта должна выполнять вспомогательную роль, то
есть роль необходимых условий успешного завершения проекта. В связи с этим SVN-сервер предлагается создавать не
за счет времени учебного процесса и графические интерфейсы настроить заранее. Т.о. роль системного администратора
в предлагаемом подходе закрепляется за преподавателем.
Определим место учебной системы распределения версий в структуре Федерального государственного
образовательного стандарта. А именно, определим область, объект, вид формируемой профессиональной деятельности,
а так же готовность к решению каких профессиональные задач может обеспечить внедрение в учебный процесс
использования системы контроля версий для разработки учебного проекта.
Федеральный государственный образовательный стандарт высшего образования этого направления для уровня
магистра включает следующие области профессиональной деятельности: исследование и разработку эффективных
методов реализации информационных процессов и построения информационных систем в прикладных областях на
основе использования современных ИКТ; организацию и проведение системного анализа и реинжиниринга прикладных
и информационных процессов, постановку и решение прикладных задач; управление проектами информатизации
предприятий и организаций, принятие решений по реализации этих проектов, организацию и управление внедрением
проектов ИС в прикладной области; управление качеством автоматизации решения прикладных задач, процессов
создания ИС. Использование в образовательном процессе современных систем контроля версий для организации
разработки учебного проекта позволяет подготовить выпускника к перечисленным выше областям профессиональной
деятельности.
Объектом профессиональной деятельности при данном подходе являются информационные технологии, при этом
образовательным процессом охватываются такие виды профессиональной деятельности как: проектный вид
деятельности и производственно-технологический вид деятельности.
Литература:
1. Sink E. Vertion Control by Example – Pyrenean Gold Press, 2011 – 288p.
2. Loeliger J., McCullough M. Vertion Control with Git – O'Reilly Media, 2012. - 456p.
3. Pilato C. Michael Vertion Control with Subversion – O'Reilly Media, 2008. - 432p.

Вам также может понравиться