Язык, транслятор, редактор связей
Приведенные в таблицах D.1-D.4 подробные рекомендации для безопасного применения языка, его транслятора и редактора связей дополняют рекомендации основной части настоящего стандарта. Эти рекомендации также применимы к любым другим вспомогательным программам системы. Рекомендации для трансляторов применимы также к интерпретаторам, кросскомпиляторам и эмуляторам. Аналогичным образом аспекты, применимые к трансляторам и редакторам связей, следует учитывать при выборе и разработке формализованной спецификации на средства проектирования и их использование. Для проекта следует отбирать рекомендованные критерии в соответствии с указанными приоритетами.
Таблица D.1 - Общая информация
Пункт | Рекомендации | Приоритет |
а | Транслятор, редактор связей и загрузчик должны быть тщательно протестированы перед использованием; эта операция рассматривается как очень важная | 1 |
b | Рекомендуется иметь достаточно качественные и надежные данные о трансляторе, редакторе связей и загрузчике | 2 |
с | В тех случаях, если используются вспомогательные системные программы, такие как вспомогательные средства, системы документации и подобные программы, до использования их следует должным образом протестировать | 1 |
d | Синтаксис языка должен быть полностью и однозначно определен | 2 |
е | Следует установить полную и понятную семантику языка | 1 |
f | Использование языков высокого уровня предпочтительнее использования машинно-ориентированных языков | 2 |
g | Распространенность языка и его адекватность проблеме считаются важными аспектами | 2 |
h | Насколько это возможно, следует выполнять рекомендации, приведенные в приложении В | 1 |
i | Читаемость полученного кода более существенна, чем удобство записи во время программирования | 2 |
j | Синтаксическая нотация должна быть единообразна; допускается не более одной нотации для одного и того же понятия | 2 |
k | В языке следует избегать элементов, которые могут вызвать ошибки | 2 |
I | Получаемые программы должны быть легко модифицируемыми | 2 |
m | Входные, выходные и изменяемые параметры должны быть синтаксически различимы | 2 |
n | На всех этапах процесса трансляции следует обеспечить дополнительный выход для анализа | 3 |
Таблица D.2 - Обработка ошибок
Пункт | Рекомендации | Приоритет |
а | Транслятор языка и редактор связей должны обеспечивать регистрацию такого числа ошибок программирования, какое возможно во время трансляции или исполнения в режиме онлайн | 2 |
b | Во время исполнения в режиме онлайн должна существовать возможность обработки исключительных ситуаций | 2 |
с | Язык должен обеспечивать обработку утверждений | 3 |
d | Ошибки, способные вызвать исключительные ситуации во время исполнения, включают в себя: | |
- превышение границ массива | 1 | |
- превышение диапазона величин | 1 | |
- обращение к неинициализированным переменным | 3 | |
- невозможность удовлетворить утверждение | 2 | |
- отбрасывание значащих разрядов числовых величин | 2 | |
- пропуск параметров неправильного типа | 1 | |
е | Если при трансляции или редактировании связей обнаружена ошибка, то о ней следует сообщить, не делая попыток исправить | 2 |
f | Если нет ясности в том, что нарушились какие-то правила, то должно быть выдано предупреждение | 3 |
g | Во время трансляции должны проверяться типы параметров | 3 |
Таблица D.3 - Обработка данных и переменных
Пункт | Рекомендации | Приоритет |
а | Диапазон каждой переменной должен определяться при трансляции | 1 |
b | Точность каждой переменной с плавающей запятой должна определяться во время трансляции | 2 |
с | Не должно быть неявных преобразований типов | |
d | Тип каждой переменной, массива, элемента записи, выражения, функции и параметра должен определяться во время трансляции | 2 |
е | Переменные массивы, параметры и т.д. должны быть явно декларированы, включая их типы | 1 |
f | Следует различать типы переменных, соответствующие входам, выходам, параметрам процедур и подпрограмм | 2 |
g | Должны быть разрешены имена переменных произвольной длины | 2 |
h | Насколько возможно, проверку типов предпочтительнее проводить на этапе трансляции, чем на этапе исполнения | 3 |
i | Во время трансляции должно проверяться, разрешено ли присвоение для любого частного элемента данных | 2 |
Таблица D.4 - Аспекты режима онлайн
Пункт | Рекомендации | Приоритет |
а | Во время оценки выражения не должно допускаться внешнее присваивание для любой переменной, которая доступна в этом выражении | 1 |
b | Время, расходуемое на вычисления, должно быть доступно проверке в режиме "онлайн" | 3 |
с | В режиме "онлайн" должно обеспечиваться фиксирование ошибок (см. таблицу D.2,d) | 1 |