Каким словом называют неполадки и сбои в работе какой либо компьютерной программы
В качестве введения рассмотрим определения понятия «ошибка». Начнем с наиболее общего трактования этого понятия применительно к некоторым техническим системам.
По определению стандарта ISO 9241-13 [1] ошибка это – несоответствие между целями пользователя и ответом системы.
Определение, приведенное в работе [2], предполагает, что ошибка вызвана не сложностью задачи, а сложностью орудия (напр., компьютерной системы), поэтому она является не ошибкой пользователя, а ошибкой разработчиков этого орудия.
Далее рассмотрим более частные определения, непосредственно связанные с компьютерными программами.
Определение понятия «ошибка в программе»
В самом общем случае под ошибкой понимается какой-то сбой в программе на этапе ее выполнения.
Ошибкой (или так называемым багом) можно назвать недокументированные или нежелательные, "побочные" реакции программы на те или иные действия пользователя равно как и при использовании ее одновременно с другим программами или на другой аппаратной платформе.
Майерс дает такое нестрогое определение: «Если программа не делает того, чего пользователь от нее вполне обосновано ожидает, значит налицо программная ошибка» [3].
Автор работы [4] настаивает на субъективном характере программных ошибок: «Не существует ни абсолютного определения ошибок, ни точного критерия наличия их в программе. Можно лишь сказать, насколько программа не справляется со своей задачей, - это исключительно субъективная характеристика».
Канер с соавторами [5] указывают, что определение ошибок как расхождение между программой и ее спецификацией - не верно. Они исходят из того, что даже точно соответствующая спецификации программа содержит ошибки в том случае, если есть ошибки и в самой спецификации.
В книге [6] приводится такое определение программных ошибок: "Говоря простыми словами, программная ошибка - не что иное, как изъян в разработке программного продукта, который вызывает несоответствие ожидаемых результатов выполнения программного продукта и фактически полученных результатов. Дефект может возникнуть на стадии кодирования, на стадии формулирования требований или на стадии проектирования, либо же его причина может крыться в некорректной конфигурации или данных. Дефектом может быть также что-то другое, что не соответствует ожиданиям заказчика и что может быть, а может и не быть определено в спецификации программного продукта".
В программировании баг (англ. 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 году Томас Эдисон писал:
Это повторялось снова и снова со всеми моими изобретениями. Первым шагом была интуиция, за ней следовала вспышка, затем возникали препятствия — и они исчезали, потом возникали Баги — так называются маленькие недочеты и трудности — и необходимы месяцы постоянного поиска, исследований и тяжелого труда до успеха или неудачи.
It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that «Bugs»—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached. [1]
Употребление
Популярное выражение «Это не баг, это фича» следует понимать буквально: это не ошибка, это предусмотренная особенность работы программы. Так как к программному обеспечению применяются схожие законы об авторском праве, что и к текстовым публикациям, то ошибка в программе юридически является всего лишь мнением автора.
Поиск и исправление ошибок
Для отладки программы (англ. debugging) разработчиками ПО используются специальные программы-отладчики (англ. debugger). Например, в операционной системе Windows можно использовать программу WinDbg из пакета Microsoft Debugging Tools for Windows. Для GNU/Linux и ряда других UNIX-подобных операционных систем существует отладчик GDB (GNU Debugger).
Отчёты об ошибках
Например, в операционную систему Windows встроена утилита Dr. Watson, которая по умолчанию отлавливает ошибки в приложениях пользователя и отправляет отчёт на специальный сервер компании Microsoft. Также в качестве примера можно привести аналогичные библиотеки Breakpad [2] и CrashRpt [3] .
Баг (англ. bug — жук) — жаргонное слово, обозначающее ошибку в программе. Термин обычно употребляется в отношении ошибок, проявляющих себя на стадии работы программы, в отличие, например, от ошибок проектирования или синтаксических ошибок. «Баги» локализуются и устраняются в процессе тестирования и отладки программы.
В самом первом переводе bug — это «насекомое» , конкретнее — клоп. Во втором, известном по шпионским фильмам — «жучок» , малоформатное подслушивающее устройство. Есть ещё с десяток оттенков этого великолепного по краткости слова, но «прописку» в русском получило одно: дефект, присущий чему-то техническому или программному изначально. Таким образом, баг — это не то, что ломается по прошествии времени в силу износа, а то, что обнаруживает себя спустя какое-то время. Обнаруживает самым прискорбным образом: внезапно портит игру, прогу, комп, связь, наладку, проверку… всё, что угодно.
в «Неакадемическом словаре языкового уплотнения» — “Bug — баг”
История его такова. Затрудняюсь сказать, где именно это было, хотя история эта реальна и имеет точный «географический» адрес, но где-то в США, ещё в 50-е годы ХХ века, в одном из первых вычислительных центров постоянно случались неполадки в компьютере. Тогдашние компьютеры были собраны на электромагнитных реле и радиолампах, занимали гигантские помещения, снабжались электроэнергией от отдельных подстанций, и их работу обеспечивала целая команда техников, лаборантов и программистов (потому что операционных систем как таковых в те времена не существовало) .
Неполадки были для этих мастодонтов самым обычным делом. И вот команда техников, разыскивая источник очередного сбоя, наткнулась на… личинку моли, той самой, что портит шерстяные вещи. Она забилась между контактами реле, и контакты перестали замыкаться. Техники вынули раздавленное и прилипшее к контактам насекомое, почистили контакты, и сделали соответствующую запись в рабочем журнале дежурства. Будучи людьми не без юмора, в графу «причина неисправности» они записали “Bug found” («найден жучок») , а в графу «предпринятые действия» записали “Debugging performed” (буквально «произведено обезжучивание») . И, хмыкнув, вернулись в главное помещение коротать время до следующей неисправности. Потом появился кто-то из начальства, проверил журнал… и через несколько минут хихикал весь вычислительный центр. Шутка быстро разошлась, поскольку в те времена все, кто имел касательство к компьютерам, являли собой как бы касту жрецов научно-технического прогресса и были друг с другом знакомы, так что словечко вошло в обиход моментально.
Впоследствии техническая сторона дела существенно изменилась, и системы стали на много порядков более надёжными, но на смену живым жучкам пришли программные ошибки, ещё более неуловимые, которые и стали теперь именоваться этим термином. В этом смысле, по существу, баг — это не дефект, это — всегда результат чьей-то недоработки, приводящей к неверной работе или вообще к сбою программы.
Но ещё в 1878 году Томас Эдисон писал:
Это повторялось снова и снова со всеми моими изобретениями. Первым шагом была интуиция, за ней следовала вспышка, затем возникали препятствия — и они исчезали, потом возникали Баги — так называются маленькие недочеты и трудности — и необходимы месяцы постоянного поиска, исследований и тяжелого труда до успеха или неудачи.
Забавные баги
Проблемы в программном обеспечении боевых самолётов США:
F-15 — переворачивался пузом кверху при пересечении экватора.
F-16 — возникало деление на 0 при пересечении уровня моря (над Мёртвым морем)
F-18 — во время перехода на летнее время неправильно рассчитывал расход топлива.
F-22 — программа управления висла при пересечении линии перемены дат.
F-35 — программа управления висла при пересечении гринвического меридиана.
По легенде, 9 сентября 1945 года учёные Гарвардского университета, тестировавшие вычислительную машину Mark II Aiken Relay Calculator, нашли мотылька, застрявшего между контактами электромеханического реле и Грейс Хоппер произнесла этот термин. Извлечённое насекомое было вклеено в технический дневник, с сопроводительной надписью: «First actual case of bug being found» (англ. «первый случай в практике, когда был обнаружен жучок») . Этот забавный факт положил начало использованию слова «баг» в значении «ошибка» .
В действительности этот случай произошёл 9 сентября 1947, а не 1945, года. Слово «bug» в современном значении употреблялось задолго до этого. Так, в течение Второй мировой войны словом «bugs» назывались проблемы с радарной электроникой.
В ы, наверное, слышали это раньше: в программном обеспечении есть «баг», из-за которого что-то работает неправильно. Что такое компьютерный баг и откуда появился этот термин? Мы объясним.
Баг- это непреднамеренная ошибка в компьютерном программном обеспечении
«Компьютерный баг» или «программный баг» — это термин, обозначающий непреднамеренную ошибку программирования или дефект в компьютерном программном обеспечении или оборудовании. Баги возникают из-за человеческой ошибки в конструкции оборудования или где-то в цепочке программных инструментов, используемых для создания компьютерных приложений, прошивок или операционных систем.
Программная ошибка возникает, когда программист либо делает ошибку при написании программного обеспечения, либо пишет код, который работает, но имеет непреднамеренные последствия, которые не были предвидены программистом. Устранение ошибок в программном обеспечении называется «дебаг».
В сегодняшнем мире ошибки в программном обеспечении — серьезное дело. Почти 20 лет назад Национальный институт стандартов и технологий подсчитал, что ошибки в программном обеспечении обходятся экономике США почти в 60 миллиардов долларов в год (около 0,6% ВВП в 2002 году), и с тех пор эта цифра, вероятно, увеличилась. Хотя точно количественно оценить негативные последствия ошибок сложно, легко представить, как неисправное программное обеспечение может повлиять на производительность. Это может даже подвергнуть опасности жизнь людей на транспорте или поставить под угрозу жизненно важную инфраструктуру, такую как электростанции.
Почему мы называем их багами
Термин «баг» появился еще до изобретения компьютеров, и мы точно не знаем, кто изначально придумал термин «баг» для обозначения инженерного дефекта. В письменных источниках историки проследили это до Томаса Эдисона не ранее 1870-х годов.
Эдисон использовал этот термин в своих личных заметках и переписке для обозначения сложной проблемы, которая требовала решения, или инженерного дефекта, который требовал исправления. Он даже пошутил о том, что этот термин имеет отношение к насекомым, написав в письме 1878 года:
«Вы были частично правы, я действительно обнаружил «баг» в своем аппарате, но не в самом телефоне. Он принадлежал к роду callbellum. Похоже, насекомое находит условия для своего существования во всех телефонных аппаратах».
Хотя некоторые считают, что примеры Эдисона означают, что он ввел термин «баг», но вполне возможно, что он произошел от кого-то еще раньше и что он просто популяризировал этот термин среди своих друзей и соратников-инженеров. Оксфордский словарь английского языка цитирует пример 1889 года, связанный с Эдисоном, который описывает ошибку как метафору насекомого, заползающего в элемент оборудования и вызывающего его неисправность, предполагая, что настоящая ошибка, делающая именно это, могло первоначально послужить источником этого термина, похожего на термин «ложка дегтя».
Отбросив на мгновение слово «баг», первым известным человеком в истории, который осознал, что программное обеспечение может работать неправильно из-за ошибок в программировании, была Ада Лавлейс. Она писала об этой проблеме еще в 1843 году в своем комментарии к аналитической машине Чарльза Бэббиджа.
«На это можно ответить, что процесс анализа в равной степени должен быть выполнен для того, чтобы снабдить аналитическую машину необходимыми оперативными данными; и в этом также может заключаться возможный источник ошибки. При условии, что реальный механизм безошибочен в своих процессах, карты могут отдавать ему неправильные приказы».
В этой цитате Лавлейс говорит о том, что настоящий вычислительный механизм не содержит ошибок в том, как он обрабатывает данные, но оговаривает, что данные, передаваемые ему людьми (как в то время запрограммированы на карточках), могут дать машине неправильные инструкции и таким образом дают неправильные результаты.
Бабочка Грейс Хоппер
На протяжении десятилетий книги, журналы и веб-сайты ошибочно сообщали, что термин «баг» был придуман легендарным компьютерным ученым Грейс Хоппер, когда моль влетела в реле компьютера Harvard Mark II и вызвала его неисправность. Как гласит история, она затем записала мотылька в журнал и сделала историческую заметку: «Первый реальный случай обнаружения бага».
Хотя в 1947 году в Mark II действительно залетела моль, она не была источником терминов «баг» или «дебаг», которые предшествовали инциденту. Кроме того, не совсем ясно, действительно ли моль привела к неисправности компьютера, или это была просто забавная находка, пока они исправляли другие дефекты. Хоппер сделала эту историю известной, рассказав ее в широко цитируемом интервью от ноября 1968 года.
Хоппер нашла эту историю забавной, потому что после частых поисков ошибок в компьютере (например, аппаратных и программных дефектов) ее команда наконец нашла настоящего насекомого (bug) внутри компьютера. Отсюда надпись: «Первый реальный случай обнаружения жука».
Интересно отметить, что Хоппер описывает мотылька Mark IV как «забитого до смерти», вероятно, из-за повреждений, вызванных движением электромеханических реле компьютера, что позволяет предположить, что компьютер продолжал функционировать, пока моль была там.
Историки не знают, был ли это дневник Хоппер или кто на самом деле написал запись, но сегодня журнал Harvard Mark II находится в Национальном музее американской истории в Смитсоновском институте в Вашингтоне, округ Колумбия.
Хотя бабочка Mark II (назовем его «Марк») не была первой компьютерной ошибкой, она, тем не менее, остается физическим и культурным символом очень реальной и сложной проблемы, с которой борются все программисты.
Сбои программ — это нарушения нормального режима их функционирования. Проблемы такого рода приводят не только к невозможности работы с программой, но и к риску несанкционированного доступа к данным со стороны посторонних лиц.
Классификация сбоев программ
Сбои программного обеспечения различаются по последствиям, продолжительности, характеру влияния на операционную систему или другие программы. Часто встречается деление по признаку того, что привело к нарушениям:
- Действия пользователя. Многие программы принимают заведомо некорректные команды или настройки, не проверяя их на допустимость. Кроме того, штатные функции операционной системы или приложений могут быть деструктивными при неверном применении.
- Ошибка, допущенная на этапе программирования. Например, для запуска неверного алгоритма иногда достаточно перепутать тире и минус.
- Программный конфликт. Одновременно работающие утилиты или решения способны помешать друг другу: например, каждый из продуктов воспринимает второго как угрозу безопасности и начинает бороться с ним. К сбоям программ могут привести перегрев, статическое электричество, скачки напряжения. Зараженная компьютерная система будет работать с ошибками или вообще выйдет из строя.
Особо выделяют саботаж — например, устроенный одним из сотрудников корпорации при наличии доступа к компьютерной системе. В подобных ситуациях компьютерный сбой часто является имитацией, призванной скрыть противоправную деятельность.
Сбои могут приводить к ряду проблем:
- принудительному завершению приложения,
- переполнению оперативной памяти,
- остановке работы операционной системы,
- конфликтам между устройствами.
Сбои также классифицируются по степени серьезности (легкие неполадки, средней тяжести, критические), по периодичности (единичные и повторяющиеся), по распространенности (типичные или уникальные).
Сбои могут угрожать работе модулей отдельных программ или всей системы в целом, а также сохранности данных. Ситуация ухудшается, когда отдельно взятый компьютер является частью более мощной структуры, управляющей транспортной сетью, контролирующей производственный цикл, регулирующей уровень допустимого облучения и т.д.
Причины сбоев программ
Сбои происходят по причине изъянов, имеющихся в коде ПО. Также источником опасности являются вредоносные программы. Однако большинство неполадок обусловлено человеческим фактором. Игнорирование инструкций, попытки взаимодействовать с обновленной версией как со старой, установка программ на машину с недостаточно мощной конфигурацией, информационная неграмотность сотрудников дорого обходятся предприятиям и организациям.
Опасным является и стремление постоянно экономить. Сокращение штата влечет за собой увеличение нагрузки на сотрудников. Результатом становится снижение качества работы программистов.
Читайте также: