Детерминированная проверка событийных графов

ДЕТЕРМИНИРОВАННАЯ ПРОВЕРКА СОБЫТИЙНЫХ ГРАФОВ

© 2006 Е.А. Бабкин

канд. техн. наук, доцент кафедры Курского государственного университета

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

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

1) детерминированная проверка программной модели;

2) статистическая калибровка программной модели.

Общие подходы в решении задач второго этапа рассмотрены в работах [1, 2].

На первом этапе выполняется проверка и отладка программной модели ДС, которая имеет свою специфику в связи с особенностями самой модели ДС. В настоящей работе рассматривается задача детерминированной отладки программной модели ДС.

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

Рассмотрим методику детерминированной калибровки и контроля на примере системы массового обслуживания, состоящей из канала обслуживания К и конечного накопителя Н. Для этой модели событийный граф в программно-реализуемой форме, представляющий процесс функционирования ДС, приведен на рис. 1.

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

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

Рі - анализ состояния средства 5>, значения: Зан - "занято" (0),

Св - "свободно" (1);

Р2 - анализ состояния очереди Q, значения: Плн - "полна" (0),

Нплн - "неполна" (1);

Р3 - анализ состояния очереди Q, значения: Пст - "пуста" (0),

Нпст - "непуста" (1);

Р4 - анализ числа обслуженных заявок, значения: <К - меньше заданного числа К (0), =К - равно заданному числу К (1).

Вершины А1, А2 - это вершины распараллеливания процесса.

Дуги второго типа помечаются величинами задержки:

Т0 - время поступления первой заявки после начала моделирования, Тпз - интервал времени между поступлениями заявок,

Та - время обслуживания заявки в канале (длительность активности).

Поскольку конец моделирования определяется в модели по числу заявок прошедших через модель, екпм происходит после события екпм2 при условии, что через модель прошло заданное число заявок К (Р4 = К).

В событийном графе выделяются следующие макрособытия (рис. 2): Е0 - безусловное макрособытие начала моделирования, точек входа нет, одна точка выхода Оі - вершина енпм;

Е1 - безусловное макрособытие поступления заявки в СМО, одна точка входа 11 - вершина енп, одна точка выхода О1 - вершина А1;

Е2 - условное макрособытие начала обслуживания заявки в СМО, одна точка входа 11 - вершина Р1, одна точка выхода О1 - вершина ена;

Е3 - условное макрособытие окончания обслуживания заявки в СМО, одна точка входа 11 - вершина ека, две точки выхода: О1 - вершина е0Q, и О2 - вершина Р4;

Е4 - безусловное макрособытие окончания моделирования, одна точка входа 11 - вершина екпм, точек выхода нет.

Рис. 1. Событийный граф в программно-реализуемой форме

Макрособытия связаны только дугами второго типа. Дуги помечаются парой <условие> / <время>, прочерк означает безусловный переход. Если у макрособытия больше одного выхода, то они помечаются; пример: событие Е0 имеет два выхода О1 и 02.

- / Т

/ ± пз

Рис. 2. Событийный граф на уровне макрособытий

Для выполнения детерминированной проверки событийной модели необходимо преобразовать стохастическую модель в детерминированную. Это достигается заменой всех стохастических параметров модели (Т0, Тпз и Та для рассматриваемого примера) на детерминированные. Времена событий выбираются исходя из заданных параметров СМО близкие к средним, а также исходя из необходимости создания всех ситуаций.

Для проверки всех ветвей графа необходимо создать тест, в котором бы выполнялись все безусловные ветви и все ветви, зависящие от условий. В событийном графе в программно-реализуемой форме (см. рис. 1) существуют четыре точки разветвления Р1, Р2 , Р3 и Р4. При разработке детерминированного теста необходимо обеспечить проверку:

- безусловных ветвей: дуги Е0 — Е1

- условных ветвей при Р1=0 и Р1=1, Р2=0 и Р2=1, Р3=0 и Р3=1, Р4=0 и Р4=1.

Таким образом, необходимо создать следующие ситуации:

1) начала первого процесса через время Т0 после начала процесса моделирования;

2) начала нового процесса через время Тпз после предыдущего;

3) начала нового процесса, когда средство свободно (Р1=0);

4) начала нового процесса, когда средство занято и очередь неполна (Р1=1, Р2=0);

5) начала нового процесса, когда средство занято и очередь полна -отказ в обслуживании заявки (Р1=1, Р2=1);

6) конца процесса, когда очередь пуста (Р3=0);

7) конца процесса, когда очередь непуста - в очереди ожидают обслуживания заявки (Р3=1);

8) не окончания моделирования (Р4=0), когда наступает конец процесса обслуживания;

9) окончания моделирования (Р4=1), когда наступает конец процесса обслуживания.

Перечисленные девять ситуаций помечены на событийном графе номером ситуации в прямоугольнике возле соответствующей ветви графа (см. рис. 1).

Эти ситуации задаются последовательностью событий енп в моменты времени ґ = (Т0\ Т02, Т03) (событие енп входит в макрособытие Е1 -поступление заявки в СМО) при постоянных временах обслуживания средства Та, поступления первой заявки Т0 и поступления остальных заявок Тпз, размере конечной очереди Ь^ = 1 и числе обслуженных заявок К = 3. Для наглядного представления реализации последовательности событий удобна событийная диаграмма (рис. 3).

В начальный момент времени ґ = 0 происходит событие начала процесса моделирования Е0 процесса 0 (процесс моделирования). Через время Т01 после начала моделирования поступает первая заявка - событие Е1 процесса 0 в момент времени Т01, в этот момент начинается первый процесс обслуживания в СМО. При этом проверяется ситуация 1: переход по дуге Е0 — Е1. Проверяемые ситуации помечены на событийной диаграмме номером ситуации в прямоугольнике возле соответствующей вершины или дуги. После этого начинается обслуживание первой заявки в средстве S - событие Е2 процесса 1 в момент времени Т01, проверяется ситуация 3. В момент времени Т02 поступает вторая заявка - событие Е1 процесса 0, поскольку в этот момент средство занято, заявка ставится в очередь Q - событие Е2 процесса 2, проверяется ситуация 4. В момент времени Т03 поступает третья заявка - событие Е1 процесса 0, поскольку в этот момент средство занято, а очередь полна (длина очереди Ь^ = 1), заявка получает отказ в обслуживании - событие Е2 процесса 3, проверяется ситуация 5. В момент времени Т01 + Та заканчивается обслуживание первой заявки (событие Е3 процесса 1), из очереди вызывается вторая заявка и начинается ее обслуживание (событие Е2 процесса 2), процесс моделирования продолжается - при этом проверяются ситуации 7 и 8. В момент времени Т01 + Та1 + Та2 = = Т01 + 2Та заканчивается обслуживание второй заявки (событие Е3 процесса 2), очередь Q пуста, процесс моделирования продолжается - при этом проверяются ситуации 6 и 8. Далее через время Тпз, после события Е1 (процесс 0, время Т01) в СМО начинается обслуживание четвертой заявки -событие Е1 процесса 0 в момент времени То1 + Тпз, проверяется ситуация 2

Номера процессов

3 — 2 --

Отказ в обслуживании

Ожидание О Е2

в очереди

Е2

1 Н- о

Е0

0 ег^> 0Ш То1

Е2

Обслуж

средс

?ЕГ

ивание в тве £

[5 Обслуживание в — Е2 средстве £

Ш

Отказ в обслуживании

Е2 9

Обслуживание в [5"]

Е3 Е2 средстве £ Е3

Ю

ш

2

‘| 3 Ожидание в очррреди Е2?Ш

Е1 Ш1 [е1 Ш Е1

ш

Е4

То3 То'+Та'

То'+Та'+Та2

То2+Тп

То‘+Т„

То3+Тпз3 Тм I

Окончание

процесса

моделирования

2

2

0

Рис. 3. Событийная диаграмма детерминированного теста

(дуга Е1 — Е1). Далее в моменты времени Т02 + Тпз и Т03 + Тпз начинается обслуживание пятой и шестой заявок, при этом новые ситуации не проверяются. В момент времени То1 + Тпз + Та заканчивается обслуживание четвертой заявки (событие Е3 процесса 2) и процесс моделирования прекращается - при этом проверяется ситуация 9.

Для того чтобы задать нужную детерминированную

последовательность заявок на вход СМО, необходимо задать

последовательность событий появления заявок Е1, приведенную в таблице 1.

Таблица 1

Последовательность инициирующих ^ событий_________________

Время события Номер события Номер процесса

То1 1 0

гр 2 То 1 0

То3 1 0

Для этого в событийную секцию, соответствующую макрособытию Е0 программной модели, вводятся операторы планирования этих событий: (Еь Т01, 0), (Еь Т02, 0), (Еь Т03, 0), причем должно быть Т01 < Т02 < Т03.

В таблице 2 приведена эталонная последовательность событий в результате прогона модели в соответствии с событийной диаграммой (см. рис. 3) причем времена обслуживания первой, второй и третьей заявок Та1 = Та2 = Та = Та. Также должны быть равны и времена поступления заявок, следующих за первой, второй и третьей: Тпз1 = Тпз2 = Тпз3 = Тпз.

Для того чтобы обслуживание четвертой, пятой и шестой заявок не накладывалось на обслуживание первых трех заявок, необходимо задать Тпз таким образом, чтобы событие Е1 для четвертой заявки произошло после последнего события Е3 для второй заявки (третья заявка получила отказ в обслуживании в связи с конечностью очереди), то есть

Тпз > (Т01+ 2Та) - Т0 = 2Т„.

В случае обнаружения неправильной последовательности событий ошибки локализуются и исправляются. Локализация проводится по трассировке модели на трех уровнях:

- на уровне макрособытий на основе несовпадения полученной последовательности макрособытий с эталонной (табл. 2),

- путем введения в программную модель промежуточных выводов значений переменных модели,

- на уровне событий по детальной трассировке, содержащей пошаговое состояние списков событий, очередей и средств.

Таблица 2

Эталонная последовательность событий

Время события Номер события Номер процесса

То1 1 о

То1 2 1

гр 2 Т0 1 о

гр 2 То 2 2

То3 1 о

То3 2 3

То'+Та' 3 1

То'+Т 2 2

То'+Т.'+Т,2 3 2

То'+Тп,1 1 о

СП С Т О Т 2 1

То2+Тпз2 1 о

То2+Тпз2 2 2

То3+Тпз3 1 о

То3+Тпз3 2 3

3 03 Т 1 с Т 1 Т 3 1

Тм- То1+Тпз1+Та3 4 о

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

Библиографический список

1. Шеннон Р. Имитационное моделирование - искусство и наука / Пер. с англ. - М.: Мир, 1978.- 418 с.

2. Советов Б.Я., Яковлев С.А. Моделирование систем. - М.: Высшая школа, 1998. -320 с.