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

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

). Именно «контракт» в духе языка Eiffel, явным образом (с помощью пред- и пост-условий) устанавливающий для любого программного компонента ограничения на входные и выходные параметры, и мог бы предотратить катастрофическое развитие событий. Был приведен и набросок такого контракта:

>convert (horizontal_bias: INTEGER): INTEGER is

>     require

>          horizontal_bias <= Maximum_bias

>               do

>               …

>          ensure

>     …

>end

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

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

При работе над сложными проектами типа Ariane именно контракты могли бы выступать в качестве опорных ориентиров для групп качества «QA Team», чья задача выполнять систематический мониторинг ПО на предмет соответствия требованиям. Авторы с сожалением заключают, что контрактные механизмы никак не получат должного распространения в современной практике. Более того, положение только усугубляется: например, в Java даже исчезла присутствовавшая в языке Cи скромная по возможностям инструкция «assert». В составной части CORBA языке IDL (Interface Definition Language), предназначенном обеспечить полномасштабное повторное использование компонентов в распределенной среде, отсутствует какой-либо механизм спецификации семантики. То же относится и к ActiveX. Авторы заключают: без полной и точной спецификации, основанной на пред- и пост-условиях и инвариантах, «повторное использование программных компонентов совершенное безрассудство».

Эта точка зрения вызвала многочисленные отклики. Хотя полезность использования контрактных механизмов никто не оспаривал, все же взгляд авторов многим показался упрощенным. Наиболее обстоятельный критический разбор их статьи выполнил сотрудник Locheed Martin Tactical AirCraft Systems, известный специалист в области разработки ответственных систем Кен Гарлингтон (Ken Garlington).[5] Он начал с того, что указал на ошибку в приведенном наброске контракта, где предполагается, что BH преобразуется не из вещественного (как то было в реальности) числа, а из целого.

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

Вывод Гарлингтона вполне отвечает здравому смыслу: проблема носит комплексный характер и обусловлена прежде всего объективной сложностью систем типа Ariane. Соответственно, одним лекарством болезнь, приводящая к появлению ошибок в ПО, вылечена быть не может. Хотя то, что процесс мониторинга спецификаций, кода и документов с обоснованием проектных решений при разработке ПО для Ariane 5, оказался неадекватен, отметила и Комиссия по расследованию аварии. В частности, подчеркнуто, что к процессу контроля не привлекались специалисты из организаций, независимых как от заказчика, так и от подрядчика системы, что нарушило принцип разделения исполнительных и контрольных функций.

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

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

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


Рекомендуем почитать
Скорость мысли. Грандиозное путешествие сквозь мозг за 2,1 секунды

Вы оглядываете офис, замечаете последнее печенье в коробке на соседнем столе и берете его. Лишь две секунды, но в вашем мозгу происходят миллионы процессов. Всему причина – импульсы, именно с помощью них нейроны общаются между собой. За знакомым каждому из нас желанием съесть сладкого кроется захватывающее путешествие импульсов сквозь мозг – по мерцающей галактике нейронов и глубокой тьме коры головного мозга. Марк Хамфрис, нейробиолог и автор этой книги, исследует работу импульсов и пытается разобраться в самых любопытных вопросах науки о мозге.


Пурпурный. Как один человек изобрел цвет, изменивший мир

Это история об Уильяме Перкине, который случайно изобрел пурпурный цвет. И навсегда изменил мир вокруг себя. До 1856 года красители были исключительно натуральными – их получали из насекомых, моллюсков, корней и листьев, а искусственное окрашивание было кропотливым и дорогим. Но в 1856 году все изменилось. Английский химик, работая над лекарством от малярии в своей домашней лаборатории, случайно открыл способ массового производства красителей на фабриках. Этот эксперимент – или даже ошибка – произвел революцию в моде, химии и промышленности. Эта книга – удивительный рассказ о том, как иногда даже самая маленькая вещь может менять и иметь такое продолжительное и важное воздействие. В формате PDF A4 сохранён издательский дизайн.


Политика России в Центрально-Восточной Европе (первая треть ХХ века): геополитический аспект

100-летие спустя после окончания Первой мировой войны и начала становления Версальской системы предыстория и история этих событий требуют дальнейшего исследования. Тема книги актуальна и в связи с территориальными изменениями в Центрально-Восточной Европе (ЦВЕ) в конце ХХ века. Многие сегодняшние проблемы берут начало в геополитической трансформации региона в ходе Первой мировой войны и после ее окончания. Концептуальной новизной работы является попытка проследить возвращение имперской составляющей во внешнюю политику России.


Во власти цифр. Как числа управляют нашей жизнью и вводят в заблуждение

Миром правят числа. Все чаще и чаще решения принимают не люди, а математические модели. В числах измеряется все – от наших успехов в образовании и работе и состояния нашего здоровья до состояния экономики и достижений политики. Но числа не так объективны, как может показаться. Кроме того, мы охотнее верим числам, подтверждающим наше мнение, и легко отбрасываем те результаты, которые идут вразрез с нашими убеждениями… Анализируя примеры обращения с численными данными в сферах здравоохранения, политики, социологии, в научных исследованиях, в коммерции и в других областях и проливая свет на ряд распространенных заблуждений, нидерландский журналист, специалист по числовой грамотности Санне Блау призывает мыслить критически и советует нам быть осмотрительнее, о чем бы ни шла речь – о повседневных цифрах, управляющих нашим благополучием, или о статистике, позволяющей тем, кто ее применяет, достичь огромной власти и влияния. «Числа влияют на то, что мы пьем, что едим, где работаем, сколько зарабатываем, где живем, с кем вступаем в брак, за кого голосуем, как решаем вопрос, брать ли ипотеку, как оплачиваем страховку.


Краткая история насекомых. Шестиногие хозяева планеты

«Любая история, в том числе история развития жизни на Земле, – это замысловатое переплетение причин и следствий. Убери что-то одно, и все остальное изменится до неузнаваемости» – с этих слов и знаменитого примера с бабочкой из рассказа Рэя Брэдбери палеоэнтомолог Александр Храмов начинает свой удивительный рассказ о шестиногих хозяевах планеты. Мы отмахиваемся от мух и комаров, сражаемся с тараканами, обходим стороной муравейники, что уж говорить о вшах! Только не будь вшей, человек остался бы волосатым, как шимпанзе.


Алфавитно-предметный указатель к систематическому каталогу

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