Создано «самозалечивающееся» ПО

Софт Софт
мобильная версия
, Текст: Сергей Попсулин
Исследователи создали систему, которая автоматически исправляет ошибки в исходном коде. Для этого она использует бинарные файлы-доноры, которые могут быть написаны на другом языке программирования.

Исследователи из Лаборатории вычислительной техники и искусственного интеллекта при Массачусетском технологическом институте разработали систему под названием Code Phage, автоматически исправляющую ошибки в приложениях с открытым исходным кодом.

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

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

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

Чтобы найти проверочное условие в приложении-доноре и понять, как оно работает, Code Phage запускает приложение-донор сначала с «исправным», а затем — со «сбойным» параметром (то есть вызывающим сбой в оригинальной программе). При каждой «прогонке» система выстраивает цепочку логических операций, происходящих в программе, пока не найдет разветвление этих цепочек — то место, где находится проверочное условие.


Исследователи создали систему, которая автоматически исправляет ошибки в исходном коде

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

При этом Code Phage работает с бинарными донорами, то есть ей не нужно знать исходный код приложений-доноров, так как она анализирует их логику.

В своем эксперименте исследователи смогли исправить ошибки в семи популярных приложениях с открытым исходным кодом, используя 2-4 донора для каждого из них. На исправление каждой ошибки ушло от 2 до 10 минут.

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

Авторы работы считают, что изобретение позволит повысить надежность ПО и сократить время на его разработку.

«В будущем вам не придется писать фрагмент кода, который кто-то уже написал до вас. Система сама найдет этот фрагмент и автоматически поместит его в вашу программу, чтобы она исправно работала», — поделился своим видением один из авторов проекта, профессор по вычислительной технике и электротехнике Массачусетского технологического института Мартин Ринард (Martin Rinard).