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

