|  | 7 августа 2016 | Информационные технологии

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

Ошибки в программе


Отдельные компании, занимающиеся разработкой программного обеспечения, тратят ежегодно миллионы долларов на поиски потенциально опасных ошибок, которые, так или иначе, допускаются в разрабатываемых программах. Этот процесс чрезвычайно сложен и с трудом подвергается автоматизации, и даже если программа-локатор обнаруживает десяток или сотню ошибок в другой программе, никто с уверенностью не может сказать, сколько ошибок она не заметила и пропустила. Исследователи из университета Нью-Йорка, Массачусетского технологического института и Северо-восточного университета сейчас работают над программой поиска ошибок, использующей весьма неординарный подход к этому делу. Вместо того, чтобы искать и исправлять ошибки, эта программа добавляет их в исходный код другой программы сотнями тысяч.

В своей работе ученые используют подход LAVA (Large-Scale Automated Vulnerability Addition), технологию преднамеренного добавления уязвимостей и ошибок в исходный текст программы. А такие "наполненные" заранее известными ошибками программы используются для оценки эффективности работы программ-локаторов, которые, в свою очередь, уже предназначены для поиска и устранения ошибок. Первые эксперименты с технологией LAVA показали, что большинство программ-локаторов могут обнаружить не более 2 процентов от общего количества имеющихся ошибок и узких мест.

Эффективность работы программ-локаторов измеряется обычно по двум параметрам, ложный положительный и ложный отрицательный уровни обнаружения ошибок. Ложный положительный сигнал соответствует обнаружению программой-локатором ошибки там, где ее нет, а ложный отрицательный сигнал - это, как нетяжело догадаться, просто пропущенная ошибка. Не зная точного количества и мест расположения ошибок в испытуемой программе нет никакого способа, позволяющего измерить упомянутые выше параметры, равно как и оценить эффективность работы программы-локатора.

"Единственным способом оценки работы программы-локатора - это подсунуть ей программу с заранее известным количеством ошибок. Именно это мы и делаем при помощи технологии LAVA" - пишут исследователи, - "Наша автоматизированная система вставляет в программу своего рода синтетические ошибки, но они по многим признакам совпадают с обычными ошибками, допускаемыми программистами". Следует отметить, что составление в ручном режиме тестовых программ для оценки эффективности работы программ-локаторов оценивается суммами с пятью нулями. Новая же программа способна "плодить" тестовые программы в большом количестве, а затраты на создание каждой из них не превышают нескольких центов.

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

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




Ключевые слова:
Программа, Локатор, Поиск, Ошибка, Эффективность, Измерение, LAVA, Внедрение, Исходный, Код

Первоисточник

Другие новости по теме:
  • Новая технология автоматического программирования делает "рой" роботов бо ...
  • Создана программа, способная исправить ошибки в другой программе, не имея д ...
  • Компания Google начинает внедрять первые технологии коррекции ошибок в обла ...
  • Система Chisel позволяет компьютерам экономить энергию, разрешая им делать ...
  • Процессор, которому "позволено ошибаться", в 15 раз более эффективен, чем ...




  • 7 августа 2016 06:01
    #1 Написал: cmp167

    Публикаций: 0
    Комментариев: 149
    Эти локаторы способны найти очень определенные ошибки, так же как и компилятор они не проверяют общую логику, так как это задача тестов, которые отправляют программе кривые данные и проверяют, что она их нормально переработала. Искать баги на уровне исходных кодов бессмысленно, т. к. большенство программ взаимодействуют с другими программами и если кривые данные отдаются другой программой, то это конечно можно проветить, но тогда каждый кусок данных проверяться будет сотнями раз, а кусков таких миллионы
        
    9 августа 2016 00:39
    #2 Написал: Pulsar

    Публикаций: 0
    Комментариев: 267
    cmp167,
    Согласен. Сам писал программы и сталкивался с таким, что трудно обнаружить. Например, в одной программе по бухгалтерии (1996 год) иногда возникала ошибка в 1 копейку. Мелочь, но непорядок. Стал искать, поставил контрольные точки с выводом промежуточных результатов. Выяснилось, что при округлении числа программа неправильно выполняла данную функцию. Т.е., грубо говоря, функция round (3/2) давала результат 1, вместо 2. Когда поставил максимальную точность (15 знаков после запятой), выяснилось, что после деления получалось число 1.4 и 9 в периоде. Почему - не знаю. Пришлось в формуле прибавить одну миллиардрную для минимизации данного бага.
        

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.