Трагикомедия компьютерных сбоев

от автора

Среди разработчиков бытует поговорка «никаких деплоев в пятницу», оправдавшая себя в 2024 году. 19 июля мир замер от крупнейшего краха, когда-либо ранее зафиксированного. Глобальный сбой был вызван обновлением ПО «CrowdStrike Falcon» от гиганта в сфере кибербезопасности CrowdStrike, которое нарушило работу критической инфраструктуры во многих сферах. Поскольку инфраструктура становится всё сложнее, это однозначно не последний катастрофический сбой. Однако он не был и первым. История полна примеров, подтверждающих «цифровую хрупкость».

Распространённые типы ошибок ПО

Ошибки программного обеспечения обычно классифицируются по их приоритету, природе и типам тестирования.

Функциональные ошибки

Связаны с функциональностью определённого компонента программного обеспечения. То есть, любой компонент веб-сайта или приложения, который не функционирует должным образом, является функциональной ошибкой.

Логические ошибки

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

Ошибки рабочего процесса 

Связаны с пользовательской навигацией. Рассмотрим простейший пример веб-сайта. Пользователь заполняет резюме. После внесения информации у него есть три варианта: 

  • сохранить;

  • сохранить и выйти;

  • вернуться на предыдущую страницу.

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

Ошибки интеграции на системном уровне

Возникают, когда два или более блока, написанных разными разработчиками, не взаимодействуют друг с другом. Такие ошибки трудно находить и исправлять, поскольку разработчикам необходимо исследовать большой объём кода. Кроме того, их воспроизведение занимает много времени.

Ошибки безопасности 

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

Ошибки производительности

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

Ошибки совместимости

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

Ошибки удобства использования

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

Ошибки распараллеливания

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


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

Когда 2+2=5? Если у вас Intel inside 

Ошибка Pentium FDIV — это крайне любопытный случай, который говорит о том, что вследствие массовой истерии даже небольшая проблема может разрастись как снежный ком. Ныне покойный профессор математики Томас Найсли обнаружил дефект в процессоре Pentium, который выдавал неверное решение задачи. Профессор сообщил об этом разработчику. В ответ Intel предложила заменить чип любому, кто сможет доказать, что пострадал от дефекта. Хотя фактические последствия ошибки и были расценены как незначительные, когда подробности о ней попали в международные СМИ миллионы людей запросили замену процессоров, что обошлось Intel более чем в 475 миллионов долларов.

Ошибка Pentium FDIV не просто наделала шума в мире технологий — она превратилась в полноценный медиа-цирк. Газеты, телеканалы и даже ночные ток-шоу не могли удержаться от насмешек. Внезапно все стали комиками, отпускающими шутки о компьютерах, которые не могли выполнять элементарные математические действия. Эта история преподала несколько важных уроков. Прежде всего, она показала, что ни один компьютер не является непогрешимым. Ошибки могут быть даже в самых передовых технологиях. Также эта история напомнила о важности тщательного тестирования: если бы Intel обнаружила ошибку заранее, то фиаско можно было бы избежать.

Ещё один урок заключается в том, что силу СМИ нельзя недооценивать. Этот инцидент подчеркнул, что каждая компания должна уметь управлять своим имиджем.

Жук тысячелетия

Раньше большинство компьютерных систем хранили год только в двузначном формате (например, «99» вместо «1999»), поэтому они не могли отличить 2000 от 1900 года. Об этом знали много лет, но настоящую панику и хаос этот «недочёт» вызвал с приближением нового тысячелетия. Однако эта ошибка не создала особых проблем, и её до сих пор помнят как одну из самых преувеличенных, переоценённых ошибок ПО в истории.

Therac-25 

Представьте, что врач сообщил пациенту, что у него рак, скорее всего, неизлечимый. Единственная надежда — лучевая терапия. Станет ли пациент подвергать сомнению процесс облучения и оборудование в целом? Вряд ли. Однако с июня 1995 года по январь 1997 года шесть пациентов получили серьёзные травмы или погибли от «рук» медицинского линейного ускорителя Therac-25.

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

Случай с Therac-25 стал одной из самых известных убийственных программных ошибок в истории.

Интернет — зло! 

31 января 2009 года Google поместил весь интернет в чёрный список: все сайты были помечены как потенциально вредоносные и опасные. Проблема затронула интернет-страницы по всей планете и длилась около 40 минут, прежде чем инженерам удалось её устранить. Сбой был связан с обновлением детектора вредоносного ПО, который призван не давать интернет-пользователям посещать подозрительные сайты.

Невидимая мышь

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

Выключи свет — вечеринка окончена! 

Система освещения одной из школ Массачусетса вышла из строя после атаки вредоносного ПО перед началом учебного 2021 года. Разработана система была таким образом, что если что-то пойдёт не так, то она автоматически перейдёт в режим «выключено» — это особенно важно в чрезвычайных ситуациях, например, при пожаре. Однако высокотехнологичная система освещения не имела ручных переключателей, а программное обеспечение было интегрировано в другие школьные системы и не могло быть легко заменено. Проблему смогли решить лишь через 18 месяцев.

Лопаточный хакер 

Иногда проблемы с ПО начинаются в физическом мире. К примеру, в 2011 году интернет в Армению «доставлялся» силами единственного оптоволоконного кабеля, проходящего через Грузию. В этом же году взмах одной лопаты решил судьбу этого кабеля и отключил всех пользователей в Армении от сети. По словам одной 75-летней грузинской бабушки, она просто искала медь, чтобы сдать её в качестве лома. Инцидент вызвал продолжительные дебаты на глобальных интернет-форумах. Хотя ущерб был значительным, многие призывали проявить снисходительность из-за возраста. 

ИИ подвёл…

В одном из самых громких дел юристы компании Levidow & Oberman обратились к ChatGPT за помощью в составлении юридических актов, связанных с иском их клиента к авиакомпании из-за телесных повреждений. К сожалению для них и их клиента, ChatGPT создал чрезвычайно правдоподобный документ, который содержал ряд фактологических ошибок. Мораль же сей басни такова: ИИ — это такой же ИТ-инструмент, как и любой другой, и его не следует использовать, если нет понимания, как он работает. И уж тем более нужно проверять результаты его работы. 

Заключительные мысли 

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


ссылка на оригинал статьи https://habr.com/ru/articles/872504/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *