четверг, 8 мая 2008 г.

Десять худших багов в истории компьютеростроения

Проще показать чем объяснить, что такое баг. Берем Excel 2007. В ячейку A1 вводим число 77.1, в B1 – 850. А в С1 пишем "=A1*B1". Калькулятор утверждает: должно получиться 65 535. А Excel 2007 показывает 100 000. Кто прав?
Бывают и более веселые баги. В 2003 году BMW с известным таиландским политиком остановился, двери закрылись, вся электроника выключилась, окна не открывались – ошибка в программе «убила» бортовой компьютер. Несчастного политика охрана достала через ветровое стекло машины.
Случай с политиком курьезный, но проблемы с софтом просто преследуют автомобилистов:

  • 2005: Toyota отозвала 75,000 Prius Hybrids. Сбой программы приводил к внезапной остановке бензинового двигателя.
  • 2004: Pontiac Grand Prix. Программное обеспечение не умело работать с високосными годами. 2004 был именно таким.
  • 2002: BMW отозвала 745i из-за проблем с управляющей программой топливного насоса. Он выключался когда в баке меньше трети топлива.
  • 2001: 52,000 внедорожников Jeep вернулись на завод. Баг отключал приборы.

Особенно в этом списке стоит выделить BMW 745i. Чудом интеграции умной электроники и механики управляет водитель и 70 микропроцессоров. Волшебная ручка – iDrive, настраивает больше 200 параметров - от наклона сидений до музыкальной системы. А в середине живет Windows CE. Не удивляйтесь, когда машина начинает сама тормозить, забыв включить сигнал на задних фонарях.

Техника с 1946 года и первого бага найденного(в прямом смысле этого слова – жучок залез в реле и замкнул его) в Гарварде в компьютере Mark II сделала гигантский прыжок вперед. Инциденты с автомобилями приносят убытки только компаниям, неудобство людям. Но на звание самых худших багов уже претендовать не могут. Бывают единичные инциденты, убытки от который существенно выше. В 1996 ракета Arian 5, стоимостью в 500 миллионов долларов(при общей стоимости программы в 10 миллиардов) взорвалась после старта. Причина - управляющая программа неправильно переводила 64 разрядные числа с плавающей точкой в целые 16 разрядные. Ракета заняла пятое место в рейтинге десяти самых худших багов :

  1. 1946. Жук залез в Mark II. Первый описанный баг. Багрепорт с приколотым к нему виновником торжества до сих пор храниться в музее. Он был первым и его место под номером один.
  2. 1979. Баг в программном обеспечении для телефонии от AT&T сделал невозможными междугородние телефонные переговоры в Греции.
  3. Аэропорт Денвера не работал больше года из-за глюков в автоматической системе управления багажом
  4. Зонд Mariner 1, первенец американской программы изучения Венеры не улетел дальше земной атмосферы. 22 июля 1962 года на 263 секунде полета сошел с траектории и был уничтожен. Сбой в работе навигационного компьютера вызван ошибкой программировании одной из формул, не обратили внимание на значок дефиса.
  5. 1996 год. Аналогичная ситуация при первом запуске Arian 5. Ошибка в переводе чисел с плавающей точкой в целые привела к взрыву.
  6. Июль 1981. На заводе в Японии умный робот пробовал отремонтировать другого робота и убил рабочего.
  7. 1985-1987 -- Therac-25. Аппарат радиационной терапии. Улучшенный вариант уже работающей модели. Считалось, что программное управление защитными заслонками надежнее электромеханического. Но на протяжении двух лет было минимум 6 случаев когда из-за ошибок в программе пациенты получали дозу радиации в сотню раз превосходившую расчетную, трое пациентов погибло.
  8. 2 Июня 1994 разбился британский вертолет Chinook ZD576, погибло 29 человек. Объяснили катастрофу ошибкой пилота. в 2002 было доказано, что автоматическая систему управления двигателями внезапно поменяла режим их работы, что и привело к потере управления.
  9. Июль 1991. Катастрофа рейса KAL 901 корейских авиалиний. Погибло 225 пасажиров. Катастрофа вызвана ошибкой в программном обеспечении в системы измерения высоты.
  10. 1982 год. Самый большой не ядерный взрыв на планете. Взорвался газ на трассибирском газопроводе Мощностью взрыва оценили в три килотонны. По официальной версии вызван ошибками в конструкции газопровода. По не официальной советский союз достал систему управления не совсем лицензионным методом у канадской фирмы. В ней оказался баг (логическая бомба) внедренная ЦРУ. Одноразовое его срабатывание привело к сбою в работе насосов, повышению давления выше предельно допустимых величин. Доказательств нет, но правительство США во главе с Рейганом активно пыталось предотвратить экспорт советского газа в западную Европу.

8 комментариев:

Viktor Yanchak комментирует...

потому что не надо экономить на QA :)

Yuriy Volkov комментирует...

так и вспоминается цитата с баша "ошибка деления на ноль убила человека" ))

vadim комментирует...

Хорошая статья. Мне понравилось
Опять же поднимается вопрос ответственности разработчика - её попросту нет.
О чем я уже неоднократно сокрушался.

bak1an комментирует...

в 10й пункт чтото не особо верится :)

Сергей комментирует...

Я так понимаю, это переводная статья (читал такое). Неплохо бы поставить копирайты.

RredCat комментирует...

Можна ще в підбірку кумедних багів було додати, а-ля бойовий літак, що при перетені екватора автоматично перевартався вверх ніжками - помилка в ПЗ, він положення від північної зірки визначав :))

cencio комментирует...

2Сергей:
это не переводная статья.

Сергей комментирует...

>это не переводная статья
не спорю. эти истории уже вошли в классику жанра, и я мог напутать. извините, если что...