Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FINAL.doc
Скачиваний:
80
Добавлен:
04.06.2015
Размер:
1.29 Mб
Скачать

Обнаружение ошибок

Эффективное применение методов отказоустойчивости моноверсионных систем предполагает наличие двух признаков: самозащита и самопроверка [50] Свойство самозащитыозначает, что модуль должен уметь защитить себя от некорректных данных, полученных от внешних взаимодействующих модулей (верификация данных) [13]. Самопроверка подразумевает что модуль должен уметь обнаруживать внутренние ошибки и принимать меры для предотвращения их распространения на другие модули. Степень, с которой механизм самозащиты используется в системе, ограничивается стоимостью дополнительной избыточностью. Заметим, что данная избыточность не повышает функциональность системы, а только лишь качество продукта, в то же время, снижая производительность системы. На практике использование методов повышения отказоустойчивости является компромиссом между функциональностью, производительностью, сложностью и надежностью.

Существует несколько видов проверок для обнаружения ошибок [39]:

  • Проверка репликациипредставляет собой механизм обнаружения ошибок путем сравнения выходов модулей;

  • Проверка сроковприменима к системам и модулям, в спецификации которых содержатся ограничения времени реакции системы. Исходя из этих ограничений, разрабатываются проверки для выявления отклонений от приемлемого поведения модуля;

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

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

  • Проверка допустимостиданных использует семантические свойства данных (диапазон, скорость изменения, последовательность) для обнаружения ошибок.

  • Структурнаяпроверка использует известные свойства структуры данных. Например, в списках, очередях и деревьях можно проверить правильность ссылок на элементы. Структурные проверки можно сделать более эффективными расширив структуру данных дополнительной (избыточной) информацией. Например, для деревьев можно хранить счетчик с количеством дочерних элементов, для списков – с общим количеством элементов, а также индивидуальные идентификаторы для всех элементов [47] [48].

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]