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

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

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

Изменения в программных модулях легко выполнить технически, однако трудно сделать это без внесения новых ошибок. Необходимые для гарантий безопасности верификация и сертификация означают новые большие затраты. К тому же, чем длиннее время жизни программы, тем более возрастает опасность вместе с изменениями внести ошибки например, потому, что некоторые разработчики с течением времени перестают быть таковыми, а документация редко является исчерпывающей. Оба примера что с Ariane 5, что с Therac-25 вполне подтверждают эту точку зрения. Между тем, масштабы изменений в ПО могут быть весьма велики. Например, ПО для космических кораблей типа Shuttle[9] за 10 лет сопровождения, начиная с 1980 г., подверглось 14-ти модификациям, приведшим к изменению 152 тысяч слов кода (полный объем ПО 400 тысяч слов).

Необходимость модернизации ПО диктовалась периодическим обновлением аппаратной базы, добавлением функциональности, а также происходило по причине необходимости исправления выявленных дефектов. По оценке независимых экспертов, эти модификации поначалу не сопровождались должными процедурами по поддержке безопасности, однако, случившаяся в 1986 г. авария с кораблем Challenger, которая хотя и произошла по причинам, не связанным с ПО, послужила толчком к пересмотру всей политики NASA в области безопасности, затронув и область ПО.

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

Мысль о том, что использование имеющего длительную историю и уже зарекомендовавшего себя с положительной стороны модуля, равно как и «коробочного» продукта, дает гарантии отсутствия в нем ошибок, весьма естественна с точки зрения «здравого смысла» и способна притупить бдительность. На самом деле повторное использование программных модулей может и понизить безопасность по той простой причине, что данные модули изначально разрабатывались и отлаживались для использования в ином контексте, а спецификация обычно не дает исчерпывающего отчета о всех видах возможного поведения модуля (произошедшая с Ariane 5 авария имеет основной причиной именно повторное использование модуля с некорректной для изменившегося контекста спецификацией).

В случае с Therac-25 большой вклад в произошедшие инциденты внесли модули, изначально разработанные для предыдущей версии системы (Therac-20) во всяком случае, было точно установлено, что именно ошибки в этих повторно-используемых модулях вызвали по крайней мере два смертных случая.

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

Можно привести еще несколько любопытных иллюстраций к проблемам, связанным с повторным использованием. Так, попытка внедрить в Англии программную систему управления воздушным движением, которая до того несколько лет успешно эксплуатировалась в США, оказалась сопряжена с большими трудностями ряд модулей весьма оригинальным образом обращались с информацией о географической долготе: карта Англия уподоблялась листу бумаги, согнутому и сложенному вдоль Гринвичского меридиана, и получалось, что симметрично расположенные относительно этого нулевого меридиана населенные пункты накладывались друг на друга. В Америке, через которую нулевой меридиан не проходит, эти проблемы никак не проявлялись. Аналогично, успешно функционировавшее авиационное ПО, изначально написанное с неявным прицелом на эксплуатацию в северном полушарии, создавало проблемы, когда его стали использовать при полетах по другую сторону экватора. Наконец, ПО, написанное для американских истребителей F-16, явилось причиной нескольких инцидентов, будучи использованным израильской авиацией при полетах над Мертвым морем, которое, как известно, находится ниже уровня моря. Это лишний раз подтверждает мысль, что безопасность ПО нельзя оценивать в отрыве от среды, в контексте которой эксплуатируется вся система.

О «корректном» ПО

Заветная мечта (не столько программистов, сколько потребителей), чтобы в ПО не было ошибок, увы, никак не исполняется. И иллюзий на этот счет уже не осталось. Соответственно, утверждение, что тестирование ПО и/или «доказательство» его корректности позволяют выявить и исправить все ошибки, можно признать тем мифом, в который мало кто верит.

Причина очевидна. Прежде всего, исчерпывающее тестирование сложных программных систем невозможно в принципе: реально проверить только небольшую часть из всего пространства возможных состояний программы. В результате, тестирование может продемонстрировать наличие ошибок, но не может дать гарантию, что их нет. Как ядовито замечают Жезекель и Мейер,[10] собственно, сам запуск Ariane 5 и явился весьма качественно выполненным тестом; правда, не каждый согласится платить полмиллиарда долларов за обнаружение ошибки переполнения.


Рекомендуем почитать
Старинные образы южных славян

В этой книге говорится об Исконной Вере и Стари у Южных Славян. Исследование, которое мы провели, не основывается на песнях, преданиях и обрядах, сохранившихся до сих пор, ни даже на письменных летописях. Главная особенность научного подхода, примененного в этой книге, это его опора на образные представления, которые у Южных Славян, совместно со многими другими народами, возникли со временем.


Обман. Философско-психологический анализ

Это первая и, к сожалению, пока единственная книга в нашей философской литературе, специально посвященная обману – столь повсеместному явлению, пронизывающему все поры нашей личной и общественной жизни. Фундаментальная ценность правды понятна каждому. Но представьте себе, что произошло бы в жизни людей, в политике, экономике и т.п., если бы вдруг все люди перестали обманывать, говорили только правду? Автор ставил своей целью: рассмотреть и по возможности упорядочить чрезвычайно многообразные проявления обмана, осмыслить такие феномены как добродетельный обман, полу-правда, самообман, опираясь на философские, психологические, исторические материалы и произведения художественной литературы.


Искусственный интеллект

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


Происхождение и эволюция человека

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


Технологии против человека

Технологии захватывают мир, и грани между естественным и рукотворным становятся все тоньше. Возможно, через пару десятилетий мы сможем искать информацию в интернете, лишь подумав об этом, – и жить многие сотни лет, искусственно обновляя своё тело. А если так случится – то что будет с человечеством? Что, если технологии избавят нас от необходимости работать, от старения и болезней? Всемирно признанный футуролог Герд Леонгард размышляет, как изменится мир вокруг нас и мы сами. В основу этой книги легло множество фактов и исследований, с помощью которых автор предсказывает будущее человечества.


Капиталистическое отчуждение труда и кризис современной цивилизации

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