Мифы о безопасном ПО: уроки знаменитых катастроф - [3]

Шрифт
Интервал

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

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

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

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

Но почему же не была (пусть в порядке перестраховки) обеспечена защита для всех семи, включая BH, переменных? Оказывается, для компьютера IRS была продекларирована максимальная величина рабочей нагрузки в 80 %, и поэтому разработчики должны были искать пути снижения излишних вычислительных издержек. Вот они и ослабили защиту там, где теоретически нежелательной ситуации возникнуть не могло. Когда же она возникла, то вступил в действие такой механизм обработки исключительной ситуации, который оказался совершенно неадекватным.

Этот механизм предусматривал следующие три основных действия. Прежде всего, информация о возникновении нештатной ситуации должна быть передана по шине на бортовой компьютер OBC; параллельно она вместе со всем контекстом записывалась в перепрограммируемую память EEPROM (которую во время расследования удалось восстановить и прочесть ее содержимое), и наконец, работа процессора IRS должна была аварийно завершиться. Последнее действие и оказалось фатальным именно оно, случившееся в ситуации, которая на самом деле была нормальной (несмотря на сгенерированное из-за незащищенного переполнения программное исключение), и привело к катастрофе.

Осмысление

Произошедшая с Ariane 5 катастрофа имела исключительно большой резонанс и по причине беспрецедентных материальных потерь, и вследствие очень оперативного расследования, характеризовавшегося к тому же открытостью результатов (впервые такая практика публичности была опробована при расследовании причин аварии космического корабля Challenger 1986 г.). Сразу стало очевидным, что данному событию суждено войти в историю не только космонавтики, но и программной инженерии. Поэтому неудивительно, что авария послужила поводом для оживленной дискуссии, в которой приняли участие многие известные специалисты.

Ж.-М. Жезекель (J.-M. Jezequel) и Б. Мейер (B.Meyer)[3] пришли к совершенно однозначному выводу: допущенная (и так и не выявленная) программная ошибка носит, по их мнению, чисто технический характер и коренится в некорректной практике повторного использования ПО. Более точная формулировка: роковую роль сыграло отсутствие точной спецификации повторно-используемого модуля.

Расследование показало, что обнаружить требование, устанавливающее максимальную величину BH (вмещающуюся в 16 битов), можно было с большим трудом: оно затерялось в приложениях к основному спецификационному документу. Мало того, в самом коде на этот счет не было никаких комментариев, не говоря уже о ссылке на документ с обоснованием этого требования.

В качестве панацеи в такого рода ситуациях авторы предложили задействовать принцип «Контрактного Проектирования» (что и неудивительно, ибо его разработчиком как раз и является Мейер


Рекомендуем почитать
Ум первобытного человека

Книга известного американского антрополога, лингвиста и естествоиспытателя Франца Боаса содержит его взгляды на историю развития человеческой культуры и умственных способностей человека. Автор опровергает утверждение о существовании даровитых и менее одаренных рас; он показывает, что успехи и достижения различных рас, равно как и различия в их анатомических признаках, не являются доказательством различия их умственных дарований. Боас рассматривает вопрос об устойчивости человеческих типов, исследует влияние окружающей среды и наследственности на анатомическое строение и склад ума человека.


Капиталистическое отчуждение труда и кризис современной цивилизации

В монографии исследуются эволюция капиталистического отчуждения труда в течение последних ста лет, возникновение новых форм отчуждения, влияние растущего отчуждения на развитие образования, науки, культуры, личности. Исследование основывается на материалах философских, социологических и исторических работ.


Тайны продуктов питания

Пища всегда была нашей естественной и неизбежной потребностью, но отношение к ней менялось с изменением социальных условий. Красноречивым свидетельством этого является тот огромный интерес к разнообразным продуктам питания, к их природе и свойствам, который проявляет сегодня каждый из нас. Только, достигнув высокого уровня жизни и культуры, человек, свободный от проблемы — где и как добыть пищу, имеет возможность выбирать из огромного ассортимента высококачественных продуктов то, что отвечает его вкусу, что полезнее и нужнее ему, и не только выбирать, но и руководить своим питанием, строить его сообразно требованиям науки о питании и запросам собственного организма.


Социально-культурные проекты Юргена Хабермаса

В работе проанализированы малоисследованные в нашей литературе социально-культурные концепции выдающегося немецкого философа, получившие названия «радикализации критического самосознания индивида», «просвещенной общественности», «коммуникативной радициональности», а также «теоретиколингвистическая» и «психоаналитическая» модели. Автором показано, что основной смысл социокультурных концепций Ю. Хабермаса состоит не только в критико-рефлексивном, но и конструктивном отношении к социальной реальности, развивающем просветительские традиции незавершенного проекта модерна.


Вторжение: Взгляд из России. Чехословакия, август 1968

Пражская весна – процесс демократизации общественной и политической жизни в Чехословакии – был с энтузиазмом поддержан большинством населения Чехословацкой социалистической республики. 21 августа этот процесс был прерван вторжением в ЧССР войск пяти стран Варшавского договора – СССР, ГДР, Польши, Румынии и Венгрии. В советских средствах массовой информации вторжение преподносилось как акт «братской помощи» народам Чехословакии, единодушно одобряемый всем советским народом. Чешский журналист Йозеф Паздерка поставил своей целью выяснить, как в действительности воспринимались в СССР события августа 1968-го.


Сандинистская революция в Никарагуа. Предыстория и последствия

Книга посвящена первой успешной вооруженной революции в Латинской Америке после кубинской – Сандинистской революции в Никарагуа, победившей в июле 1979 года.В книге дан краткий очерк истории Никарагуа, подробно описана борьба генерала Аугусто Сандино против американской оккупации в 1927–1933 годах. Анализируется военная и экономическая политика диктатуры клана Сомосы (1936–1979 годы), позволившая ей так долго и эффективно подавлять народное недовольство. Особое внимание уделяется роли США в укреплении режима Сомосы, а также истории Сандинистского фронта национального освобождения (СФНО) – той силы, которая в итоге смогла победоносно завершить революцию.