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

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

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

В то время как надежность аппаратуры может быть увеличена за счет ее дублирования, что резко нивелирует опасности от случайных сбоев, эквивалентного способа защиты от систематических программных ошибок не найдено (даже если некоторые вендоры, с подачи оторванных от практики исследователей, рекламируют методики и инструментарий, позволяющие разрабатывать «zero-defect software»). Впрочем, если бы методы производства идеального ПО существовали, то резонно предположить, что следование им потребовало бы нереалистично большого количества ресурсов и времени.

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

Наконец, как ни парадоксально это звучит, даже если бы компьютерные системы действительно были надежнее «традиционных», то это вовсе не обязательно означает, что они обеспечивают большую безопасность. Дело в том, что надежность ПО традиционно определяется степенью его соответствия зафиксированным в спецификациях требованиям; однако, часто бывает так, что ПО делает именно то, что ему и было предписано, и авария Ariane 5 классический тому пример: и злополучное вычисление посторонней для полета величины горизонтального отклонения Инерциальной Платформы, и реакция на него вплоть до выведения из строя всех навигационных систем и бортовых компьютеров все это случилось в полном соответствии с Требованиями, которые были частично унаследованы от Ariane 4 и не отражали новых реальностей.

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

Фактически любая сложная программная система при определенных обстоятельствах способна вести себя неожиданно для разработчиков и/или пользователей. Вероятность такого поведения, особенно если оно может привести к тяжелым последствиям, следует реалистически оценивать и предусматривать специальные средства защиты, в том числе уже не на уровне самого ПО, а на уровне всей системы. Собственно, авария с Ariane 5 продемонстрировала это в полной мере: реагируй система на выброшенное исключение не столь радикально, аварии бы не произошло ведь сам полет проходил нормально, но этот «глобальный контекст» просто не принимался во внимание!

Аналогично, катастрофические последствия при использовании Therac-25 наступили не столько из-за ошибок, допущенных в ПО, сколько вследствие того, что на аппаратном уровне не было предусмотрено защиты против этих ошибок.

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

Эпитафия

Очевидный урок: приводящие к катастрофическим последствиям дефекты в ПО являются результатом пренебрежения хорошо структурированными и стандартизованными инженерными методами и технологиями, которые, впрочем, должны применяться в контексте контроля всех аспектов разработки и функционирования ответственных систем, включая «человеческий фактор». К сожалению, далеко не всем понятно, что разработка программно-аппаратных систем это именно инженерный процесс, требующий продуманной и поставленной технологии и опирающийся на исполнителей высокой квалификации. Об этом не устают напоминать классики (например, Вирт[13]), но слышат ли их?

На наших глазах повышается сложность программно-аппаратных систем, традиционно не относящихся к разряду mission-critical. е за горами время, когда на массовый потребительский рынок начнут поступать программные комплексы, дефекты в которых могут оказаться крайне неприятными для неготовых к принятию риска «простых» граждан. В конце концов, даже обычный утюг способен вызвать пожар и наверное, какой-нибудь программно-управляемый супер-кухонный-комбайн XXI века может (при ПО надлежащего «качества») повести себя неожиданно (а то и опасно) для домохозяйки.

Между тем, сегодня на массовом рынке программных продуктов стандарты качества сознательно занижены (о чем мне уже доводилось писать применительно к производственной культуре Microsoft


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

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


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

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


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

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


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

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


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

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


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

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