ГОСТ Р МЭК 61508-7—2007
Кроме того, использование подобных программных модулей для многих применений дает практическое
подтверждение их успешной эксплуатации. Это практическое подтверждение увеличивает доверие пользовате
лей к программным модулям.
Один из подходов, в соответствии с которым программному модулю можно доверять при его практическом
использовании, описан в С.2.10.
Литература:
Software Reuse and Reverse Engineering in Practice. P. A. V. Hall (ed.). Chapman & Hall. 1992. ISBN
0-412-39980-6.
DIN V VDE 0801 A1 : Grunds^tze fiir Rechner in Systemen mil Sicherheitsaufgaben (Principles for Computers in
Safety-Related Systems). Anderung 1zu DIN V VDE 0801/01.90. Beuth-Verlag, Berlin. 1994.
C.4.6 Выбор соответствующего языка программирования
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица А.З).
-
Цель: обеспечение в максимальной степени требований настоящего стандарта для специального защища
ющего программирования, строгой типизации, структурного программирования и. возможно, суждений. Выбран
ный язык программирования должен обеспечить легко верифицируемый код и простыв процедуры разработки,
верификации и эксплуатации программ.
Описание: язык программирования должен быть полностью и однозначно определен. Язык должен быть
ориентирован на пользователя или проблему, а не на процессор или платформу. Широко используемые языки
программирования или их подмножества должны быть предпочтительнее языков специального применения [4).
(
111
Языки программирования также должны обеспечивать:
- блоковую структуру организации программ:
- проверку времени трансляции:
- печать времени прогона и проверку ограничения массива.
Язык программирования должен включать в себя:
- использование небольших и управляемых программных модулей;
- ограничение доступа к данным в конкретных программных модулях;
- определение поддиапазонов переменных;
- любые другие типы конструкции, ограничивающие ошибки.
Если операции по безопасности системы зависят от ограничений реального времени, то язык программи
рования должен обеспечивать также обработку исключительных состояний или прерываний.
Желательно, чтобы язык программирования обеспечивался соответствующим транслятором, подходящи
ми библиотеками с заранее созданными программными модулями, отладчиком и инструментами как для управ
ления. так и для разработки.
В настоящее время еще не ясно, будут ли обьектно-ориентированные языки программирования предпоч
тительнее других общепринятых языков.
К свойствам, которые усложняют верификацию и поэтому должны быть исключены, относятся:
- безусловные переходы (за исключением вызовов подпрограмм);
- рекурсии;
- указатели, динамически распределяемые области памяти или любые типы динамических переменных
или объектов;
- обработка прерываний на уровне исходного кода:
- множество входов или выходов в циклах, блоках или подпрограммах;
- инициализация или декларация неявных переменных;
- вариантные записи и эквивалентность;
- параметры процедуры.
Языки программирования низкого уровня, в частности ассемблеры, обладают недостатками, связанными с
их жесткой ориентацией на процессор машины или на определенную платформу.
Желательным свойством языка программирования является то. что его проектирование и использование
должно приводить к созданию программ, выполнение которых предсказуемо. Если используется подходящий
конкретный язык программирования, то в нем должно существовать подмножество, которое гарантирует, что
выполнение программы предсказуемо. Это подмножество не может быть (в общем случае) статически определе но.
несмотря на то. что многие статические ограничения помогают гарантировать предсказуемое выполнение.
Обычно это может потребовать демонстрации того, что индексы массива находятся в установленных пределах и что
числовое переполнение не может возникнуть, и т. п.
Рекомендации по конкретным языкам программирования [21]. [23]. [25] — [28]. [30] — [32] приведены в
таблице С.1.
Литература:
Dependability of Critical Computer Systems 1. F. J. Redmill. Elsevier Applied Science. 1988, ISBN 1-85166-203-0.
49