В рамках Intel Labs Day компания Intel представила ControlFlag — аналитическую систему машинного программирования, способную самостоятельно обнаруживать ошибки в программном коде. Для этого решение использует машинное программирование, сплав машинного обучения, формальных методов, языков программирования, компиляторов и компьютерных систем. Так, в ходе предварительных испытаний ControlFlag проанализировала более 1 млрд. немаркированных строк промышленного кода и обнаружила в них новые дефекты.
В своей работе ControlFlag использует специфическую функцию — «выявление аномалий». Подобно тому, как люди, наблюдая определенные закономерности в обычной жизни, учатся считать их «нормальными», ControlFlag обучается на заранее проверенных примерах определять «нормальные» паттерны, выявляя на их основе аномалии в коде. ControlFlag способна обнаруживать их независимо от используемого языка программирования.
Одно из ключевых преимуществ метода самообучения ControlFlag для распознавания паттернов — это способность программы адаптироваться к стилю разработчика. ControlFlag способна определять даже стилистические вариации в языке программирования — аналогично тому, как читатели распознают различия между полными словами и их сокращениями.
В процессе работы ControlFlag учится определять и маркировать стилистические варианты кода. Решение также может настраивать идентификацию ошибок и выдавать рекомендации по их устранению, опираясь на собственные знания. Эти опции помогают ControlFlag не считать за ошибку стилистические вариации кода, используемые разными командами разработчиков.
Почему это важно. В мире, который все больше зависит от ПО, разработчики продолжают тратить непропорционально много времени на исправление ошибок в коде. Из $1,25 трлн, которые IT-индустрия ежегодно тратит на разработку ПО, на отладку кода уходит порядка 50% средств.
Ожидается, что в будущем задача отладки кода будет еще сильнее влиять на разработчиков и IT-индустрию в целом. По мере развития технологий возрастает роль гетерогенных архитектур, в которых используются специализированные процессоры для управления большими массивами данных. Параллельно усложняется и программное обеспечение, необходимое для управления такими системами — это значительно повышает риск возникновения ошибок. Кроме того, все сложнее найти специалистов с опытом безошибочного, эффективного и безопасного программирования на различном оборудовании. Это также повышает риск появления новых и трудно обнаруживаемых ошибок в коде.
Как только ControlFlag будет полностью реализован, он сможет решить эту проблему путем автоматизации тестирования, мониторинга и отладки кода. Это не только повысит продуктивность разработчиков, предоставив им больше времени для творчества, но и поможет решить проблему высокой стоимости разработки ПО.
Что дальше. ControlFlag уже продемонстрировал способность выявлять скрытые ошибки в широко используемом промышленном коде, который заранее проверили разработчики. Например, ControlFlag проанализировал cURL и выявил неизвестную ранее аномалию. В результате это побудило разработчиков cURL выпустить исправленную версию инструмента.
Компания Intel начала использовать ControlFlag для выявления ошибок в процессе создания собственного ПО и прошивок. Это один из ключевых элементов проекта Intel Rapid Analysis for Developers, задача которого — повысить производительность путем предоставления экспертной поддержки.
Ранее Intel представила автоматическую систему машинного программирования — Machine Inferred Code Similarity (MISIM), которая способна распознавать, для чего предназначена та или иная часть программного продукта.