ГОСТРМЭК 62279—2016
Параметры «только для чтения» и параметры «для чтения-записи» должны быть разделены, и доступ к
ним должен проверяться. Программные функции должны рассматривать все параметры в качестве параметров
«только для чтения». Символьные константы не должны быть доступны для записи. Это помогает обнаруживать
случайные перезаписи или ошибочное использование переменных.
Устойчивое к ошибкам программное обеспечение проектируются в «предположении», что ошибки суще
ствуют в его собственном окружении, либо используются выходящие за номиналы значения или предполагаемые
условия, но программное обеспечение ведет себя заранее определенным способом. В этом случае применяют
следующие проверки:
- проверку на достоверность физических значений входных и промежуточных переменных;
- проверку влияния выходных переменных, предпочтительно путем прямого наблюдения соответствующих
изменений состояния системы;
- проверку самим программным обеспечением своей конфигурации, включая наличие и доступность пред
полагаемых аппаратных средств, а также завершенность самого программного обеспечения, что особенно важно
для поддержки полноты в процессе его эксплуатации.
Некоторые из методов защиты программ, например проверки последовательности потока управления, также
справляются и с внешними отказами.
D.15 Стандарты кодирования и руководство по стилю
Цель. Гарантировать стандартную структуру проектной документации и произведенного кода, осуществлять
непротиворечивое программирование и выполнять стандартный метод разработки, который избегает ошибок.
Описание. Стандарты кодирования — это правила и ограничения на данный язык программирования, при
менение которых помогает избежать возможные сбои, которые могут быть сформированы при использовании этого
языка.
Содержание стандарта кодирования может включать:
- обоснование языка;
- область применения и базовый стандарт, если доступен.
П р и м е ч ан и е — Для предметно-ориентированных языков базовые стандарты могут быть недоступными:
- процедура по изменению стандарта кодирования;
- анализ возможных сбоев и рекомендуемая их обработка;
- ограничения, чтобы избежать сбои;
- мобильность.
Инструкции по стилю рассматривают такие вопросы, как форматирование и соглашения о присвоении имен
и хотя это может быть очень субъективно, больше, чем что-либо, стиль влияет на удобочитаемость создаваемого
кода. Установление общего и согласованного стиля для проекта упростит понимание и сопровождение кода, раз
работанного более чем одним программистом, и упростит сотрудничество нескольких специалистов, участвующих
в разработке одной и той же программы.
0.16 Многовариантное программирование
Цель. Обнаружение и наложение маски при выполнении программ на не выявленные на этапах проектиро
вания ошибки программных средств для предотвращения критичных для безопасности отказов системы и продол
жения ее правильной работы.
Описание. При многовариантном программировании заданная программная спецификация проектируется и
реализуется различными способами
N
раз. Одни и те же входные значения поступают в
N
версий и сравниваются
результаты, выданные
N
версиями. Если результат определяется как правильный, он поступает на выходы ком
пьютера.
N
версий могут выполняться параллельно на различных компьютерах, либо все версии могут выполняться
на одном компьютере с последующим сравнением полученных результатов на том же компьютере. Для этих
N
результатов могут быть использованы различные стратегии сравнения, и в зависимости от заданных требований
применяются следующие стратегии:
- если система находится в безопасном состоянии, можно потребовать полного соответствия (все
N
резуль
татов одинаковы); в противном случае используется выходное значение, которое заставит систему перейти в без
опасное состояние. Для простых пошаговых систем сравнение может обеспечить безопасность. В этом случае
безопасное действие гложет быть разбито по шагам, если какая-либо версия реализует пошаговые операции. Этот
подход обычно используется только для двух версий
(N
=
2):
- для систем, находящихся в опасном состоянии, могут быть реализованы стратегии мажоритарного сравне
ния. В случаях, если отсутствует общее соответствие, могут использоваться вероятностные подходы с тем. чтобы
максимизировать вероятность выбора правильного значения, например принять среднее значение, временно за
фиксировать выходы, лежа не будет достигнуто согласив и т. п.
Данный метод не устраняетошибок, не выявленных при проектировании программ, однако он является сред
ством для обнаружения и маскирования ошибок, прежде чем они смогут повлиять на безопасность.
74