Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



(А.1)

где

i=CD * ( N0(i1) ), (А.2)

CD коэффициент пропорциональности,

N0 первоначальное число ошибок в ПО.

В (А.1) отчет времени начинается от момента последнего (i1)го отказа.

Если известны все моменты обнаружения ошибок ti и каждый раз в этот момент устраняется одна ошибка, то, используя метод максимального правдоподобия, можно получить уравнение для определения значения начального количества ошибок N0.

По методу максимального правдоподобия находим CD и N0. Функция правдоподобия имеет вид:

.

Откуда получаем условия для нахождения экстремумов:

,

Отсюда получаем решение для CD и N0:

,(А.3)

.(А.4)

Уравнение (А.4) решается методом перебора.

Пусть в ходе отладки зафиксированы интервалы времени между отказами ПО t1=10, t2=20, t3=25 ч. Определим по вышеприведенным формулам вероятность отсутствия 4го отказа, начиная с момента устранения 3го отказа.

Решаем (А.4) методом перебора и получаем N=4. Следовательно, из (А.3) имеем CD=0,02. Тогда из (А.1, А.2) получаем P(t4)=exp(0,02*t4) и, следовательно, 4=0,02 и среднее время до следующего отказа программы составляет =1/4=50 ч.

Это одна из первых и простых моделей. Модель использована при разработке весьма ответственных проектов (например, для программы Apollo). В ее основу положены следующие допущения:

интенсивность обнаружения ошибки R(t) пропорциональна текущему числу ошибок в программе;

все ошибки равно вероятны и их появления независимы друг от друга;

время до следующего отказа распределено экспоненциально;

ошибки постоянно исправляются без внесения новых ошибок;

R(t) = const на интервале между двумя соседними ошибками;

В соответствии с этими допущениями функцию распределения (риска) интенсивности ошибок между (i1) и iой ошибками можно представить как:

R(t) = K[N0 (i1)],

где K коэффициент пропорциональности; N0 исходное число ошибок в ПО.

Все интервалы времени

ti = ti ti1

имеют экспоненциальное распределение:

P(ti) = exp{ K[N0 (i1)] ti }.

Из принципа максимального правдоподобия для K и N0 получают следующие оценки:

,(А.5)

.(А.6)

Нелинейное уравнение (А.6) достаточно сложно для решения численными методами, так как оно имеет локальные экстремумы и не всегда имеет решение.

Модель позволяет найти время до обнаружения следующей ошибки tn+1 и время необходимое для обнаружения всех ошибок T:

,

.

Можно посчитать n количество ошибок, которое следует обнаружить и устранить для повышения наработки между обнаружениями ошибок от T1 до T2:

n = N0 T0 ( 1/T1 1/T2).(А.7)

Также можно получить затраты времени t на проведение тестирования, которые позволяют устранить n ошибок и соответственно повысить наработку от T1 до T2:

t = N0 T0 ln( T2 / T1 ) / K .(А.8)

Коэффициент готовности:

,

Коэффициент простоя КП = 1 КГ, где t период проверок, t1 время затрат ресурсов на проверки, tВ длительность восстановления работоспособности программы.

Относительная длительность отладки в этой модели:

,

где H количество систем, в которых функционирует программа; tЭ длительность эксплуатации программы; коэффициент увеличения затрат ресурсов на единицу машинного времени.

Средняя наработка на отказ:

Тср = 1/.

Следует подчеркнуть статистический характер приведенных соотношений.

Из (А.8) видно, что время, затрачиваемое на тестирование, пропорционально квадрату первоначального количества ошибок T0 в программе. Приведем пример: пусть N0 = 1000; T0 = 1 час. Требуется повысить надежность программы с T1 =1 час до T2 = 1 месяц = 720 часов. Тогда из (А.7) n = 999, что фактически означает, что нужно обнаружить все ошибки для получения устойчивой работы ПО в 1 месяц. И на это будет затрачено время t ~ 60 дней (при расчете K по формуле (А.5) было сделано предположение о неизменности , в этом случае

K=n*T0/(сумма ар. прогрессии)).

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

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

Статистическая модель Миллса

Описана в [11] и [20]. Программа специально "засоряется" некоторым количеством заранее известных ошибок. Эти ошибки вносятся в программу случайным образом, а затем делается предположение, что для ее собственных и и