encyklopedia.run.place

Bug (błąd oprogramowania)

Bug – potoczne określenie niepożądanego zachowania programu komputerowego lub systemu elektronicznego, które wynika z błędów w kodzie źródłowym, projekcie sprzętu lub nieprawidłowej konfiguracji. Termin ten jest powszechnie używany w dziedzinie informatyki, programowania oraz systemów operacyjnych.

Etymologia

Słowo „bug” pochodzi z języka angielskiego i pierwotnie oznaczało owada. Pierwsze zastosowanie w kontekście technicznym datuje się na początek XX wieku, kiedy to inżynierowie opisując „zawieszanie się” maszyn używali tego określenia jako metafory. Najsłynniejszy anegdotyczny przypadek związany z owadem został udokumentowany w 1969 roku, kiedy to Grace Hopper i jej zespół odnaleźli w komputerze Harvard Mark II prawdziwego chrząszcza, który spowodował zwarcie i przerwanie działania maszyny.

Historia

Wczesne komputery elektroniczne, takie jak ENIAC czy UNIVAC, były podatne na różnego rodzaju awarie, jednak termin „bug” zyskał popularność dopiero wraz z rozwojem oprogramowania w latach 70. i 80. 1971 to rok, w którym UNIX wprowadził pierwsze narzędzia diagnostyczne, a w 1985 roku powstało pierwsze komercyjne oprogramowanie do zarządzania defektami – Bugzilla.

Rodzaje bugów

  • Bug funkcjonalny – nieprawidłowe działanie funkcji względem specyfikacji.
  • Bug wydajnościowy – nadmierne zużycie zasobów, np. pamięci lub procesora.
  • Bug bezpieczeństwa – luka umożliwiająca nieautoryzowany dostęp lub atak, np. SQL injection.
  • Bug interfejsu użytkownika – problemy z użytecznością lub wyświetlaniem elementów graficznych.
  • Bug sprzętowy – usterki wynikające z wadliwego projektu lub produkcji komponentów elektronicznych.

Wykrywanie i usuwanie bugów

Proces identyfikacji i naprawy błędów obejmuje kilka etapów:

  1. Reprodukcja – odtworzenie warunków, w których błąd występuje.
  2. Diagnostyka – analizowanie logów, stosowanie debuggerów (gdb) oraz narzędzi profilujących.
  3. Izolacja – określenie minimalnego fragmentu kodu odpowiedzialnego za problem.
  4. Naprawa – modyfikacja kodu lub konfiguracji, testy regresyjne.
  5. Walidacja – potwierdzenie, że błąd został usunięty i nie wprowadził nowych problemów.

W praktyce wykorzystywane są systemy zarządzania defektami, takie jak JIRA, Redmine czy wspomniana już Bugzilla. Automatyzacja testów (CI/CD) oraz techniki testów automatycznych znacząco przyspieszają proces wykrywania bugów.

Znane przypadki bugów

  • Microsoft Windows BSOD – liczny zestaw błędów wywołujący tzw. niebieski ekran śmierci.
  • NASA Mars Odyssey – w 2003 roku błąd w oprogramowaniu spowodował utratę kontaktu z sondą.
  • Therac-25 – poważny błąd w systemie sterowania terapią radiologiczną, prowadzący do kilku nieszczęśliwych wypadków w latach 1985–1987.
  • Heartbleed – luka w bibliotece OpenSSL ujawniona w 2014 roku, umożliwiająca wyciek poufnych danych.

Kultura i język

Termin „bug” przeniknął do języka potocznego, oznaczając nie tylko problemy techniczne, ale także wszelkie drobne usterki w różnych dziedzinach życia. W kulturze popularnej pojawia się w tytułach filmów (Bug, Bug Hunt), gier oraz w memach internetowych. W Polsce istnieje również wyrażenie „wyłapać buga”, które oznacza odnalezienie i naprawienie błędu.

Powiązane pojęcia

Bibliografia

  1. G. Hopper, Early Computer Bugs and Their Solutions, 1970.
  2. J. Bloch, Effective Java, Addison‑Wesley, 2008.
  3. M. Fowler, Refactoring: Improving the Design of Existing Code, 1999.
  4. R. L. Glass, Facts and Fallacies of Software Engineering, 2003.