СПОСОБ И СИСТЕМА МОДИФИКАЦИИ ПРОГРАММНОГО КОДА Российский патент 2024 года по МПК G06F8/30 

Описание патента на изобретение RU2824522C1

ОБЛАСТЬ ТЕХНИКИ

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

УРОВЕНЬ ТЕХНИКИ

[0002] С развитием информационных технологий IT-решения («Information technology» - информационные технологии) стали оказывать существенное влияние на все сферы и отрасли жизнедеятельности. В настоящее время различные компании и организации активно внедряют и используют в своей структуре IT-решения.

[0003] Разработка программного обеспечения для крупных финансовых организаций (например, банков) всегда трудоемкий и кропотливый труд. После релиза программного обеспечения часто возникает потребность в оптимизации программного кода. Оптимизация позволяет ускорить процесс работы программного обеспечения, исправить критические ошибки, многократно увеличить производительность программного обеспечения.

[0004] Из уровня техники известен патент US 8234636 В2 "Source code modification technique", патентообладатель: IBM, опубликовано: 29.05.2008. В данном решении описывается процесс модификации (оптимизации) кода с целью улучшения производительности программного обеспечения. Известное решение обеспечивает процесс модификации исходного кода для повышения производительности. Перед применением модификации программного кода, программист осуществляет проверку изменений и подтверждает их.

[0005] Недостатком известных решений в данной области техники является отсутствие возможности автоматизированной модификации программного кода.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

[0006] В заявленном техническом решении предлагается новый подход к процессу модификации программного кода. В данном решении используется алгоритм машинного обучения, который позволяет автоматизировать процесс модификации программного кода и значительно ускорить процесс оптимизации программного кода в программном обеспечении.

[0007] Таким образом, решается техническая проблема автоматизированной модификации программного кода.

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

[0009] Указанный технический результат достигается благодаря осуществлению компьютерно-реализуемого способа модификации программного кода, выполняемого с помощью по меньшей мере одного процессора и содержащего этапы, на которых:

- получают данные, содержащие по меньше мере блок исходного кода;

- преобразуют исходный код в граф программного кода, в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами;

- осуществляют обработку графа программного кода с помощью кодирующей модели машинного обучения (МО), обученной на графах программного кода, в ходе которой получают представление графа программного кода в виде матрицы скрытых состояний;

- осуществляют обработку матрицы скрытых состояний с помощью генеративной модели машинного обучения (МО), обученной на матрицах скрытых состояний графов немодифицированного программного кода, графов модифицированного кода и их исходных кодах, в ходе которой получают новый граф программного кода, соответствующий модифицированному программному коду, эквивалентному исходному программному коду по выполняемым функциям;

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

[0010] В одном из частных вариантов реализации способа преобразуют исходный код в дерево абстрактного синтаксиса (AST), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0011] В другом частном варианте реализации способа преобразуют исходный код в граф потока управления (CFG - control flow graph), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0012] В другом частном варианте реализации способа преобразуют исходный код в граф зависимости данных (DDG - Data Dependence Graph), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0013] В другом частном варианте реализации способа преобразуют исходный код в представление на основе статического однократного присваивания (SSA).

[0014] В другом частном варианте реализации способа преобразуют исходный код в граф свойств кода (CPG).

[0015] Кроме того, заявленный технический результат достигается за счет системы модификации программного кода, содержащей:

- по меньшей мере один процессор;

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0016] Фиг. 1 иллюстрирует блок-схему заявленного способа.

[0017] Фиг. 2 иллюстрирует пример общего вида вычислительной системы, которая обеспечивает реализацию заявленного решения.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

[0001] Ниже будут описаны понятия и термины, необходимые для понимания данного технического решения.

[0002] Модель в машинном обучении (МО) - совокупность методов искусственного интеллекта, характерной чертой которых является не прямое решение задачи, а обучение в процессе применения решений множества сходных задач.

[0003] Модификация программного кода (оптимизация программного кода) -различные методы преобразования кода ради улучшения его характеристик и повышения эффективности. Цели оптимизации (модификации) - уменьшение объема кода, уменьшение объема используемой программой оперативной памяти, ускорение работы программы, уменьшение количества операций ввода-вывода.

[0004] Эксплойт - компьютерная программа, фрагмент программного кода или последовательность команд, использующие уязвимости в программном обеспечении и применяемые для проведения атаки на вычислительную систему.

[0005] Эксплуатируемая уязвимость - уязвимость в программном обеспечении, для которой может быть создан и применен эксплойт.

[0006] AST - абстрактное синтаксическое дерево. Конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0007] F-1 мера представляет собой совместную оценку точности и полноты.

[0008] ROC-кривая - графическая характеристика качества бинарного классификатора, отражающая зависимость доли истинно-положительных классификаций от доли ложно-положительных классификаций при варьировании порога решающего правила.

[0009] Матрица ошибок - это способ разбить классифицируемые объекты на четыре категории в зависимости от комбинации реального класса и ответа классификатора.

[0010] Коннекторы - программные компоненты, осуществляющие сбор данных от источников информации (Система управления задачами /Система для совместной работы над релизами /Система управления версиями /Система управления проектами /Система управления сервисами предприятия /и др.) и приведение данных к необходимым структуре и формату.

[0011] Хранилище - система для хранения больших объемов собранных и обработанных коннекторами данных, а также генерируемой иными компонентами системы.

[0012] Данное техническое решение может быть реализовано на компьютере, в виде автоматизированной информационной системы (АИС) или машиночитаемого носителя, содержащего инструкции для выполнения вышеупомянутого способа.

[0013] Техническое решение может быть реализовано в виде распределенной компьютерной системы.

[0014] В данном решении под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций).

[0015] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы)/

[0016] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных, например, таких устройств, как оперативно запоминающие устройства (ОЗУ) и/или постоянные запоминающие устройства (ПЗУ). В качестве ПЗУ могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, твердотельные накопители (SSD), оптические носители данных (CD, DVD, BD, MD и т.п.) и др.

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

[0018] Виды оптимизации.

[0019] Оптимизация кода может проводиться, как и вручную, программистом, так и автоматизированно. В последнем случае оптимизатор может быть, как отдельным программным средством, так и быть встроенным в компилятор (т.н. оптимизирующий компилятор). Кроме того, следует отметить, что современные процессоры могут оптимизировать порядок выполнения инструкций кода.

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

[0021] В данном решении описан автоматизированный процесс высокоуровневой оптимизации программного кода с помощью моделей машинного обучения.

[0022] Подготовка данных для обучения.

[0023] Обучение модели проводилось на исторических данных об уязвимостях программного обеспечения, размеченных на 2 класса:

- исходный (немодифицированный) код (класс 1)

- модифицированный код (оптимизированный код с целью улучшения производительности программного обеспечения) (класс 0)

[0024] Обучение модели МО производится на данных в виде пары исходного кода и модифицированного кода.

[0025] Для оценки качества модели набор данных был разбит на 2 части: тренировочную и контрольную выборки. Разбиение происходило случайным образом в отношении 70% на тренировочную выборку и 30% на проверочную выборку.

[0026] Точность генерации программного кода по количеству полностью правильно сгенерированном коде составляет около 0,9.

[0027] Как показано на Фиг. 1 компьютерно-реализуемый способ модификации программного кода (100) состоит из нескольких этапов, выполняемых по меньшей мере одним процессором.

[0028] На этапе (101) получают данные, содержащие по меньше мере блок исходного кода.

[0029] Далее на этапе (102) преобразуют исходный код в граф программного кода, в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0030] На данном этапе производится синтаксический анализ (парсинг) исходного кода, содержащегося в файле, полученном на Этапе (101), и написанного на любом языке программирования (Java, С#, ASP, Visual Basic, С, С++, PHP, Apex, Ruby, JavaScript, VBScript, Perl, Swift, Python, Groovy, Scala и др.), результатом которого является дерево разбора, или дерево абстрактного синтаксиса, или любое другое представление кода в виде дерева или графа, отображающее зависимости между всеми элементами исходного кода.

[0031] Данное представление может содержать информацию об их положениях в исходном коде (номер строки начала элемента, номер колонки начала элемента, номер строки окончания элемента, номер колонки окончания элемента), их классах, таких как выражения (expressions), инструкции (statements), объявления (declarations) и др., типах их классов, их именах, их родительских и наследных элементах, комментариях к ним и пр.

[0032] В одном из частных вариантов реализации способа преобразуют исходный код в дерево абстрактного синтаксиса (AST), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0033] В другом частном варианте реализации способа преобразуют исходный код в граф потока управления (CFG - control flow graph), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0034] В другом частном варианте реализации способа преобразуют исходный код в граф зависимости данных (DDG - Data Dependence Graph), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

[0035] В другом частном варианте реализации способа преобразуют исходный код в представление на основе статического однократного присваивания (SSA).

[0036] В другом частном варианте реализации способа преобразуют исходный код в граф свойств кода (CPG).

[0037] Далее на этапе (103) осуществляют обработку графа программного кода с помощью кодирующей модели машинного обучения (МО), обученной на графах программного кода, в ходе которой получают представление графа программного кода в виде матрицы скрытых состояний.

[0038] На данном этапе граф немодифицированного кода подается на вход кодирующей модели машинного обучения. Формируется словарь всех возможных типов классов (типов) вершин графа, полученных на этапе (102). Этот словарь используется для получения векторного представления в МО типов классов (типов) вершин графа. С помощью этих векторных представлений получаем матрицы скрытых состояний графа программного кода.

[0039] Для получения матрицы скрытых состояний графа могут быть использованы такие технологии как нейронные сети: Полносвязанные, Рекуррентные, Сверточные, Трансформеры.

[0040] В одном из частных вариантов изобретения для получения матрицы скрытых состояний графа используются нейронные сети, такие как GNN (англ. Graph Neural Network), DeepWalk, Line, Node2vec, Hope, нейронная сеть с графовым механизмом внимания (GAT - Graph ATtention), индуктивная модель обучения (GraphSAGE), RGCN (Relational Graph Convolutional Networks), GCN (Graph Convolutional Networks) или наследуемые от них сети.

[0041] Далее на этапе (104) осуществляют обработку матрицы скрытых состояний с помощью генеративной модели машинного обучения (МО), обученной на матрицах скрытых состояний графов немодифицированного программного кода, графов модифицированного кода и их исходных кодах, в ходе которой получают новый граф программного кода, соответствующий модифицированному программному коду, эквивалентному исходному программному коду по выполняемым функциям.

[0042] Далее на этапе (105) переводят полученный на предыдущем этапе граф программного кода в блок модифицированного исходного кода, эквивалентный по функционалу изначальному блоку исходного кода.

[0043] Обучение модели машинного обучения

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

[0044] Далее могут идти нейронные сети: Полносвязанные, Рекуррентные, Сверточные, Трансформеры. В одном из частных вариантов изобретения блок энкодера представляет собой по меньше мере один слой нейронные сети из типов Рекуррентные нейронные сети (Recurrent neural networks, RNN), Долгая краткосрочная память (Long short term memory, LSTM), Управляемые рекуррентные нейроны (Gated recurrent units, GRU), Нейронные машины Тьюринга (Neural Turing machines, NMT), Двунаправленные RNN, LSTM и GRU (BiRNN, BiLSTM и BiGRU), Глубокие остаточные сети (Deep residual networks, DRN), Нейронные эхо-сети (Echo state networks, ESN), Машины неустойчивых состояний (Liquid state machines, LSM), самоорганизующаяся карта Кохонена (Kohonen networks, KN, или organising (feature) map, SOM, SOFM).

[0045] Обучение происходит следующим образом: операции производятся над двумя группами блоков программного кода, где первые блоки программного кода - это исходный (немодифицированный) код, а вторые блоки программного кода - это модифицированный код. Данные блоки переводятся в граф в соответствии с этапами (101)-(102).

[0046] Таким образом получают граф исходного кода - А, соответствующую ей граф модифицированного кода - Б. Полученный граф А подают в блок энкодера (кодировки) генеративной модели машинного обучения. Получают матрицу скрытых состояний (этап 103). Данную матрицу скрытых состояний подают в блок генератора (декодера) генеративной модели машинного обучения (этап 104). Получают новый (восстановленный) граф - В. Данный граф (В) сравнивают с графом модифицированного кода Б. Полученные несоответствия пересчитывают в количественную характеристику по выбранной функции потерь. Данную количественную характеристику используют для обучения нейронной сети по выбранному алгоритму обучения.

[0047] В одном из частных вариантов изобретения используется по меньше мере одна из функций потерь: KLD (Вычисляет потерю дивергенции Кулбека-Лейблера между истинным значением и предсказанным значением), МАЕ (Вычисляет среднюю абсолютную ошибку между метками и прогнозами), МАРЕ (Вычисляет среднюю абсолютную процентную ошибку между истинным значением и предсказанным значением), MSE (Вычисляет среднеквадратичную ошибку между метками и прогнозами), MSLE (Вычисляет среднеквадратичную логарифмическую ошибку между истинным значением и предсказанным значением), binary_crossentropy (Вычисляет двоичную потерю кроссэнтропии), binary_focal_crossentropy (Вычисляет двоичную потерю фокальной кроссэнтропии), categorical_crossentropy (Вычисляет категориальную потерю кроссэнтропии), categorical_hinge (Вычисляет категориальную потерю «лассо» между истинным значением и предсказанным значением), cosine_similarity (Вычисляет косинусное сходство между метками и предсказаниями), hinge (Вычисляет потери в шарнире между истинным значением и предсказанным значением), huber (Вычисляет величину потерь по Хуберу), kl_divergence (Вычисляет потерю дивергенции Кулбека-Лейблера между истинным значением и предсказанным значением), kullback_leibler_divergence (Вычисляет потерю дивергенции Кулбека-Лейблера между истинным значением и предсказанным значением), log_cosh (Логарифм гиперболического косинуса ошибки прогнозирования), logcosh (Логарифм гиперболического косинуса ошибки прогнозирования), mean_absolute_error (Вычисляет среднюю абсолютную ошибку между метками и прогнозами), mean_absolute_percentage_error (Вычисляет среднюю абсолютную процентную ошибку между истинным значением и предсказанным значением), meansquarederror (Вычисляет среднеквадратичную ошибку между метками и прогнозами), mean_squared_logarithmic_error (Вычисляет среднеквадратичную логарифмическую ошибку между истинным значением и предсказанным значением), poisson (Вычисляет потери Пуассона между истинным значением и предсказанным значением), sparse_categorical crossentropy (Вычисляет разреженную категориальную потерю кроссэнтропии), squaredhinge (Вычисляет квадрат потерь на «лассо» между истинным значением и предсказанным значением).

[0048] Данные функции потерь часто имеют следующие обозначения: binary_cross_entropy, binary_cross_entropy_with_logits, poisson_nll_loss, cosine_embedding_loss, cross_entropy, ctc_loss, gaussian_nll_loss, hinge_embedding_loss, kl_div, llloss, mse_loss, margin_ranking_loss, multilabel_margin_loss, multilabel_soft_margin_loss, multi_margin_loss, nllloss, huber_loss, smoothllloss, soft_margin_loss, triplet_margin_loss, triplet margin_with_distance_loss.

[0049] В одном из частных вариантов изобретения используется по меньше мере один из алгоритмов обучения: Adadelta, Adagrad, Adam, AdamW, SparseAdam, Adamax, ASGD, LBFGS, NAdam, RAdam, RMSprop, Rprop, FTRL, SGD, FastSGD, SGD-Nesterov, SAGA, SAGA+.

[0050] В результате, данный подход позволяет автоматизировать процесс оптимизации кода, сократить время проверки программного кода и его модификации. Полученная оптимизация позволяет достичь ускорения работы программного обеспечения, исправления ошибок работы программного обеспечения, увеличения производительности программного обеспечения, улучшает характеристики кода, повышает его эффективность, уменьшает объем кода, объем используемой программой оперативной памяти, ускоряет работу и производительность программного обеспечения, уменьшает количество операций ввода-вывода.

[0051] На Фиг. 2 представлен пример общего вида вычислительной системы (300), которая обеспечивает реализацию заявленного способа или является частью компьютерной системы, например, сервером, персональным компьютером, частью вычислительного кластера, обрабатывающим необходимые данные для осуществления заявленного технического решения.

[0052] В общем случае, система (300) содержит объединенные общей шиной информационного обмена один или несколько процессоров (301), средства памяти, такие как ОЗУ (302) и ПЗУ (303), интерфейсы ввода/вывода (304), устройства ввода/вывода (305), и устройство для сетевого взаимодействия (306).

[0053] Процессор (301) (или несколько процессоров, многоядерный процессор и т.п.) может выбираться из ассортимента устройств, широко применяемых в настоящее время, например, таких производителей, как: Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon™ и т.п. Под процессором или одним из используемых процессоров в системе (300) также необходимо учитывать графический процессор, например, GPU NVIDIA или Graphcore, тип которых также является пригодным для полного или частичного выполнения способа, а также может применяться для обучения и применения моделей машинного обучения в различных информационных системах.

[0054] ОЗУ (302) представляет собой оперативную память и предназначено для хранения исполняемых процессором (301) машиночитаемых инструкций для выполнение необходимых операций по логической обработке данных. ОЗУ (302), как правило, содержит исполняемые инструкции операционной системы и соответствующих программных компонент (приложения, программные модули и т.п.). При этом, в качестве ОЗУ (302) может выступать доступный объем памяти графической карты или графического процессора.

[0055] ПЗУ (303) представляет собой одно или более устройств постоянного хранения данных, например, жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др.

[0056] Для организации работы компонентов системы (300) и организации работы внешних подключаемых устройств применяются различные виды интерфейсов В/В (304). Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительного устройства, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232 и т.п.

[0057] Для обеспечения взаимодействия пользователя с вычислительной системой (300) применяются различные средства (305) В/В информации, например, клавиатура, дисплей (монитор), сенсорный дисплей, тач-пад, джойстик, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса) и т.п.

[0058] Средство сетевого взаимодействия (306) обеспечивает передачу данных посредством внутренней или внешней вычислительной сети, например, Интранет, Интернет, ЛВС и т.п. В качестве одного или более средств (306) может использоваться, но не ограничиваться: Ethernet карта, GSM модем, GPRS модем, LTE модем, 5G модем, модуль спутниковой связи, NFC модуль, Bluetooth и/или BLE модуль, Wi-Fi модуль и др.

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

Похожие патенты RU2824522C1

название год авторы номер документа
СПОСОБ И СИСТЕМА УСТРАНЕНИЯ УЯЗВИМОСТЕЙ В ПРОГРАММНОМ КОДЕ 2023
  • Вышегородцев Кирилл Евгеньевич
  • Кузьмин Александр Михайлович
RU2821220C1
СПОСОБ И СИСТЕМА ВЫЯВЛЕНИЯ ЭКСПЛУАТИРУЕМЫХ УЯЗВИМОСТЕЙ В ПРОГРАММНОМ КОДЕ 2022
  • Максимова Анна Андреевна
  • Гончаренко Лейла Халидовна
  • Бачевский Артем Евгеньевич
  • Гуртова Кристина Сергеевна
  • Умеренко Григорий Сергеевич
  • Анистратенко Михаил Артурович
RU2790005C1
Способ и система поддержки принятия врачебных решений с использованием математических моделей представления пациентов 2017
  • Дрокин Иван Сергеевич
  • Бухвалов Олег Леонидович
  • Сорокин Сергей Юрьевич
RU2703679C2
СПОСОБ И СИСТЕМА АВТОМАТИЗИРОВАННОЙ МИГРАЦИИ ИНФОРМАЦИОННОЙ ИНФРАСТРУКТУРЫ ПРЕДПРИЯТИЯ В ОБЛАЧНЫЙ СЕРВИС 2022
  • Хапов Игорь Александрович
  • Кривцова Екатерина Николаевна
  • Кистаури Давид Вячеславович
  • Сайнуков Михаил Сергеевич
  • Миндзаева Дана Яновна
  • Комаров Роман Андреевич
  • Халиулов Альберт Рашидович
RU2792257C1
СПОСОБ И СИСТЕМА ВЫЯВЛЕНИЯ ВРЕДОНОСНЫХ ФАЙЛОВ В НЕИЗОЛИРОВАННОЙ СРЕДЕ 2020
  • Прудковский Николай Сергеевич
RU2722692C1
СПОСОБ ПРЕДОТВРАЩЕНИЯ ОБРАТНОГО ИНЖИНИРИНГА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, НЕАВТОРИЗОВАННОЙ МОДИФИКАЦИИ И ПЕРЕХВАТА ДАННЫХ ВО ВРЕМЯ ВЫПОЛНЕНИЯ 2006
  • Асипов Керен
  • Асипов Борис
RU2439669C2
Способ и система графо-ориентированного создания масштабируемых и сопровождаемых программных реализаций сложных вычислительных методов 2017
  • Соколов Александр Павлович
  • Першин Антон Юрьевич
RU2681408C2
СПОСОБ ДИАГНОСТИРОВАНИЯ КОМПЛЕКСА БОРТОВОГО ОБОРУДОВАНИЯ ВОЗДУШНЫХ СУДОВ НА ОСНОВЕ МАШИННОГО ОБУЧЕНИЯ 2023
  • Букирёв Александр Сергеевич
  • Савченко Андрей Юрьевич
  • Ипполитов Сергей Викторович
  • Крячков Вячеслав Николаевич
  • Реснянский Сергей Николаевич
RU2809719C1
СПОСОБ ДИАГНОСТИРОВАНИЯ КОМПЛЕКСА БОРТОВОГО ОБОРУДОВАНИЯ ВОЗДУШНЫХ СУДОВ НА ОСНОВЕ МАШИННОГО ОБУЧЕНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2023
  • Букирёв Александр Сергеевич
  • Савченко Андрей Юрьевич
  • Ипполитов Сергей Викторович
  • Крячков Вячеслав Николаевич
  • Реснянский Сергей Николаевич
RU2816667C1
СПОСОБ ДИАГНОСТИРОВАНИЯ КОМПЛЕКСА БОРТОВОГО ОБОРУДОВАНИЯ ВОЗДУШНЫХ СУДОВ НА ОСНОВЕ МАШИННОГО ОБУЧЕНИЯ БЕЗ УЧИТЕЛЯ С АВТОМАТИЧЕСКИМ ОПРЕДЕЛЕНИЕМ ПАРАМЕТРОВ ОБУЧЕНИЯ МОДЕЛЕЙ 2023
  • Букирёв Александр Сергеевич
RU2818858C1

Иллюстрации к изобретению RU 2 824 522 C1

Реферат патента 2024 года СПОСОБ И СИСТЕМА МОДИФИКАЦИИ ПРОГРАММНОГО КОДА

Изобретение относится к автоматизированному способу и системе модификации программного кода с помощью алгоритмов машинного обучения. Технический результат заключается в повышении скорости модификации программного кода за счет автоматизации процесса. Способ выполняется с помощью по меньшей мере одного процессора и содержит этапы, на которых: получают данные, содержащие по меньше мере блок исходного кода; преобразуют исходный код в граф программного кода, в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами; осуществляют обработку графа программного кода с помощью кодирующей модели машинного обучения (МО), обученной на графах программного кода, в ходе которой получают представление графа программного кода в виде матрицы скрытых состояний; осуществляют обработку матрицы скрытых состояний с помощью генеративной модели машинного обучения (МО), обученной на матрицах скрытых состояний графов немодифицированного программного кода, графов модифицированного кода и их исходных кодах, в ходе которой получают новый граф программного кода, соответствующий модифицированному программному коду, эквивалентному исходному программному коду по выполняемым функциям; переводят полученный на предыдущем этапе граф программного кода в блок модифицированного исходного кода, эквивалентный по функционалу изначальному блоку исходного кода. 2 н. и 5 з.п. ф-лы, 2 ил.

Формула изобретения RU 2 824 522 C1

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

- получают данные, содержащие по меньше мере блок исходного кода;

- преобразуют исходный код в граф программного кода, в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами;

- осуществляют обработку графа программного кода с помощью кодирующей модели машинного обучения (МО), обученной на графах программного кода, в ходе которой получают представление графа программного кода в виде матрицы скрытых состояний;

- осуществляют обработку матрицы скрытых состояний с помощью генеративной модели машинного обучения (МО), обученной на матрицах скрытых состояний графов немодифицированного программного кода, графов модифицированного кода и их исходных кодах, в ходе которой получают новый граф программного кода, соответствующий модифицированному программному коду, эквивалентному исходному программному коду по выполняемым функциям;

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

2. Способ по п. 1, характеризующийся тем, что преобразуют исходный код в дерево абстрактного синтаксиса (AST), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

3. Способ по п. 1, характеризующийся тем, что преобразуют исходный код в граф потока управления (CFG - control flow graph), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

4. Способ по п. 1, характеризующийся тем, что преобразуют исходный код в граф зависимости данных (DDG - Data Dependence Graph), в котором внутренние вершины сопоставлены с операторами языка программирования, а листья с соответствующими операндами.

5. Способ по п. 1, характеризующийся тем, что преобразуют исходный код в представление на основе статического однократного присваивания (SSA).

6. Способ по п. 1, характеризующийся тем, что преобразуют исходный код в граф свойств кода (CPG).

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

Документы, цитированные в отчете о поиске Патент 2024 года RU2824522C1

Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
СПОСОБ ПОСТРОЕНИЯ ПРОГРАММЫ 2008
  • Яковлев Сергей Юрьевич
  • Сафонов Илья Владимирович
  • Быкова Татьяна Владимировна
RU2406112C2
RU 2778078 C1, 15.08.2022
Способ восстановления спиралей из вольфрамовой проволоки для электрических ламп накаливания, наполненных газом 1924
  • Вейнрейх А.С.
  • Гладков К.К.
SU2020A1
US 9904527 B1, 27.02.2018
US 11042369 B1, 22.06.2021
US 9740480 B1, 22.08.2017
US 8234636 B2, 31.07.2012
Токарный резец 1924
  • Г. Клопшток
SU2016A1

RU 2 824 522 C1

Авторы

Вышегородцев Кирилл Евгеньевич

Кузьмин Александр Михайлович

Даты

2024-08-08Публикация

2023-07-24Подача