Статус документа
Статус документа

ГОСТ 34332.4-2021 Безопасность функциональная систем, связанных с безопасностью зданий и сооружений. Часть 4. Требования к программному обеспечению (с Поправкой)

Приложение Е
(справочное)

Методы, не допускающие взаимодействия между элементами программного обеспечения на одном компьютере

     

Е.1 Введение

Независимое выполнение элементов ПО, работающих в одной компьютерной системе (состоящей из одного или более процессоров с памятью и другими устройствами, совместно используемыми этими процессорами), можно обеспечить и продемонстрировать с помощью различных методов. В настоящем приложении рассмотрены некоторые методы, не допускающие взаимодействия [между элементами ПО с различной стойкостью к систематическим отказам, между элементами, разработанными для реализации (или для принятия участия в реализации) одной и той же функции безопасности, или между элементами ПО, реализующими функции, связанные с безопасностью, и элементами ПО, реализующими функции, не связанные с безопасностью, на одном компьютере].

Примечание - Термин "независимость выполнения" означает, что элементы в процессе их выполнения не будут оказывать негативного влияния друг на друга, т.е. их выполнение не приведет к появлению опасного отказа. Этот термин используется для того, чтобы отличить другие аспекты независимости, которые могут потребоваться между элементами (в частности, "разнообразие") и которые соответствуют другим требованиям настоящего стандарта.

Е.2 Области поведения

Независимость выполнения должна быть обеспечена и продемонстрирована в областях пространства и времени.

Е.2.1 Пространственная область

Данные, используемые одним элементом ПО, не должны быть изменены другим элементом. В частности, данные не должны быть изменены элементом ПО, не связанным с безопасностью.

Е.2.2 Временная область

Функционирование одного элемента ПО не должно приводить к неправильному функционированию другого элемента, используя слишком большую часть общего времени процессора или блокируя работу другого элемента, запирая совместно используемый ресурс.

Е.3 Анализ причин

Для демонстрации независимости выполнения должна быть проведена для предложенного проекта идентификация всех возможных причин взаимовлияний между умозрительно независимыми (не взаимовлияющими) функционирующими элементами ПО в пространственной и временной областях. Анализ должен быть проведен при нормальных условиях функционирования и в условиях отказа. При анализе должны быть рассмотрены (как минимум):

- применение совместно используемой оперативной памяти;

- применение совместно используемых периферийных устройств;

- совместное использование времени процессора (где два элемента ПО или более выполняются на одном процессоре);

- коммуникации между элементами, необходимые для создания проекта всей системы;

- возможность того, что отказ в одном элементе (такой, как переполнение, или исключительная ситуация деления на ноль, или неправильное вычисление указателя) может вызвать последовательные отказы в других элементах.

Для обеспечения и обоснования независимости выполнения необходимо рассмотреть все эти идентифицированные источники взаимовлияний.

Е.4 Обеспечение пространственной независимости

Методы/средства для обеспечения и демонстрации пространственной независимости включают в себя использование:

- аппаратной защиты памяти между различными элементами ПО, включая элементы, различающиеся стойкостью к систематическим отказам;

- операционной системы, которая для каждого элемента ПО реализует отдельный процесс с его собственным пространством виртуальной памяти, поддерживаемым аппаратной защитой памяти;

- строгого анализа проекта, исходного кода и, возможно, объектного кода для демонстрации отсутствия любых явных или неявных обращений одного элемента ПО к памяти другого элемента, которые могут привести к искажению данных, принадлежащих этому элементу (для случая отсутствия аппаратной защиты памяти);

- программной защиты от недопустимой модификации элементом с более низким уровнем полноты данных элемента ПО с более высоким УПБ.

Передача данных от элемента ПО с более низким УПБ к элементу с более высоким уровнем УПБ не допустима в том случае, если элемент с более высоким УПБ не может проверить достаточную полноту получаемых данных.

Если необходимо передать данные между элементами ПО, которые должны быть выполнены независимо, то следует применять однонаправленные интерфейсы, такие, например, как сообщения или каналы, а не совместно используемая память.

Примечание - В идеальном случае независимые элементы не должны взаимодействовать друг с другом. Однако если проект системы требует, чтобы один элемент ПО передавал данные другому элементу, то проект коммуникационного механизма должен быть выбран таким, чтобы отправляющий и/или получающий сообщение элементы не находились в состоянии отказа, или их функционирование не будет заблокировано в случае прекращения или задержки передачи данных.