ГОСТ Р МЭК 61508-7—2012
Окончание таблицы
Требования и рекомендации
МЭК 61508-3
Указания стандартов кодирования
Хорошая практика программи
рования (7.4.4.13)
Когда применяются:
- указания по кодированию, гарантирующие, что. в случае необходимости,
выражения с плавающей точкой оцениваются в правильном порядке (напри
мер «a-b+с» не всегда равно «а+с-Ь»).
- в сравнениях с плавающей точкой: использовать только неравенства
(меньше чем. меньше или равный, больше чем. больше или равный) вместо
строгого равенства; указания, относящиеся к условной компиляции и «пре-
процессорной обработке»;
- систематическая проверка условий возврата (успех/отказ).
Документировать и по возможности автоматизировать создание исполняемо
го кода (make-файлы).
Предотвращать побочные эффекты, не очевидные из сигнатур функций.
Когда такие побочные эффекты существуют, в соответствии с указаниями
их необходимо документально оформить.
Заключать в скобки, когда приоритет операторов не абсолютно очевиден.
Искать предположительно невозможные ситуации (например ситуация
«по умолчанию» в «переключателях» языка С).
Использовать «окружения» для критических модулей, в особенности чтобы
проверить преди постусловия и условия возврата.
Соблюдать указания по кодированию в условиях известных ошибок компиля
тора и в пределах, установленных оценкой компилятора
С.2.6.3 Отказ от динамических переменных или динамических объектов
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблицы А.2 и В.1).
Цель. Исключить:
- нежелательные или необнаруживавмые наложения в памяти:
- узкие места ресурсов в процессе (связанном с безопасностью) выполнения программы.
Описание. В случае применения этого методадинамические переменные и динамические обьекты получают
определяемые во время выполнения программы определенные и абсолютные адреса в памяти. Объем (размер)
распределяемой памяти и ее адреса зависят от состояния системы в момент распределения памяти и не могут
быть проверены компилятором или другим автономным инструментом.
Так как число динамических переменных и объектов и существующее свободное пространство памяти
для размещения новых динамических переменных или объектов зависит от состояния системы в момент их раз
мещения. то при размещении или при использовании переменных или объектов возможны сбои. Например, если
объем свободной памяти, распределяемый системой, недостаточен, то содержимое памяти другой переменной
может быть неумышленно стерто. Если динамические переменные или объекты не используются, то появление
этих ошибок исключено.
Необходимы ограничения на использование динамических объектов, если динамическое поведение не мо
жет быть точно предсказано с помощью статического анализа (то есть перед выполнением программы), и поэтому
не гложет быть гарантировано предсказуемое выполнение программы.
С.2.6.4 Проверка создания динамических переменных или динамических объектов при выполнении
программы
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цель. Убедиться в том. что память, в которой должны быть размещены динамические переменные и объ
екты. свободна до ее загрузки, а размещение в ней динамических переменных и объектов во время выполнения
программы не повлияет на уже существующие в ней переменные, данные или коды.
Описание. В случае применения этих средств к динамическим переменным относят те переменные, кото
рые имеют свои конкретные и абсолютные адреса в памяти, устанавливаемые во время выполнения программы
(в этом смысле динамические переменные являются также атрибутами экземпляров объектов).
Аппаратными либо программными средствами память проверяется на то. что она свободна до размещения
в ней динамических переменных или объектов (например для того, чтобы исключить переполнение стека). Если
размещение не разрешается (например если памяти по конкретному адресу недостаточно), должны быть предпри
няты соответствующие действия. После использования динамических переменных или объектов (например после
выхода из подпрограммы) вся используемая ими память должна быть освобождена.
П р и м е ч а н и е — Альтернативным методом является демонстрация статического распределения памяти.
С.2.6.5 Ограниченное использование прерываний
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
42