d라이브러리









대형사고 유발하는 소프트웨어 버그

「컴퓨터 맹신」에 대한 신의 경고

기계제어를 컴퓨터에 의존하면서 소프트웨어의 안전성 문제가 등장하고 있다.
 

걸프전 당시 패트리어트 미사일
 

미국에는 과거에 상당히 넓은 지역의 전화가 돌연 불통되는 경우가 더러 있었다. 소프트웨어에 존재하는 버그(bug, 프로그램상의 에러) 때문에 생각지도 못한 사고가 발생하는 것이다. 기계제어를 컴퓨터에 의존하게 되면서 기밀정보의 누설이나 인간으로 인한 사고는 많이 줄어들었지만 대신 소프트웨어의 안전성이 문제로 등장하고 있다.

소프트웨어 버그를 없애는 것은 매우 어려운 문제다. 소프트웨어의 규모가 점차 거대화 복잡화할수록 모든 가능성을 프로그램화하는 것이 불가능해지기 때문이다. 어떤 연구보고에 의하면 5천년간 프로그램을 실행할 때 한 번 장애를 일으킬 확률의 버그라도 그것이 일상생활에서 큰 비중을 지니는 프로그램이라면 시스템의 안전성에 문제가 된다고 한다. 가령 미국 민간항공기 회사는 10억분의 1 이하의 장해발생확률을 요구하기 때문에 버그의 발생 가능성도 수십만년에 한 번 정도 허용된다.

소프트웨어 개발자들은 버그를 회피하는 것이 불가능하기 때문에 프로그램의 안전성을 수치화하는 것은 불가능하다고 말한다. 안전성을 측정하는 척도가 없으므로 소프트웨어 맹신은 위험하다는 것이다. 소프트웨어를 만능시하지 않고 그 역할에 제한을 가한다든지, 복잡하지 않고 안전성이 높은 예비시스템에 하중을 나눈다든지 하는 대책이 필요하다. 소프트웨어에 회의적인 입장을 가지는 것이 가장 안전하다는 주장이다.

컴퓨터 장해로 인한 불편을 한두번쯤 겪어보지 않은 사람은 거의 없을 것이다. 신용카드 회사에서 잘못된 청구서가 날아온다든지, 애써 작업한 자료를 저장하다가 소프트웨어 불량으로 다 날려버린다든지 하는 사례를 우리는 주위에서 흔히 듣는다. 그 순간 컴퓨터에 대한 막연한 신뢰가 깨어지고 컴퓨터는 '괴물 같은 어려운 기계'라는 두려움이 생기게 된다.

그러나 이 정도 버그는 '첨단기기의 애교' 쯤으로 넘어갈 수 있다. 대형 시스템이 장해를 일으키거나 군사무기 또는 비행기의 소프트웨어가 버그를 일으키면 그것은 곧바로 대형사고로 이어진다.

1991년 걸프전 당시 이라크의 스커드 미사일을 격추시키기 위해 발사된 패트리어트 미사일이 잘못 떨어져 도리어 미군 28명을 사망하게 한 사건은 나중에 소프트웨어 버그 때문으로 밝혀졌다.

소프트웨어의 불량은 일반적으로 기계류의 결함에 비해 쉽게 드러나지 않으며 그것이 드러날 때는 큰 사고로 나타난다. 버그가 발생하는 원인은 대부분 복잡함 때문이다. 소프트웨어가 복잡해질수록 사소한 설계불량이 최종제품에 미치는 영향은 커진다.

기존의 공학기술은 기계적인 결함을 발견하고 이를 해결하는 데는 장족의 발전을 보였지만 컴퓨터를 내장한 기계제품의 결함에는 속수무책인 경우가 많다. 가령 4륜구동자동차나 자동제동시스템(ABS) 등이 고장날 때 보통의 수동식 자동차보다 훨씬 고치기가 어렵다.

소프트웨어는 컴퓨터의 두뇌다. 인간이 스스로 하기 힘든 일을 컴퓨터가 대신하게 할 때 하드웨어에게 명령을 내리는 역할은 소프트웨어가 한다. 그런데 소프트웨어를 만드는 것은 인간이므로 소프트웨어 불량은 인간의 실수가 그 원인이다. 만약 인간이 직접 그 일을 한다면 얼마든지 유연성을 가질 수 있다. 그러나 컴퓨터는 인간이 지시한 대로(그것이 파멸로 가는 길이라도) 그대로 실행한다. 소프트웨어 버그는 컴퓨터에 대한 인간의 맹신을 경고하는 신의 메시지인지도 모른다.

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

1993년 02월 과학동아 정보

  • 동아일보사 편집부

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?