![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Программа называется самопроверяемой, если для любого входа, удовлетворяющего входной спецификации, программа выдает правильный выходной результат или вырабатывает предупреждающее сообщение, информирующее пользователя, что выход может быть неправильным.
Целью создания самопроверяемых программ является получение программ, удовлетворяющих свойствам защищенности и самотестируемости относительно определенного класса неисправностей аппаратных средств.
Управляющая программа называется защищенной, если при возникновении любой ошибки заданного класса на любой рабочей последовательности входных данных, выходные данные вычисляются правильно или являются защитными.
Управляющая программа называется самотестируемой, если для каждой ошибки заданного класса существует хотя бы одна рабочая последовательность входных данных, на которой вычисляется хотя бы одно защитное значение выходных данных.
Таким образом, управляющая программа будет самопроверяемой, если она защищена от ошибок и является самотестируемой.
Защищенность от ошибок исключает неправильные воздействия со стороны программной системы на управляемые объекты. Самотестируемость исключает наличие необнаруживаемых ошибок и их накопление с течением времени. Эти два свойства являются основными требованиями к безопасным системам.
Метод построения самопроверяемых программ базируется на результатах синтеза самопроверяемых конечных автоматов. Для заданного алгоритма управления находят функциональное описание выполняющего этот алгоритм автомата. Кодирование состояний автомата производится равновесным кодом. Данное свойство позволяет контролировать состояние переменных и вычислять защитный вектор (вектор, отличный от кодового слова) в случае их искажения. При этом контроль слова состояния автомата производится программной реализацией самопроверяемой комбинационной схемы [9, 10].
Таким образом, самопроверяемая программа представляет собой последовательность программных модулей, одни из которых выполняют собственно алгоритм управления, а другие – контролируют правильность этого вычисления. Результаты вычислений каждого модуля анализируются в программных контрольных точках.
Достоверность контроля зависит от вероятности того, что искажение результата на выходе модуля обнаруживается с помощью утверждения, которому должно удовлетворять состояние расчета программы в данной контрольной точке. Несовершенство данного метода состоит в том, что если некоторые операторы контроля указывают ошибку, то система (или программист) делает вывод о неисправности программы. Но если все операторы контроля указывают истинность, то нельзя с уверенностью заключить, что программа правильна.
Повысить достоверность контроля можно двумя способами. Первый способ состоит в уменьшении периода контроля tk. Время tk равно времени исполнения программы контролируемого модуля. При уменьшении размеров модуля при tk ® 0 улучшаются показатели надежности программы, но возрастают размеры программ. Второй способ заключается в таком выборе утверждений и в таком их размещении в программе, которые исключают (при заданных ограничениях) ложный вывод о правильности результата вычислений. Примеры реализации самопроверяемых программ, вычисляющих функции алгебры логики и автоматов, приведены в [9, 10].
Достоинством данного метода является возможность сочетания программного контроля с аппаратными средствами контроля, основанными на использовании парафазной логики.
Недостатки – увеличение кода программы; обнаружение только неисправностей, приводящих к искажению кодового вектора слова состояния автомата; охватывает только класс логических алгоритмов управления.
5.3.4 N -версионное программирование
Целью n -версионного программирования является обнаружение оставшихся ошибок проектирования программного обеспечения и отказов аппаратных средств с целью предотвращения опасных отказов.
N -версионное программирование предусматривает n -разовую реализацию данной программы различными способами. Эффективность данного метода определяется прежде всего степенью непохожести программных компонент (диверситетом), сводящих к минимуму появление одинаковой реакции при нарушении работы технических средств или наличии программных ошибок.
Диверситет программ может быть достигнут:
· созданием версий программы разными программистами или коллективами программистов или использованием упрощенной модели программы в качестве другой версии;
· использованием разных методов логической организации программ;
· использованием различных версий языков или разных версий компиляторов с одного и того же языка.
Результаты работы различных версий программ сравниваются. При различии результатов фиксируется ошибка. Сравнение может быть организовано аппаратно или программно. В последнем случае для корректного сравнения результатов работы вариантов программ могут использоваться самопроверяемые программы. Данный подход позволяет контролировать как состояние технических средств, так и наличие программных ошибок. К недостаткам можно отнести значительное увеличение объектного кода программы и затрат на разработку.
Дата публикования: 2014-11-02; Прочитано: 577 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!