Отдельные компании, занимающиеся разработкой программного обеспечения, тратят ежегодно миллионы долларов на поиски потенциально опасных ошибок, которые, так или иначе, допускаются в разрабатываемых программах. Этот процесс чрезвычайно сложен и с трудом подвергается автоматизации, и даже если программа-локатор обнаруживает десяток или сотню ошибок в другой программе, никто с уверенностью не может сказать, сколько ошибок она не заметила и пропустила. Исследователи из университета Нью-Йорка, Массачусетского технологического института и Северо-восточного университета сейчас работают над программой поиска ошибок, использующей весьма неординарный подход к этому делу. Вместо того, чтобы искать и исправлять ошибки, эта программа добавляет их в исходный код другой программы сотнями тысяч.
В своей работе ученые используют подход LAVA (Large-Scale Automated Vulnerability Addition), технологию преднамеренного добавления уязвимостей и ошибок в исходный текст программы. А такие «наполненные» заранее известными ошибками программы используются для оценки эффективности работы программ-локаторов, которые, в свою очередь, уже предназначены для поиска и устранения ошибок. Первые эксперименты с технологией LAVA показали, что большинство программ-локаторов могут обнаружить не более 2 процентов от общего количества имеющихся ошибок и узких мест.
Эффективность работы программ-локаторов измеряется обычно по двум параметрам, ложный положительный и ложный отрицательный уровни обнаружения ошибок. Ложный положительный сигнал соответствует обнаружению программой-локатором ошибки там, где ее нет, а ложный отрицательный сигнал — это, как нетяжело догадаться, просто пропущенная ошибка. Не зная точного количества и мест расположения ошибок в испытуемой программе нет никакого способа, позволяющего измерить упомянутые выше параметры, равно как и оценить эффективность работы программы-локатора.
«Единственным способом оценки работы программы-локатора — это подсунуть ей программу с заранее известным количеством ошибок. Именно это мы и делаем при помощи технологии LAVA» — пишут исследователи, — «Наша автоматизированная система вставляет в программу своего рода синтетические ошибки, но они по многим признакам совпадают с обычными ошибками, допускаемыми программистами». Следует отметить, что составление в ручном режиме тестовых программ для оценки эффективности работы программ-локаторов оценивается суммами с пятью нулями. Новая же программа способна «плодить» тестовые программы в большом количестве, а затраты на создание каждой из них не превышают нескольких центов.
Помимо того, что уже имеется в наличии, система LAVA позволяет своим пользователям вводить новые типы синтетических ошибок, которые характерны только для какой-нибудь разрабатываемой программы в частности. Это, в свою очередь, позволит настраивать работу программ-локаторов на поиски ошибок, которые допускаются при разработке даже с учетом индивидуальных особенностей каждого из участвующих в этом деле программистов.
«Никогда раньше в отрасли разработки программного обеспечения не было единого стандарта для технологий обнаружения ошибок. Программы, наполненные ошибками при помощи технологии LAVA, имеют все шансы стать таким стандартом, и если это случится в ближайшем будущем, то разрабатываемые программы станут менее «глючными», более быстрыми и эффективными». А для того, чтобы приблизить наступление упомянутого чуть выше момента, разработчики системы LAVA собираются в самом скором времени провести конференцию, на которую будут приглашены представители крупнейших разработчиков программного обеспечения и представители всех без исключения разработчиков программ-локаторов.
Источник: