Устойчивость
к ошибкам— это мера способности системы
программного обеспечения продолжать
функционирование при наличии ошибок.
Обеспечение
устойчивости программы к ошибкам
означает, что в программе содержатся
средства, позволяющие локализовать
область влияния отказа программы, либо
уменьшить его неприятные последствия,
а иногда предотвратить катастрофические
последствия отказа. Однако, эти подходы
используются весьма редко (может быть,
относительно чаще используется
обеспечение устойчивости к ошибкам).
Связано это, во-первых, с тем, что многие
простые методы, используемые в технике
в рамках этих подходов, неприменимы в
программировании, например, дублирование
отдельных блоков и устройств (выполнение
двух копий одной и той же программы
всегда будет приводить к одинаковому
эффекту — правильному или неправильному).
А, во-вторых, добавление в программу
дополнительных средств приводит к её
усложнению (иногда — значительному),
что в какой-то мере мешает методам
предупреждения ошибок.
59. Раскрыть понятие динамической избыточности
Истоки
концепции динамической избыточности
лежат в проектировании аппаратного
обеспечения. Один из подходов к
динамической избыточности — метод
голосования. Данные обрабатываются
независимо несколькими идентичными
устройствами, и результаты сравниваются.
Если большинство устройств выработало
одинаковый результат, этот результат
и считается правильным. И опять, вследствие
особой природы ошибок в программном
обеспечении ошибка, имеющаяся в копии
программного модуля, будет также
присутствовать во всех других его
копиях, поэтому идея голосования
здесь, видимо, неприемлема. Предлагаемый
иногда подход к решению этой проблемы
состоит в том, чтобы иметь несколько
неидентичных копий модуля. Это значит,
что все копии выполняют одну и ту же
функцию, но либо реализуют различные
алгоритмы, либо созданы разными
разработчиками. Этот подход
бесперспективен по следующим причинам.
Часто трудно получить существенно
разные версии модуля, выполняющие
одинаковые функции. Кроме того, возникает
необходимость в дополнительном
программном обеспечении для организации
выполнения этих версий параллельно или
последовательно и сравнения
результатов. Это дополнительное
программное обеспечение повышает
уровень сложности системы, что, конечно,
противоречит основной идее предупреждения
ошибок — стремиться в первую очередь
минимизировать сложность.
Второй
подход к динамической избыточности —
выполнять эти запасные копии только
тогда, когда результаты, полученные с
помощью основной копии, признаны
неправильными. Если это происходит,
система автоматически вызывает запасную
копию. Если и ее результаты неправильны,
вызывается другая запасная копия и т.
д.
60. Аналитические модели надежности
Модели
надежности программных средств (МНПС)
подразделяются на аналитические
и эмпирические.
Аналитические модели дают возможность
рассчитать количественные показатели
надежности, основываясь на данных о
поведении программы в процессе
тестирования (измеряющие и оценивающие
модели).
Аналитическое
моделирование надежности
ПС включает
четыре
шага:
1)
определение предположений, связанных
с процедурой тестирования
ПС;
2)
разработка или выбор аналитической
модели, базирующейся
на предположениях о процедуре тестирования;
3)
выбор параметров моделей с использованием
полученных данных;
4)
применение модели — расчет количественных
показателей надежности
по модели.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Дадим определение основных понятий надежности ПО в соответствии с классической работой Г. Майерса:
- В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать.
- Отказ программного обеспечения — это появление в нем ошибки.
- Надежность программного обеспечения — вероятность его работы без отказов в течении реки определенного периода Времени, рассчитанного с учетом стоимости для пользователя каждого отказа.
Из данных определений можно сделать важные выводы:
- Надежность программного обеспечения является не только внутренним свойством программы.
- Надежность программного обеспечения — это функция как самого ПО, так и ожиданий (действий) его пользователей.
Основными причинами ошибок программного обеспечения являются:
- Большая сложность ПО, например, по сравнению с аппаратурой ЭВМ.
- Неправильный перевод информации из одного представления в другое на макро- и микроуровнях. На макроуровне, уровне проекта, осуществляется передача и преобразование различных видов информации между организациями, подразделениями и конкретными исполнителями на всех этапах жизненного цикла ПО. На микроуровне, уровне исполнителя, производится преобразование информации по схеме: получить информацию — запомнить — выбрать из памяти (вспомнить) — воспроизвести информацию (передать).
Источниками ошибок (угрозами надежности) программного обеспечения являются:
- Внутренние: ошибки проектирования, ошибки алгоритмизации, ошибки программирования, недостаточное качество средств защиты, ошибки в документации.
- Внешние: ошибки пользователей, сбои и отказы аппаратуры ЭВМ, искажение информации в каналах связи, изменения конфигурации системы.
Методы проектирования надежного программного обеспечения можно разбить на следующие группы:
- Предупреждение ошибок, методы позволяющие минимизировать или исключить появление ошибки.
- Обнаружение ошибок, методы, направленные на разработку дополнительных функций программного обеспечения, помогающих выявить ошибки.
- Устойчивость к ошибкам, дополнительные функции программного обеспечения, предназначенные для исправления ошибок и их последствий и обеспечивающие функционирование системы при наличии ошибок.
Методы предупреждения ошибок концентрируются на отдельных этапах процесса продектирования программного обеспечения и включают в себя:
- Методы, позволяющие справиться со сложностью системы.
- Методы достижения большей точности при переводе информации.
- Методы улучшения обмена информацией.
- Методы немедленного обнаружения и устранения ошибок на каждом шаге (этапе) проектирования, не откладывая их на этап тестирования программы.
Сложность системы является одной из главных причин низкой надежности программного обеспечения. В общем случае, сложность объекта является функцией взаимодействия (количества связей) между его компонентами. В борьбе со сложностью ПО используются две концепции:
- Иерархическая структура. Иерархия позволяет разбить систему по уровням понимания (абстракции, управления). Концепция уровней позволяет анализировать систему, скрывая несущественные для данного уровня детали реализации других уровней. Иерархия позволяет понимать, проектировать и описывать сложные системы.
- Независимость. В соответствии с этой концепцией, для минимизации сложности, необходимо максимально усилить независимость элементов системы.
Это означает такую декомпозицию системы, чтобы её высокочастотная динамика была заключена в отдельных компонентах, а межкомпонентные взаимодействия (связи) описывали только низкочастотную динамику системы. Методы обнаружения ошибок базируются на введении в программное обеспечение системы различных видов избыточности:
- Временная избыточность. Использование части производительности ЭВМ для контроля исполнения и восстановления работоспособности ПО после сбоя.
- Информационная избыточность. Дублирование части данных информационной системы для обеспечения надёжности и контроля достоверности данных.
- Программная избыточность включает в себя: взаимное недоверие — компоненты системы проектируются, исходя из предположения, что другие компоненты и исходные данные содержат ошибки, и должны пытаться их обнаружить; немедленное обнаружение и регистрацию ошибок; выполнение одинаковых функций разными модулями системы и сопоставление результатов обработки; контроль и восстановление данных с использованием других видов избыточности.
Методы обеспечения устойчивости к ошибкам направлены на минимизацию ущерба, вызванного появлением ошибок, и включают в себя:
- обработку сбоев аппаратуры;
- повторное выполнение операций;
- динамическое изменение конфигурации;
- сокращенное обслуживание в случае отказа отдельных функций системы;
- копирование и восстановление данных;
- изоляцию ошибок.
Важным этапом жизненного цикла программного обеспечения, определяющим качество и надёжность системы, является тестирование. Тестирование — процесс выполнения программ с намерением найти ошибки. Этапы тестирования:
- Автономное тестирование, контроль отдельного программного модуля отдельно от других модулей системы.
- Тестирование сопряжений, контроль сопряжений (связей) между частями системы (модулями, компонентами, подсистемами).
- Тестирование функций, контроль выполнения системой автоматизируемых функций.
- Комплексное тестирование, проверка соответствия системы требованиям пользователей.
- Тестирование полноты и корректности документации, выполнение программы в строгом соответствии с инструкциями.
- Тестирование конфигураций, проверка каждого конкретного варианта поставки (установки) системы.
Существуют две стратегии при проектировании тестов:
тестирование по отношению к спецификациям (документации), не заботясь о тексте программы, и тестирование по отношению к тексту программы, не заботясь о спецификациях. Разумный компромисс лежит где-то посередине, смещаясь в ту или иную сторону в зависимости от функций, выполняемых конкретным модулем, комплексом или подсистемой.
Качество подготовки исходных данных для проведения тестирования серьёзно влияет на эффективность процесса в целом и включает в себя:
- техническое задание;
- описание системы;
- руководство пользователя;
- исходный текст;
- правила построения (стандарты) программ и интерфейсов;
- критерии качества тестирования;
- эталонные значения исходных и результирующих данных;
- выделенные ресурсы, определяемые доступными финансовыми средствами.
Однако, исчерпывающее тестирование всех веток алгоритма любой серьёзной программы для всех вариантов входных данных
практически неосуществимо. Следовательно, продолжительность этапа тестирования является вопросом чисто экономическим. Учитывая, что реальные ресурсы любого проекта ограничены бюджетом и графиком, можно утверждать, что искусство тестирования заключается в отборе тестов с максимальной отдачей.
Ошибки в программах и данных могут проявиться на любой стадии тестирования, а также в период эксплуатации системы. Зарегистрированные и обработанные сведения должны использоваться для выявления отклонений от требований заказчика или технического задания. Для решения этой задачи используется система конфигурационного управления версиями программных компонент, база документирования тестов, результатов тестирования и выполненных корректировок программ. Средства накопления сообщений об отказах, ошибках, предложениях на изменения, выполненных корректировках и характеристиках версий являются основной для управления развитием и сопровождением комплекса ПО и состоят из журналов:
- предлагаемых изменений;
- найденных дефектов;
- утвержденных корректировок;
- реализованных изменений;
- пользовательских версий.
ПРИМЕР:
Рассмотрим применение описанных выше методов повышения надёжности программного обеспечения при разработке автоматизированной информационной системы комбината хлебопродуктов (АИС КХП).
Предупреждение ошибок — лучший путь повышения надёжности программного обеспечения. Для его реализации была разработана методика проектирования систем управления предприятиями, соответствующая спиральной модели жизненного цикла ПО. Методика предусматривает последовательное понижение сложности на всех этапах анализа объекта. При декомпозиции АИС были выделены уровни управления системы, затем подсистемы, комплексы задач и так далее, вплоть до отдельных автоматизируемых функций и процедур. Методика базируется на методах структурно-функционального анализа (SADT), диаграммах потоков данных (DFD), диаграммах «сущность-связь» (ERD), методах объектно-ориентированного анализа (OOA) и проектирования (OOD).
На основании методов обнаружения ошибок были разработаны следующие средства повышения надёжности ПО:
- Средства, использующие временную избыточность: авторизация доступа пользователей к системе, анализ доступных пользователю ресурсов, выделение ресурсов согласно ролям и уровням подготовки пользователей, разграничение прав доступа пользователей к отдельным задачам, функциям управления, записям и полям баз данных.
- Средства обеспечения надёжности, использующие информационную избыточность: ссылочная целостность баз данных обеспечивается за счёт системы внутренних уникальных ключей для всех информационных записей системы, открытая система кодирования, позволяющая пользователю в любой момент изменять коды любых объектов классификации, обеспечивает стыковку системы классификации АИС КХП с ПО других разработчиков, механизмы проверки значений контрольных сумм записей системы, обеспечивают выявление всех несанкционированных модификаций (ошибок, сбоев) информации, средства регистрации обеспечивают хранение информации о пользователе и времени последней модификации (ввода, редактирования, удаления) и утверждения каждой записи информационной системы, введение в структуры баз данных системы времени начала и окончания участия записи в расчётах позволяет ограничить объём обрабатываемой информации на любом заданном периоде, а также обеспечить механизмы блокировки информации для закрытых рабочих переводов, ведение служебных полей номеров версий баз данных и операционных признаков записей позволяет контролировать и предупреждать пользователей о конфликтах в случае несоответствия номеров версий модулей и структур баз, либо о нарушении технологических этапов обработки информации, средства автоматического резервного копирования и восстановления данных (в начале, конце сеанса работы или по запросу пользователей) обеспечивают создание на рабочей станции клиента актуальной копии сетевой базы данных, которая может быть использована в случае аварийного сбоя аппаратуры локальной и вычислительной сети и перехода на локальный режим работы и обратно.
- Средства обеспечения надёжности, использующие программную избыточность: распределение реализации одноименных функций по разным модулям АИС КХП с использованием разных алгоритмов и системы накладываемых ограничений и возможностью сравнения полученных результатов; специальные алгоритмы пересчётов обеспечивают в ручном и автоматическом режимах переформирование групп документов, цепочек порождаемых документов и бухгалтерских проводок, что повышает эффективность и надёжность обработки информации; средства обнаружения и регистрации ошибок в сетевом и локальных протоколах; в программные модули системы встроены средства протоколирования процессов сложных расчётов с выдачей подробной диагностики ошибок; средства отладки и трассировки алгоритмов пользовательских бизнес-функций.
- Средства обеспечивающие устойчивость системы к ошибкам: процедура обработки сбоев обеспечивает в автоматическом режиме несколько попыток повторного выполнения операций прежде, чем выдать пользователю сообщение об ошибке (например, для операций раздельного доступа к ресурсам, операций блокировки информации или обращения к внешним устройствам); средства динамического изменения конфигурации осуществляют контроль доступа к сетевым ресурсам, а в случае их недоступности или конфликта обеспечивают автоматический запуск системы по альтернативным путям доступа; средства контроля и обслуживания данных обеспечивают восстановление заголовков баз данных, восстановление индексных файлов, конвертацию модифицированных структур баз данных; средства слияния, копирования, архивирования и восстановления данных.
Для обеспечения качества программного обеспечения АИС КХП на этапе развития и сопровождения системы разработан комплекс программных средств, обеспечивающий:
- управление версиями ПО;
- регистрацию поставок;
- сопровождение заявок клиентов.
Использование рассмотренных методов и средств обеспечения надёжности при проектировании и сопровождении автоматизированной информационной системы комбината хлебопродуктов обеспечило высокий уровень надёжности системы, необходимый для одновременной работы десятков пользователей производственной системы управления в реальном масштабе времени.
А.2.2.2 Устойчивость к ошибке (Fault tolerance)
Атрибуты программного обеспечения, относящиеся к его способности поддерживать определенный уровень качества функционирования в случаях программных ошибок или нарушения определенного интерфейса.
Примечание — Определенный уровень качества функционирования включает возможность отказобезопасности.
Читайте также
Устойчивость функции printk()
Устойчивость функции printk()
Одно из проверенных и часто используемых свойств функции printk() — это ее устойчивость. Функцию printk() можно вызывать практически в любое время и в любом месте ядра. Её можно вызывать из контекста прерывания и из контекста процесса. Её можно
Как должно выглядеть сообщение об ошибке
Как должно выглядеть сообщение об ошибке
Главное, чтобы покупатель, увидев сообщение об ошибке, сразу понял, что и где нужно исправить. Хороший пример можно увидеть на сайте Banana Republic. Если вы пройдете по ссылке Access Your Info («Информация о пользователе»), которая расположена
8. Устойчивость и автоколебания
8. Устойчивость и автоколебания
Усилители, особенно состоящие из нескольких каскадов, могут быть устойчивы или входить в режим автоколебаний. Частота таких колебаний зависит от комбинации используемых компонентов, включая все паразитные индуктивности и емкости.
1.6.8. Правило устойчивости: устойчивость-следствие прозрачности и простоты
1.6.8. Правило устойчивости: устойчивость-следствие прозрачности и простоты
Программное обеспечение называют устойчивым, когда оно выполняет свои функции в неожиданных условиях, которые выходят за рамки предположений разработчика, столь же хорошо, как и в нормальных
1.6.8. Правило устойчивости: устойчивость — следствие прозрачности и простоты
1.6.8. Правило устойчивости: устойчивость — следствие прозрачности и простоты
Программное обеспечение называют устойчивым, когда оно выполняет свои функции в неожиданных условиях, которые выходят за рамки предположений разработчика, столь же хорошо, как и в нормальных
Шутка №8 — сообщение об ошибке, содержащее «мусор»
Шутка №8 — сообщение об ошибке, содержащее «мусор»
Восьмая шутка будет выводить сообщение об ошибке, но не простое, а содержащее огромное количество случайных чисел. Код этой шутки:for i:=1 to 200 do begin case i of //после каждого 25-го числа – перенос на новую строку 25,50,75,100,125,150,175,199:
Устойчивость
Устойчивость
Когда транзакция завершается, ее изменения должны быть устойчивыми — т. е. новое состояние всех объектов, видимых другим транзакциям после подтверждения, будет сохранено и будет постоянным, независимо от наличия ошибок в оборудовании или краха программного
А.2.5.3 Устойчивость (Stability)
А.2.5.3 Устойчивость (Stability)
Атрибуты программного обеспечения, относящиеся к риску от непредвиденных эффектов
Кафедра Ваннаха: География и устойчивость Ваннах Михаил
Кафедра Ваннаха: География и устойчивость
Ваннах Михаил
Опубликовано 31 октября 2011 года
Самым дешёвым устройством хранения информации, предоставленным нам технологической цивилизацией, остается жёсткий диск. Именно на нём живёт библиотека в
Устойчивость (Robustness)
Устойчивость (Robustness)
Определение: устойчивостьУстойчивость — это способность ПО соответствующим образом реагировать на аварийные ситуации.Устойчивость дополняет корректность. Корректность относится к поведению системы в случаях, определенных спецификацией;
Доставка почты прерывается сообщением об ошибке
Доставка почты прерывается сообщением об ошибке
Проверьте работоспособность подключения к Интернету, попытавшись загрузить какой-нибудь сайт в Internet Explorer. Посмотрите свойства учетной записи, особое внимание следует обратить на правильность имени пользователя и
Нет изображения при воспроизведении видео или появляется сообщение об ошибке загрузки кодека
Нет изображения при воспроизведении видео или появляется сообщение об ошибке загрузки кодека
Видеофильмы обычно записываются с применением различных технологий сжатия, и для воспроизведения подобных записей необходим кодек – специальный драйвер, который
Кафедра Ваннаха: География и устойчивость
Кафедра Ваннаха: География и устойчивость
Автор: Ваннах МихаилОпубликовано 31 октября 2011 годаСамым дешёвым устройством хранения информации, предоставленным нам технологической цивилизацией, остается жёсткий диск. Именно на нём живёт библиотека в «тяжёлых» графических