검수요청.png검수요청.png

"버그"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(The Therac 25)
(The Therac 25)
13번째 줄: 13번째 줄:
 
====== The Therac 25 ======
 
====== The Therac 25 ======
 
Therac 25는 전자빔으로 피부 근처의 종양을 제거하는 Electron 모드와 X-ray로 피부 깊숙한 곳의 종양을 제거하는 X-ray 모드의 두가지 동작 모드를 지원했다. 그 전에는 각각 별도의 장비로 되어 있던 것을 하나로 합쳐 공간과 비용을 혁신적으로 개선한 제품이었다고 한다. 그런데 X-ray 모드는 강한 방사선을 사용하기 때문에 이를 균일하고 안전하게 환자에게 쪼일 수 있게 하는 턴 테이블이라고 하는 장치를 환자와 방사선 발사기 사이 위치하도록 제어해주는 것이 필요했다. 하지만 이 장치는 Electron 모드로 동작할 때는 필요하지 않았다. 때문에 모드에 따라 턴테이블을 움직여 주어야 하는데 이러한 제어를 컴퓨터 소프트웨어가 담당하고 있었다. 불행히도 이 소프트웨어에는 버그가 있어 '간혹' X-ray 모드인 상태에서 턴테이블이 제위치에 있지 않은 경우가 발생했다.  
 
Therac 25는 전자빔으로 피부 근처의 종양을 제거하는 Electron 모드와 X-ray로 피부 깊숙한 곳의 종양을 제거하는 X-ray 모드의 두가지 동작 모드를 지원했다. 그 전에는 각각 별도의 장비로 되어 있던 것을 하나로 합쳐 공간과 비용을 혁신적으로 개선한 제품이었다고 한다. 그런데 X-ray 모드는 강한 방사선을 사용하기 때문에 이를 균일하고 안전하게 환자에게 쪼일 수 있게 하는 턴 테이블이라고 하는 장치를 환자와 방사선 발사기 사이 위치하도록 제어해주는 것이 필요했다. 하지만 이 장치는 Electron 모드로 동작할 때는 필요하지 않았다. 때문에 모드에 따라 턴테이블을 움직여 주어야 하는데 이러한 제어를 컴퓨터 소프트웨어가 담당하고 있었다. 불행히도 이 소프트웨어에는 버그가 있어 '간혹' X-ray 모드인 상태에서 턴테이블이 제위치에 있지 않은 경우가 발생했다.  
[[파일:The_therac_25_1.png|썸네일|오른쪽]]<ref name='bug_bad_history'></ref>
+
[[파일:The_therac_25_1.png|썸네일|오른쪽]]
 
정상적인 경우라면 왼쪽의 두 그림중 하나의 상태여야 하는데 소프트웨어의 오류로 인해 오른쪽과 같은 상황에서 방사능을 발사했고, 이로 인해 문제가 완전히 밝혀져서 고쳐지기까지 무려 6건의 사고가 발생하여 3명이 사망하고 다른 3명은 심각한 방사능 후유장애에 시달려야 했다.<ref name='bug_bad_history'>,〈[https://blog.naver.com/saiparan?Redirect=Log&logNo=90080535747 역사상 최악의 버그 The Therac 25]〉</ref>
 
정상적인 경우라면 왼쪽의 두 그림중 하나의 상태여야 하는데 소프트웨어의 오류로 인해 오른쪽과 같은 상황에서 방사능을 발사했고, 이로 인해 문제가 완전히 밝혀져서 고쳐지기까지 무려 6건의 사고가 발생하여 3명이 사망하고 다른 3명은 심각한 방사능 후유장애에 시달려야 했다.<ref name='bug_bad_history'>,〈[https://blog.naver.com/saiparan?Redirect=Log&logNo=90080535747 역사상 최악의 버그 The Therac 25]〉</ref>
  

2020년 8월 13일 (목) 10:07 판

버그(bug)는 프로그램 상의 결함에 의해 하드웨어소프트웨어가 오작동하는 현상이다.[1]

개요

 컴퓨터 기술 분야에서 버그란 컴퓨터 프로그램의 코딩 오류를 의미하는 용어이다. 프로그램 사용자가 이러한 버그를 발견하기 전에 찾아 수정하는 것을 디버깅(debugging)이라 하며, 디버깅은 프로그램의 개발 시작 단계부터 완료될 때까지 계속해서 이루어진다. 하지만 제품이 출시된 후나 베타 테스트 기간 중에도 버그는 여전히 남아있을 수 있으나 일반적으로 프로그램 개발 절차가 잘 확립되어 있고 프로그램의 설계를 잘하면 그것이 비록 수천, 수만 개의 명령문이 조합된 대형 프로그램이라 해도 버그를 최소한으로 줄일 수 있다. 버그의 어원은 1944년 하버드에서 MarkⅠ 컴퓨터로 프로그램을 개발했던 최초의 프로그래머인 그레이스 호퍼에 의해 비롯되었고, 젊은 해군장교였던 호퍼는 기술자들이 MarkⅡ 컴퓨터에서 오동작을 일으킨 벌레(모기)를 꺼낸 사건을 서술했다. 에릭 레이몬드는 그의 저서인 The New Hacker's Dictionary 에서 '그 벌레(모기)가 해군에 여러 해동안 전시되었고, 지금은 스미스소니언 박물관에 소장되어 있다'고 하였다. 이와 같이 버그라는 용어는 현대의 컴퓨터 이전의 진공관 컴퓨터 시대부터 산업적 또는 전기적 오동작을 의미하는데 사용되었고, 때로는 컴퓨터 하드웨어 문제를 지칭하는 것으로 사용되기도 한다.[2] 버그의 결과로 다양한 문제가 발생할 수 있다. 몇몇 버그는 프로그램의 동작에 조그마한 영향을 줄 뿐이며, 오랜 시간 동안 발견되지 않고 남아 있을 수 있다. 이보다 더 심각한 버그는 프로그램의 실행이 중단되거나 강제 종료되는 문제를 일으킬 수 있고, 어떠한 버그는 보안 문제를 발생시킬 수도 있다. 예를 들어, 악의적인 사용자는 자주 발생하는 버그인 버퍼 오버플로를 사용해서 원래는 허락되지 않은 일을 할 수 있다. 버그는 다양한 형태로, 또 다양한 정도로 프로그램의 사용자들에게 불편함 등의 영향을 미칠 수 있다. 몇몇 버그들은 프로그램의 기능에 미미한 영향만 미치는데, 이 때문에 오랫동안 사용자들이 이들을 발견하지 못하는 경우도 있다. 하지만 심각한 버그들은 프로그램이 전혀 작동하지 못하는 상태가 되게 하여 사용자들에게 큰 불편을 주기도 한다. 한편, 보안 버그들은 나쁜 의도를 가진 사용자들에 의하여 악용되어 시스템의 불법적인 권한을 획득할 수 있는 수단이 되기도 한다.[3]

종류

소프트웨어 버그

  • 소프트웨어 버그(software bug) : 소프트웨어가 예상하지 못한 잘못된 결과를 내거나, 오류가 발생하거나, 착오나 오작동이 발생하는 등의 문제를 뜻한다. 프로그램의 소스 코드나 설계 과정에서의 오류 때문에 발생한다.

역사적 사례

최초의 버그

Bug.jpg[4]

1945년 9월 9일 Mark.II 컴퓨터의 회로에 나방이 들어가 합선을 일으킨 것을 코볼의 발명자인 그레이스 호퍼가 발견한 인류 역사상 최초의 버그이다. 이 나방은 나중에 미국 해군에서 여러 해 동안 전시했다고 한다. 현재는 스미소니언 박물관이 소장 중이다.[4]
역사상 최악의 버그 사례
The Therac 25

Therac 25는 전자빔으로 피부 근처의 종양을 제거하는 Electron 모드와 X-ray로 피부 깊숙한 곳의 종양을 제거하는 X-ray 모드의 두가지 동작 모드를 지원했다. 그 전에는 각각 별도의 장비로 되어 있던 것을 하나로 합쳐 공간과 비용을 혁신적으로 개선한 제품이었다고 한다. 그런데 X-ray 모드는 강한 방사선을 사용하기 때문에 이를 균일하고 안전하게 환자에게 쪼일 수 있게 하는 턴 테이블이라고 하는 장치를 환자와 방사선 발사기 사이 위치하도록 제어해주는 것이 필요했다. 하지만 이 장치는 Electron 모드로 동작할 때는 필요하지 않았다. 때문에 모드에 따라 턴테이블을 움직여 주어야 하는데 이러한 제어를 컴퓨터 소프트웨어가 담당하고 있었다. 불행히도 이 소프트웨어에는 버그가 있어 '간혹' X-ray 모드인 상태에서 턴테이블이 제위치에 있지 않은 경우가 발생했다.

The therac 25 1.png

정상적인 경우라면 왼쪽의 두 그림중 하나의 상태여야 하는데 소프트웨어의 오류로 인해 오른쪽과 같은 상황에서 방사능을 발사했고, 이로 인해 문제가 완전히 밝혀져서 고쳐지기까지 무려 6건의 사고가 발생하여 3명이 사망하고 다른 3명은 심각한 방사능 후유장애에 시달려야 했다.[5]

게임에서의 버그

각주

  1. hokey,〈버그란 무엇인가 - 버그에 대한 고찰〉, 2019-03-01
  2. terms,〈버그〉, 1999-06-21
  3. 위키백과,〈[1] 소프트웨어 버그〉
  4. 4.0 4.1 나무위키,〈버그
  5. ,〈역사상 최악의 버그 The Therac 25

참고자료

같이 보기

  검수요청.png검수요청.png 이 버그 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.