컴퓨터 속의 벌레로 불리는 버그(Bug)


안녕하세요. 여러분들의 IT비타민, SK브로드밴드 Blog지기입니다 :D PC, 스마트폰, 태블릿PC 등 여러 기기를 사용하다가 갑자기 오류 메시지와 함께 기기가 아예 멈춰버리거나 작동하지 않는 경우를 확인할 수 있습니다. 이런 경우에는 기기 자체가 불량일 수도 있으나 주로 하드웨어 또는 소프트웨어를 구성하는 프로그램이 오류일 가능성이 큽니다. 이처럼 기기 자체의 불량이 아닌 프로그램이 오류 또는 오작동을 일으키는 현상을 버그(Bug) 라고 합니다. 오늘은 바로 이 버그에 대해 알아봅시다 :)




버그의 유래


벌레라는 뜻을 가진 버그(Bug)가 컴퓨터 용어로 쓰이게 된 유래는 두 가지 설이 있는데요. 우선 첫번째 설은 1947년으로 거슬러 올라갑니다. 컴퓨터 개발자 그레이스 하퍼(Grace Murray Hopper, 1906~1992)가 하버드 마크 II 컴퓨터의 고장 원인을 살펴보던 중에 회로 사이에 나방 한 마리가 끼어 있어 접촉불량이 일어난 것을 확인하였습니다. 이 때부터 컴퓨터에 문제가 생기면 버그라고 부르게 된 것이 유력한 설인데요, 최초의 버그를 탄생시킨 이 나방은 현재까지도 스미스 소미언 박물관에 보관중이라고 합니다.



< 실제로 1947년에 최초의 버그를 탄생시킨 나방 >

< 실제로 1947년에 최초의 버그를 탄생시킨 나방 > 



버그탄생의 두번째 설은 미국의 유명 발명가인 토머스 에디슨(Tomas Edison)과 관련된 주장도 있습니다. 1878년, 에디슨이 친구에게 보낸 편지의 내용에 이미 기계의 오류를 <버그>라고 칭한 부분이 있어 그 전에도 버그라는 단어가 사이미 기술자들 사이에서 널리 쓰이던 은어라 추측하는 주장도 있습니다.



버그의 종류


버그가 발생하는 원인은 많지만, 대개 프로그램의 설계 자체가 잘못되었거나 개발자들이 프로그램을 설계하기 위해 코드를 작성하던 중의 실수로 인한 경우가 대부분입니다. 예를 들어, 한 프로그램에서 A 메뉴를 실행했는데 아무런 반응이 없거나 A가 아닌 전혀 상관 없는 B 메뉴의 실행 혹은 오류메세지가 출력되는 등 엉뚱한 결과물이 출력되곤 합니다.


버그 발생 이미지


더 넓은 의미에서 바라본다면, 최근에 많이 사용하는 스마트폰을 예로 들 수 있는데요. 갤럭시 넥서스의 경우엔 OS 업데이트를 통해 배터리가 급속히 줄어드는 이른바 '배터리 광탈' 버그가 있었으며, 애플의 iOS는 iOS6에서 구글 지도 대신 자체 지도를 도입했다가 지도 내용 중에 위치와 전혀 상관 없는 곳이 표시되거나 아예 길이 끊긴 부분이 표시되는 등 여러가지 버그가 있었습니다. 


그 외에도 스마트폰에서는 와이파이가 잡히지 않는 버그, 특정 애플리케이션 실행시 오류가 발생했다는 안내가 나오는 경우, 볼륨 버튼을 작동시켰는데 볼륨 조절 대신 전원이 꺼지는 경우 등등 다양한 오류현상이 버그에 포함됩니다.


이렇듯 비교적 단순한 버그라면 웃고 넘기면서 버그가 개선된 새로운 버전이 나오길 기다리면 되지만, 버그로 인해 심각한 문제가 발생하는 경우도 있습니다. 1980년대에는 방사선 치료 제어 코드에 있던 버그로 인해 환자들이 목숨을 잃는 끔찍한 사고가 있었으며, 1996년 유럽 스페이스 에이전시의 로켓 발사 시에는 컴퓨터 프로그램 버그 때문에 발사 후 1분이 채 되지 않아 폭발하는 사고가 발생하기도 했습니다.




버그를 고치는 디버깅 작업


결국 각종 프로그램은 모두 사람이 설계하는 것이기 때문에 완벽한 것은 존재하지 않습니다. 버그가 전혀 없는 완벽한 제품은 없다고 봐도 무방하다는 것인데요, 이를 위해 프로그램을 테스트하고 버그를 찾아내어 해결하는 디버깅(Debugging)은 필수라고 할 수 있습니다. 보통 디버깅 작업은 프로그램 제작 시간 이상을 소요한다고 합니다. 프로그램은 작업 과정에 따라 부르는 버전 이름을 구분하고 있습니다.



버그 프로그램 작업 과정


한 프로그램이 출시되기 전까지 다양한 과정이 있는 것을 확인할 수 있죠? 특히, 클로즈 베타와 오픈 베타의 경우에는 온라인게임 정식 출시 전에 진행하는 과정으로 게임을 즐기는 분들에게는 무척 익숙한 단어겠죠? :)


 


프로그램 개발자들은 디버깅 과정을 통해 프로그램의 버그를 줄이기 위해 노력하지만, 사람이 설계하는 것이기 때문에 결국 버그는 완벽하게 없다고 할 수는 없습니다. 하지만 버그로 인해 큰 피해를 입을 수 있을 가능성도 있으므로 개발사에서는 정식 출시 전에 꼼꼼한 디버깅으로 버그를 최소화 해야 할 의무가 있습니다. 이상 Blog지기가 전해드린 컴퓨터 속의 벌레, 버그(Bug) 정보였습니다. ^_^


Posted by SK브로드밴드

댓글을 달아 주세요