Контрольная работа: Моделирование надежности программного обеспечения

c. Если в запросе клиента к серверу ошибки нет, то этот запрос направляется серверу на обработку и ответа. При этом разыгрывается ответ от сервера клиенту аналогично a), только объем данных есть случайная величина, распределенная равномерно на отрезке от 0 до a *10/2 (обозначим ее как Rand( a *10/2) ). Если в область (xi ± Rand( a *10/2) ) попадает хотя бы одна ошибка из списка ошибок сервера, то считается, что в сервере произошла ошибка. В этом случае работа системы останавливается и все программисты пытаются исправить эту ошибку в сервере со скоростью l испр каждый. Вероятность исправления ошибки одним программистом равна .

d. Если в клиенте есть ошибка и есть свободный программист, то свободный программист пытается исправить ошибку в клиенте с вероятностью .

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

f. За один временной такт D t разыгрывается сценарий обмена данными для всех работающих на этот момент времени клиентов. Для неисправных клиентов или неисправного сервера разыгрывается вероятностный процесс исправления ошибки в них.

5.В результате разыгрывается M итераций согласно п. 4, и получаем одну реализацию случайных функций , и (средние численности работающих, неработающих, клиентов и вероятность работы сервера) на временном интервале M* D t .

6.Испытания проводим еще K раз и таким образом получаем K реализаций случайных функций , , и . Для каждого момента времени t j (для j = 1, … M ) с шагом D t находим статистическое среднее для этих функций и получаем средние функции , , и .

7.Также в процессе розыгрыша производится:

- расчет текущего времени наработки до отказа;

- расчет среднего времени наработки до отказа за все время розыгрыша;

- расчет вероятности отказа ПО в единицу времени как P = (<объем запроса> * <количество ошибок в клиентах и сервере> * (<количество работающих клиентов> + 1) * <интенсивность обращение> * <шаг итерации по времени> ;

- расчет коэффициента готовности: Кг = 1 - <время простоя всей программы> / <время работы>

Количество ошибок в сервер рано количеству ошибок в клиентах * коэффициент сложность /10 .

3. Практическиерезультатымоделирования

Изучим влияние количества программ-клиентов на поведение программной системы клиент-сервер (далее ПС или ПК).

Розыгрыш проводился при следующих начальных условиях (10 клиентов):

Кол-во программ-клиентов: 10, Кол-во программистов: 3, Доля от общей области данных (ООД) в одном запросе клиента: 1E-5, Начальное кол-во ошибок: 250, Коэффициент сложности сервера: 2, Интенсивность потока обращений клиента к серверу: 500 (1/сутки), Интенсивность потока исправления ошибки: 1 (1/сутки), Интенсивность внесения ошибки при исправлении: 0,1 (1/сутки), Шаг итерации: 0,002, Кол-во итераций: 50000, Общее время розыгрыша: 100 (сутки); Число розыгрышей:40

Получены следующие результаты:

Средние значения за все 40 розыгрышей:

Рис.2 – Значения за все 40 розыгрышей


Из рисунка видно, что ПК начнет устойчиво работать (т.е. количество работающих клиентов сравняется с количеством неработающих клиентов на 15 сутки).

Теперь увеличим количество клиентов с 10 до 100 :

Кол-во программ-клиентов: 100, Кол-во программистов: 3, Доля от общей области данных (ООД) в одном запросе клиента: 0,00001, Начальное кол-во ошибок: 250, Коэффициент сложности сервера: 2, Интенсивность потока обращений клиента к серверу: 500 (1/сутки), Интенсивность потока исправления ошибки: 1 (1/сутки), Интенсивность внесения ошибки при исправлении: 0,1 (1/сутки), Шаг итерации: 0,002, Кол-во итераций: 75000, Общее время розыгрыша: 150 (сутки); Число розыгрышей:50

Получены следующие результаты:

Средние значения за все 50 розыгрышей:

Рис.3 – Значения за все 50 розыгрышей

Видно, что на 150 сутки почти все ошибки исправлены. Это происходит из-за того, что клиентов больше и их запросы охватывают большую область данных и, следовательно, обнаруживается большее количество ошибок и большее количество ошибок исправляется.

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

К-во Просмотров: 143
Бесплатно скачать Контрольная работа: Моделирование надежности программного обеспечения