(10101101)173/Others2008. 11. 12. 04:24

누군가 물었다.
"왜 기능은 다 쓰지도 않으면서 아니 쓸줄도 모르면서 왜 Visual Studio를 써?"
이렇게 답했다.
"디버그(Debug)하나는 끝내주거등.."

아무리 생각해도 Visual Studio는 프로그램을 디버그 하는대있어서 최고의 프로그램인것 같습니다. 물론 Visual Studio는 디버그 프로그램이 아니라 개발(Develop) 프로그램 기능도 나무랄 곳이 없습니다. 개발자(Developer)입장에서 잘~ 만들어진 프로그램이라 생각 합니다. 그러나 이런 프로그램 마저도 가끔 충돌이나 오류로 인해  오류메시지를 뿌리며 눈앞에서 사라져 갈때는 정말 가슴이 미어 집니다.
인류의 적은 많은것들이 있습니다. 바퀴벌레 부터 시작해서 다이옥신 까지.. 그렇다고 프로그램어의 적도 버그만 있느냐? 아닙니다. 똥배, 거북목, 무릎시림, 손저림, 허리 요통 등 많은 적들이 존재 하지만 이 때문에 이 적들이 존재하는 것입니다. 그이름 바로 "버그" 이 버그들이 존재 하기에 프로그램어의 상징 이자, 내공의 증거 똥배를 있게 합니다.
버그는 프로그램어가 원하던 원하지 않던 일어나게 됩니다. 컴퓨터가 아무리 머리가 좋다 한들.. 할일을 지정해 주지 않으면 일을 못하는 TV나 다름없는 바보상자가 아닐 수 없습니다. 때문에 이 컴퓨터를 좀더 인공지능적으로 보이기 위해 프로그램어는 매일밤을 뜬 눈으로 보내며 키보드와 씨름한판을 벌입니다. 하지만 아무리 컴퓨터 앞에서 키보드만 들면 전지전능해 지는 프로그램어 라도 인간인지라.. 실수도 하고 빼먹기도 하고.. 그렇다보면 원하지 않던 버그가 일어나게 됩니다. 여기서는 이 버그로 일어난 사건사고를 말해보겠습니다.


1. NASA 화성 착륙기
아래 주소에 나와 있는 뉴스를 보면 마스폴라랜더호에 대한 내용이 나옵니다.
http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=001&oid=262&aid=0000001604&
1999년 1월에 발사된 마스폴라랜더호는 영어와 측정 단위간의 변환 계산 버그로 인해 화성에 도착할 궤적을 잘못 계산하여 너무 일찍 엔진을 꺼버리게 된것입니다. 그래서 쉬운말로 그냥 "추/ 락/ 사/" 해버린 겁니다. 차라리 이 전 1997 6월에 도착한 패스파인더 호에 착륙방식인 에어백 방식을 사용해도 괜찮았을것 같은대.. 어쨋든 NASA아저씨들 마음이니.. 다시 본론으로 돌아가 결국 단위 변환 프로그램에 버그로 인해서 1조 6,500만 달라짜리 세금 덩어리가 화성에서 아무것도 아닌 쇠조각으로 변해버린 겁니다.


2. 덴버 공항 수화물 핸들러

촬영위성 : 미국 Space Imaging Inc. IKONOS
촬영일 : 2003년 9월 5일
Credit : Space Imaging Inc. 상업적으로 이용할 수 없습니다.

덴버 국제 공항은 세계에서 가장 큰 공항 중 하나로, 악천후 속에서도 나란한 활주로에 세 대의 비행기가 동시에 착률할 수 있는 공항 입니다. 약 50억 달러의 비용을 들여 1995년 완공되었는대 뉴욕 맨하탄 섬의 두배 크기 입니다. 이 공항에는 자동화된 거대한 레일 시스템이 있었는대. 문제는 바로 이 레일 시스템에서 일어 났습니다. 처음 온라인에서 테스트 했을 때 카트를 제대로 탐지하지 못하는 S/W적 문제가 곳곳에 있었습니다. 카트와 시스템이 동기가 잘 맞지 않아 카트가 비어 있음에도 빈 카트에 짐을 싫지 않고 꽉 찬 카트 또한 비어 있음으로 인식해 가방을 싫어버려 결국 시스템이 멈춰버리는 대형사고가 일어났는대(물론 테스트 중에) 이 S/W적 문제를 해결 하기 위해 덴버공항의 오픈은 11개월이나 미뤄졌습니다.


3. MV-22 오스프리

MV-22 오스프리는 군사 항공기로 수직 상승 헬리콥터와 일반적인 비행기의 특성을 섞어 만든 비행기 였습니다. 이런 수직 이착륙이 가능한 비행기는 1994년에 나온 아놀드 슈왈제네거 주연에 영화 영화 트루 라이즈(True Lies)에 나오는 전투가 있으니 바로 해리어기입니다. 이런 비행기들은 영화에서 많이 보신바와 같이 성능좋은 H/W와 S/W가 탑제되어 있습니다. 즉 자잘한 작동 이상문제를 S/W적으로 인식하고 H/W컨트롤을 통해 해결이 가능합니다. 문제는 이륙하려 할 때 잘못 만들어진 수력 라인이 터져 버렸는대 이는 H/W적으로 심각한 문제이나 S/W적으로 어떻게든 회복할 수 있는 문제였습니다. 그러나 문제는 여기서 발생 됩니다. 잘못된(적절하지 못한) 백업 시스템을 S/W가 호출해 결국 항공기가 폭파되어 네 명의 군인이 사망하는 결과를 낳았습니다. 물론 MV-22 오스프리 항공기는 테스트중 총 4번의 사고가 발생하게 되는대, S/W적인 사고는 한번 뿐이었습니다.


4. US 비세네스
1988년, 미 해군 함정은 레이더에 잡힌 비행 물체를 추적 시스템이 적기라고 판단, 미사일을 발포하게 됩니다. 하지만 이 레이더에 잡혀져 표적이된 비행 물체는 에어버스에 A320이었습니다. 결국 미사일에 맞아 비행기가 폭파되었을때는 290여 명의 무고한 사람들이 목숨을 잃었습니다. 이후 미 해군에 공식 발표는 오해하기 쉬운 출력을 낸 추적 시스템 때문이라며 개발사를 비난했습니다.


5. Microsoft와 Love바이러스

Microsoft Outlook은 처음에 불명확한 곳에서 보낸 프로그램도 실행하도록 잘못 설계되어 있었습니다. 이를 이용한 대표적인 사례가 "I LOVE YOU" 바이러스 알려진 LOVE바이러스 입니다. 이 바이러스로 입은 사회적인 피해는 10억 달러에 달하는대 문제는 이 피해는 MS Outlook을 사용한 사용자에게서만 발생 했다는 점입니다. Outlook개발자는 바이러스가 Script를 사용해 어떤일을 할 수 있는지 생각해 보지 않은 결과 입니다.



참고서적 : 소프트웨어 보안 코드 깨부수기 / 정보문화사

Posted by Special Alex