Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
изуется числом элементов (модулей), находящихся в каждом из этих состояний. Исследуем процесс, протекающий в системе S. Отвлечемся от возможных состояний системы в целом (а именно, SN, 0, тАж, 0 все модули находятся в состоянии 1, а в других состояниях нет ни одного элемента; SN1, 1, тАж, 0 один элемент находится в состоянии 2, все остальные в состоянии 1 и так далее. Очевидно, таких состояний будет очень много N!), поэтому рассмотрим отдельный модуль (так как все модули одинаковы) и рассмотрим для него граф состояний (рис.9).
Введем в рассмотрение случайную величину Xk(t) число модулей, находящихся в момент времени t в состоянии k. Будем ее называть для краткости численностью состояния k в момент t. Очевидно, что для любого момента времени t сумма численностей всех состояний равна общей численности модулей:
.
Xk(t) для любого фиксированного момента времени t представляет собой случайную величину, а в общем случае случайную функцию времени. Найдем для любого t основные характеристики случайной величины ее математическое ожидание mk(t) = M[Xk(t)] и дисперсию Dk(t) = D[Xk(t)].
Рисунок 9 Граф состояний одного модуля
Для того, чтобы найти эти характеристики, нам надо знать интенсивности всех потоков событий, переводящих модуль (элемент) (не всего комплекса программ, а именно модуль) из состояния в состояние (см. рис.9). Тогда численность каждого состояния Xk(t) можно представить как сумму случайных величин, каждая из которых связана с отдельным (iтым) модулем, а именно: равна единицы, если этот модуль в момент времени t находится в состоянии k, и равна нулю, если не находится в этом состоянии:
(1)
Очевидно, для любого момента времени t общая численность состояния k равна сумме случайных величин (1):
.
По теореме сложения математических ожиданий и теореме сложения дисперсий получаем:
(2)
Найдем основные характеристики математическое ожидание и дисперсию случайной величины , заданной выражением (1). Эта величина имеет два возможных значения: 0 и 1. Вероятность первого из них равна pk(t) вероятности того, что модуль находится в состоянии k (так как программные модули одинаковы, то для всех эта вероятность одинакова). Ряд распределения каждого из случайных величин один и тот же и имеет вид:
возможное значение (xj):01вероятность (pj):1pk(t)pk(t)
Математическое ожидание случайной величины, заданное таким рядом, равно:
А дисперсия:
Подставляя эти вероятности в формулы (2), найдем математическое ожидание и дисперсию численности каждого состояния Xk(t):
(3)
(4)
Таким образом, нам удалось для любого момента времени t найти математическое ожидание и дисперсию численности состояния k. Зная их, можно для любого момента времени t указать ориентировочно диапазон практически возможных значений численности:
Итак, не определяя вероятностей состояний программной системы S в целом, а опираясь только на вероятности состояний отдельных модулей, можно оценить, чему равна для любого момента времени t численность каждого состояния. Если мы знаем вероятности всех состояний одного модуля p1, p2, тАж, pn, как функции времени, то нам известны и средние численности состояний m1, m2, тАж, mn и их дисперсии D1, , D2, тАж, Dn.
Таким образом, поставленная задача сводится к определению вероятностей состояний одного отдельного модуля. Эти вероятности, как известно, могут быть найдены как решение дифференциальных уравнений Колмогорова. Для этого нужно знать интенсивности потоков событий (интенсивности запросов от клиентов и интенсивности восстановлений), переводящих каждый модуль из состояния в состояние.
Заметим, что вместо дифференциальных уравнений для вероятностей состояний удобнее писать уравнения непосредственно для средних численностей состояний, что видно из (3).
2.3.2 Модель с заменой вероятностей состояний на средние численности состояний
Пусть программа S состоит из N одинаковых модулей (или потоков) и граф состояния каждого модуля представлен на рисунке:
Рисунок 10 Граф состояний модуля
В начальный момент времени t = 0 все модули находятся в состоянии 1.
Непосредственно по графу (см. рис. 10) составляем уравнения Колмогорова для вероятностей состояния;
(5)
Умножим левую и правую части каждого из уравнений (5) на число модулей N и введем в левых частях N под знак производной, а также учтем (3), тогда:
(6)
В системе уравнений (6) (которые называются уравнениями динамики средних) неизвестными функциями являются уже непосредственно средние численности состояний (точнее математические ожидания численности состояний). Как видно, эти уравнения составлены по тому же правилу, что и уравнения для вероятностей состояний. Поэтому их можно было составить сразу, минуя промежуточный этап.
Очевидно, что для каждого момента времени t средние численности состояний удовлетворяют нормировочному условию:
(7)
И поэтому одно (любое) из уравнений системы (6) можно отбросить. Отбросим, например, третье уравнение из (6), а в остальные уравнения вместо m3 подставим выражение согласно (7):
.
Тогда окончательно получим:
(8)
Эту систему нужно решать при начальном условии: t = 0; m1 = N; m2=m3=m4=0.
Решение такой системы дифференциальных уравнений (а для стационарного режима системы алгебраических