Научные методы исследования

Анализ программ

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

Распространёнными спо­со­бами анализа программ яв­ляют­ся анализ потока управления и анализ потока данных программы. Анализ потока управления программы заключается в построении потока управления для каждой процедуры программы и графа вызовов программы, а далее в выяснении различных свойств структуры программы и различных вариантов её выполнения по этим графам. В графе потока управления вершинами являются т. н. базовые блоки – участки команд программы без переходов управления (с одним входом и одним выходом), а дуги означают переходы управления между вершинами. В графе вызовов программы вершинами являются процедуры программы, а дугами – возможные вызовы процедур. Анализ потока данных программы заключается в выяснении различных свойств переменных, выражений или их значений в каждой точке программы, которые справедливы для всех вариантов выполнений программы или для некоторого множества вариантов (в том числе для конкретного пути выполнения). Разработаны семейства алгоритмов анализа потока данных, в которых определяются способы моделирования требуемых свойств, а затем обходится граф потока управления программы или его подграфы в определённом порядке и вычисляются необходимые модельные свойства.

  • Современные технологии
  • Разработка программного обеспечения
  • Обработка данных