Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Листинг 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]. Контрольная сумма – это величина, которая рассчитывается на основе данных с помощью специальной математической функции. Эта функция должна дать единственное значение для группы данных, которая участвует в обмене. Контрольную сумму вычисляет отправитель данных и добавляет это значение к данным. Приемник данных применяет к данным ту же самую функцию и сравнивает полученное значение с контрольной суммой. Если они отличаются, значит, произошло некоторое нарушение целостности данных. Этот же механизм может использоваться для обнаружения вторжения в защищенные данные и преднамеренного их изменения.

Когда используются связанные структуры данных, их представление можно сделать избыточным путем включения обратных ссылок. Тогда для каждой прямой ссылки от А к В будет существовать обратная ссылка от В к А. Если также имеется счетчик числа элементов в структуре, можно проверить соответствие прямых и обратных ссылок и совпадение эталонного и вычисленного размеров структуры.

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

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...