버그 (공학)

버그()는 공학에서 소프트웨어, 컴퓨터 하드웨어, 일렉트로닉스, 회로 또는 기계와 같은 설계된 시스템의 결함으로 인해 원치 않는 결과가 발생하는 것을 말한다. 자연재해로 인한 서버 다운과 같이 설계 범위를 벗어난 결함은 버그가 아니며, 기상과 같은 자연 시스템에서도 버그는 발생하지 않는다.

버그는 비기술적인 용어이며, 결함(defect) 외에 더 공식적인 용어로는 에러(error), 플로(flaw), 폴트(fault)가 있다. 버그는 지속적일 수도 있고, 산발적, 간헐적, 또는 일시적일 수도 있다. 컴퓨팅에서 충돌(crash), 프리징(freeze), 글리치(glitch) 등은 버그의 유형들이다.

바람직함은 주관적이기 때문에, 어떤 사람에게 바람직하지 않은 것이 다른 사람에게는 바람직할 수도 있다. 따라서 버그 보고에 대해 "이것은 버그가 아니라 기능이다"라는 익살스러운 대답이 가끔 나오기도 한다.

 역사 
중세 영어 단어인 bugge는 괴물을 뜻하는 용어인 bugbear와 bug-a-boo의 기초가 되었다.

결함을 설명하기 위해 버그라는 용어를 사용한 것은 전자 컴퓨터와 컴퓨터 소프트웨어가 나오기 훨씬 전인 적어도 1870년대까지 거슬러 올라가는 공학 은어였다. 예를 들어, 토머스 에디슨은 1878년 동료에게 보낸 편지에 다음과 같이 적었다.

1924년 전화 산업 저널에 실린 코믹 스트립에서, 세상 물정 모르는 한 캐릭터가 어떤 남자의 직업이 "버그 사냥꾼(bug hunter)"이라는 말을 듣고 효자손을 선물한다. 그러자 그 남자는 "'버그 사냥꾼'은 수리공의 별명일 뿐이라는 걸 모르나?"라고 대답한다.Cy Meyn, Hattie the Hello Girl, The Mountain States Monitor Vol. XIX, No. 1 (Jan, 1924), Mountain States Telephone and Telegraph Co.; page 34, bottom.

최초의 기계식 핀볼 게임인 배플 볼(Baffle Ball)은 1931년에 "버그가 없음"으로 광고되었다.

제2차 세계 대전 당시 군사 장비의 문제들은 버그나 글리치라고 불렸다.

1940년 영화 플라이트 커맨드(Flight Command)에서 방향 탐지 장치의 결함은 버그라고 불린다.

1942년에 출판된 책에서 루이즈 디킨슨 리치는 동력 얼음 절단기에 대해 이야기하면서 "창조자가 그가 아끼는 기계에서 버그를 제거하기 위해 올 때까지 얼음 톱질은 중단되었다"라고 말했다.

아이작 아시모프는 1944년에 발표된 단편 소설 "토끼를 잡아라(Catch That Rabbit)"에서 로봇의 문제를 연관 짓기 위해 버그라는 용어를 사용했다.

컴퓨터의 선구자인 미국 해군 준장 그레이스 호퍼는 초기 전기 기계식 컴퓨터에서 문제를 일으킨 나방에 관한 이야기를 대중화했다. 호퍼가 1947년경 하버드 교수진으로서 마크 II와 마크 III 작업을 하던 중, 운영자들은 마크 II의 오류를 추적하다가 릴레이에 갇힌 나방을 발견했다. 나방은 장치에서 제거되어 로그북에 "버그가 발견된 첫 번째 실제 사례(First actual case of bug being found)"라는 메모와 함께 테이프로 붙여졌다.

전해지는 바에 따르면, 나중에 버지니아주 달그렌의 해군 병기 연구소에서 근무하게 된 윌리엄 "빌" 버크를 포함한 운영자들은 공학 용어에 익숙했으며, 아마도 버그의 두 가지 의미(생물학적 의미와 기술적 의미)를 결합하여 말장난을 한 것으로 보인다. 비록 농담이라 할지라도, 이 이야기는 당시 컴퓨터 분야에서 이 용어가 일반적으로 사용되었음을 나타낸다."Bug ", The Jargon File, ver. 4.4.7. Retrieved June 3, 2010."Log Book With Computer Bug ", National Museum of American History, Smithsonian Institution."The First "Computer Bug", Naval Historical Center. But note the Harvard Mark II computer was not complete until the summer of 1947.
나방이 붙어 있는 이 로그북은 스미스소니언 국립 미국사 박물관의 소장품 중 일부이다.

관련 용어인 디버그(debug) 또한 컴퓨팅에서 사용되기 전부터 있었던 것으로 보인다. 옥스포드 영어사전의 어원에는 1945년 항공기 엔진과 관련하여 이 단어가 사용된 증거가 포함되어 있다.Journal of the Royal Aeronautical Society. 49, 183/2, 1945 "It ranged ... through the stage of type test and flight test and 'debugging' ..."

"이것은 버그가 아니라 기능이다"
버그는 원치 않는 동작을 의미하므로 버그라고 부르는 것은 주관적이다. 누군가에게는 버그인 것이 다른 사람에게는 유용한 기능일 수 있으며, 이로 인해 "이것은 버그가 아니라 기능이다(It's not a bug, it's a feature, INABIAF)"라는 익숙한 문구가 생겨났다. 이 재담은 제이건 파일(The Jargon File, 1975)에 기록되어 있으나, 적어도 디지털 이큅먼트 코퍼레이션(DEC)의 PDP-8 프로그래머 산드라 리 해리스가 DEC의 FOCAL 인터프리터 코드에서 수정해야 할 문제와 사용자 매뉴얼에서 설명하거나 명확히 해야 할 사항을 구분했던 1971년까지 거슬러 올라간다.

이러한 동작은 사용자에게 명시적으로 전달되거나 문서화되지 않은 기능으로 남을 수 있다.

 각주 

분류:공학
분류:공학 개념