Поговорим об ошибках. Что такое баг?

Поговорим об ошибках. Что такое баг?

В компьютерной среде широко распространен термин баг, обозначающий ошибку, сбой в работе программы. Хотя английское слово bug, от которого он произошел, означает: клоп, любое мелкое насекомое.

Существует несколько различных легенд, объясняющих трансформацию смысла этого слова и утверждение нового компьютерного термина. Самая популярная из них гласит, что первый баг был в прямом смысле «задокументирован» — подклеен к официальному отчету в 1947 году. Это был мотылек, попавший между контактами электромагнитного реле вычислительной машины в Гарвардском университете, который и был признан причиной сбоев в работе программы.



В настоящее время словом «баг» принято обозначать редко проявляющие себя ошибки, содержащиеся в программном коде. Сложность их обнаружения объясняется тем, что содержащие эти ошибки участки программного кода, отрабатывают только при выполнении множества условий, статистически редко совпадающих при штатной работе программы. Обычно это происходит при непредсказуемых действиях пользователя, вводе некорректных исходных данных или каких-то других ситуациях, отклоняющихся от основной логики работы программы. Явные ошибки исправляются еще на стадии написания и первичной отладки программного кода и багами не являются.



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

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

И только когда в программу будут внесены все изменения по результатам работы бета-тестеров, выпускается окончательный релиз программы. Можно считать, что все ошибки исправлены? Увы, мы на собственном опыте знаем, что это не так!

Далее к процессу поиска ошибок подключаемся мы, пользователи программ. Наверняка всем приходилось при сбое в работе компьютера видеть окошко, предлагающее отправить письмо с содержанием ошибки в службы Microsoft. Это окно выводит штатный дебаггер (а по-русски – отладчик) операционной системы Windows. Если вы согласились с этим предложением, значит, вы тоже приняли участие в многотрудном деле отлавливания багов.

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

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