Разработана система для автоматического переноса старого кода в новое ПО

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

Команда исследователей из Лаборатории искусственного интеллекта Массачусетского технологического института (CSAIL) представила
новую систему для автоматического переноса кода из одной программы в другую. Система, получившая название CodeCarbonCopy (CCC), способна сравнивать исполнение двух программ, а затем переносить имена переменных, представление данных и другие значения из кода программы-донора в код программы-хоста.

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

Исследователи провели серию экспериментов по переносу кода между шестью реальными программами, в числе которых были VLC, mtPaint и MPlayer. В семи случаях из восьми эксперимент прошел успешно и функциональность программ не была нарушена. Неудача была обусловлена тем, что CCC не смогла перенести код из программы mtPaint в bmp2tiff из-за ряда специфических особенностей структурирования данных.

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

VLC (VideoLAN Client)—свободный кроссплатформенный медиаплеер. mtPaint— растровый графический редактор.MPlayer— кроссплатформенный медиаплеер.

Разработана система для автоматического переноса старого кода в новое ПО
Подписывайтесь на канал «SecurityLab» в Telegram, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.