Статья про разработчиков ПО для шаттлов NASA:
- Правильная вещь появляется за 31 секунду, до времени Х.
В то время, когда 120-ти тонный шаттл стоит, окруженный почти 4-мя миллионами фунтов ракетного топлива, источая ядовитые пары, с явным желанием бросить вызов земной гравитации; его бортовые компьютеры получают команду. Четыре идентичных компьютера, работающие под управлением идентичного ПО, собирают информацию из тысяч датчиков, принимая сотни миллисекундных решений, утверждая каждое решение, сверяясь друг с другом 250 раз в секунду. Пятый компьютер, с другим ПО, готов взять управление на себя в случае сбоя остальных четырех.
В момент времени -6.6 секунды, если давления, насосы и температуры в норме, компьютеры дают приказ зажечь главные двигатели шаттла – каждый из трех двигателей вспыхивает ровно через 160 миллисекунд, тонны сверхохлажденного жидкого топлива попадают в камеры сгорания, корабль дрожит на своей пусковой площадке, удерживаемый на земле только креплениями. Когда главные двигатели достигают силы тяги в миллион фунтов, их выхлопы превращаются в голубые бриллианты пламени.
Тогда и только тогда, в момент времени -0 секунд, если компьютеры убедились, что двигатели работают правильно, они дают приказ поджечь массивные ракетные ускорители. Менее чем за секунду, они развивают силу тяги в 6.6 миллионов фунтов. И именно в этот момент, компьютер отдает приказ взрывчатым креплениям взорваться, и корабль весом 4.5 миллионов фунтов величественно поднимается над стартовой площадкой.
Это удивительное проявление доблести оборудования. Но ни один человек не нажимает на кнопки, чтобы это произошло, ни один астронавт не манипулирует джойстиком, чтобы вывести шаттл на орбиту.
...
Спецификации для всего программного обеспечения в его текущем состоянии занимают 30 томов или около 40.000 страниц. (при том, что размер кода - 450 000 строк)
...
Есть программное обеспечение. Но кроме этого, существуют еще базы данных, две громадных базы данных, энциклопедичных по полноте хранимой информации.
Одна из них – это история, собственно, кода, где каждая строчка снабжена комментарием, говорящим о каждом случае, когда она была изменена, почему она была изменена, когда это произошло, с какой целью это было сделано, какие спецификации описывают это изменение. Все что происходит с программой записывается в этой сводной истории. Родословная каждой строчки кода, для чего и создавалась эта база данных, мгновенно доступна каждому.
Другая база данных – это база данных ошибок, является своего рода памятником тому пути, которым прошла бортовая группа шаттла в своей работе. Здесь содержатся все ошибки, которые были когда-либо допущены при написании или при работе с ПО, на протяжении почти 20 лет. Для каждой ошибки в базе данных хранятся записи о том, когда эта ошибка была обнаружена; какой набор команд привел к ней; кто обнаружил ошибку; на какой стадии ошибка была обнаружена – при тестировании, при тренировке или в полете. Здесь отслеживается как ошибка проявилась в программе; как ошибке удалось просочиться сквозь фильтры на каждой стадии поиска ошибок – почему она не была обнаружена при проектировании? при ревизиях кода? при тестировании? В конечном итоге база данных содержит информацию о том, как ошибка была исправлена и не могли ли подобные ошибки просочиться сквозь эти дыры.