Читать «Не все ли равно, что думают другие?» онлайн - страница 117

Ричард Филлипс Фейнман

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

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

Можно добавить, что эта сложная система тестирования может быть значительно улучшена на новом аппаратном обеспечении и с новыми способами программирования. Любая конкуренция выявила бы все преимущества опережения. Если новое аппаратное обеспечение – это хорошая идея, то НАСА следовало бы обстоятельно рассмотреть этот вопрос.