Мифы о безопасном ПО: уроки знаменитых катастроф - [10]

Шрифт
Интервал

Что же касается использования математических методов для верификации ПО в плане его соответствия спецификации, то оно (несмотря на оптимизм, особенно явный в 70-х г.) пока не вошло в практику в сколько-нибудь значительном масштабе, хотя и сейчас некоторые влиятельные специалисты продолжают утверждать, что это непременно случится в будущем. Вопрос, реалистично ли ожидать, что для систем масштаба Ariane 5 возможно выполнить полный цикл доказательства правильности всего ПО, остается открытым. Нет сомнений, однако, что для отдельных подсистем такая задача может и должна ставиться уже приводились аргументы о полезности использования формальных методов при разработке механизмов синхронизации в Therac-25.

Формальные методы разработки это тема специального большого разговора. Здесь же в качестве примера формального подхода, имеющего промышленные перспективы, упомянем только «B-Method»,[11] получивший недавно широкое паблисити в связи с созданием ПО для автоматического управления движением на одной из линий парижского метро. Разработчик метода Жан-Раймон Абриал (J.-R. Abrial), до того известный как создатель формального метода Z (вошедшего в учебные программы всех уважающих себя университетов), использовал идеи таких классиков, как Эдсгар Дийкстра (E.W.Dijkstra) и Тони Хоар (C.A.R.Hoare).

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

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

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

О «надежном» ПО

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

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

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

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

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


Рекомендуем почитать
Художественные открытки и их собирание

ОТ АВТОРОВ Почти три четверти века, прошло с тех пор, как появились первые русские художественные открытки и их собиратели. В настоящей брошюре авторы поставили своей задачей дать краткие сведения о появлении и распространении открыток, характеристику различных существующих типов открыток, ознакомить с существующими способами их систематизации, хранения и экспозиции. Большое значение авторы придают своей попытке осветить возможности использования открыток в пропагандистской и агитационно-массовой работе, в качестве наглядного учебного пособия, а также роль открыток в деле воспитания художественного вкуса широких трудящихся масс.


Фон-Визин

«Представляемая мною в 1848 г., на суд читателей, книга начата лет за двадцать пред сим и окончена в 1830 году. В 1835 году, была она процензирована и готовилась к печати, В продолжение столь долгого времени, многие из глав ее напечатаны были в разных журналах и альманахах: в «Литературной Газете» Барона Дельвига, в «Современнике», в «Утренней Заре», и в других литературных сборниках. Самая рукопись читана была многими литераторами. В разных журналах и книгах встречались о ней отзывы частию благосклонные, частию нет…».


Было ли оружие под названием ФАУ-3?

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


Еда как проявление твоей заботы. Исследование этических вопросов употребления в пищу животных

В этой небольшой книге Гэри Фрэнсион и Анна Чарлтон собрали ответы на 40 популярных вопросов и возражений о веганстве. Книга будет полезна всем: и веган(к)ам со стажем, и новичкам, и интересующимся. Если вы недавно интересуетесь веганством, эта книга поможет вам разобраться в базовых вопросах веганской этики, здоровья и отношений. Если вы уже веганите, мы все равно советуем вам ее прочитать, чтобы уверенно говорить о веганстве со своим окружением.


ЭКОsapiens. Простые правила осознанной жизни

Вас беспокоит изменение климата и его глобальное влияние на нашу окружающую среду? Хотите помочь, но не знаете с чего начать? Новое руководство Натали Фи по «зеленой жизни» поможет вам внести небольшие изменения во все ключевые сферы жизни, от еды до выборов, которые будут иметь большое значение для планеты. Полезные и доступные советы для всех – как новичков, так и уже осознанных потребителей. Давайте спасать мир вместе! #HowToSaveTheWorldForFree.


Почва и вино. Путешествие по вкусам и ароматам

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