Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы / ОТВЕТЫ НА ЭКЗАМЕНАЦИОННЫЕ ВОПРОСЫ.doc
Скачиваний:
107
Добавлен:
01.05.2014
Размер:
1.24 Mб
Скачать

Модель Нельсона. Применение последовательного анализа Вальда для снижения количества прогонов программы.

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

Если рассмотреть также и случай различных вероятностей для каждого набора данных, то оценка (13.5) изменится следующим образом.

что позволяет записать следующее выражение для вероятности успешного прогона:

(14.1)

Тогда вероятность успешного выполнения m прогонов, при условии, что набор входных данных для каждого прогона выбирается независимо и в соответствии с распределением, заданным формулой (14.1), будет равна:

(14.2)

Модель (14.2) позволяет дать следующее определение надежности ПО: надежность ПО – это вероятность его m безотказных прогонов.

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

Принимая во внимание эти обстоятельства, необходимо переопределить распределение (14.1) в терминах вероятностей pij выбора набора данных Ei для j-того прогона программы из некоторой последовательности прогонов. Тогда вероятность отказа на j-том прогоне будет

Соответственно, вероятность безотказного выполнения m прогонов можно оценить следующим выражением:

Это выражение можно записать в виде

и если Qi<<1, тогда

Обозначим - время выполнения j-того прогона программы, и- суммарное время, потраченное на выполнение j прогонов, и будем использовать следующее выражение для функции риска

тогда мы имеем

Если , то сумма превращается в интеграл, и формула (14.3) превращается в фундаментальное отношение (13.2):

основного правила надежности.

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

Модель, разработанная специалистами компании IBM.

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

Объем i-той версии выражается количеством модулей Mi, входящих в данную версию. При выпуске i –той версии системы изменялся параметра СИМi (количества старых исправляемых модулей), и добавление некоторого числа новых модулей НМi , так что

.

При доработке i-й версии (в период подготовки (i+1)-й) происходит дальнейшая коррекция модулей. Эти исправленные модули делятся на две группы: первая группа характеризуется параметром MИMi – многократно изменяемые модули (10 или более исправлений на модуль), и вторая группа – ИMi, модули с числом исправлений меньше 10. Эта классификация необходима для упрощения вычислений, а также из-за того факта, что небольшое число исправлений характерно для большинства модулей.

Также необходимо отметить, что группа ИM не требуют особых средств отладки, в то время как группа MИM может потребовать некоторых дополнительных усилий при отладке.

В ходе анализа истории сопровождения OS/360 фирмы IBM было установлено, что существует значительная зависимость между параметрами, характеризующими масштабы изменений и (соответственно) уровень содержания ошибок (в группах ИM и MCM), и параметрами, характеризующими сложность и объем следующей версии (СИМ, НМ). В применении к OS/VS1 это соотношение выглядело следующим образом.

(14.7)

(14.8)

Если предположить, что термины “исправление” и “ошибка” идентичны, то тогда модель для оценивания общего количества ошибок в программе, предложенная специалистами из IBM и основанная на приведенных выше объяснениях, записывается следующим образом:

(14.9)

где ИЗМi - общее количество исправлений, внесенное в модули (или, другими словами, общее количество ожидаемых ошибок), а коэффициенты 23 и 2 – среднее количество исправлений на модуль для групп MИM и ИM, соответственно.

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

  • на этапе пассивного сопровождения ПО (ИMi = 0, СИМi невелико) количество исправляемых модулей и количество исправлений внутри модулей быстро убывает от версии к версии;

  • количество ожидаемых ошибок в следующей версии может увеличится по сравнению с прошлой версией, если достаточно много старых модулей было изменено (СИМ), и/или было добавлено много новых модулей (НМ).

  • Добавление новых модулей оказывает более сильное влияние на рост числа новых ошибок, чем исправления, вносимые в старые модули; в то же время, если есть возможность создать новый модуль вместо изменения старых модулей (5 или более), то это снижает ожидаемое количество ошибок. Другими словами, на некотором этапе сопровождения ПО изменение уже существующих модулей теряет свою эффективность, и требуется добавление вместо этого нового модуля.

  1. Методы повышения надежности программ. Виды избыточности и особенности их применения. Методы испытания программ на надежность.

Идея заключается в том, что если мы будем включать в программы средства по самостоятельному восстановлению, они будут корректно работать даже после сбоев. Хотим сводить любые аномалии, возникающие в процессе работы программы, к приемлемому уровню. Решение задачи – использование избыточности.

Влияние избыточности на повышение надежности программ

Так как в программах нет необходимости “ремонта” компонент с участием человека то можно добиваться высокой автоматизации программного восстановления Главной задачей становится восстановление за время, не превышающее порогового значения между сбоем и отказом Автоматизируя процесс и сокращая время восстановления можно преобразовать отказы в сбои и тем самым улучшить показатели надежности функционирования системы

Комплексы программ в процессе функционирования находятся под воздействием шумов-возмущений различных типов Для снижения их влияния на результаты следует применять фильтры позволяющие обнаруживать искажения устранять или уменьшать их вредные последствия Разнообразие видов искажений приводит к необходимости построения систем фильтров каждый из которых способен селектировать некоторые виды искажений

Для реализации фильтров обеспечивающих повышение надежности функционирования программ и защиту вычислительного процесса и информации программно-алгоритмическими методами используется программная информационная и временная избыточность Основная задача ввода избыточности состоит в исключении возможности аварийных последствий от возмущений соответствующих отказу системы Любые аномалии при исполнении программ необходимо сводить до уровня сбоя путем быстрого восстановления

Временная избыточность состоит в использовании некоторой части производительности ЭВМ для контроля исполнения программ и восстановления вычислительного процесса Величина временной избыточности зависит от требований к надежности функционирования системы и находится в пределах от 5-10% производительности однопроцессорной ЭВМ до трех-четырех кратного дублирования производительности машины Временная избыточность используется на обнаружение искажений их диагностику и на реализацию операций восстановления На это требуется в общем случае небольшой интервал времени который выделяется либо за счет резерва либо за счет сокращения времени решения функциональных задач

Информационная избыточность состоит в дублировании накопленных исходных и промежуточных данных обрабатываемых комплексом программ Избыточность используется для сохранения достоверности данных которые в наибольшей степени влияют на нормальное функционирование программ или требуют значительного времени восстановления Для менее важных данных информационная избыточность используется в виде помехозащитных кодов позволяющих только обнаружить искажение

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

Методы обеспечения надежности программ

Основные факторы определяющие надежность программ

Надежность функционирования комплексов программ зависит от многих факторов которые можно объединить в три группы (табл. 12)

  • факторынепосредственно определяющие возникновение отказов и характеристики надежности программ

  • методы способствующие проектированию корректных программ снижающие вероятность программных ошибок и отказовых ситуаций при исполнении программ

  • методы активно влияющие на повышение надежности функционирования программ позволяющие контролировать и поддерживать заданные показатели надежности

Таблица 12

Факторы непосредственно определяющие надежность программ

Методы проектирования корректных программ

Методы контроля и обеспечения надежности программ

Особенности внешних абонентов и пользователей результатов программ

Структурное проектирование программ и данных

Методы использования избыточности

Требования к показателям надежности

Структурное проектирование программных модулей

Временной

Информационной

Программной

Инерционность внешних абонентов

Структурное проектирование взаимодействия модулей

Методы контроля программ данных и вычислительного процесса

Необходимое время отклика на входные данные

Структурирование данных

Предпусковой контроль

Оперативный контроль

Искажения исходных данных

Тестирование программ

Методы программного восстановления

Искажения данных поступающих от человека

Детерминированное тестирование

Восстановление текстов программ

Исправление данных

Искажения данных поступающих по телекодовым каналам связи

Статистическое тестирование

Корректировка вычислительного процесса

Искажения данных в процессе накопления и хранения в ЭВМ

Динамическое тестирование и контроль пропускной способности в реальном времени

Методы испытаний на надежность

Форсированные испытания

Ошибки в программах и их проявление

Испытания в нормальных условиях эксплуатации

Статистические характеристики ошибок и искажений

Расчетно-экспериментальные методы определения надежности

Программ

Методы обеспечения надежности при сопровождении

массивов данных

Обеспечение сохранности программ эталонных версий

Вычислительного процесса

Обеспечение корректности внесения изменений и развития версий

Отказы при функционировании программ возникают вследствие взаимодействия данных и ошибок в программе Характеристики ошибок в значительной степени определяются методами проектирования программАктивные методы обнаружения и локализации программных ошибок базируются на тестировании различных видов детерминированном статистическом и динамическом Однако все виды тестирования не гарантируют отсутствие ошибок в комплексах программ и высокую надежность Для этого применяются методы контроля и обеспечения надежности программ путем использования программной временной и информационной избыточности

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

  • Отказ - искажения вычислительного процесса данных или программ вызывающие полное прекращение выполнения функций системой;

  • Искажения кратковременно прерывающие функционирование системы - отказовые ситуации или сбои характеризующиеся быстрым восстановлением без длительной потери работоспособности

  • Искажения мало отражающиеся на вычислительном процессе - сбои и искажения не создающие отказовые ситуации

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

  • зацикливание те последовательная повторяющаяся реализация некоторой группы команд не прекращающаяся без внешнего (для данного цикла) вмешательства

  • останов исполнения программ и прекращение решения функциональных задач

  • полная самоблокировка вычислительного процесса (клинч) из-за последовательного прекрестного обращения разных программ к одним и тем же ресурсам ЭВМ без освобождения ранее занятых ресурсов

  • прекращение или значительное снижение темпа решения некоторых задач вследствие перегрузки ЭВМ по пропускной способности

  • значительное искажение или полная потеря накопленной информации о текущем состоянии управляемого процесса или внешних абонентов

  • искажение процессов взаимного прерывания программ приводящее к блокировке возможности некоторых типов прерываний

Методы испытаний программ на надежность

В теории надежности разработан ряд методов позволяющих определить характеристики надежности сложных систем Эти методы можно свести к трем основным группам

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

  • форсированные методы испытаний реальных систем на надежность

  • расчетно-экспериментальные методы при использовании которых ряд исходных данных для компонент получается экспериментально а окончательные показатели надежности систем надежности рассчитываются с использованием этих данных

Прямые экспериментальные методы определения показателей надежности программ в нормальных условиях функционирования в ряде случаев трудно использовать из-за больших значений времени наработки на отказ (сотни и тысячи часов)

Форсированные методы испытаний надежности программ значительно отличаются от традиционных методов испытаний аппаратуры Форсирование испытаний может выполняться путем повышения интенсивности искажений исходных данных а также специальным увеличением загрузки комплекса программ выше нормальной

Особым видом форсированных испытаний является проверка эффективности средств контроля и восстановления программ данных и вычислительного процесса Для этого имитируются запланированные экстремальные условия функционирования программ при которых в наибольшей степени стимулируется работа испытываемого средства программного контроля или восстановления

Расчетно-экспериментальные методы . При анализе надежности программ применение расчетно-экспериментальных методов более ограничено чем при анализе аппаратуры Это обусловлено неоднородностью надежностных характеристик основных компонент программных модулей групп программ массивов данных и тд Однако в некоторых случаях расчетным путем можно оценить характеристики надежности комплексов программ Сочетание экспериментальных и аналитических методов применяется также для определения пропускной способности комплекса программ на конкретной ЭВМ и влияние перегрузки на надежность его функционирования