Выбирай : Покупай : Используй
0

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

Компания Intel раскрыла исходники ControlFlag — продвинутой системы поиска аномалий в программном коде. Система использует технологии машинного обучения для выявления ошибок.

Автоотладчик

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

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

ControlFlag позволит разработчикам значительно сократить время на отладку программного кода. Недавнее исследование Gartner показало, что в 2020 г. индустрия разработки ПО израсходовала в общей сложности $2 трлн именно на доработку и устранение ошибок в программном коде. По данным исследователей Кэмбриджского университета, программисты тратят до половины своего времени работы на отладку. Соответственно, примерно половина ИТ-бюджета тратится именно на такую работу.

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

Ручная работа

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

Intel сделал общедоступным систему аудита кода на базе ИИ

ControlFlag работает по относительно простому принципу: программа обучается видеть нормальные шаблоны проектирования программного кода (вне зависимости от языка) и опознавать отклонения от них.

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

В Intel отметили, что эффективность ControlFlag в поиске ошибок «изумила» даже ее собственных разработчиков. Впрочем, они признают, что система давала и ложные срабатывания: далеко не все аномалии, которая она выявила, действительно означали ошибки.

Постоянное обновление

Создатели ControlFlag утверждают, что продолжат ее совершенствовать, и что этот процесс вряд ли когда-либо остановится: языки программирования меняются, сложность ПО растет, соответственно, ControlFlag придется постоянно модернизировать, чтобы успевать за всеми изменениями.

ControlFlag разработан в рамках проекта Intel Machine Programming Research, заявленное назначение которого — сократить время разработки ПО в 1000 раз за счет применения автоматизации и упрощения процессов. В 2020 г. Intel вместе с Массачусетским технологическим институтом представили другую систему в рамках того же проекта — MISIM (Machine Inferred Code Similarity, прогнозируемое машиной подобие в коде). Это решение, которое позволяет определить функции программной разработки, исходя из анализа фрагментов ее кода. MISIM использует обширный каталог уже существующего программного кода для определения назначения новых алгоритмов, которые ей приходится изучать. Программа также может предлагать разработчикам новые способы написания аналогичного кода или повышения его эффективности.

В дальнейшем в Intel ожидают, что MISIM и ControlFlag станут единым решением.

«В случае широкого распространения системы инспекции кода на базе технологий ИИ могут совершить революцию в сфере программирования, — считает Георгий Лагода, заместитель генерального директора группы компаний «Программный продукт». — Увеличится скорость реальной разработки, сократится количество ошибок в коде, в конечном счете, улучшится ситуация с кибербезопасностью программных пакетов. Но это все — при условии, что подобные решения действительно окажутся эффективными и будут давать минимум ложных срабатываний.

Комментарии