Автоматическая система исправления кода демонстрирует вдвое лучшие результаты по сравнению с предшественниками
Всякий, кому доводилось загружать обновления программ для компьютера или приложений для смартфона, знает, что почти всё коммерческое ПО не обходится без ошибок и слабых мест в системе безопасности, которые требуют регулярных патчей.
Подобные ошибки часто появляются просто по недосмотру. Например, когда программа пытается прочитать уже удаленные данные. Патчи зачастую тоже очень просты. Это может быть одна или две строки кода, которые проверяют, что объект данных всё еще существует.
Подобная простота натолкнула специалистов в области компьютерных наук на идею автоматической генерации патчей. Несколько групп исследователей, включая группу Мартина Ринара (Martin Rinard), профессора MIT в сфере электротехники и компьютерных наук, разработали шаблоны для обобщения часто встречающихся форм патчей. Эти шаблоны используются в специальных алгоритмах для генерации и оценки набора вариантов патчей.
Недавно, на симпозиуме Ассоциации вычислительной техники, посвященном основам разработки программного обеспечения, профессор Ринар, его студент Фэн Лун (Fan Long) и Питер Эмайден (Peter Amidon) из Калифорнийского университета в Сан-Диего представили новую систему, которая формирует шаблоны, обучаясь посредством анализа успешно действующих патчей для реального программного обеспечения.
Там, где написанная вручную система генерации патчей могла бы использовать пять или 10 шаблонов, эта новая система создала 85, обеспечив не только большее разнообразие, но и большую точность. Её шаблоны гораздо лучше "подогнаны" под конкретные разновидности встречающихся на практике патчей, так что она генерирует не так уж много непригодных вариантов. При тестировании эта новая система, получившая название Genesis, исправила почти вдвое больше ошибок, чем лучшая из написанных вручную систем генерации заплат.
На основе этих оценок, Genesis выбирает 500 самых многообещающих шаблонов. Для каждого из них, Genesis добавляет, по очереди, к исходной обучающей последовательности из двух примеров каждый из остальных примеров, создавая огромный набор из обучающих последовательностей по три примера. После этого он выполняет ту же самую процедуру оценки, извлекая 500 самых многообещающих шаблонов.
Не исключается, что при большем объеме обучающей последовательности и больших вычислительных мощностях удастся достичь еще более впечатляющих результатов. Но в любом случае система, экономящая программистам половину времени, затрачиваемого на поиск ошибок в коде, окажется полезной.
Источник: MIT
Эллеонора Керри
1 уровень
В MIT создали обучающуюся на примерах систему исправления ошибок
Комментарии
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
У этой страницы еще нет ни одного комментария