Назад в библиотеку

Современные системы контроля версий по как инструмент разработки интеллектуальных САПР ПО

Автор: Гурин А.Г., Грищенко Д.А., Григорьев А.В.
Источник: Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ-2019) / Материалы X Международной научно-технической конференции в рамках V Международного Научного форума Донецкой Народной Республики 22-24 мая 2019 г. - Донецк, Том 1, с. 46-51

Аннотация

Гурин А.Г., Грищенко Д.А., Григорьев А.В. Современные системы контроля версий ПО как инструмент разработки интеллектуальных САПР ПО. В данной статье выполнен анализ этапов развития систем контроля версий ПО. Выделен наиболее перспективный класс систем контроля версий с расширенным функционалом. Подвергнута детальному анализу система контроля версий такого типа – система git. На основе специфики системы была поставлена задача создания интеллектуальной надстройки над git, задачей которой является интеллектуальный анализ и синтез программ.

Введение

На текущий момент развития информационных технологий существенную роль играют системы контроля версий (СКВ), которые обеспечивают контроль изменения какихлибо документов. Они могут быть использованы как в программной инженерии и в САПР, так и в других направлениях информационных технологий.

На данном этапе развития программирования тяжело представить проект, в котором будут не важны резервные копии и контроль разных версий файлов. Важным моментом является то, что СКВ способна обеспечивать совместную разработку программных продуктов коллективом программистов.

Совместная разработка программных продуктов определенного класса программ в рамках СКВ позволяет накапливать разные варианты рабочих программных решений. Главное достоинство современных СКВ – это возможность накопления и повторного использования экспертных знаний об апробированных программных решениях в форме, удобной для хранения, передачи и редактирования [1].

В связи с широким использованием систем контроля версий актуальной является задача развития их возможностей и поиск новых областей применения.

СКВ с расширенным функционалом позволяет создавать надстройки, которые и смогут выполнять интеллектуальный анализ и синтез программ, опираясь на накопленные программные решения.

Целью данной статьи является:

1. Назначение, возможности систем контроля версий

Система контроля версий — это система, которая ведет контроль за файлом или за группой файлов на протяжении жизни всего проекта. Также СКВ позволяет вернуться к любым изменениям совершивших во время разработки его.

Первые системы контроля версий были локальными, то есть проект хранился только на локальном компьютере. Возникла проблема совместной разработки программных проектов. На смену им пришли централизованные системы контроля версий, которые позволяют работать в команде, так как проект находится на центральном сервере, и каждый участник команды имеет к нему доступ. Но и в таких системах есть недостаток - если центральный сервер выходит из строя, то теряется весь прогресс по проекту, затем - предельные системы контроля версий. Их особенностью стало то, что у каждого участника команды была копия репозитория с центрального сервера [2].

Ранее авторами был проведен сравнительный анализ систем контроля версий, результаты которого который представлены на рис 1. [3].

Рисунок 1 – Сравнение программных реализаций системы управления версиями

Рисунок 1 – Сравнение программных реализаций системы управления версиями

Следует отметить, что данный анализ был выполнен с точки зрения полноты функционала систем контроля версий в рамках обычных САПР ПО типа Делфи.

Однако, среди данного набора систем контроля версий существует подмножество систем, обладающих расширенным функционалом, который позволяет использовать данные системы контроля версий в новых целях для выполнения новых задач. Среди них можно назвать git. Особенность функционала состоит в том, что данная система способна хранить весь текст программного комплекса, структурированный в соответствии с его архитектурой. Прочие системы лишены такой возможности и отслеживают только точки ветвления изменения программного кода. Особенность данного класса позволяет поставить задачу разработки интеллектуального САПР ПО на их основе.

Выполним детальнее анализ системы такого типа, а затем определим принципы решения задачи создания интеллектуального САПР ПО на их основе.

2. Анализ системы контроля версий с расширенным функционалом

2.1 Назначения возможностей системы контроля версий - git

Рассмотрим систему расширенного функционала, которая является системой контроля версий git.

Git — это распределённая система контроля версий. Основное отличие Git’а от любой другой системы контроля версий — это подход Git’а к работе со своими данными. Концептуально, большинство других систем хранят информацию в виде списка изменений в файлах. Эти системы представляют хранимую информацию в виде набора файлов и изменений, сделанных в каждом файле, по времени.

Рисунок 2 – Хранение данных как набора изменений относительно первоначальной версии каждого из файлов

Рисунок 2 – Хранение данных как набора изменений относительно первоначальной версии каждого из файлов

Git не хранит и не обрабатывает данные таким способом. Вместо этого, подход Git’а к хранению данных больше похож на набор снимков файловой системы. Каждый раз, когда вы делаете коммит (сохранение состояния своего проекта в Git’е), система запоминает, как выглядит каждый файл в этот момент и сохраняет ссылку на этот снимок. Для увеличения эффективности, если файлы не были изменены, Git не запоминает эти файлы вновь, а только создаёт ссылку на предыдущую версию идентичного файла, который уже сохранён. Git представляет свои данные как, скажем, поток снимков.

Рисунок 3 – Хранение данных как снимков проекта во времени

Рисунок 3 – Хранение данных как снимков проекта во времени

Это очень важное отличие между Git и почти любой другой СКВ. Git переосмысливает практически все аспекты контроля версий, которые были скопированы из предыдущего поколения большинством других систем [4].

2.2. Анализ особенностей архитектуры системы контроля версий – git

Нижний уровень git является так называемой контекстно-адресуемой файловой системой. Для каждого объекта в репозитории вычисляется SHA-1-хеш, и именно он становится именем файла, содержащего данный объект в каталоге .git/objects.

Для оптимизации работы с файловыми системами, не использующими деревья для каталогов, первый байт хеша становится именем подкаталога, а остальные — именем файла в ней, что снижает количество файлов в одном каталоге.

Кроме того, в репозитории существует каталог refs, который позволяет задать читаемые человеком имена для каких-либо объектов Git. В командах Git оба вида ссылок — читаемые человеком из refs, и нижележащие SHA-1 — полностью взаимозаменяемы.

В репозитории иногда производится сборка мусора, во время которой устаревшие файлы заменяются на «дельты» между ними и актуальными файлами, где актуальная версия файла хранится неинкрементально, инкременты используются только для возврата к предыдущим версиям, после чего данные «дельты» складываются в один большой файл, к которому строится индекс.

Это снижает требования по ёмкости хранения.

Инструмент командной строки git содержит ряд команд по непосредственной манипуляции этим репозиторием на низком уровне.

Эти команды не нужны при нормальной работе с git как с системой контроля версий, но нужны для реализации сложных операций, а также дают возможность создать на базе репозитория git своё приложение [5].

Данный ряд возможностей позволяет создать свою надстройку над git, которая будет выполнять интеллектуальный анализ и синтез программ, используя накапливаемые программные решения программистом.

3. Предлагаемый путь создания интеллектуальной надстройки

Надстройка (плагин) - независимо компилируемый программный модуль, динамически подключаемый к основной программе и предназначенный для расширения и/или использования её возможностей. Плагины обычно выполняются в виде библиотек общего пользования.

Для решения задачи предлагается использовать путь создания интеллектуальной надстройки над git. Надстройка на базе git, как конкретный проблемно-ориентированный САПР, должна имеет следующие характерные черты:

Соответственно, возможны следующие пути построения интеллектуальной надстройки, являющиеся вариантом модели САПР решения типичной задачи проектирования.

Создание целевого пространства систем (ЦПС), т.е. пространства возможных решений-прототипов.

Имеется два пути:

Уровни квалификации пользователя при избранном подходе к созданию экспертной системы отличаются его возможностью построить ЦПС (множество возможных решенийпрототипов) и ПОС (множество ТЗ).

Возможны варианты, когда пользователь может построить:

Рисунок 4 – Порядок создания и использования надстройки

Рисунок 4 – Порядок создания и использования надстройки

Заключение

Широкое применение СКВ открывают дальнейшие перспективы в их развитии, поиске новых решений и направлений их использования.

В данной работе проведён общий анализ возможностей и назначений СКВ, частный анализ систем контроля версий с расширенным функционалом, а также предложены пути создания интеллектуальной надстройки на базе СКВ такого класса.

Т.о., в данной работе предложено одно из новых возможных новых сфер применения СКВ, состоящее в использовании его функционала как базы для создания на их основе интеллектуального САПР ПО.

Суть предложенного пути состоит в создании интеллектуальной надстройки, которая позволит выполнять интеллектуальный анализ и синтез программ, используя накопленный в рамках СКВ опыт программистов в разработке программного продукта в конкретной программной области.

Как перспективную работу следует определить создание комплекса конкретных методов и механизмов реализации избранного пути.

Список использованной литературы

  1. Григорьев А.В., Грищенко Д.А. - Интеллектуализация процесса проектирования аппаратуры средствами языка VHDL [Электронный ресурс] – Режим доступа: http://masters.donntu.ru/2007/fvti/tsatsenkina/library/stat_kosh.htm
  2. Git - О системе контроля версий [Электронный ресурс] – Режим доступа: https://git-scm.com/book/ru/v2/Введение-О-системе-контроля-версий
  3. Анализ состояний методов, алгоритмов и программных средств в поддержке управления версиями [Текст] / Григорьев А.В., Гурин А.Г // Программная инженерия: методы и технологии разработки информационно вычислительных систем (ПИИВС-2018): сб. статей. – Донецк, 2018. – С. 43-47.
  4. Git - Основы Git [Электронный ресурс] – Режим доступа: https://gitscm.com/book/ru/v2/Введение-Основы-Git
  5. Git — Википедия [Электронный ресурс] – Режим доступа: https://ru.m.wikipedia.org/wiki/Git
  6. Григорьев А.В. - Пути создания интеллектуальных САПР при различных уровнях квалификации экспертов [Электронный ресурс] – Режим доступа: http://masters.donntu.ru/2010/fknt/shaydt/library/article4.htm