Радость познания | страница 100



В памяти основной линии компьютеров недостаточно места для всех программ подъема, спуска и контроля полезной нагрузки в полете, так что память загружается около четырех раз с кассетной ленты самими астронавтами.

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

Программное обеспечение проверяется очень тщательно методом снизу вверх, «по восходящей». Во-первых, проверяется каждая новая строка программы, затем с помощью специальной функции контролируются разделы программы или модули. Границы раздвигаются шаг за шагом, пока новые изменения не будут вставлены в законченную систему и полностью проверены. Окончательный выход считается вновь выпущенным конечным продуктом. В заключение полностью независимая группа проверки, представляющая критикующую сторону по отношению к группе разработчиков программного обеспечения, тестирует и проверяет программное обеспечение, как будто эта группа является покупателем поставленного продукта. Существует дополнительная проверка с применением новых программ в имитирующем устройстве и так далее. Обнаружение ошибки в ходе проверочного тестирования считается очень серьезным промахом, причина ошибки тщательно изучается, чтобы избежать подобных ошибок в будущем. Такие неожиданные ошибки были обнаружены только шесть раз за все время программирования, программа изменена (для новых или модифицированных нагрузок). Принцип, которому следовали, состоял в том, что проверка — это не аспект программной безопасности, это просто тестирование безопасности, а не контроль катастрофы. О безопасности полета нужно судить исключительно по тому, насколько хорошо программа работает в проверочных тестах. Нарушения здесь приводят к серьезному беспокойству. Из всего вышесказанного ясно, что система проверки компьютерного программного обеспечения должна быть высочайшего качества. Казалось бы, что здесь мы не имеем элементов оглупления и снижения уровня стандартов безопасности, как в ракетах-носителях на твердом топливе или в основном двигателе космического корабля. Но… обратимся к последним предложениям руководства — предлагается сократить сложные и дорогостоящие тесты как необязательные. С этим никак нельзя согласиться, поскольку здесь не принимается во внимание едва уловимое взаимное влияние — источники ошибки, обусловленные даже незначительной заменой одной части программы на другую. Пользователи постоянно нуждаются в изменениях — новые нагрузки, новые требования и модификации. Изменения обходятся дорого, поскольку они требуют всестороннего тестирования. Правильный путь сберечь деньги — сократить количество самих изменений, но никак не качество тестирования для их осуществления.