"Валерий Аджиев "Мифы о безопасном ПО: уроки знаменитых катастроф" [V]" - читать интересную книгу автора

(весьма маловероятном!) развитии событий взлет мог быть отменен буквально
за несколько секунд до старта, например в промежутке H0-9 сек., когда на
IRS запускался "полетный режим", и H0-5 сек., когда выдавалась команда на
выполнение некоторых операций с ракетным оборудованием. В случае
неожиданной отмены взлета необходимо было быстро вернуться в режим
"обратного отсчета"
(countdown) и при этом не повторять сначала все установочные операции,
в том числе приведение к исходному положения Инерциальной Платформы
(операция, требующая 45 мин. время, за которое можно потерять "окно
запуска").

Было обосновано, что в случае события отмены старта период в 50 сек.
после H0-9 будет достаточным для того, чтобы наземное оборудование смогло
восстановить полный контроль за Инерциальной Платформой без потери
информации за это время Платформа прекратит начавшееся было перемещение, а
соответствующий программный модуль всю информацию о ее состоянии
зафиксирует, что поможет оперативно возвратить ее в исходное положение
(напомним, что все это в случае, когда ракета продолжает находиться на
месте старта). И действительно, однажды, в 1989 г., при старте под номером
33 ракеты Ariane 4, эта особенность была с успехом задействована.

Однако, Ariane 5, в отличие от предыдущей модели, имел уже
принципиально другую дисциплину выполнения предполетных действий настолько
другую, что работа рокового программного модуля после времени старта
вообще не имела смысла. Однако, модуль повторно использовался без
каких-либо модификаций видимо из-за нежелания изменять программный код,
который успешно работает.

В конце концов, было бы странно, если бы тривиальная ошибка
переполнения (даже если она и возникла) была бы столь фатальной, что с ней
невозможно бороться. Почему же программный код (написанный на таком
оснащенном всеми необходимыми для обеспечения надежности средствами языке,
как Ада) оказался незащищеным до такой степени, что наступили столь
катастрофические последствия?

Расследование показало, что в данном программном модуле присутствовало
целых семь переменных, вовлеченных в операции преобразования типов.
Оказалось, что разработчики проводили анализ всех операций, способных
потенциально генерировать исключение, на уязвимость. И это было их вполне
сознательным решением добавить надлежащую защиту к четырем переменным, а
три включая BH, оставить незащищенными. Основанием для такого решения была
уверенность в том, что для этих трех переменных возникновение ситуации
переполнения невозможно в принципе. Уверенность эта была подкреплена
расчетами, показывающими, что ожидаемый диапазон физических полетных
параметров, на основании которых определяются величины упомянутых
переменных, таков, что к нежелательной ситуации привести не может. И это
было верно но для траектории, рассчитанной для модели Ariane 4. А ракета
нового поколения Ariane 5 стартовала по совсем другой траектории, для
которой никаких оценок не выполнялось. Между тем она (вкупе с высоким
начальным ускорением) была такова, что "горизонтальная скорость" превзошла