При реализации проекта ПМО большие преимущества сулят использование языков высокого уровня соответствующих компиляторов (трансляторов) и обеспечивающих программных средств. К числу этих преимуществ относятся облегчение понимания результатов реализации и потенциальная возможность снижения количества ошибок, допускаемых на ранних этапах разработки.
При изменениях обеспечивающих программных средств необходимы процедуры, позволяющие идентифицировать текущее состояние этих средств и проверить влияние любых изменений на конечную программу. В том случае, когда обеспечивающие программные средства разработаны не изготовителем оборудования, а другим предприятием, могут потребоваться консультации с государственным органом относительно методов установления доверия к этим средствам.
Для проверки результатов программирования получают листинг исходной программы. Проверка осуществляется либо вручную путем сквозного разбора программы с помощью таблицы контрольных проверок ошибок отдельных видов, либо с помощью таблиц истинности, либо автоматически с помощью анализаторов программ. Далее выполняется проверка блоков программы с целью показать, что блоки выполняют заданные функции и не выполняют не заданные операции. Результаты этой проверки сводятся в «План испытаний программно-математического обеспечения». Проверка блоков проводится в двух направлениях: проверка логики и проверка вычислений.
Целью проверки логической части программы является обнаружение и устранение ошибок программирования, связанных с возможностью ненормального хода программы, а именно:
• остановом или зацикливанием;
• принятием неправильных логических решений;
• отсутствием логических операций с определенными комбинациями входных данных;
• отсутствием логических операций с пропуском входных данных.
Целью проверки вычислительной части программы является обнаружение и устранение ошибок в последовательности вычислений, их выполнении, точности, синхронизации; в правильности установки числовых алгоритмов в исходное положение для данных, находящихся в пределах технических условий, выходящих за эти пределы, граничных, особых; для масштабирования при вычислениях с фиксированной запятой и для используемых единиц измерения физических величин, а также в случае нежелательных режимов работы контуров с обратными связями.
После проверки блоков программы выполняется проверка правильности объединения блоков программы с целью показа правильности взаимодействия при выполнении заданных функций функционально связанных блоков программы. Эта проверка вовлекает дополнительные аппаратурные ресурсы, способствующие объединению модулей (периферийные устройства и память).
В ходе испытаний проверяются:
• связи между блоками (связь между блоками данных и управляющей логикой программы; порядок, вид и количество аргументов при обращениях к подпрограммам; отсутствие ложных выходов или нежелательных изменений в базе данных общего пользования);
• временная диаграмма;
• заданная последовательность событий (выставка и повторная выставка общих управляющих флажков; выставка переменных в исходное положение);
• возобновление вычислений при прерываниях;
• возможность нежелательных режимов работы контуров с обратными связями;
• разделение функций, имеющих различные категории критичности.
Для полной проверки в реальном масштабе времени соответствующее программное обеспечение вводится в смежный с аппаратурой или ее макетным образцом и другими внешними устройствами блок. К числу ошибок, выявляемых на стадии проверки совместного функционирования программного и аппаратурного обеспечения, относятся:
• неправильный уровень обработки прерываний;
• неспособность программного модуля удовлетворить требования к времени выполнения вычислений;
• неправильная работа программ, осуществляющих переключение аппаратуры или ее реконфигурацию в случае отказов;
• конфликтные ситуации в каналах передачи данных или при распределении ресурсов;
• отказ встроенного тест-контроля;
• неспособность программного обеспечения справиться с запуском, изменением входных нагрузок, переходными процессами в цепях питания;
• отказ выполнить проверку в контрольной точке;
• ошибки в организации взаимодействия аппаратуры и программно-математического обеспечения;
• ошибки в технических требованиях к такому взаимодействию.
Для проведения проверки совместной работы аппаратуры и программно-математического обеспечения используются:
• моделирование в реальном масштабе времени;
• контроль степени использования центрального процессора;
• анализ отказных режимов работы (сбои, переходные процессы и отказы в аппаратуре);
• введение в аппаратуру отказов;
• введение максимальных расчетных ограничений. Проверка совместного функционирования программного и
аппаратурного обеспечения состоит из:
• проверки в реальном масштабе времени функционирования общей программы, реализованной в реальном вычислителе или с использованием реальных устройств сопряжения;