Скачиваний:
20
Добавлен:
01.05.2014
Размер:
211.46 Кб
Скачать

3. Проведение анализа моделей программ на основе фм пцм

3.1. Описание входного языка программы анализа

Входной язык программы анализа учитывает то, что описываемые ОГМ являются графами с нагруженными вершинами;

Описание графа состоит из двух частей – описание вершин и описание дуг.

Формат описания вершин:

tops { список вершин}

Cписок вершинпредставляет собой последовательность, возможно пустую, описаний каждой из вершин графа, разделенных запятыми:

имя_вершины(нагрузка)

Каждая вершина графа имеет имя, уникальное в пределах графа. Имя должно начинаться с буквы, за которой могут следовать буквы или цифры.

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

10

1.5

0.25e3

В граф включаются только вершины, принадлежащие множеству невозвратных состояний. Каждая вершина должна быть описана только один раз.

Формат описания дуг:

links { список дуг}

Cписок дугпредставляет собой последовательность, возможно пустую, описаний каждой из дуг, разделенных запятыми:

имя_начальной_вершины -> имя_конечной_вершины( вероятность )

При этом к графу добавляется дуга из имя_начальной_вершинывимя_конечной_вершины, вероятность перехода по которой задается параметромвероятность. Начальная и конечная вершина должны быть объявлены в разделеtops..

Значение вероятности может задаваться в тех же форматах, что и параметр нагрузкапри описании вершин. Каждая дуга должна описываться только один раз. Недопустимы дуги из вершины в нее же саму.

3.2. Руководство пользователя по работе с программой анализа

Установка и запуск программы.

Программа представляет собой один исполняемый модуль fm.exe. Программа является консольным приложением для Win32. Для своей работы она не требует дополнительных модулей поддержки. Программа не требует инсталляции.

Режимы работы программы.

Программа может работать в режиме диалога с пользователем или из командной строки.

Входные и выходные данные программы.

Описание графа с нагруженными вершинами, составленное на входном языке программы, берется из файла. Файл может быть задан из командной строки или в режиме диалога с пользователем.

Вычисленная ФМ, а в случае применения метода поуровневой детализации, возможно, и промежуточные результаты, записываются в файл протокола вычисления ФМ. Имя этого файла состоит из имени исходного файла и расширения .det.log (для метода поуровневой детализации) или .inv.log (для алгебраического метода.).

Пример:

example.graph - имя исходного графа ;

example.det.log – имя файла протокола в случае применения метода поуровневой детализации;

example.inv.log – имя файла протокола в случае применения алгебраического метода.

Результаты вычисления средних значений и дисперсий потребления ресурсов для модели исследуемой программы, а для фрагмента программы также и информация о входящих в соответствующий подграф вершинах, записываются в файл с именем исходного графа, имеющий расширение .stat.

Пример:

example.graph - имя исходного графа ;

example.stat – имя файла, содержащего результаты вычисления средних и дисперсий.

Уровни подробности протокола вычисления ФМ методом поуровневой детализации.

При вычислении ФМ методом поуровневой детализации программа предоставляет возможность регулировать уровень подробности данных, выводимых в файл протокола:

  • Уровень 0 - наиболее краткий протокол вычисления ФМ, в который выводится только результирующая ФМ или сообщения об ошибках в структуре графа;

  • Уровень 1 - более подробный, по сравнению с уровнем 0, протокол, включающий в себя также промежуточную информацию о производимых в процессе работы метода подстановках в ФМ, но при этом не приводятся промежуточные представления вычисляемой ФМ;

  • Уровень 2: самый подробный протокол, включающий то же, что уровень 1, а также все промежуточные представления ФМ.

Уровень 0 может быть полезен при вычислениях ФМ для больших графов. Уровни 2 и 3 – для небольших графов, особенно при ознакомлении с принципами работы метода поуровневой детализации.

В конце данного руководства приведены примеры использования программы, в том числе и результаты работы метода поуровневой детализации при различных уровнях подробности файлов протокола.

Задание фрагментов программы, для которых нужно вычислить характеристики потребления ресурсов.

Вычисление средних и дисперсий потребления ресурсов может быть произведено не для всего графа, а только для некоторого подмножества его вершин (для вершин, не входящих в это подмножество, параметры потребления ресурсов принимаются равными нулю). Фрагмент может быть задан как при работе из командной строки, так и в режиме диалога с пользователем.

Фрагмент задается в виде строки, элементы которой разделены запятыми, причем элемент может иметь вид:

1) вершина - в рассматриваемое подмножество включается вершина с указанным именем;

2) вершина1–вершина2 - в рассматриваемое подмножество включаются вершины, в которые можно попасть из вершины1, минуя вершину2, а из них – в вершину2, минуя вершину1. Иными словами – подграф с начальной вершиной1 и конечной вершиной2.

Примеры:

A,B-E,T-P

S10-S12

top1,top2,top20

Работа с использованием командной строки.

Формат вызова:

fm.exe [файл_с_графом [метод [/f:фрагмент] ] ]

Описание параметров:

Файл_с_графом

Имя файла, содержащего описание графа на входном языке программы. В случае, если файл указан, программа в начале своей работы производит попытку загрузить его. Если других параметров в командной строке нет, программа переходит в режим диалога с пользователем.

Метод

Задает метод вычисления ФМ. Если этот параметр задан, программа производит вычисление ФМ, затем, если вычисление прошло успешно, вычисляет средние и дисперсии потребления ресурсов. После этого программа завершается. Возможные значения параметра:

/d0 – вычислить ФМ методом детализации (уровень 0 подробности протокола);

/d1 – вычислить ФМ методом детализации (уровень 1 подробности протокола);

/d – вычислить ФМ методом детализации (уровень 2 подробности протокола);

/i – вычислить ФМ алгебраическим методом (обращением матрицы I-Q)

/f:фрагмент

Задать фрагмент графа в формате, описанном в пункте “Задание фрагментов графа программы, для которых нужно вычислить характеристики потребления ресурсов”.

Работа в режиме диалога с пользователем.

Программа переходит в режим диалога с пользователем, если ни указано никаких параметров в командной строке или указано только имя файла графа.

На экран выводится текущее состояние программы, включающее:

  • информацию о том, был ли загружен граф, и если да, то из какого файла и сколько он содержит вершин;

  • если был загружен граф, то выводится информация о том, была ли вычислена ФМ и был ли задан фрагмент для вычислений.

Управление программой производится посредством меню, содержащего следующие пункты:

1. Загрузить граф

У пользователя запрашивается имя файла с исходным описанием графа. Если до этого уже был загружен какой-либо граф и для него вычислена ФМ и(или) задан фрагмент, то они пропадают из памяти.

2. Вычислить ФМ методом поуровневой детализации

Производит вычисление ФМ методом поуровневой детализации. Перед вычислением пользователю предоставляется возможность задания уровня подробности файла протокола вычисления ФМ (см. пункт “Уровни подробности файла протокола вычисления ФМ методом поуровневой детализации.”). Операция может быть выполнена, если загружен граф.

3. Вычислить ФМ алгебраическим методом

Производит вычисление ФМ алгебраическим методом. Операция может быть выполнена, если загружен граф.

4. Задать фрагмент

Предоставляет пользователю возможность задать фрагмент, для которого будет производиться вычисление средних и дисперсий (см. раздел “Задание фрагментов графа программы, для которых нужно вычислить характеристики потребления ресурсов”). Операция может быть выполнена, если загружен граф.

5. Вычисление средних и дисперсий по вычисленной ФМ

Вычисляет средние значения и дисперсии потребления ресурсов по вычисленной ФМ. Если задан фрагмент, потребление ресурсов для врешин, не входящих в него, принимаются равными нулю.

  1. Выход

Выход из программы.

Примеры использования программы.

В качестве примера произведем анализ программы, состоящий из конструкции цикла, телом которого является конструкция ветвления.

Предположим, что исходное описание программы находится в файле test.graph:

tops {

LS(2), LC(1),

CS(5), A(5), B(10), CE(1),

LE(1)

}

links {

LS->LC(1),

LC->CS(0.8),

LC->LE(0.2),

CE->LC(1),

CS->A(0.2),

CS->B(0.8),

A->CE(1),

B->CE(1)

}

Вычисление алгебраическим методом:

Командная строка:

fm test.graph /i

Получаемый файл test.inv.log:

Результат:

*******************************************************************************************

LS ¦ 1 5 4 0.8 3.2 4 1 ¦

LC ¦ 0 5 4 0.8 3.2 4 1 ¦

CS ¦ 0 5 5 1 4 5 1 ¦

A ¦ 0 5 4 1.8 3.2 5 1 ¦

B ¦ 0 5 4 0.8 4.2 5 1 ¦

CE ¦ 0 5 4 0.8 3.2 5 1 ¦

LE ¦ 0 0 0 0 0 0 1 ¦

*******************************************************************************************

Получаемый файл test.stat:

Фундаментальная матрица:

*******************************************************************************************

LS ¦ 1 5 4 0.8 3.2 4 1 ¦

LC ¦ 0 5 4 0.8 3.2 4 1 ¦

CS ¦ 0 5 5 1 4 5 1 ¦

A ¦ 0 5 4 1.8 3.2 5 1 ¦

B ¦ 0 5 4 0.8 4.2 5 1 ¦

CE ¦ 0 5 4 0.8 3.2 5 1 ¦

LE ¦ 0 0 0 0 0 0 1 ¦

*******************************************************************************************

Потребление ресурсов:

*************************

LS ¦ 2 ¦

LC ¦ 1 ¦

CS ¦ 5 ¦

A ¦ 5 ¦

B ¦ 10 ¦

CE ¦ 1 ¦

LE ¦ 1 ¦

*************************

Средние значения потребления ресурсов:

*****************************

LS ¦ 68 ¦

LC ¦ 66 ¦

CS ¦ 81 ¦

A ¦ 72 ¦

B ¦ 77 ¦

CE ¦ 67 ¦

LE ¦ 1 ¦

*****************************

Дисперсии потребления ресурсов:

*****************************

LS ¦ 5136 ¦

LC ¦ 5136 ¦

CS ¦ 5140 ¦

A ¦ 5136 ¦

B ¦ 5136 ¦

CE ¦ 5136 ¦

LE ¦ 0 ¦

*****************************

Вычисление методом поуровневой детализации: