Программное обеспечение проверяется очень тщательно по принципу «снизу вверх». Прежде всего проверяется каждая новая строка программы; затем уже верифицируются разделы программы (модули) со специальными функциями. Область рассмотрения постепенно увеличивается, пока все новые изменения не будут включены в состав всей системы и проверены. Этот полный выход считается конечным продуктом, заново выпущенным. Но группа, занимающаяся верификацией, которая является оппонентом по отношению к группе разработчиков программного обеспечения, работает полностью независимо и тестирует программы так, как это делал бы покупатель выпущенного готового продукта. Существует дополнительная верификация при использовании новых программ в имитаторах полета и т. п. Ошибка на этой стадии верификационного тестирования считается очень серьезной, и ее происхождение изучается очень тщательно, дабы в дальнейшем избегать подобных ошибок. Подобные ошибки, не выявленные на предыдущем этапе опытным путем, были обнаружены раз шесть за все время программирования и изменения программ (для новых или измененных полезных нагрузок). Принцип был такой: вся эта верификация не имеет никакого отношения к программе безопасности; это тест на безопасность в некатастрофической верификации (без учета сценария катастрофы). О безопасности полета можно судить исключительно по тому, насколько хорошо программы ведут себя во время контрольных тестов. Если здесь произойдет отказ, то это будет означать наличие серьезной проблемы и не пройдет незамеченным.
То есть, подводя итог: система проверки программного обеспечения – высочайшего качества. Ничто не указывает на наличие того исподволь происходящего процесса самообмана в пренебрежении стандартами, процесса, столь характерного для систем безопасности твердотопливных ускорителей и маршевых двигателей космического шаттла. И вдобавок как раз недавно имели место предложения руководства урезать такие сложные и дорогостоящие испытания за ненадобностью. Подобным предложениям следует противодействовать, потому что они не оценивают едва заметные взаимные влияния первопричины ошибки, вызванной даже незначительными изменениями программы в той или иной ее части. Но в тех случаях, когда вводится новое значение полезной нагрузки или когда это обусловлено новыми требованиями и модификациями, предложенными пользователями, – в программу вносятся необходимые изменения. Любые изменения обходятся дорого, так как они требуют исчерпывающего тестирования. Правильный способ сэкономить – сократить количество требуемых изменений, но никак не качество тестирования каждого из вносимых изменений.
Можно добавить, что эта сложная система тестирования может быть значительно улучшена на новом аппаратном обеспечении и с новыми способами программирования. Любая конкуренция выявила бы все преимущества опережения. Если новое аппаратное обеспечение – это хорошая идея, то НАСА следовало бы обстоятельно рассмотреть этот вопрос.
И наконец, возвращаясь к датчикам и системам бортовой электроники, мы обнаруживаем, что отношение к системному отказу и надежности далеко не столь хорошее, как для компьютерных системам. Например, трудности возникали с определенными датчиками температуры, которые иногда выходят из строя. И все же спустя восемнадцать месяцев использовались те же самые датчики, по-прежнему иногда отказывающие, пока не пришлось отменить запуск шаттла, потому что два датчика сломались одновременно. И даже в следующем полете этот ненадежный датчик был использован снова. И системы регулирования обратной связи, ракетные сопла, используемые для переориентации и управления в полете, все еще как-то ненадежны. Есть значительная избыточность, но есть также и долгая история отказов, ни один из которых не был достаточно серьезным, чтобы оказать существенное влияние на полет. Действие маневровых сопел контролируется датчиками: если сопло не сработает, то компьютеры выберут другое. Но конструкцией не предусмотрены эти отказы, а потому проблему нужно решать.
Выводы
При соблюдении установленного графика полетов часто бывает так, что техническую подготовку шаттла не удается провести достаточно быстро с соблюдением соответствия ожидаемым значениям первоначальных консервативных сертификационных критериев, созданных для того, чтобы гарантировать очень высокую надежность летательного аппарата. В подобных ситуациях критерии безопасности несколько изменяются – и зачастую приводятся, по всей видимости, логичные аргументы, – и делается это для того, чтобы полеты по-прежнему аттестовывались вовремя. Таким образом, шаттл летает в относительно небезопасном состоянии, с вероятностью аварии порядка одного процента. (Более точную цифру назвать сложно.)