Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ботающем сервере;
П2С(t) клиент не работает при не работающем сервере;
Состояние сервера характеризуется в момент времени t одним из событий C(t) и C(t). Вероятности этих событий обозначим через p(t) и p(t) = 1 p(t), а численности состояний П1С(t), П2С(t) и П2С(t) соответственно: X1С(t), X2С(t) и X2С(t).
Соответствующие математические ожидания обозначим как:
(21)
Очевидно, для любого момента времени t:
(22)
где N число клиентов, работающих с сервером.
Определим интенсивности потоков событий для графа (см. рис. 16). Прежде всего, по условию задачи (19):
(23)
Из (20) следует:
(24)
Далее, программаклиент переходит из состояния П1С(t) в состояние П2С(t) не сама по себе, а только вместе и одновременно с сервером (когда тот зависает). Поэтому:
(25)
Аналогично:
(26)
Для остальных переходов не трудно установить соответствующие интенсивности, если учесть тот факт, что второй (нижний) подграф отличается от рассмотренного ранее (см. рис. 14) только наличием еще одного состояния П2С, когда клиентская программа простаивает на время исправления ошибки в программесервере. С учетом этого имеем:
(27)
(28)
(29)
Напишем для графа (см. рис. 16) дифференциальные уравнения смешанного типа, приближенно описывающие нашу систему (аргумент t для краткости записи опущен):
(30)
где:
Отметим, что, положив в (30) все левые части равными 0, можно найти решение для стационарного режима, а он существует, так как система эргодическая.
Заметим, что из этой системы уравнений можно исключить два уравнения: одно из первых двух, пользуясь уравнением p + p = 1, и одно из последующих трех, пользуясь соотношением нормировки (22).
Эти уравнения решаются при условии, что в начале сервер и все программыклиенты работают: t = 0; p = 1; p = 0; ; (31)
В случае, если важно исследовать, скажем, как быстро система восстанавливается при выходе из строя сервера, то начальные условия нужно выбрать другими: t = 0; p = 0; p = 1; ; , (32)
3. Экспериментальная часть
3.1 Обоснование выбранного метода реализации
Основной проблемой нахождения надежности ПО при помощи моделей надежности является необходимость знать начальное количество ошибок в ПО. Эту величину определить достаточно трудно (практически не возможно).
Поэтому одним из преимуществ предлагаемой модели по сравнению с другими является то, что в ней не используется предположение о начальном количестве ошибок N0 в ПО. Вместо нее используются достаточно просто измеряемые характеристики ПО, такие как интенсивность появления ошибок и интенсивность устранения ошибок. Хотя предложенная модель надежности и не использует эту величину, тем не менее, можно воспользоваться ее результатами для нахождения начального количества ошибок в программе N0 методом обратного расчета. Это позволит найти такие характеристики надежности ПО, как время наработки до отказа, его вероятность и время достижения нужной надежности при заданных начальных условиях.
3.2 Алгоритм функционирования программы
Программа написана в интегрированной среде разработки программ Delphi с применением объектно-ориентированного (ОО) подхода, который обеспечивает более быструю и компактную реализацию алгоритма.
При одном розыгрыше выполняются следующие шаги:
Разыгрывается размещение Er ошибок на ООД, распределенных на ней равномерно;
Для каждого из K клиентов разыгрывается в начале и только один раз mki и ki.
Далее итеративно (M раз подряд) с шагом t для каждого клиента:
Если в интервал (xi /2) попадает хотя бы одна ошибка на ООД, то считается, что в клиенте обнаружена ошибка, и он выводится из эксплуатации для ее исправления одним из свободных программистов. Если свободных программистов нет, то неисправный клиент становится в очередь и ожидает, когда один из программистов освободится.
Если в запросе клиента к серверу ошибки нет, то этот запрос направляется серверу на обработку и ответа. При этом разыгрывается ответ от сервера клиенту аналогично 3а). Если в область (xi /2) попадает хотя бы одна ошибка из списка ошибок сервера, то считается, что в сервере произошла ошибка. В этом случае работа системы останавливается и все программисты пытаются исправить эту ошибку в сервере со скоростью испр каждый. Вероятность исправления ошибки одним программистом равна .
Если шаге 3b) в клиенте обнаружена на ошибка и есть свободный программист, то свободный программист пытается исправить ошибку в клиенте с вероятностью .
Если ошибка исправляется, то она удаляется из списка ошибок. Таким образом, эта ошибка уже не может возникнуть в других клиентах. При этом если есть клиенты, в которых была обнаружена такая же ошибка, то эти клиенты считаются тоже исправленными. При исправлении ошибки каждый программист может внести новую ошибку с вероятностью или pвнес. Причем, если программист внес ошибку в программу, то он может внести туда еще одну ошибку с вероятность