Рейс Ariane V88 [1] был неудачным первым полетом ракеты Arianespace Ariane 5 , аппарат №. 501, 4 июня 1996 года. На нем находился космический корабль Cluster , группировка из четырех исследовательских спутников Европейского космического агентства .
Запуск закончился неудачей из-за многочисленных ошибок в разработке программного обеспечения: мертвый код , предназначенный только для Ariane 4 , с недостаточной защитой от целочисленного переполнения привел к неправильно обработанному исключению , остановившему всю в остальном незатронутую инерциальную навигационную систему . Это привело к тому, что ракета отклонилась от траектории полета через 37 секунд после запуска, начала распадаться под действием высоких аэродинамических сил и, наконец, самоуничтожилась с помощью автоматической системы прекращения полета . Этот сбой стал известен как одна из самых печально известных и дорогостоящих программных ошибок в истории. [2] В результате неудачи компания потеряла более 370 миллионов долларов США. [3]
Ariane 5 повторно использовал код инерциальной эталонной платформы Ariane 4 , но ранняя часть траектории полета Ariane 5 отличалась от Ariane 4 более высокими значениями горизонтальной скорости. Это привело к тому, что внутреннее значение BH (горизонтальное смещение), рассчитанное в функции выравнивания, оказалось неожиданно высоким. Функция выравнивания работала примерно в течение 40 секунд полета, что было основано на требованиях Ariane 4, но не принесло никакой пользы после старта на Ariane 5. [4] Большие значения BH вызвали преобразование данных из 64 -битное число с плавающей запятой в 16-битное целое число со знаком, которое приведет к переполнению и возникновению аппаратного исключения . [5] Программисты защитили только четыре из семи критических переменных от переполнения, чтобы уложиться в требуемую максимальную рабочую нагрузку в 80% для бортового компьютера инерциальной системы отсчета, и полагались на предположения, которые были верны для Ariane 4, но не «Ариан-5», траектория относительно возможного диапазона значений трех незащищенных переменных. [6] Из-за исключения были остановлены оба модуля инерциальной системы отсчета, хотя они должны были быть резервными . Активный модуль представил бортовому компьютеру диагностическую битовую комбинацию, которая была интерпретирована как полетные данные, в частности, вызывая полное отклонение сопел твердотопливных ускорителей и маршевого двигателя Vulcain . Это привело к углу атаки более 20 градусов, что привело к отрыву ускорителей от основной ступени, срабатыванию системы самоуничтожения пусковой установки и разрушению полета. [4]
В официальном отчете о катастрофе (составленном комиссией по расследованию, возглавляемой Жаком-Луи Лионсом ) отмечалось, что «Основной темой при разработке Ariane 5 является уклон в сторону смягчения случайных отказов . Поставщик инерциальной навигационной системы (SRI) ) только следовал предоставленной ему спецификации, которая предусматривала, что в случае любого обнаруженного исключения процессор должен быть остановлен. Возникшее исключение произошло не из-за случайного сбоя, а из-за ошибки проектирования. Исключение было обнаружено, но ненадлежащим образом обработано. поскольку считалось, что программное обеспечение следует считать правильным до тех пор, пока не будет доказано, что оно неисправно. [...] Хотя сбой произошел из-за систематической ошибки проектирования программного обеспечения, могут быть внедрены механизмы для смягчения этого типа проблем. Есть основания для беспокойства , что следует разрешить или даже потребовать программное исключение, вызывающее остановку процессора при работе с критически важным оборудованием . Действительно, потеря правильной функции программного обеспечения опасна, поскольку одно и то же программное обеспечение работает в обоих устройствах SRI. В случае с «Арианом-501 » это привело к отключению двух еще исправных критических единиц оборудования».
Другие проблемы, выявленные в отчете, касались тестирования: [4]
Другой взгляд на сбой, основанный на системной инженерии , фокусируется на требованиях: [7]
Кластер состоял из четырех цилиндрических космических кораблей со стабилизированным вращением массой 1200 кг (2600 фунтов) , оснащенных солнечными элементами мощностью 224 Вт. Космический корабль должен был лететь в форме тетраэдра и предназначался для проведения исследований магнитосферы Земли . Спутники должны были быть размещены на высокоэллиптических орбитах; 17 200 на 120 600 километров (10 700 на 74 900 миль), наклонена под углом 90 градусов к экватору. [8]
После аварии были построены четыре запасных спутника Cluster II . Они были запущены парами на ракетах «Союз-У» / Фрегат в 2000 году.
Неудачный запуск привлек внимание широкой общественности, политиков и руководителей к высоким рискам, связанным со сложными вычислительными системами , что привело к увеличению поддержки исследований по обеспечению надежности критически важных для безопасности систем . Последующий автоматизированный анализ кода Ariane (написанный на языке Ada ) стал первым примером крупномасштабного статического анализа кода методом абстрактной интерпретации . [9]
Неудача также нанесла ущерб превосходному успеху семейства ракет Европейского космического агентства, установленному высокими показателями успеха модели Ariane 4. Лишь в 2007 году запуски Ariane 5 были признаны столь же надежными, как и запуски предыдущей модели. [10]