Мифы о безопасном ПО: уроки знаменитых катастроф - [4]
>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 рассматривалась как черный ящик, заведомо выдающий то, что ожидается. Почему? А зачем тестировать то, что успешно работало в течение многих лет?!
Было обращено внимание и на невыявленную при анализе требований к проекту взаимную противоречивость между необходимостью обеспечения надежности и декларацией о величине максимально допустимой нагрузки на компьютер, что и явилось предпосылкой принятия программистами потенциально опасного компромиссного решения о защите от переполнения не всех семи, а только четырех переменных. Впрочем, как справедливо замечает Б. Мейер, всякий инженерный процесс предполагает принятие компромиссных решений в условиях множества разноречивых требований; вопрос в том, насколько полна информация, на основании которой такие решения принимаются.
Особый разговор о механизме обработки исключительных ситуаций, который, как уже говорилось, жил своей особой жизнью в отрыве от общего контекста всей ситуации с полетом, и в итоге уподобился тому врачу, что без всякого осмотра пристрелил пришедшего к нему с непонятными симптомами больного, дабы тот не мучился. Реализация именно такого механизма явилась следствием распространенной при разработке «ответственных» систем проектной культуры особо и радикально реагировать на возникновение случайных аппаратных сбоев.
В этой книге говорится об Исконной Вере и Стари у Южных Славян. Исследование, которое мы провели, не основывается на песнях, преданиях и обрядах, сохранившихся до сих пор, ни даже на письменных летописях. Главная особенность научного подхода, примененного в этой книге, это его опора на образные представления, которые у Южных Славян, совместно со многими другими народами, возникли со временем.
«Древние люди летали в космос!», «Гагарин не был первым космонавтом!», «Американцы сфальсифицировали высадку на Луну!», «Космонавты встречали инопланетян и ангелов!». Подобные заголовки часто встречаются в прессе. В них не было бы большой беды, если бы из-за порождаемых мифов не формировалось конспирологическое мировоззрение, отрицающее историю космонавтики и достижения науки. Космическую мифологию легко опровергнуть фактами, но чтобы добраться до них, нужны знания и опыт. Книга Антона Первушина, писателя и научного журналиста, поможет сориентироваться в потоках информации и научиться отделять правду от вымысла.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Всю жизнь мы видим сны: впервые они являются нам в утробе матери и не покидают до смертного часа. Но что же такое — сон? Нужен ли человеку этот «бесценный дар Морфея»? Можно ли считать сном гипноз? Почему во сне вспоминается забытое, казалось бы, навсегда? Есть ли связь между сном и памятью? Ответы на эти вопросы вы найдете в работе, посвященной этим еще не до конца изученным проблемам, связанным с деятельностью мозга.* * * Подписная серия «Знак вопроса» издательства «Знание» выпускалась ежемесячно, начиная с 1989 года.
Об этой книге:Тайны любят все. А если в них замешаны знаменитые личности или они связаны с историческими событиями, оставшимися неразгаданными, то рассказы о них становятся особенно захватывающими - и никакое произведение художественной литературы не может сравниться с ними по напряженности интриги.Мы предлагаем уникальную подборку историй, которые откроют перед вами волнующие страницы прошлого, полного борьбы страстей, алчности, измен, безудержных желаний, глупости, безрассудства, безумия и жестоких убийств - всего того, что так часто изменяет ход человеческой истории и оставляет в наследство озадаченным потомкам настоящий лабиринт тайн и загадок, над объяснением которых до сих пор ломают голову ученые.Порой буквально леденящее душу повествование и яркий калейдоскоп картин сразу же погружают вас в самую гущу невероятных - но тем не менее абсолютно достоверных - событий.
Монография посвящена непростой истории становления американо-израильского сотрудничества с момента возникновения Государства Израиль в 1948 г. до 2014 г.Автор рассматривает, как в годы холодной войны израильские лидеры боролись за признание Израиля партнером США, активизируя свою роль проводника американских интересов на Ближнем Востоке. В книге показано, как в конце 1990-х годов развитие израильско-американских отношений приобрело характер стратегического партнерства и Израиль стал наиболее привилегированным внеблоковым союзником США.