Читаем Мифы о безопасном ПО - уроки знаменитых катастроф полностью

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

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

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

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

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

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

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

Эпитафия

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

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

Перейти на страницу:

Похожие книги

100 великих загадок современности
100 великих загадок современности

Новая книга из серии «100 великих» посвящена ряду загадок отечественной и всемирной истории XX и начала XXI века. Порой кажется, что столетие, лишь недавно канувшее в Лету, дает нам поводов для размышлений и материала для исследований больше, чем все прошедшие века и тысячелетия человеческой истории. Две мировые войны, множество локальных военных конфликтов, революции и гражданские войны, заговоры, путчи и перевороты, экономические «чудеса» и тяжелейшие кризисы, выдающиеся достижения культуры и великие научные открытия, взлеты и падения человеческого духа – все это уместилось на относительно небольшом хронологическом отрезке. Читателю предлагаются оригинальные версии, результаты исследований ученых, краеведов, журналистов.

Николай Николаевич Непомнящий

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

Гравитационные волны были предсказаны еще Эйнштейном, но обнаружить их удалось совсем недавно. В отдаленной области Вселенной коллапсировали и слились две черные дыры. Проделав путь, превышающий 1 миллиард световых лет, в сентябре 2015 года они достигли Земли. Два гигантских детектора LIGO зарегистрировали мельчайшую дрожь. Момент первой регистрации гравитационных волн признан сегодня научным прорывом века, открывшим ученым новое понимание процессов, лежавших в основе формирования Вселенной. Книга Говерта Шиллинга – захватывающее повествование о том, как ученые всего мира пытались зафиксировать эту неуловимую рябь космоса: десятилетия исследований, перипетии судеб ученых и проектов, провалы и победы. Автор описывает на первый взгляд фантастические технологии, позволяющие обнаружить гравитационные волны, вызванные столкновением черных дыр далеко за пределами нашей Галактики. Доступным языком объясняя такие понятия, как «общая теория относительности», «нейтронные звезды», «взрывы сверхновых», «черные дыры», «темная энергия», «Большой взрыв» и многие другие, Шиллинг постепенно подводит читателя к пониманию явлений, положивших начало эре гравитационно-волновой астрономии, и рассказывает о ближайшем будущем науки, которая только готовится открыть многие тайны Вселенной.

Говерт Шиллинг

Научная литература / Прочая научная литература / Образование и наука