«Люди, судя по всему, просто не понимают, что проблемы компьютерных программ отличаются от большинства других технических проблем. Существуют фундаментальные причины, почему программное обеспечение невозможно сделать достаточно надежным, чтобы можно было не сомневаться в том, что система „звездных войн” действительно сработает», — сказал Дэвид Парнас
, крупнейший авторитет по крупномасштабному программированию5. Д. Парнас был назначен Организацией по осуществлению СОИ членом консультативного комитета «по программированию управления боевыми операциями». Ознакомившись подробнее с тем, что ждет от него Организация по осуществлению СОИ, Д. Парнас отклонил сделанное ему предложение, одновременно представив восемь технических документов, которые объясняли, почему программа не сможет работать так, как требуется.Специалисты по компьютерам знают, что все программы, даже те, которые продаются для коммерческих целей, содержат дефекты, причем многие из них обнаруживаются лишь через годы. Иногда устранение дефектов программы продолжается спустя долгое время после развертывания нового оружия, снабженного компьютерами. Программистов, например, доставляют вертолетами на корабли, и только в процессе модификации и отладки программа становится более или менее надежной. В условиях получасовой войны, которая будет вестись с помощью системы управления СОИ, таких возможностей не будет.
Дефекты в программах — вовсе не свидетельство неаккуратного программирования, а реальный факт, с которым приходится мириться даже лучшим программистам. Кроме того, поскольку программы становятся больше, число дефектов также увеличивается, но оно растет гораздо быстрее, чем размер программы. Дефекты остаются, как правило, даже после того, как программа выброшена в продажу. Такая ситуация получает правовое оформление в том, что большинство производителей средств программирования не только не дают клиентам никаких гарантий, но и специально оговаривают это в письменном виде. Это для бытовых систем. А ведь военные компьютеры должны работать десятки лет и ни разу не сбиться. Очевидно, это нереально.
Типичные бытовые программы, как правило, насчитывают не более нескольких сот команд, дающих указание компьютеру выполнить одну из серии операций по обработке данных или какое-либо управляющее действие. Эти программы сразу после составления содержат десятки, а то и сотни дефектов. Только неоднократное использование, проверка всех возможных комбинаций могут помочь выявить дефекты. Признано, что программа, требуемая для системы «звездных войн»6
, будет состоять минимум из десяти миллионов команд, хотя некоторые специалисты полагают, что их количество приблизится к ста миллионам. Представьте, что надо написать книгу объемом в десять миллионов слов. Если вы неправильно употребите несколько из них, это неприятно, но страшного ничего не случится. В программе же все «слова» должны быть поставлены безошибочно и действовать во взаимосвязи.Можно провести такое сравнение. Челночному космическому кораблю типа «шаттл» требуется около трех миллионов команд, включая компьютеры на Земле, управляющие запуском и следящие за полетом из Хьюстона. Эта программа разрабатывалась в течение многих лет. Она бесконечно испытывалась на Земле. «Она позволила провести много успешных полетов челночного корабля, и тем не менее случаются неудачные запуски из-за дефектов в программе, — говорит Д. Парнас. — Дело в том, что при всех испытаниях ни разу не пришлось столкнуться с тем сочетанием обстоятельств, которое выявило дефект, существовавший все время. Сотрудники Организации по осуществлению СОИ говорят, что они испытывают все программы, прежде чем заложить их. Но что если они не смогут предугадать в точности все обстоятельства, с которыми столкнется программа?.. Ведь нельзя вернуться назад, устранить недостаток и снова начать ядерную войну»7
.