ГОСТ Р МЭК 61508-7—2007
- нежелательные или необнаруживаемые наложения в памяти;
- узкие места ресурсов в процессе (связанном с безопасностью) выполнения программы.
Описание: в случав применения этого метода динамические переменные и динамические объекты получа
ют определяемые во время выполнения программы определенные и абсолютные адреса в памяти. Объем
(размер) распределяемой памяти и ее адреса зависят от состояния системы в момент распределения памяти и
не могут быть проверены компилятором или другим автономным инструментом.
Так как число динамических переменных и объектов и существующее свободное пространство памяти для
размещения новых динамических переменных или объектов зависит от состояния системы в момент их разме
щения. то при размещении или при использовании переменных или объектов возможны сбои. Например, если
объем свободной памяти, распределяемый системой, недостаточен, то содержимое памяти другой переменной
может быть неумышленно стерто. Если динамические переменные или объекты не используются, то появление
этих ошибок исключено.
С.2.6.4 Проверка создания динамических переменных или динамических объектов при выполнении
программы
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цель: убедиться в том. что память, в которой должны быть размещены динамические переменные иобъек
ты. свободна до ее загрузки, а размещение в ней динамических переменных и объектов во время выполнения
программы не повлияет на уже существующие в ней переменные, данные или коды.
Описание: в случае применения этих средств к динамическим переменным относят те переменные, кото
рые имеют свои конкретные и абсолютные адреса в памяти, устанавливаемые во время выполнения программы
(в этом смысле динамические переменные являются также атрибутами экземпляров объектов).
Аппаратными либо программными средствами память проверяется на то. что она свободна до размеще
ния в ней динамических переменных или объектов (например, для того, чтобы исключить переполнение стека).
Если размещение не разрешается (например, если памяти по конкретному адресу недостаточно), должны быть
предприняты соответствующие действия. После использования динамических переменных или объектов (напри
мер. после выхода из подпрограммы) вся используемая ими память должна быть освобождена.
П р и м е ч а н и е — Альтернативным методом является демонстрация статического распределения
памяти.
С.2.6.5 Ограниченное использование прерываний
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цель: сохранение верифицируемости и тестируемости программного обеспечения.
Описание: использование прерываний должно быть ограничено. Прерывания могут использоваться, если
они упрощают систему. Использование программных средств для обработки прерываний должно быть запреще
но в критических ситуациях для выполняемых функций (например критичность по времени, критичность измене
ний данных). Если прерывания используются, то непрерываемые фрагменты должны иметь специфицирован
ное максимальное время вычисления с тем. чтобы можно было вычислить максимальное время, в течение кото
рого прерывание запрещено. Использование прерываний и их маскирование должны подробно документиро
ваться.
С.2.6.6 Ограниченное использование указателей
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цепь: исключение проблем, связанных с доступом к данным без предварительной проверки типа и диапа
зона указателя. Обеспечение модульного тестирования и верификации программных средств. Ограничение по
следствия отказов.
Описание: в прикладных программных средствах указатель арифметических операций может быть исполь
зован на уровне исходного кода только в случае, если тип и диапазон значений указателя данных (для гарантии
того, что ссылка указателя находится внутри корректного адресного пространства) будут проверены перед досту
пом. Связи между задачами в прикладных программах не должны осуществляться с помощью непосредственных
ссылок между задачами. Обмен данными должен осуществляться через операционную систему.
С.2.6.7 Ограниченное использование рекурсий
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цель: исключение неверифицируемого и нетестируемого использования вызовов подпрограмм.
Описание: если используется рекурсия, тодолжен быть определен четкий критерий, который делает глубину
рекурсии предсказуемой.
С.2.7 Структурное программирование
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица А.4).
40