Баг

Материал из Энциклопедия фан-клуба Лаборатории Касперского
Перейти к: навигация, поиск

В программировании баг (англ. bug — первичные значения: клоп, любое насекомое, вирус) — жаргонное слово, обычно обозначающее ошибку в программе или системе, которая выдаёт неожиданный или неправильный результат. Большинство багов возникают из-за ошибок, допущенных разработчиками программы в её исходном коде, либо в её дизайне. Также некоторые баги возникают из-за некорректной работы компилятора, вырабатывающего некорректный код. Программу, которая содержит большое число багов и/или баги, серьёзно ограничивающие её работоспособность, называют нестабильной или, на жаргонном языке, «глючной», «глюкнутой», «забагованной», «бажной», «баг(а)нутой» (англ. unstable, buggy).

Термин «баг» обычно употребляется в отношении ошибок, проявляющих себя на стадии работы программы, в отличие, например, от ошибок проектирования или синтаксических ошибок. Отчёт, содержащий информацию о баге также называют отчётом об ошибке или отчётом о проблеме (англ. bug report). Отчёт о критической проблеме (англ. crash), вызывающей аварийное завершение программы, называют крэш-репортом (англ. crash report).

«Баги» локализуются и устраняются в процессе тестирования и отладки программы.

Багом также называют определённый вид маркера на индикаторах.

Содержание

Этимология

Широко распространена легенда, что 9 сентября 1945 года учёные Гарвардского университета, тестировавшие вычислительную машину Mark II Aiken Relay Calculator, нашли мотылька, застрявшего между контактами электромеханического реле, и Грейс Хоппер произнесла этот термин. Извлечённое насекомое было вклеено скотчем в технический дневник, с сопроводительной надписью: «First actual case of bug being found» («первый реальный случай, когда был найден жук»). Считается, что этот забавный факт положил начало использованию слова «debugging» в значении «отладка программы», однако, скорее всего, фраза является каламбуром.

В действительности этот случай произошёл 9 сентября 1947, а не 1945, года. Слово «bug» в современном значении употреблялось задолго до этого персоналом телеграфных и телефонных компаний в отношении неполадок с электрооборудованием и радиотехникой. Во время Второй мировой войны словом «bugs» назывались проблемы с радарной электроникой. В 1878 году Томас Эдисон писал: «Это повторялось снова и снова со всеми моими изобретениями. Первым шагом была интуиция, за ней следовала вспышка, затем возникали препятствия — и они исчезали, потом возникали Баги — так называются маленькие недочеты и трудности — и необходимы месяцы постоянного поиска, исследований и тяжелого труда до успеха или неудачи».

Поиск и исправление ошибок

Для отладки программы (англ. debugging) разработчиками ПО используются специальные программы-отладчики (англ. debugger). Например, в операционной системе Windows можно использовать программу WinDbg из пакета Microsoft Debugging Tools for Windows. Для GNU/Linux и ряда других UNIX-подобных операционных систем существует отладчик GDB (GNU Debugger).

Отчёты об ошибках

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

Например, в операционную систему Windows встроена утилита Dr. Watson, которая по умолчанию отлавливает ошибки в приложениях пользователя и отправляет отчёт на специальный сервер компании Microsoft. Также в качестве примера можно привести аналогичные библиотеки Breakpad.

Разновидности

  • Фича — (англ. feature — особенность, необычное свойство, «фишка») — сленговое обозначение каких-либо необычных признаков какого-либо явления. «Фичей» могут выступать необычные программные возможности, особые функции, что-либо, что привлекает особое внимание. Из IT-сленга термин отчасти перекочевал и в обычную жизнь — необычные возможности техники (например, бытовой), интересный дизайн объектов, нестандартные функции также нередко называют «фичами». Иногда слово «фича» в речи заменяют созвучным «фишка». Блоги и посты, посвященные фичам, называют фичреквестами. Распространено крылатое выражение-неологизм: «это не баг, а фича».
  • Борбаг — легко обнаруживаемый стабильный баг
  • Гейзенбаг — сложно обнаруживаемый, периодически исчезающий и меняющий свойства баг при попытке его обнаружения
  • Мандельбаг — баг с очень сложным, хаотичным, поведением
  • Шрёдинбаг — критическая ошибка, которая не проявляется пока кто-нибудь на неё не наткнется в исходном коде, после чего программа совершенно перестает работать
  • Бозебаг — большое скопление ошибок в определённом участке кода
  • Дзенбаг — не влияющая ни на что ошибка
  • Метабаг — грамматическая ошибка в комментарии
  • Фомбаг — (англ. Phase of the Moon bug) периодический баг, проявляющийся от времени выполнения (например: только по утрам, только 13-го числа)
  • Альфабаг — (англ. Alpha particle bug)(жарг. Полтергейц) баг который произошёл единожды, и анализ кода говорит о том, что его не могло произойти без отказа аппаратных средств (например под влиянием альфа-частиц, или электромагнитного излучения)
  • Фермабаг — сложно доказуемый баг, возникающий, как правило, только на машинах заказчика
  • Фермибаг — количественная характеристика бажности исходного кода, применяется когда плотность достигает одной-двух ошибок на строку кода
  • GIGO — (англ. Garbage In, Garbage Out, «Мусор на входе — мусор на выходе») — принцип в информатике, означающий, что при неверных входящих данных будут получены неверные результаты, даже если сам по себе алгоритм правилен. Это слово в русском языке практически не используется, в отличие от ФИФО (FIFO). Обычно это выражение применяется в отношении компьютерных программ, но также может использоваться для описания человеческих ошибок, вызванных недостатком, неточностью или ложностью исходных данных. Выражение «GIGO» возникло по аналогии с FIFO (англ. First In, First Out)

Самый дорогостоящий баг

Катастрофа Ariane 5, которая произошла 4 июня 1996 года считается одним из самых дорогостоящих компьютерных багов в истории. Первый запуск новой ракеты-носителя Ариан 5, которую разработало Европейское космическое агентство, окончился неудачей — ракета разрушилась на 39-й секунде полёта из-за неверной работы бортового программного обеспечения.

Причина неудачи

В системе управления полётом новой ракеты Ариан 5 использовались фрагменты программного обеспечения ракеты Ариан 4, в частности системы инерциальной навигации. Однако при переносе этой системы для использования на новой ракете, разработчиками не были учтены все особенности. Из-за другой траектории выведения ракеты на 30-й секунде после запуска значение горизонтальной скорости превысило установленные в программе ограничения и вызвало сбой в работе компьютера. Это привело к выдаче ложной команды на отклонение сопел ускорителей, а позже и основного двигателя. В результате на 39-й секунде полёта ракета стала разрушаться под действием аэродинамических сил и самоуничтожилась.

При использовании этой программы на ракете Ариан 4 сбоя не происходило из-за отличий в характеристиках траектории полёта (для Ариан 4 такое поведение было правильным, т.е. не являлось багом)[1].

Примечания

  1. Валерий Аджиев Мифы о безопасном ПО: уроки знаменитых катастроф  (рус.). «Открытые системы». osp.ru (17 июня 1998). Проверено 1 сентября 2016.

Ссылки

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты