Previous Page  6 / 14 Next Page
Information
Show Menu
Previous Page 6 / 14 Next Page
Page Background

языковой среды и уровня представления кода программ. Поскольку де-

тальное описание всевозможных эвристик связано с весьма большим

объемом и со сложностью восприятия, ограничимся демонстрацией

нескольких примеров. Введем следующие определения и обозначения.

Функциональный объект

— элемент программной системы, осуще-

ствляющий выполнение действий по реализации законченного фраг-

мента алгоритма работы программной системы. В качестве функцио-

нальных объектов могут выступать функции, процедуры, методы клас-

сов и объектов.

Множество функциональных объектов 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