Однако было заявлено, что критерии не были нарушены и система находилась в безопасности — вопреки требованиям Федерального авиационного агентства, гласящим, что трещин быть не должно. При этом принимались во внимание только полностью вышедшие из строя изломанные лопасти. Идея НАСА была простой: так как для роста и разрыва трещины необходимо довольно много времени, можно гарантировать, что безопасность обеспечивается благодаря предварительному обследованию трещин во всех лопастях. Если трещины обнаружатся, мы заменим такие лопасти, а если нет — у нас в запасе остается достаточно времени для полета. Такой подход переводит проблему трещин из разряда влияющих на безопасность полета просто в проблему технического обслуживания.
Доводы НАСА могут оказаться практически верными. Но можем ли мы быть полностью уверены, что трещины растут достаточно медленно всегда и что ни одного разрыва не произойдет в полете? Три двигателя работают в течение долгого времени с несколькими надтреснутыми, но не разрушенными лопастями (около 3000 секунд, эквивалентных полному уровню мощности).
Однако можно исправить ситуацию с растрескиванием. Лопасти не будут подвергаться растрескиванию, если изменить их форму, предусмотреть дробеструйное упрочение поверхности и покрытие изоляцией, чтобы исключить тепловой удар.
Очень похожая ситуация возникает с сертификацией кислородных насосов высокого давления, но об этом мы не будем говорить подробно.
Резюмируя сказанное, очевидно, что «Руководство по подготовке полетов» и «Правила сертификации» предъявляют заниженные требования по ряду проблем основного двигателя космического челнока, которые очень напоминают ту ситуацию, которую мы наблюдали в правилах для ракет-носителей на твердом топливе.
Бортовая радиоэлектроника
Под «бортовой радиоэлектроникой» понимается компьютерная система на орбитальной ступени, а также датчики ввода и силовые механизмы вывода. Сначала мы ограничимся свойствами компьютера, не касаясь надежности входной информации с датчиков температуры, давления и так далее, или того, точно ли следует компьютерный выход за исполнительными механизмами вывода при работе ракеты, за механическими средствами управления, за дисплеями астронавтов.
Компьютерная система детально разработана и насчитывает 250 000 строк программы. Кроме многих других функций, она ответственна за автоматическое управление подъемом на орбиту и за снижение до входа в слои атмосферы (ниже первой границы Маха), когда нажатием кнопки и принимается решение о приземлении. Можно было бы сделать всю процедуру приземления автоматической (кроме переключения сигнала спуска, который не управляется компьютером, а должен обеспечиваться пилотом в целях безопасности), но автоматическое приземление все-таки не так безопасно, как пилотируемое. В ходе орбитального полета компьютер используется для управления полезной нагрузкой, информация отражается на дисплее астронавта, где происходит обмен информацией с землей. Очевидно, что безопасность полета требует гарантированной точности всей сложной системы компьютерного аппаратного и программного обеспечения.
Опишем вкратце структуру системы. Надежность аппаратных средств обеспечивается четырьмя совершенно независимыми одинаковыми компьютерными системами, где, возможно, каждый датчик тоже имеет несколько копий — обычно четыре, причем каждая копия питает все четыре компьютерные линии связи. Если ввод от датчиков не согласуется, что зависит от обстоятельств, то в качестве эффективного ввода используются некоторые усредненные данные или набор основных данных. Алгоритм, используемый для каждого из четырех компьютеров, совершенно одинаковый, поэтому их вводы (как только каждый видит все копии датчиков) тоже одинаковые. Поэтому на каждом этапе результаты в каждом компьютере должны совпадать. Время от времени они сравниваются, и поскольку они могут работать при слегка различных скоростях, система останавливается и ждет установленное время, пока все показания сравниваются. Если показания одного из компьютеров не совпадают или ответ получен слишком поздно, три других, чьи показания оцениваются как правильные, остаются, а ошибочный полностью выводится из системы. Если дает сбой еще один компьютер, его показания не соответствуют двум другим, он тоже выводится из системы — оставшаяся часть полета прерывается, поступает команда на снижение, управляемая двумя последними компьютерами. Ясно, что это система с резервированием, так как отказ одного компьютера не влияет на полет. В конце концов в качестве дополнительного фактора безопасности можно поставить пятый независимый компьютер, память которого загружается только программами подъема и спуска и который способен контролировать спуск, если происходит нарушение работы более двух из четырех компьютеров основной линии.
В памяти основной линии компьютеров недостаточно места для всех программ подъема, спуска и контроля полезной нагрузки в полете, так что память загружается около четырех раз с кассетной ленты самими астронавтами.
В аппаратных средствах за много лет не произошло никаких изменений — используется аппаратура пятнадцатилетней давности — это сопряжено с колоссальными усилиями по замене и отладке нового программного обеспечения в такой сложной системе. Аппаратные средства устарели; например, установлена память старого типа с ферритовым сердечником. Становится все трудней найти производителей для поставки таких устаревших компьютеров высокого качества и высокой надежности. Современные компьютеры значительно более надежны, работают гораздо быстрее, имеют упрощенную схематику, позволяя выполнять больший объем работы, и не требуют дозагрузки памяти, поскольку их память значительно больше.
Программное обеспечение проверяется очень тщательно методом снизу вверх, «по восходящей». Во-первых, проверяется каждая новая строка программы, затем с помощью специальной функции контролируются разделы программы или модули. Границы раздвигаются шаг за шагом, пока новые изменения не будут вставлены в законченную систему и полностью проверены. Окончательный выход считается вновь выпущенным конечным продуктом. В заключение полностью независимая группа проверки, представляющая критикующую сторону по отношению к группе разработчиков программного обеспечения, тестирует и проверяет программное обеспечение, как будто эта группа является покупателем поставленного продукта. Существует дополнительная проверка с применением новых программ в имитирующем устройстве и так далее. Обнаружение ошибки в ходе проверочного тестирования считается очень серьезным промахом, причина ошибки тщательно изучается, чтобы избежать подобных ошибок в будущем. Такие неожиданные ошибки были обнаружены только шесть раз за все время программирования, программа изменена (для новых или модифицированных нагрузок). Принцип, которому следовали, состоял в том, что проверка — это не аспект программной безопасности, это просто тестирование безопасности, а не контроль катастрофы. О безопасности полета нужно судить исключительно по тому, насколько хорошо программа работает в проверочных тестах. Нарушения здесь приводят к серьезному беспокойству. Из всего вышесказанного ясно, что система проверки компьютерного программного обеспечения должна быть высочайшего качества. Казалось бы, что здесь мы не имеем элементов оглупления и снижения уровня стандартов безопасности, как в ракетах-носителях на твердом топливе или в основном двигателе космического корабля. Но… обратимся к последним предложениям руководства — предлагается сократить сложные и дорогостоящие тесты как необязательные. С этим никак нельзя согласиться, поскольку здесь не принимается во внимание едва уловимое взаимное влияние — источники ошибки, обусловленные даже незначительной заменой одной части программы на другую. Пользователи постоянно нуждаются в изменениях — новые нагрузки, новые требования и модификации. Изменения обходятся дорого, поскольку они требуют всестороннего тестирования. Правильный путь сберечь деньги — сократить количество самих изменений, но никак не качество тестирования для их осуществления.
Можно добавить, что сложную систему можно значительно улучшить с помощью более современного аппаратного обеспечения и методик программирования. Любое соперничество извне будет приносить свои плоды — следует внимательно изучить, хороша ли эта идея для НАСА.
В заключение вернемся к датчикам и силовым механизмам электронной системы — они не связаны так глубоко, как компьютерная система, с авариями и надежностью космического корабля. Например, иногда фиксировались отказы датчиков температуры. Но 18 месяцев спустя на борту использовались все те же датчики, которые по-прежнему ломались, пока запуск не пришлось наконец отложить, так как два из них отказали одновременно. И уже в следующем успешном полете снова использовался все тот же ненадежный датчик. Кроме того, системы контроля реактивного движения, реактивных двигателей, применяемые для переориентации и контроля в полете, представляются пока не совсем надежными. Существует длинная череда поломок, ни одна из которых пока серьезно не повлияла на полет. Работа реактивного двигателя проверялась датчиками, и, если не происходило возгорания, компьютеры выбирали другой двигатель. Но в их конструкции не предполагается поломок — и эту проблему можно решить.