48639 (588587), страница 3

Файл №588587 48639 (Разработка программно–алгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиент–сервер") 3 страница48639 (588587) страница 32016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

1.3 Выводы

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

2. Теоретическая часть

2.1 Существующие модели надежности ПО

Прогнозирование надежности ПО в процессе его эксплуатации осуществляется на основе математических моделей надежности программ.

В работе [11] приведены вероятностные модели надежности. Теория надежности для аппаратного обеспечения развита довольно хорошо, и, как показано выше, есть применить ее и к надежности ПО. В этих моделях ищется число ошибок, оставшихся в программе. Это необходимо знать для завершения процесса тестирования, и оценки стоимости сопровождения, которая пропорциональна количеству оставшихся в программе ошибок. Также эти модели позволяют находить надежность программы, которая понимается как вероятность, что программа будет функционировать без ошибок в течение заданного интервала времени, а также – среднее время между отказами программы.

В [20] дается классификация моделей надежности ПО. Наиболее известных моделей надежности ПО в настоящее время существует около десятка, поэтому в данной работе они сгруппированы по признакам. В качестве классификационных признаков выбраны следующие (рис.6):

временная структура процессов проявления ошибок в ПО (время появления ошибки, количество ошибок за заданный интервал времени);

сложность программы (мера сложности ПО – длина, количество функций или модулей, данных и т.п.);

разметка ошибок (искусственное внесение в ПО известных ошибок);

структура пространства входных данных;

структура текста программы (распределение ошибок по тексту программы).

Рисунок 6 – Классификация моделей надежности ПО

Как показано в [19] на практике простейшие, элементарные ошибки программ и данных могут приводить к катастрофическим последствиям при функционировании ПО. В то же время, крупные системные дефекты могут только несколько ухудшать эксплуатационные характеристики ПО. Поэтому невозможно ранжировать типы первичных ошибок по степени влияния на надежность и следует одинаково тщательно относиться к их обнаружению и устранению.

Статистика ошибок в комплексных программах и их характеристики могут служить ориентиром для разработчиков при распределении усилий на отладку и предохранять их от излишнего оптимизма при оценке достигнутого качества и надежности ПО. Они помогают:

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

выбирать методы и средства проектирования, программирования и тестирования.

Регистрация, сбор и анализ характеристик ошибок в программах является сложным и трудоемким процессом. Поэтому имеется относительно небольшое число работ, в которых опубликованы реальные характеристики ошибок.

При автономной, и в начале комплексной отладки доля системных ошибок невелика (~ 10%), но она существенно возрастает (до 35–40%) на завершающих этапах комплексной отладки. В процессе сопровождения системные ошибки являются преобладающими (~ 80% от всех ошибок).

Различными авторами были сделаны ряд уточнений вышеизложенной модели (к настоящему времени предложено около 15 математических моделей для описания количества ошибок в ПО различной степени сложности). Однако ни одна из этих моделей не имеет явных преимуществ по точности аппроксимации распределений и прогнозирования числа ошибок в программах по сравнению с простейшей экспоненциальной моделью. Обзор наиболее характерных моделей надежности ПО дается в Приложении А.

В работе [20] дается сравнение моделей. Модели Джелинского–Моранды и Шика–Уолвертона целесообразны при моделировании надежности ПО небольшого объема, а модифицированная модель Шика–Уолвертона – для ПО больших проектов. Если при моделировании необходимо получить значения надежности (например, среднюю наработку до отказа), то лучше использовать геометрические модели. Некоторые модели не имеют решений (то есть расходятся при определенных входных условиях). Если имеются данные об интервалах времени между ошибками, то лучше воспользоваться геометрической моделью, а если имеются данные о числе ошибок, приходящихся на единицу времени, то лучше применять модель Шнейдевинда. Экспоненциальная и дискретная модели были проверены при тестировании реальных программ и хорошо соответствуют действительности [21].

В заключение в [20] делается вывод, что на сегодняшний день невозможно выбрать наилучшую модель среди десятка предложенных.

Из–за значительных неопределенностей во всех вышеописанных моделях в [11] рекомендуется использовать несколько моделей одновременно и объединять их результаты.

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

потенциально возможной надежности функционирования программ в процессе испытаний и эксплуатации;

числа пропущенных ошибок;

время тестирования, требуемое для обнаружения следующей ошибки;

время, необходимое для обнаружения с заданной вероятностью большинства имеющихся ошибок.

Можно предположить, что оценки, приведенные для нескольких конкретных систем, позволят прогнозировать эти характеристики для других проектов. Вероятностный подход к надежности ПО должен дать ответ на один из самых сложных вопросов при тестировании ПО – когда нужно остановиться и завершить тестирование, то есть, в течении какого времени времени нужно тестировать программу, чтобы она удовлетворяла требованиям по надежности? С помощью предложенной в данной работе модели надежности можно получить ответ на этот вопрос.

2.2 Содержательная постановка задачи

Имеется ПО типа "клиент–сервер". Сервер обслуживает запросы от N программ–клиентов (далее просто клиенты, рис.7). В ПО равномерно по области определения входных данных (ООД) (A, B) расположены Er ошибок.

Ошибками (отказами) ПО являются:

Отказы в программе. Если ПО не модифицируется, то интенсивность его отказов остаётся постоянной.

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

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

Рисунок 7 – Типовая клиент-серверная структура

Сервер сложнее программ–клиентов с точки зрения разработки ПО в S раз. S – коэффициент сложности сервера по отношению к клиентам. Каждый k–ый (k = 1, 2, …, N) клиент порождает пуассоновский поток данных к серверу интенсивностью обр. Данные от клиента распределены по ООД по нормальному закону с характеристиками mk и k, где mk распределено между клиентами равномерно по всей области входных данных, 3k – распределено равномерно на меньшем из участков отсекаемых mk на оси области данных. Это нужно для имитации неравномерности использования ООД при малом количестве клиентов.

На запрос клиента сервер отвечает данными, которые распределены равномерно по всей области определения данных (A, B).

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

Рисунок 8 – Распределение запросов k–го клиента на области данных

Входными данными для модели являются:

P – количество программистов, обслуживающих систему;

K – количество программ–клиентов;

– ширина одного запроса клиента как доля от ООД (от 0 до 1, где 1 – это вся ООД);

t – шаг итерации (сутки);

s – коэффициент сложности сервера по сравнению с программой–клиентом;

обр – интенсивность потока обращений одного клиента к серверу (1/сутки);

испр – интенсивность потока исправления ошибки одним программистом (1/сутки);

внес – интенсивность внесения ошибки при исправлении одним программистом (1/сутки) или

pвнес – вероятность внести ошибку при исправлении одним программистом;

M – количество итераций (количество попыток обращений программ–клиентов к серверу в одном розыгрыше);

R – количество розыгрышей для усреднения;

Er – начальное количество ошибок.

Для моделирования потоков запросов в ПО применяется метод Монте–Карло.

Также есть возможность оценить первоначальное количество ошибок по следующему алгоритму: Принимаем ООД за единицу. Каждый клиент в запросе генерирует долю от ООД. За время t клиент обратиться к серверу (t*обр) раз. За время t все клиенты обратятся к серверу (t*обр*K) раз. И объем данных, который будет затронут в ООД при этом равен (t*обр*K*). Так как в нашей модели ошибки распределены равномерно по ООД, то за время t будет обнаружено (t*ош), где ош – первоначальная интенсивность ошибок в системе. Если бы за время t клиенты затронули всю ООД, то было бы обнаружены все Er ошибок. Поэтому можно записать следующую пропорцию:

.

Отсюда находим Er:

.

При этом считается, что каждый из K клиентов обратился к серверу с запросом с данными непересекающимися в ООД. Однако в реальности клиенты чаще всего обращаются к серверу с однотипными запросами, поэтому полагаем К=1. Тогда первоначальное количество ошибок можно оценить как:

Поставленная задача позволяет определить такие важные характеристики функционирования программного комплекса, как:

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

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

расчет вероятности отказа ПО в единицу

расчёт коэффициента готовности

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

Данная задача имеет смысл для систем типа "клиент-сервер" с целью определения надёжности системы на этапе тестирования.

2.3 Разработка модели надежности ПО типа клиент–сервер

2.3.1 Модель надежности клиентских программ

С помощью метода динамики средних [22] построим марковскую модель поведения программы состоящей из многих (примерно однотипных) модулей или (что сейчас применяется наиболее часто) построим модель программной системы типа "клиент–сервер". Характерной особенностью такой системы является запуск сервером параллельных однотипных потоков, каждый из которых обслуживает запросы одной программы–клиента или работа сервера со многими однотипными клиентскими программами. В этом случае потоки или программы–клиенты полностью идентичны и каждый из них может выходить из строя независимо от остальных. Особенностью этой системы в отличие от систем, рассматриваемых в теории массового обслуживания, (например, обслуживание ремонтной бригадой автомобиля, или однотипных аппаратных комплексов) заключается в том, что при выходе из строя (обнаружении ошибки) в одном модуле (потоке или клиенте) и устранении этой ошибки, эта ошибка автоматически устраняется и во всех других модулях (потоках), так как эти потоки размножаются путем запуска на выполнение одного и того же кода программы. Учтем эту особенность при применении метода динамики средних. При этом временем на замену модуля с ошибкой на исправленный модуль мы пренебрегаем.

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

Итак, пусть имеется сложная (типа клиент – сервер) программная система S, состоящая из большого числа однородных модулей (потоков или клиентов) N, каждый из которых может случайным образом переходить из состояния в состояние. Пусть (для простоты) все потоки событий (в случае программы – это потоки внешних данных или запросов от клиентских программ к серверу), переводящие систему S и каждый ее модуль из состояния в состояние – пуассоновские (может быть даже с интенсивностями, зависящими от времени). Тогда процесс, протекающий в системе, будет марковским.

Допустим, что каждый модуль может быть в любом из n возможных состояний: 1, 2, …, n, а состояние системы S в каждый момент времени характеризуется числом элементов (модулей), находящихся в каждом из этих состояний. Исследуем процесс, протекающий в системе S. Отвлечемся от возможных состояний системы в целом (а именно, SN, 0, …, 0 – все модули находятся в состоянии 1, а в других состояниях нет ни одного элемента; SN–1, 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)].

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее