ГОСТ Р МЭК 61508-7—2012
Цель. Сохранение верифицируемое™ и тестируемое™ программного обеспечения.
Описание. Использование прерываний должно быть ограничено. Прерывания могут использоваться, если
они упрощают систему. Использование программных средств для обработки прерываний должно быть запрещено
в критических ситуациях для выполняемых функций (например критичность по времени, критичность изменений
данных). Если прерывания используются, то непрерываемые фрагменты должны иметь специфицированное мак
симальное время вычисления с тем. чтобы можно было вычислить максимальное время, в течение которого пре
рывание запрещено. Использование прерываний и их маскирование должны подробно докуменгироеаться.
С.2.6.6 Ограниченное использование указателей
П р и м е ч а н и е — Ссыпка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цель. Исключение проблем, связанных с доступом к данным без предварительной проверки типа и диа
пазона указателя. Обеспечение модульного тестирования и верификации программных средств. Ограничение по
следствия отказов.
Описание. В прикладных программных средствах арифметика указателей может быть использована
на уровне исходного кода только в случае, если тип и диапазон значений указателя данных (для гарантии того,
что ссылка указателя находится внутри корректного адресного пространства) будут проверены перед доступом.
Межпроцессное взаимодействие в прикладных программах не должно осуществляться прямым доступом между
задачами. Обмен данными должен осуществляться через операционную систему.
С.2.6.7 Ограниченное использование рекурсий
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица В.1).
Цель. Исключение ^верифицируемого и нетестируемого использования вызовов подпрограмм.
Описание. Если используется рекурсия, то должен быть определен четкий критерий, который делает глубину
рекурсии предсказуемой.
С.2.7 Структурное программирование
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица А.4).
Цель. Проектирование и реализация программы с использованием практического анализа программы без ее
выполнения. Программа может содержать только абсолютный минимум статистически нетестируемого поведения.
Описание. Для минимизации структурной сложности программы следует применять следующие принципы:
- разделять программу на подходящие, небольшие, минимально связанные программные модули, все взаи
модействия между которыми точно специфицированы;
- составлять поток управления программными модулями с использованием таких структурированных кон
струкций. как последовательное™, итерации и выбор;
- обеспечивать небольшое число возможных путей через программные модули и возможно более простые
отношения между входными и выходными параметрами;
- исключать сложные ветвления и, в частное™, безусловные переходы (goto) при использовании языков
высокого уровня;
- по возможности связывать ограничения цикла и ветвление с входными параметрами;
- исключать использование сложных вычислений в ветвлении и цикле.
Следует использовать свойства языков программирования, которые способствуют указанному выше методу,
предпочитая их другим свойствам, которые (как утверждают) более эффективны, за исключением случаев, когда
эффективность приобретает абсолютный приоритет (например некоторые критичные к безопасности системы).
Литература:
Concepts in Programming Languages. J.C. Mitchell. Cambridge University Press. 2003. ISBN 0521780985.
9780521780988.
A Discipline of Programming. E.W. Dijkstra. Englewood Cliffs NJ. Prentice-Hall. 1976.
C.2.8 Ограничение доступа/инкапсуляция информации
П р и м е ч а н и е — Ссыпка на данный метод/средство приведена в МЭК 61508-3 (таблица В.9).
Цель. Предотвращение непреднамеренного доступа к данным или процедурам и обеспечение тем самым
качественной структуры программных средств.
Описание. Общедоступные для всех программных компонентов данные могут быть случайно или некоррек
тно модифицированы любым из этих компонентов. Любые изменения этих структур данных могут потребовать
подробной проверки программного кода и серьезных исправлений.
Ограничение доступа представляет собой общий метод к минимизации указанных выше проблем. Ключе
вые структуры данных «скрыты», и с ними можно работать только через конкретный набор процедур доступа, это
позволяет модифицировать внутренние структуры данных или добавлять новые процедуры и при этом не ока
зывать влияния на функциональное поведение остальных программных средств. Например, имя директории
могут иметь процедуры доступа «вставить», «удалить» и «найти». Процедуры доступа и структуры внутренних
данных могут быть изменены (например при использовании различных методов просмотра или запоминании
43