48639 (588587), страница 6
Текст из файла (страница 6)
В результате разыгрывается M итераций согласно п. , и получаем одну реализацию случайных функций ,
,
и
(согласно 3а) на временном интервале M*t.
Испытания проводим еще R раз и таким образом получаем R реализаций случайных функций ,
,
и
. Для каждого момента времени tj (для j = 1, … M) с шагом t находим статистическое среднее для этих функций и получаем средние функции
,
,
и
.
Также в процессе розыгрыша производится:
Расчет текущего времени наработки до отказа;
Расчет среднего времени наработки до отказа за все время розыгрыша;
Расчет вероятности отказа ПО в единицу времени как P = (* х ( + 1)**;
Расчет коэффициента готовности: Кг = 1 – /
Программа предупреждает, если задается интенсивность такая, что на интервал времени t приходится больше одного события (т.е t* должно быть меньше единицы) – для соблюдения условия ординарности потока событий.
3.3 Практические результаты моделирования
3.3.1 Оценка времени, необходимого для уменьшения количества ошибок до расчетного уровня.
Найдем время необходимое для уменьшения количества ошибок в 2 раза. Пусть (рис.17):
K (кол-во программ-клиентов) = 10;
P (кол-во программистов) = 3;
(ширина запроса клиента) = 0,0001;
N0 (начальное количество ошибок) = 100;
s (сложность сервера) = 2;
t (шаг итерации) = 0,001 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 100/сутки;
испр (интенсивность потока исправления ошибки) = 0,2/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0,005
M (количество итераций) = 200000;
Общее время розыгрыша: 200 (сутки);
К (число розыгрышей) =5.
По формуле (27) получаем: дня, что является очень оптимистичной оценкой. Для этой модели надежности Джелински, Моранда, Шумана получаем
лет, что явно сильно завышено. Программное моделирование дает результат T1/2 = 135 суток (рис.18).
Рисунок 17 – Форма для ввода начальных параметров розыгрыша
Рисунок 18 – Форма с результатами моделирования
3.3.2 Влияние количества клиентов на надежность ПО
Изучим влияние количества программ–клиентов на поведение ПО.
Сначала проведем моделирование при следующих условиях:
K (кол-во программ-клиентов) = 10;
P (кол-во программистов) = 3;
(ширина запроса клиента) = 0,00001;
N0 (начальное количество ошибок) = 250;
s (сложность сервера) = 2;
t (шаг итерации) = 0,002 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 500/сутки;
испр (интенсивность потока исправления ошибки) = 1/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0,1/сутки
M (количество итераций) = 50000;
Общее время розыгрыша: 100 (сутки);
К (число розыгрышей) =50
Получены следующие результаты (рис.19):
Рисунок 19 – Влияние количества клиентов на надежность ПО (10 клиентов)
Из рисунка видно, что ПО начнет устойчиво работать (т.е. количество работающих клиентов сравняется с количеством неработающих клиентов) на 15 сутки, что хорошо согласуется с расчетной моделью. Теперь увеличим количество клиентов с 10 до 100:
K (кол-во программ-клиентов) = 100;
P (кол-во программистов) = 3;
(ширина запроса клиента) = 0,00001;
N0 (начальное количество ошибок) = 250;
s (сложность сервера) = 2;
t (шаг итерации) = 0,002 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 500/сутки;
испр (интенсивность потока исправления ошибки) = 1/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0,1/сутки
M (количество итераций) = 85000;
Общее время розыгрыша: 170 (сутки);
К (число розыгрышей) =50
Видно, что на 170 сутки почти все ошибки исправлены (рис.20). Это происходит из–за того, что клиентов больше и их запросы охватывают большую область данных и, следовательно, обнаруживается большее количество ошибок и большее количество ошибок исправляется.
При десяти клиентах (рис.19) в ПО на 170 сутки еще будет оставаться около 50 ошибок.
Рисунок 20 – Влияние количества клиентов на надежность ПО (100 клиентов)
3.3.3 Влияние количества программистов на надежность ПО
Теперь покажем, что при малой нагрузке на сервер (малом количестве клиентских программ) увеличение количества программистов, исправляющих ошибки, дает малый эффект. Количество неисправленных ошибок к концу тестирования остается таким же. Уменьшается только время ожидания программы исправления в очереди.
Начальные условия розыгрыша:
K (кол-во программ-клиентов) = 10;
P (кол-во программистов) = 12;
(ширина запроса клиента) = 0,00001;
N0 (начальное количество ошибок) = 250;
s (сложность сервера) = 2;
t (шаг итерации) = 0,002 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 500/сутки;
испр (интенсивность потока исправления ошибки) = 1/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0,1/сутки
M (количество итераций) = 50000;
Общее время розыгрыша: 100 (сутки);
К (число розыгрышей) =50
Рисунок 21 – Влияние количества программистов на надежность ПО
Видно (рис.21), что программа начнет устойчиво работать, как и раньше, только на 10–15 сутки, то есть увеличение количества программистов не приводит к ожидаемому эффекту, и часть программистов, скорее всего, будет простаивать.
Гораздо эффективнее в этой ситуации увеличивать нагрузку при тестировании. Например, увеличивая количество клиентов.
Увеличение количества программистов может оказать даже отрицательное влияние на надежность ПО, если при устранении ошибок в ПО они интенсивно вносят в него новые ошибки. Пусть при 12 программистах каждый из них вносит ошибку с интенсивностью 0,6 вместо 0,1 ошибок в сутки.
Начальные условия розыгрыша:
K (кол-во программ-клиентов) = 10;
P (кол-во программистов) = 12;
(ширина запроса клиента) = 0,00001;
N0 (начальное количество ошибок) = 250;
s (сложность сервера) = 2;
t (шаг итерации) = 0,002 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 500/сутки;
испр (интенсивность потока исправления ошибки) = 1/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0,6/сутки
M (количество итераций) = 50000;
Общее время розыгрыша: 100 (сутки);
К (число розыгрышей) =50
Рисунок 22 – Влияние количества программистов на надежность ПО
Из рис.22 видно, что за 100 дней работы системы количество ошибок практически не уменьшилось.
3.3.4 Влияние интенсивности обращений клиентов к серверу
Увеличение интенсивности обращения каждого клиента к серверу не дает ожидаемого эффекта, т.к. каждый клиент обычно работает в своей узкой части ОД и выбивает ошибки из этой части, при этом значительная ОД остается не проверенной, а значит с ошибками. Проведем розыгрыш при увеличении интенсивности обращений с 500 до 2500 в сутки (рис.23).
Начальные условия розыгрыша:
K (кол-во программ-клиентов) = 10;
P (кол-во программистов) = 3;
(ширина запроса клиента) = 0,00001;
N0 (начальное количество ошибок) = 250;
s (сложность сервера) = 2;
t (шаг итерации) = 0,0004 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 2500/сутки;
испр (интенсивность потока исправления ошибки) = 1/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0,1/сутки
M (количество итераций) = 250000;
Общее время розыгрыша: 100 (сутки);
К (число розыгрышей) =10
3.3.5 Определение начального количества ошибок в ПО
Данная модель в сочетание с предложенной марковской моделью надежности ПО позволяет оценить количество ошибок в программе следующим образом – получить расчетный результат, а затем подобрать начальное количество ошибок в ПО таким образом, чтобы результаты розыгрыша совпадали с результатом расчета.
Рисунок 23 – Влияние интенсивности обращений клиентов к серверу
Для решения этой задачи с помощью программы моделирования необходимо добиться того, чтобы начальная интенсивность потока ошибок 0 из модели надежности ПО типа клиент–сервер совпадала с начальной интенсивностью потока ошибок в программе моделирования. Напрямую это сделать невозможно, так как в программе моделирования такого параметра нет. Для этого в программе моделирования нужно положить = 0.5, то есть каждое обращение клиента к серверу и ответ сервера к клиенту должен с вероятностью 1 порождать ошибку. Затем необходимо добиться того, чтобы количество обращений за сутки клиентов к серверу (т.е. K*обр) было равно 0. Остальные начальные параметры программы моделирования необходимо положить равными аналогичным параметрам модели надежности.
Найдем начальное количество ошибок для примера рассмотренного ранее. Для того чтобы начальная интенсивность потока ошибок в программе моделирования была равна 0=10, положим = 0.5, а обр при 3–х программистах положим равной 3,3. Итак:
Начальные условия розыгрыша:
K (кол-во программ-клиентов) = 10;
P (кол-во программистов) = 3;
(ширина запроса клиента) = 0,5;
N0 (начальное количество ошибок) = 9;
s (сложность сервера) = 3;
t (шаг итерации) = 0,0001 (сутки);
обр (интенсивность потока обращений клиента к серверу) = 3,3/сутки;
испр (интенсивность потока исправления ошибки) = 0,5/сутки;
pвнес (вероятность внесения ошибки при исправлении) = 0/сутки
M (количество итераций) = 100000;
Общее время розыгрыша: 10 (сутки);
К (число розыгрышей) =50