ГОСТ Р МЭК 61508-7—2012
С.4.4 Инструментальные средства и трансляторы. Повышение уверенности на основании опыта ис
пользования
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица А.З).
Цель. Исключение любых проблем, обусловленных ошибками транслятора, которые могут появиться во вре
мя разработки, верификации и эксплуатации программного пакета.
Описание. Транслятор используется в тех случаях, где не было доказательств ненадлежащего исполнения
многих предыдущих проектов. Если отсутствует опыт эксплуатации трансляторов или в них обнаружны любые из
вестные серьезные ошибки, то от таких транслятров следует отказаться, если только нет каких-либо других гаран тий
корректной работы транслятора (см. С.4.4.1).
Если в трансляторе выявлены небольшие недостатки, то соответствующие языковые конструкции фиксиру
ются и в проектах, связанных с безопасностью, не применяются.
Другим вариантом исключения проблем, обусловленных ошибками транслятора, является ограничение язы
ка до его общеиспользуемых конструкций.
Настоящие рекомендации основаны на опыте построения многих проектов. Доказано, что недоработанные
трансляторы служат серьезным препятствием в любой программной разработке. Такие трансляторы в общем слу
чае делают невозможной разработку программного обеспечения, связанного с безопасностью.
В настоящее время не существует методов подтверждения корректности всего транслятора или отдельных
его частей.
С.4.4.1 Сравнение исходных программ и исполнимых кодов
Цель. Убедиться в том. что инструменты, используемые для создания образа PROM, не вносят в него ника
ких ошибок.
Описание. Образ PROM обратно преобразуется в совокупность «объектных» модулей. Эти «объектные»
модули обратно преобразуются в файлы ассемблера, которые затем, с помощью соответсвующих методов, срав
ниваются с фактическими исходными файлами, используемыми первоначально для разработки PROM.
Основное преимущество данного метода состоит в том. что инструменты (компиляторы, редакторы связей
(компоновщики) и т. п.], используемые для разработки образа PROM, не требуют подтверждения соответствия.
Этим методом проверяют правильность преобразования исходного файла, используемого для конкретной систе
мы. связанной с безопасностью.
Литература:
Demonstrating Equivalence of Source Code and PROM Contents. D.J. Pavey and L.A. Winsborrow. The Computer
Journal. Vol. 36. No. 7. 1993.
Formal demonstration of equivalence of source code and PROM contents: an industrial example. D.J. Pavey and
L.A. Winsborrow. Mathematics of Dependable Systems. Ed.C. Mitchell and V. Stavridou. Clarendon Press. 1995. ISBN
0-198534-91-4.
Assuring Correctness in a Safety Critical Software Application. L.A. Winsborrow and D.J. Pavey. High Integrity
Systems. Vol. 1. No. 5. pp. 453—459. 1996.
C.4.5 Выбор соответствующего языка программирования
П р и м е ч а н и е — Ссылка на данный метод/средство приведена в МЭК 61508-3 (таблица А.З).
Цель. Обеспечение в максимальной степени требований настоящего стандарта для специального защищаю
щего программирования, строгой типизации, структурного программирования и. возможно, суждений. Выбранный
язык программирования должен обеспечить легко верифицируемый код и простые процедуры разработки,
вери фикации и эксплуатации программ.
Описание. Язык программирования должен быть полностью и однозначно определен. Язык должен быть
ориентирован на пользователя или проблему, а не на процессор или платформу. Широко используемые языки про
граммирования или их подмножества должны быть предпочтительнее языков специального применения.
Языки программирования также должны обеспечивать:
- блочную структуру организации программ;
- проверку времени трансляции:
- проверку во время работы программы типов и границ массивов.
Язык программирования должен включать в себя:
- использование небольших и управляемых программных модулей:
- ограничение доступа к данным в конкретных программных модулях;
- определение поддиапазонов переменных.
- любые другие типы конструкции, ограничивающие ошибки.
Если операции системы безопасности зависят от ограничений реального времени, то язык программирова
ния должен обеспечивать также обработку исключений или прерываний.
Желательно, чтобы язык программирования обеспечивался соответствующим транслятором, подходящими
библиотеками с заранее созданными программными модулями, отладчиком и инструментами как для управления
версиями, так и для разработки.
В настоящее время еще не ясно, будут ли объектно-ориентированные языки программирования предпочти
тельнее других общепринятых языков.
К свойствам, которые усложняют верификацию и поэтому должны быть исключены, относятся:
54