УДК 004.415.53
Построение срезов для программ
на динамических языках
© А.О. Крючков, В.А. Крищенко
МГТУ им. <...> Н.Э. Баумана, Москва, 105005, Россия
Предложен метод построения срезов, учитывающий особенности динамических
языков программирования и основанный на построении траектории в ходе интерпретации программы и последующем формировании на ее основе графа программных зависимостей. <...> Метод реализован для построения срезов программ на языке
Lua путем модификации его интерпретатора. <...> Срез программы — это подмножество ее операторов, влияющее
на результат, вычисляемый в заданной точке программы [1]. <...> Существующие методы построения срезов опираются на статический анализ зависимостей по данным и управлению, т. е. предполагают, что все возможные зависимости заранее известны. <...> Методы построения динамических срезов [3], учитывающих зависимости, возникающие в программе на конкретных исходных данных, также
предполагают, что множество всех зависимостей в программе известно заранее, и выбирают подмножество задействованных зависимостей на основании траектории выполнения программы. <...> Таким образом, существующие методы построения срезов применимы только для программ, не меняющих структуру межоператорных зависимостей во время выполнения. <...> В последние годы возросла популярность так называемых динамических языков, характеризующихся, среди прочего, динамической типизацией, возможностью модификации типов данных и объектов и встроенными высокоуровневыми средствами кодогенерации «на лету». <...> Работы [4, 5] показывают, что многие реальные программы
на таких динамических языках опираются на их динамические возможности, и, следовательно, существующие методы построения срезов к ним не применимы. <...> Зависимости в программе можно представить несколькими способами, наиболее распространенный среди которых — граф программных зависимостей (ГПЗ) [6]. <...> Граф программных зависимостей
2
Построение срезов для программ на динамических <...>