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

Ошибки ПО за счет сбоя можно разделить на следующие группы:

1. Замена кода операции.

2. Обращение за командой к сегменту памяти, не являющейся сегментом кода.

3. Считывание данных по неправильному адресу.

4. Запись по неправильному адресу.

5. Дешифрирование кода, не соответствующего коду операции.

6. Ошибки обращения к памяти по несуществующему адресу.

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

Работа программного обеспечения всегда производится в два этапа:

1. Обнаружение ошибок во время функционирования.

2. Исправить ошибку. Восстановить работоспособность ПО.

Программа должна быть написана таким образом, чтобы ошибка обнаруживалась как можно ближе к месту ее появления. И второй этап занимал как можно меньшее время.

Как правило, второй этап – это итерационная процедура, в результате которого происходит пересчет i шага итерации алгоритмический и логический.

Алгоритмический – это реализация алгоритма решения задачи. Метод дуального или инверсного программирования. Желательно с помощью различных алгоритмах. Используются чаще всего в мультипроцессорных системах.

Чаще всего используются логические алгоритмы решения. Относятся такие методы:

· Метод обратного счета. Метод преобразования с выходных исходные данные.

Недостаток: не всегда есть обратная задача.

· Метод контрольных сумм. То есть в определенных точках программ рассчитываются контрольные суммы и сравниваются с эталонными.

· Метод проверки результатов на допустимость. В контрольных точках программ сравниваются с допустимыми.