Abstract

This paper provides an overview of program analysis techniques and describes practical implementation of these techniques for automatic software defect detection. The paper focuses on program dynamic analysis technique based on tainted data flow tracing, instrumentation and constraint set construction for automatic input generation. An overview of practical considerations for developing a dynamic analysis tool for Java applications is given. It is complemented by a detailed description of actual prototype implementation created within the scope of this project. Finally, the paper features an overview of practical results obtained on a number of Java applications and provides an evaluation of these results.

Highlights

  • This paper provides an overview of program analysis techniques, and highlights details of practical implementation of static and dynamic approaches for automatic software defect detection, their pros and cons

  • The paper focuses on dynamic program analysis technique

  • The paper features an overview of practical results obtained on a number of Java applications and provides an evaluation of these results

Read more

Summary

Введение

На сегодняшний день в области разработки программного обеспечения одной из важных задач является гарантия качества конечных продуктов. Под качеством понимается совокупность характеристик программного обеспечения, а именно: надёжность, сопровождаемость, практичность, эффективность, мобильность и функциональность. В любой достаточно сложной программной системе присутствуют разного рода ошибки. Поскольку программное обеспечение используется и в критических сферах человеческой деятельности, наличие блокирующих или критических ошибок в программах может приводить к катастрофическим последствиям. Поэтому неотъемлемой частью процесса разработки программ становится этап обнаружения ошибок. Среди различных методов поиска в программах дефектов можно выделить ручное и автоматическое обнаружение ошибок. Во второй части более подробно рассматриваются выбранные методы, исходя из особенностей языка Java. В третьей части описывается созданный прототип и использованные при его создании решения. И заключительная, часть подводит итог исследования и демонстрирует основные результаты, полученные при помощи прототипа

Автоматический поиск дефектов
Динамический анализ
Инструментация кода
Входные данные
Инвертирование условий и обнаружение дефектов
Анализ программ на языке Java
Инструментация
Определение списка методов для инструментации
Генерация условий на входные данные
Условные переходы
Итерационный механизм
Эвристики
Генерация ограничений
Проверка выполнимости ограничений
Скорость работы
Выполнение
Заключение
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call