Листинг 18.6. Класс массивов с локализацией ошибок
class RobustArray { //Проверка: все ли объекты массива //удовлетворяют определенным ограничениям boolean [] checkState; CheckableObject [] theRobustArray; RobustArray (CheckableObject [] theArray) { checkState = new boolean [theArray.length]; theRobustArray = theArray; } //RobustArray public void assessDamage () throws ArrayDamagedException { boolean hasBeenDamaged = false; for (int i = 0; i < this.theRobustArray.length; i++) { if (!theRobustArray [i],check()) { checkState [i] = true; hasBeenDamaged = true; } else checkState [i] = false; } if (hasBeenDamaged) throw new ArrayDamagedException (); }//assessDamage }//RobustArray
Метод assessDamage (оценка ущерба) класса RobustArray проверяет правильность каждого элемента массива. Если элемент массива не соответствует ограничениям, которые определены в функции check, он записывается в массив checkState. Этим определяется исключение ArrayDamagedException. Обработчик исключительной ситуации должен быть включен в вызывающий метод. При обработке исключения используется информация из checkState. Среди других методов, используемых для обнаружения ошибок и локализации повреждений, выделим следующие.
1. Использование контрольных сумм и контроль разрядов в числовых данных. 2. Использование избыточных связей в структурах данных, которые содержат указатели. 3. Использование в параллельных системах контрольных таймеров.
При изменении данных и обмене ими для проверки программ можно использовать контрольную сумму числовых данных [121]. Контрольная сумма – это величина, которая рассчитывается на основе данных с помощью специальной математической функции. Эта функция должна дать единственное значение для группы данных, которая участвует в обмене. Контрольную сумму вычисляет отправитель данных и добавляет это значение к данным. Приемник данных применяет к данным ту же самую функцию и сравнивает полученное значение с контрольной суммой. Если они отличаются, значит, произошло некоторое нарушение целостности данных. Этот же механизм может использоваться для обнаружения вторжения в защищенные данные и преднамеренного их изменения.
Когда используются связанные структуры данных, их представление можно сделать избыточным путем включения обратных ссылок. Тогда для каждой прямой ссылки от А к В будет существовать обратная ссылка от В к А. Если также имеется счетчик числа элементов в структуре, можно проверить соответствие прямых и обратных ссылок и совпадение эталонного и вычисленного размеров структуры. Если процессы имеют ограничения на время их выполнения, можно установить контрольный таймер. Он начинает действовать одновременно с процессом, определяя время его исполнения, и возвращается в исходное состояние после выполнения процесса. Он опрашивается блоком управления через постоянные интервалы времени. Если по каким-то причинам процесс не завершится, контрольный таймер не возвратится в исходное положение. В таком случае блок управления обнаруживает сбой и принимает меры для принудительного завершения процесса.
Читайте также: A) Классической школы. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|