EngNews
Логин: 
Пароль: 
 
ГЛАВНАЯ
СОБЫТИЯ
ОТПРАВИТЬ НОВОСТЬ
КОНТАКТЫ
регистрация / забыл пароль
Главная / Автоматическая система устранения ошибок фиксирует в 10 больше ошибок по сравнению с предшественниками
01.02.2016
Автоматическая система устранения ошибок фиксирует в 10 больше ошибок по сравнению с предшественникамиИсследователи Массачусетского технологического института разработали систему машинного обучения, которая может провести исправления компьютерных программ с открытым исходным кодом и узнать их общие свойства, для того, чтобы произвести новые исправления для другого набора программ.
Исследователи протестировали свою систему на множестве ошибок программирования, взятых из реальных приложений с открытым исходным кодом, которые были скомпилирован для оценки автоматических систем устранения ошибок. Там, где эти ранние системы были в состоянии восстановить одну или две из ошибок, система Массачусетского технологического института устраняла около 15-18.
В то время как автоматический инструмент исправлении ошибок был бы полезен в своем собственном праве, работа исследователей может иметь более широкие последствия. Один из самых интригующих аспектов исследования заключается в универсальных свойствах правильного кода, который можно узнать из одного набора приложений и применять другой набор приложений. Распознавание правильного кода имеет огромные последствия для всего программного обеспечения.
Пользователи программ с открытым исходным кодом создают каталог ошибок, с которыми они сталкиваются на проектных веб-сайтах, и вкладчики в проекте прикрепляют корректировки кода, или «патчи», в тех же местах. Исследователи смогли написать компьютерный скрипт, который автоматически извлекается как неисправленный код и исправляет 777 ошибок в восьми общих приложений с открытым исходным кодом, хранящихся в онлайн хранилище GitHub.

Как и во всех системах машинного обучения, является решающим аспектом дизайна был выбор из «набора характеристик», который система будет анализировать. Исследователи сосредоточились на значениях, хранящихся в памяти - либо переменных, которые могут быть изменены во время выполнения программы, либо постоянных, которые нельзя изменять. Они идентифицировали 30 основных характеристики данного значения: они могут быть вовлечен в операции, такие как сложение или умножение, или сравнение, например, больше или равно; они могут быть локальными, то есть происходить только в пределах одного блока кода, или глобальными, доступными для программы в целом; это может быть переменная, которая представляет собой конечный результат расчета; и так далее.
Исследователи написали компьютерную программу, которая оценила все возможные отношения между этими характеристиками в последовательных строках кода. Более 3500 такие отношения составляют их набор функций. Их алгоритм машинного обучения затем пытался определить, какое сочетание признаков наиболее последовательно предсказывало успех патча.
В более ранней работе, исследователи разработали алгоритм, который пытается восстановить программные ошибки, систематически изменяя программный код. Измененный код затем подвергается набору тестов, предназначенных для выявления неправильного поведения. Этот подход может найти модификацию, которая проходит испытания, но может занять непозволительно много времени. Кроме того, модифицированный код все еще может содержать ошибки, которые тесты не вызывают.
Система машинного обучения работает в сочетании с этим ранним алгоритмам, сортируя предлагаемые изменения в соответствии с вероятностью того, что они являются правильными перед проведением длительных испытаний.
Исследователи протестировали свою систему на множестве 69 программных ошибок, которые неожиданно возникли в восьми популярных программах с открытым исходным кодом. Из них 19 поддались типу модификаций, который использует алгоритм Лонга; другие 50 имеют более сложные проблемы, которые связаны с логическими противоречиями через крупные куски кода.
Когда исследователи написали систему, чтобы обосноваться на первом решении, которое прошло тест, она было в состоянии правильно исправить 15 из 19 ошибок; когда они позволили ей работать в течение 12 часов над проблемой, она исправила 18 ошибок.
Конечно, это все еще оставляет другие 50 ошибок в ходе испытания нетронутыми. Теперь исследователи работают над системой машинного обучения, которая будет смотреть на более крупнозернистое манипулирование значениями программы через крупные участки кода, в надежде получить систему, которая может обрабатывать более сложные ошибки.



Новости инженерии
Новости политики
Социальные новости
Мировые происшествия
Ваши новости
Поставщики
Диллеры
Дистрибьютеры
 
Все права защищены ©
2014 - 2015 ИнжНьюз