RESEARCH AND DEVELOPMENT OF METHODS OF DYNAMIC ANALYSIS OF CODE FOR CREATING SELF-ADAPTIVE SOFTWARE
Authors: Бершадский А.М. , Бождай А.С. , Евсеева Ю.И. , Гудков А.А. 
Published: July 2024

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

The article deals with the development of methods for dynamic code analysis for creating self-adaptive software systems. To date, not so many attempts have been made to create a universal theoretical apparatus for the synthesis of self-adaptable applications, while the research direction itself is relevant: the self-adapting feature will improve the quality of the software being developed and reduce the time and labor costs of its development. The proposed approach develops the concept of reflexive self-adaptation proposed in the earlier works of the authors. The central idea of the new approach is the development of a new universal method of self-adaptation of software systems based on the joint use of technology for dynamic analysis of code and elements of the theory of translators. Throughout the life cycle of the program, the calls of the main functions are recorded, and then a set of dynamic call graphs is constructed on the basis of the recorded calls. This set becomes the basis of a more complex data structure used to analyze the behavior of the system. In such a structure, each vertex of the call graph, which is a function, is bound to an abstract syntax tree, which is a description of the actions performed by the function. By further researching the obtained data structure, variables are found that influence the result of the program execution. The further self-adaptation process consists in the variation of these variables value. The implementation of the obtained theoretical results can be widely used in the development of self-adaptive systems of a wide range, but in particular, adaptive simulators and training applications.