Реклама:

Предикаты, определяющие выбор маршрутов исполнения программы, формируются в результате вычислений на линейных участках программы. Как*уже отмечалось, эти,уча,стки в среднем невелики н содержат около 10 команд. Вычисления в большинстве случаев представляют собой простейшие линейные преобразования входных данных. По оценкам 167195—1974 арифметических операторов включают только сложение и вычитание, а 98 % всех выражений между последовательными предикатами содержат не более двух операторов. Кроме того. Предикаты обычно очень простые — в большинстве случаев с одной входной переменной и практически отсутствуют'преди-хаты, использующие более двух входных переменных. Нели-нейные"предикаты встречаются очень редко (0,1—0,3%). Приведенные данные позволяют ограничить анализ линейными Предикатами, характерных для широкого класса программ'. •; 'Жаждая ограниченная область исходных данных соответствует Определенному маршруту в программе. Граница области определяется интерпретациями предикатов по маршруту н ее стоит из набора участков границы, каждый из которых определяется единственным простым предикатом, .формирующим дугу маршрута в графе программы. Каждый участок границы области может быть открытым или закрытым в зависимости от оператора- условий в предикате. Закрытый участок границы принадлежит ограничиваемой области и формируется предикатами с операторами <, или ~. Открытый участок границы не входит в состав Области и формируется операторами •<,_> и л£ Общее число предикатов в маршруте — это верхний предел числя граничных участков области входных переменных, данного М^щрута, так Как некоторые цЬЩтцщ маршрута могут в'л^йствйтельности не создавать граничных участков. Такие случаи возникают, иогда предикат Требуется Для нескольких •путей, ив некоторых из них повторно анализируется на маршруте. . ' ,'" " 'У,

-'Предикаты можно разделить на .три типа: равенство (=), отн;0ше«не Сольще-меньще (^>, <, ^) и неравенство {Щ. Использование предикатов кйждогО типа дает существенно различный- эффект иа границе области. Предикаты каждого марш-' -рута определяют Некоторую гиперплоскость, в" пространстве.

Ограничение типа неравенства эквивалентно составному предич кару (А < в) и (А > ЩІ такой предикат приводит к разделению неходкой обласТй на Две части.^Пр^ика*йм, типа равенства и больше —. меньше приводят К формированию области в виде единственного >інрМу^гОЛьникаТ Многоугольник является выпуклым, если для любых двух точек 60Л4СТИ участок границы, формирующий маршрут, входит ъУяЩ$ этой области [107]. Если в состав предикатов ввести 'Шщ? верства, то пространство входных данных будет объединениеммножества выпуклых многоугольников., -^'Тйкйм образом, гірогірамма по отношению к потоку данных, прежде всего, выполняет функцию разделения.пространства исходных Данных на Области, каждая и> которых соответёт-вует одному исполняемому маршруту. Ошибки в програмі^в могут быть обусловлены модификацией границы области определенного маршрута, приводящей к расширению или сужение» пространства исходных данных соответствующего маршрута. Кроме того, деформация-границ областей может приводить к ошибкам уничтожения некоторых областей и потери соответ-ствующих. им маршрутов. Причинами таких, ошибок могут быть искажения операторов анализа условий или искажения в процессе вычисления значений предикатов при правильном содержании^ оператора условия.. В последнем случае обычно сдвигается граница области,, однако рна сохраняет общук) структуру. Искажения' операторов анализа, условий. НбЦ#Х.. приводить как к деформации границы области, Так и К появлению новых границ ил,и их уничтожению, вследствие чего могут ра^^яться. или сливаться области.


⇐ Предыдущая страница| |Следующая страница ⇒