Как сотрудники MIT решили проблему человеческого фактора

На состоявшейся в июне этого года конференции команда MIT представила систему, исправляющую серьезные дефекты в программном обеспечении.
11 июля 201563Geek Brains400059

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

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

Это то, что касается синтаксиса. Когда же в программе сделана логическая ошибка, искать и исправлять её значительно труднее и дольше.

«Хорошо, если сделанная ошибка исправлялась бы сама собой и всё работало!...» - мечта многих разработчиков и тестеров, потративших кучу времени на поиск программных багов и оптимизации кода. Видимо, так же когда-то мечтали и разработчики Массачусетского технологического института, а их коллеги из MIT компьютерных наук и лаборатории искусственного интеллекта (CSAIL) пошли дальше, решив сделать фантазии реальностью, и разработали программу CodePhage, которая автоматически исправляет ошибки. Данная программа, по заявлениям авторов, фиксирует ошибки уникальным методом, не имея доступа к исходному коду.

Принцип работы состоит в следующем: программа, обнаружив ошибку, заменяет её куском кода, взятым из программ-«доноров». Такими «донорами» могут служить уже существующие сценарии и библиотеки, расположенные в Интернете. В пробном запуске CodePhage удалось исправить ошибки в семи разных типах программ, при этом в работе использовалось от двух до четырёх «донорских» сценариев.

Программа умеет различать критические и не критические ошибки. Допустим, необходимо ввести несколько чисел, а затем разделить их сумму на введенный пользователем делитель. При анализе кода определяются два ключевых момента: ввод слагаемых и делителя. Анализ на первом этапе покажет, что слагаемые могут быть любыми, и это не даст критическую ошибку, а вот если в качестве делителя будет «ноль», и это не учтено в коде разработчика, ошибка фиксируется как критическая, и CodePhage ищет кусок кода, который описывает безошибочную работу при данном значении делителя. Замечательно то, что совсем не обязательно, чтобы коды были написаны на одном языке программирования. Ведь уже наработана значительная база данных и в наличии имеется множество стандартных модулей и блоков кода, которые описывают распространенные операции и сценарии.

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

Автор: Наталья Игнатова

Хотите стать программистом? Рекомендуем профессию «Веб-разработчик».

Популярные статьи

Новые комментарии