Категория:Потоковый анализ программ

Материал из WikiGrapp
Перейти к навигации Перейти к поиску

Потоковый анализ является средством получения достоверной информации а поведении программы без ее реального исполнения. Извлекаемые из текста программы свойства — это глобальная информация о программе, которая не может быть получена ни пробными запусками программы, ни изучением ее отдельных фрагментов. Основной задачей потокового анализа является схематизация оптимизируемой программы — построение по программе моделирующей ее схемы, в которой важные для оптимизации свойства программы представлены о достаточной степенью точности. В процессе потокового анализа происходит извлечение определенных (схемных) семантических свойств программы; при этом используются семантика языка и текст анализируемой программы. Однако в отличие от «доказателей теорем» о программах потоковый анализ использует далеко не полную семантику языка и выводит существенно более простые свойства программы, чем свойство правильности или свойство пустоты. Техника потокового анализа — это «метод транзитивного замыкания», заметно уступающий по мощности таким общим методам доказательства теорем, как, например, «метод резолюций», но приводящий к существенно более эффективным алгоритмам.

Алгоритмы потокового анализа воспринимают программу (процедуру, модуль, программную систему и т.д.) в качестве входных данных, выявляют статическую информацию (вид которой зависит от конкретной решаемой проблемы) и возвращают полученную информацию в качестве результата. Такие алгоритмы используются при решении задач оптимизации, верификации, отладки, тестирования, распараллеливания, векторизации, параллельного программирования и во многих других приложениях. Они обеспечивают нахождение информации о программе или среде (окружении) без исполнения кода.