языковой среды и уровня представления кода программ. Поскольку де-
тальное описание всевозможных эвристик связано с весьма большим
объемом и со сложностью восприятия, ограничимся демонстрацией
нескольких примеров. Введем следующие определения и обозначения.
Функциональный объект
— элемент программной системы, осуще-
ствляющий выполнение действий по реализации законченного фраг-
мента алгоритма работы программной системы. В качестве функцио-
нальных объектов могут выступать функции, процедуры, методы клас-
сов и объектов.
Множество функциональных объектов API
— множество функци-
ональных объектов (ФО) как стандартных библиотек среды програм-
мирования, операционной системы, так и внешних компонентов (би-
блиотеки, фреймворки), обеспечивающих реализацию заданного типа
функционала.
Кортеж допустимых типов объектов в ПО (процедурного и объект-
ного типа) определим как
M
=
< M
const
, M
func
, M
info
, M
obj
, I
det
>
, где
M
const
— множество допустимых постоянных значений в ПО (литера-
лы, константы, макросы и т.д.);
M
func
— множество ФО, определенных
в программной системе;
M
info
— множество информационных объек-
тов (ИО), определенных в программной системе;
M
obj
— множество
объектов (классов), определенных в программе;
I
det
— множество ИО,
имеющих статистически предсказуемое значение (системное время,
идентификаторы процессов, а также любые константы).
Кортеж допустимых типов используемых внешних ФО (функций
API) в ПО зададим следующим образом:
F
=
< F
prng
, F
sql
>
, где
F
prng
— множество функций API, реализующих инициализацию гене-
раторов псевдослучайных чисел (ГПСЧ);
F
sql
— множество функций
API, реализующих выполнение SQL-запросов.
Кортеж допустимых типов операндов в ПО имеет вид
o
=
=
< o
coint
, o
call
, o
ret
, o
asg
(
V, R
)
>
, где
o
coint
— множество операторов
и функций, реализующих целочисленные преобразования объектов;
o
call
— множество операторов и функций, реализующих передачу
управления ФО;
o
ret
— множество операторов и функций, реализую-
щих возврат управления из ФО;
o
asg
(
V, R
)
— множество операторов
и функций, реализующих присваивание значений множества ИО
V
объекту
R
.
Кортеж допустимых функций над структурным представлением
кода:
D
=
< f
inside
(
b
)
, f
call
(
b
)
, t
obj
(
b
)
>
, где
f
inside
(
b
)
— функция, воз-
вращающая множество функциональных и информационных объек-
тов, находящихся внутри объекта
b
;
f
call
(
b
)
— функция, возвращающая
кортеж аргументов, которые используются для запуска либо ФО, либо
инициализации ИО, в зависимости от типа объекта
b
;
t
obj
(
b
)
— функ-
ция, возвращающая тип объекта
b
, если он был задан ранее в рамках
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2016. № 1 103