김윤수님께서 소스코드 복사의 위험성에 관해서 좋은 글을 써주셨습니다.
결함이 포함된 코드를 이 프로젝트 저 프로젝트에서 쓰다보면 예상치 못한 문제를 겪을 수 있습니다.
대표적인 사례로 아리안 5호 Flight 501의폭발사건을 살펴볼 수 있습니다.
1996년 6월 4일 Flight 501은 아리안5호 발사체로 처음 발사되었습니다. 그런데, 발사된지 37초만에 제어 소프트웨어의 오동작으로 인해 그만 궤도를 벗어나고 말았고, 결국 컴퓨터에서 초과된 고도 변경 명령을 내려 과도한 공기압력을 받아 폭발하고 말았습니다.
이 문제는 아리안5호가 Ada로 작성된 아리안4호의 일부 모듈을 그대로 재사용하며서 발생하였습니다.
문제가 된 모듈은 16비트 정수값을 처리할 때는 문제가 없으나 64비트 부동소수 값을 처리할 때, 그만 수치 오버플로우(numeric overflow)가 발생하였고, 이를 제대로 처리를 못해 문제가 발생한 것입니다.
아마 아리안4호에서는 16비트 정수값만 들어왔던 모양이고 문제가 없던 코드이니까, 개발자는 그대로 아리안 5호에서 사용했던 모양입니다. 그런데, 아리안 5호에 오면서 일부 스펙이 변경되면서 64비트 부동소수값이 들어왔던 것 같습니다. 스펙의 변경을 고려하지 않고 예전 코드가 잘 동작했으니까, 그대로 사용하가다 그만 허공에 3억7천만불을 날려버리고 만 것입니다.
코드 재사용해야합니다. 그러나 그냥 재사용하지 말고 꼼꼼히 살펴봅시다.
참고
http://en.wikipedia.org/wiki/Ariane_5_Flight_501
언젠가 들은 적이 있었던 이야기이네요. 소스코드 복사 잘못해서 3억 7천만불이 날라갔다니... COPQ(Cost Of Poor Quality)가 정말 크네요~
답글삭제