ГОСТ Р53195.5—2010
- по возможное™ проверка значений переменных на их достоверность:
- на входе процедур проверка типа, размерности и диапазона значений параметров процедур.
Эти три метода помогают гарантировать, что значения, которые обрабатываются в программах, допустимы
с точки зрения как терминов программных функций, так и физических значений переменных.
Параметры только для считывания и параметры для считывания-записи должны быть разделены, и доступ
к ним должен проверяться. Функции должны рассматривать все параметры как параметры только для считыва
ния. Буквенные константы не должны быть доступны для записи. Это помогает обнаруживать случайные переза
писи или ошибочное использование переменных.
Устойчивые к ошибкам программные средства проектируются в «предположении», что ошибки существуют
в собственной среде либо при использовании выходящих за номиналы или предполагаемых условий, и при этом
ведут себя заранее определенным образом. В таком случае используются следующие методы:
- проверка на достоверность физических значений входных и промежуточных переменных;
- проверка влияния выходных переменных, предпочтительно путем прямого наблюдения соответствующих
изменений состояния системы:
- проверка самими программными средствами своей конфигурации, включая наличие и доступность пред
полагаемых АС. а также завершенность самих программ — это особенно важно для поддержки полноты в про
цессе их эксплуатации.
Некоторые из методов защиты программ, такие как проверки последовательности потока управления,
также справляются с внешними ошибками.
Более подробное описание данного метода/средства приведено в [132—136].
В.2.6Стандарты по проектированию и кодированию
П р и м е ч а н и е — На эти методьг’средства дана ссылка в ГОСТ Р 53195.4 (таблица А.4).
В.2.6.1 Общие положения
Цель: упрощение верификации для поддержания группового объективного подхода и установления стан
дартного метода проектирования.
Описание: в самом начале разработки между участниками создания системы должны быть согласованы
необходимые правила. Они охватывают рассмотренные ниже методы проектирования и разработки (например,
JSP. MASCOT, сети Петри и т.д.). а также соответствующие стандарты кодирования (см. В.2.6.2 настоящего прило
жения).
Эти правила создаются для облегчения разработки, верификации, оценки соответствия и эксплуатации.
При этом должны учитываться доступные инструментальные средства, в частности для аналитиков, и развитие
средств проектирования.
Более подробное описание данного метода/средства приведено в [137].
В.2.6.2 Стандарты кодирования
П р и м е ч а н и е — На эти мегоды/средства дана ссылка в ГОСТ Р 53195.4 (таблица Б.1).
Цель: упрощение верификации разработанного кода.
Описание: до выполнения кодирования должны быть полностью согласованы подробные правила, кото
рых следует придерживаться. К этим правилам обычно относят:
- наличие подробных сведений о модульности, например о виде интерфейса, о размерах программных
модулей;
- использование инкапсуляции, наследования (ограниченного по глубине) и полиморфизма в случае обьек-
тно-ориентированных языков:
- исключение или ограниченное использование некоторых языковых конструкций, например, «goto»,
«equivalence», динамических объектов, динамических данных, структур динамических данных, рекурсии, указате
лей и т.п.;
- ограничение прерываний, допустимых при выполнении критичного для безопасности кода;
- распечатывание программного кода (формирование листинга);
- исключение безусловных переходов (например, «goto») в программах на языках высокого уровня.
Эти правила созданы для облегчения процессов тестирования программных модулей, верификации, оцен
ки соответствия иобслуживания. При этом должны учитываться доступные инструментальные средства, вчастно
сти для аналитиков.
П р и м е ч а н и е — Более подробная информация по этим вопросам приведена в В.2.6.3 — В.2.6.7.
Более подробное описание данного метода/средства приведено в [102. 137—142].
В.2.6.3 Отказ от динамических переменных или динамических объектов
П р и м е ч а н и е — На этот метод^средстводана ссылка в ГОСТ Р 53195.4 (таблица Б.1).
Цель: исключение динамических и переменных объектов во избежание:
- нежелательных или необнаруживаемых наложений в памяти:
- узких мест ресурсов в процессе (связанном с безопасностью) выполнения программы.
46