Научная статья на тему 'Оптимизация алгоритма построения кодовых карт программных проектов на основе теории множеств'

Оптимизация алгоритма построения кодовых карт программных проектов на основе теории множеств Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
95
35
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / МЕТРИКИ ПРОГРАММНОГО КОДА / КОДОВЫЕ КАРТЫ / ТЕОРИЯ МНОЖЕСТВ / АНАЛИЗ ИСХОДНОГО КОДА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Никулов К.В., Гольчевский Ю.В.

В статье приведены результаты исследования возможности ускорения построения кодовой карты программного проекта. Представлена модель программного проекта, на основе которой предложен улучшенный алгоритм построения кодовой карты. Проведено сравнение скорости работы ранее предложенного алгоритма с улучшенным. Новая реализация позволяет значительно быстрее строить карты и производить расчет метрик динамики программного кода/

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Оптимизация алгоритма построения кодовых карт программных проектов на основе теории множеств»

Математические структуры и моделирование 2016. №1(37). С. 87-90

УДК 519.688

оптимизация алгоритма построения кодовых карт программных проектов на основе теории множеств

К.В. Никулов

аспирант, e-mail: knikulov@yandex.ru Ю.В. Гольчевский

к. ф.-м. н., доцент, e-mail: yurag@syktsu.ru

Сыктывкарский государственный университет им. Питирима Сорокина

Аннотация. В статье приведены результаты исследования возможности ускорения построения кодовой карты программного проекта. Представлена модель программного проекта, на основе которой предложен улучшенный алгоритм построения кодовой карты. Проведено сравнение скорости работы ранее предложенного алгоритма с улучшенным. Новая реализация позволяет значительно быстрее строить карты и производить расчет метрик динамики программного кода.

Ключевые слова: программное обеспечение, метрики программного кода, кодовые карты, теория множеств, анализ исходного кода.

Введение

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

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

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

Алгоритм построения кодовой карты является одним из ключевых этапов анализа проекта. В работе [1] изложены два способа построения кодовой карты и дальнейшего расчёта метрик динамики программного кода, что может быть

88 К.В. Никулов, Ю.В. Гольчевский. Оптимизация алгоритма построения...

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

Целью данной работы является описание более быстрого алгоритма построения кодовой карты программного проекта.

1. Модель проекта и улучшенный алгоритм построения кодовой карты

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

1) проект протяжен во времени;

2) с течением времени происходит изменение содержания текста исходного кода проекта;

3) проект состоит из версий, содержащих тексты исходных кодов программы в различные моменты времени;

4) для каждой версии известна дата её выхода;

5) версия проекта представляет собой множество строк её исходного кода.

Следует отметить, что поскольку множество не может содержать два идентичных элемента, то версия проекта не может содержать две идентичных строки. Если версия проекта содержит повторяющуюся строку, то все вхождения этой строки в текст версии представляются одним элементом множества.

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

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

Анализ изложенного в работе [1] способа построения кодовой карты на базе использования множеств показал, что при выполнении алгоритма самый объёмный фрагмент проекта передаётся между всеми итерациями и обнаруживается только на последней. Это обуславливает то, что он присутствует в одном из операндов в большинстве выполняемых операций, что значительно увеличивает время выполнения алгоритма.

Математические структуры и моделирование. 2016. № 1(37)

89

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

Итак, оптимизированный алгоритм построения кодовой карты можно записать следующим образом:

1) записать в память N множеств, соответствующих версиям проекта;

2) выбрать непустое множество Dx, соответствующее некоторой версии;

3) найти в выбранном множестве фрагмент Fj;

4) вычесть найденный фрагмент Fj из версий, в которые он входит, и сделать запись о фрагменте в картах соответствующих версий;

5) если остались непустые множества версий, продолжить выполнение с пункта 2.

Поиск фрагмента в множестве производится в два этапа:

1) пусть Fj := Dx;

2) пусть i = 1... N, i = x. Если Fj \ Di = 0, то Fj := Fj \ D,.

Проверка корректности предложенного улучшенного алгоритма выполнялась путём сравнения времени, затраченного на составление кодовой карты до и после оптимизации. Полученные данные показали, что время сократилось с 9-16 дней до 1-5 минут для различных проектов.

2. Выводы

Предложенная модель программного проекта и проведённые эмпирические исследования позволили внести в алгоритм построения кодовой карты изменения, связанные с очерёдностью поиска фрагментов проекта. Это открыло возможность для значительного уменьшения времени выполнения вычислений.

Литература

1. Гольчевский Ю.В., Северин П.А., Никулов К.В. Построение кодовых карт и расчёт метрик динамики кода для оценки безопасности разрабатываемого программного обеспечения // Проблемы информационной безопасности. Компьютерные системы. 2015. № 2. С 98-105.

90 К.В. Никулов, Ю.В. Гольчевский. Оптимизация алгоритма построения...

optimization of set-theory-based algorithm of software projects code plans construction

K.V. NiKuLov

Postgraduate Student, e-mail: knikulov@yandex.ru Yu.V. GoLehevsKiy

Ph.D. (Phys.-Math.), Associate Professor, e-mail: yurag@syktsu.ru Syktyvkar State University n.a. Pitirim Sorokin

Abstract. The results of research of acceleration possibility of software project code plan construction were presented. The model of a software project was offered. The model-based improved code plan construction algorithm was described. The comparison of speed of the previously proposed and improved algorithms was performed. The new implementation allows to build plans and to calculate dynamics code metrics much faster.

Keywords: software, code metrics, code maps, set theory, source code analysis.

i Надоели баннеры? Вы всегда можете отключить рекламу.