Читаем Мифы о безопасном ПО - уроки знаменитых катастроф полностью

Важно, что основанная на формализмах методология поддержана практической инструментальной средой разработки Atelie B (которая, кстати, не единственная).

Эта среда включает в себя инструменты для статической верификации написанных на B-коде компонентов и для автоматического выполнения доказательств, автоматические трансляторы из B-кода в Си и Ада, повторно-используемые библиотеки B-компонентов, средства графического представления проектов и генерации документации, гипертекстовый навигатор и аниматор, позволяющий в интерактивном режиме моделировать исполнение проекта из спецификации, и, наконец, средства по управлению проектом. При разработке ПО для метро, включавшего около 100 тысяч строк B-кода (что эквивалентно 87 тыс. строк на Ада) пришлось доказать около 28 тысяч лемм. асколько этот подход (и аналогичные ему) будет востребован практикой, покажет будущее.

И все же, такого рода верификация все равно не способна решить все проблемы, в частности, потому, что требуется специфицирование "корректного поведения" программной системы на формальном математическом языке, а это может быть очень непросто. К тому же, источник многих потенциально опасных ошибок может быть не связан непосредственно с вычислительными и алгоритмическими аспектами. апример, в 1992 г. большой резонанс получил произошедший в Англии случай, когда "пошел в разнос" компьютер на станции скорой помощи: причина неожиданно проявившиеся трудности с синхронизацией процессов в условиях большого количества поступивших заявок.

О "надежном" ПО

Теперь о менее очевидном мифе, который звучит так: программно-аппаратные системы обеспечивают заведомо большую надежность по сравнению с теми традиционными (например, электро-механическими) приборами, которые они заменяют.

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

В конце 80-х гг. такая влиятельная в оборонных кругах организация как British Royal Signals and Radar Establishment сделала попытку оценки распространенности дефектов в ПО, написанном для ряда очень ответственных систем. Оказалось, что "до 10% программных модулей и отдельных функций не соответствуют спецификациям в одном или нескольких режимах работы" [7].

Такого рода отклонения были обнаружены даже в ПО, прошедшем полный цикл всестороннего тестирования. Хотя большинство обнаруженных ошибок были признаны слишком незначительными, чтобы вызвать сколь-либо серьезные последствия, все же 5% функций могли оказывать разного рода значимое негативное воздействие на поведение всей системы. Примечательно, что среди прочего авторы исследования особо упомянули выявленную в одном из модулей неназванной системы потенциальную возможность переполнения в целой арифметике, что могло привести к выдаче команды приводу повернуть некую установку не направо (как следовало), а налево. Достаточно предположить, что речь в ПО шла об управлении ориентацией пусковой ракетной установки, чтобы представить возможные последствия.

Коварство программных ошибок и в том, что они могут проявиться далеко не сразу, иногда после сотен тысяч часов нормальной эксплуатации как реакция на вдруг возникшую специфическую комбинацию многочисленных факторов. Так, установка Therac-25 вполне корректно работала в течение нескольких лет до первого переоблучения; и последующие зафиксированные инциденты происходили спорадически в течение 2.5 лет на общем "нормальном" фоне. NASA инвестировала огромные средства и ресурсы в верификацию и сопровождение программного обеспечения для космических кораблей Shuttle. есмотря на это, за 10-летие с 1980 г. времени начала использования ПО выявлено 16 ошибок "первой степени серьезности" (способных привести к "потере корабля и/или экипажа"). Восемь из этих ошибок не были обнаружены своевременно и присутствовали в коде во время полетов, хотя, к счастью, без последствий.

Зато во время полетов были задокументированы проблемы, возникшие от проявившихся 12 значимых ошибок, из которых три относились ко "второй степени серьезности" ("препятствуют выполнению критически важных задач полета"). А ведь NASA имеет, может быть, самую совершенную и дорогостоящую комплексную систему процессов разработки и верификации ПО.

Перейти на страницу:

Похожие книги

100 великих загадок современности
100 великих загадок современности

Новая книга из серии «100 великих» посвящена ряду загадок отечественной и всемирной истории XX и начала XXI века. Порой кажется, что столетие, лишь недавно канувшее в Лету, дает нам поводов для размышлений и материала для исследований больше, чем все прошедшие века и тысячелетия человеческой истории. Две мировые войны, множество локальных военных конфликтов, революции и гражданские войны, заговоры, путчи и перевороты, экономические «чудеса» и тяжелейшие кризисы, выдающиеся достижения культуры и великие научные открытия, взлеты и падения человеческого духа – все это уместилось на относительно небольшом хронологическом отрезке. Читателю предлагаются оригинальные версии, результаты исследований ученых, краеведов, журналистов.

Николай Николаевич Непомнящий

Энциклопедии / Прочая научная литература / Образование и наука
Складки на ткани пространства-времени. Эйнштейн, гравитационные волны и будущее астрономии
Складки на ткани пространства-времени. Эйнштейн, гравитационные волны и будущее астрономии

Гравитационные волны были предсказаны еще Эйнштейном, но обнаружить их удалось совсем недавно. В отдаленной области Вселенной коллапсировали и слились две черные дыры. Проделав путь, превышающий 1 миллиард световых лет, в сентябре 2015 года они достигли Земли. Два гигантских детектора LIGO зарегистрировали мельчайшую дрожь. Момент первой регистрации гравитационных волн признан сегодня научным прорывом века, открывшим ученым новое понимание процессов, лежавших в основе формирования Вселенной. Книга Говерта Шиллинга – захватывающее повествование о том, как ученые всего мира пытались зафиксировать эту неуловимую рябь космоса: десятилетия исследований, перипетии судеб ученых и проектов, провалы и победы. Автор описывает на первый взгляд фантастические технологии, позволяющие обнаружить гравитационные волны, вызванные столкновением черных дыр далеко за пределами нашей Галактики. Доступным языком объясняя такие понятия, как «общая теория относительности», «нейтронные звезды», «взрывы сверхновых», «черные дыры», «темная энергия», «Большой взрыв» и многие другие, Шиллинг постепенно подводит читателя к пониманию явлений, положивших начало эре гравитационно-волновой астрономии, и рассказывает о ближайшем будущем науки, которая только готовится открыть многие тайны Вселенной.

Говерт Шиллинг

Научная литература / Прочая научная литература / Образование и наука