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

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

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

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

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

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

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

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

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

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

Эпитафия

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

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

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


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

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


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

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


Под сенью учителя

Собирая эту книгу из огромного количества материалов, я ставила перед собой нетривиальную задачу: на жизненном примере взаимоотношений ученого каббалиста Михаэля Лайтмана и его великого учителя Баруха Ашлага показать один из возможных путей в каббалу. Удалось ли мне решить эту задачу, пусть решает читатель От составителя книги Ларисы АртемьевойКнига представлена в сокращенном виде. Это связано с тем,что значительная часть материалов данной книги в расширенном и дополненном виде уже скоро (осень 2006 года) будет представлена в новой книги Михаила Лайтмана, в его редакции и с его комментариями.


Затаенное имя - Тайнопись в 'Слове о полку Игореве'

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


`Тук-тук-тук` - и никого!

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


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

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