Ошибки ПО за счет сбоя можно разделить на следующие группы:
- Замена кода операции.
- Обращение за командой к сегменту памяти, не являющейся сегментом кода.
- Считывание данных по неправильному адресу.
- Запись по неправильному адресу.
- Дешифрирование кода, не соответствующего коду операции.
- Ошибки обращения к памяти по несуществующему адресу.
Отказоустойчивое ПО может быть реализовано только за счет программной избыточности. То есть в алгоритм включаются дополнительные операции, позволяющие обнаруживать ошибки. При этом при разработке специализированных процессов, вводится также и аппаратная избыточность, то есть введение специальных диагностических процессов. Задача этих процессов – это выполнить функциональную диагностику в процессе нормальной работы программы.
Работа программного обеспечения всегда производится в два этапа:
- Обнаружение ошибок во время функционирования.
- Исправить ошибку. Восстановить работоспособность ПО.
Программа должна быть написана таким образом, чтобы ошибка обнаруживалась как можно ближе к месту ее появления. И второй этап занимал как можно меньшее время.
Как правило, второй этап – это итерационная процедура, в результате которого происходит пересчет i шага итерации алгоритмический и логический.
Алгоритмический – это реализация алгоритма решения задачи. Метод дуального или инверсного программирования. Желательно с помощью различных алгоритмах. Используются чаще всего в мультипроцессорных системах.
Чаще всего используются логические алгоритмы решения. Относятся такие методы:
- Метод обратного счета. Метод преобразования с выходных исходные данные.
Недостаток: не всегда есть обратная задача.
- Метод контрольных сумм. То есть в определенных точках программ рассчитываются контрольные суммы и сравниваются с эталонными.
- Метод проверки результатов на допустимость. В контрольных точках программ сравниваются с допустимыми.