Top

역사 속의 소프트웨어 오류 [부실한 소프트웨어가 초래한 위험천만한 사건 사고들]

  • 지은이김종하
  • ISBN : 9788960775725
  • 24,000원
  • 2014년 07월 18일 펴냄
  • 페이퍼백 | 324쪽 | 152*224mm
  • 시리즈 : acornLoft

책 소개

요약

이제 소프트웨어가 없는 세상에서 살아간다는 것은 상상할 수 없는 일이 되었다. 지금도 당신의 호주머니에서 스마트폰이 작동하고 있고 회사에서는 윈도우나 맥OS, 리눅스 등으로 업무를 처리하며, 출퇴근하기 위해 이용하는 자동차나 버스조차 각종 소프트웨어로 중무장되어 있다. 몸이 아파서 병원에 가보면 다양한 소프트웨어가 탑재된 각종 의료기기를 만날 수 있으며, 여행을 가기 위해 타는 비행기도 이제 최첨단 소프트웨어의 집합체가 된 지 오래다. 그런데 과연 이 모든 소프트웨어는 안전한 것일까?

그렇지 않다. 소프트웨어 오류가 직간접적인 원인이 되어 발생한 사고로 지금까지 수많은 사람이 죽거나 다쳤고 막대한 물질적 손실이 발생했다. 이 책에서는 우주, 항공, 군사, 통신, 금융, 의료, 생활 등 다양한 분야에서 소프트웨어 결함으로 인해 큰 피해를 입은 역사 속의 사례들을 다루며, 그 사건 사고들이 왜 발생했는지를 심층적으로 파헤쳐 독자들에게 보여준다.

추천의 글

도요타 자동차 급발진 사고, 과다 방사선 치료로 환자를 죽인 테락-25 방사선치료기, 일촉즉발의 핵전쟁 위기… 이 끔찍했던 사고의 배후에는 우리가 신뢰하는 컴퓨터, 그중에서도 컴퓨터를 제어하는 소프트웨어가 있다. 개별 뉴스에 불과했던 일들이 한 자리에 모여 현대 문명에 대한 통찰을 주는 책이 됐다. 한국에서 가장 글을 잘 쓰는 개발자 가운데 한 명인 인기 블로거 Wisedog 님이 펴낸 책이라 무엇보다 쉽고 재미있다. 컴퓨터 전공이 아니어도 술술 읽힌다.
김상훈 / 관심사 SNS Vingle(빙글) 마케팅커뮤니케이션 디렉터

지금까지 나온 소프트웨어 에세이는 주로 밝은 면에 집중한다. 잘 되고 좋고 멋지고 훌륭한 소프트웨어에 대한 환상 말이다. 하지만 이 책은 실수, 실패, 그리고 그 뒤에 숨겨진 뒷 이야기를 집중적으로 다룬다. 소프트웨어 오류와 원인(일단 알고 나면 별거 아닌 듯이 보이는!)을 재미있고 이해하기 쉽게 풀어 쓰므로, 소프트웨어를 제대로 그리고 안전하게 구현하고 싶은 개발자에게 추천한다.
박재호 / 이노디에스 이사, 『조엘 온 소프트웨어』 역자, '컴퓨터 vs 책'http://jhrogue.blogspot.kr/ 블로그

바야흐로 소프트웨어 세상이다. 웨어러블, 빅데이터, 클라우드, 자율 주행 자동차 등 연일 매스컴을 장식하는 최신 기술 이야기에서도 소프트웨어가 핵심을 차지한다. 개발자로서 혁신에 중심에 있다는 건 기분 좋은 이야기다. 하지만 소프트웨어가 고장 나면, 이런 혁신의 산물도 망가진다. 말하자면 소프트웨어의 역할이 커진 만큼 그에 대한 책임도 크다는 뜻이다. 이 책은 고신뢰성의 성능을 내야 하는 소프트웨어가 망가졌을 때 어떤 피해를 입는지를 생생한 사례를 들어 소개한 책으로, 소프트웨어의 중요성이 커진 오늘날, 고신뢰성의 소프트웨어를 개발해야 하는 개발자들에게 도움이 될 것이다.
신승환 / 현대오트론 수석연구원, 『스마트카 Smart Car 소프트웨어 엔지니어링』의 저자

조만간 알고리즘을 기반으로 한 지식의 대부분은 소프트웨어가 대체할 것이고, 80% 이상의 의사들을 대체할 것으로 예측된다. 향후, 소프트웨어의 품질과 버그에 대해서는 꾸준한 관찰이 필요하다. 책에서 언급된 '테락 25 사건'과 같은 실수를 방어하기 위해서 소프트웨어의 기술은 계속 진화 중이다. 더 많은 자동화된 인공지능들이 활성화될 미래에 활동할 후배들에게 좋은 교훈으로 다가올 수 있는 유익한 사례들이 언급된 것은 매우 훌륭하다. 소프트웨어 품질에 관심이 많은 많은 후배 개발자들에게 적극 추천한다.
신현묵 / 오픈헬스데이터그룹 이사, PAG&파트너스 자문가, (전)우리들병원그룹 IT전략담당이사

현대인의 눈이 닿는 모든 곳에는 컴퓨터가 있다. 스마트폰이나 PC의 얘기가 아니다. 더 작은 컴퓨터가 있다. 현관문에 달린 전자식 자물쇠부터 건물의 엘리베이터•자동차•비행기 등 모든 것에 컴퓨터가 있다. 그리고 이 모든 컴퓨터에는 소프트웨어가 깔려있다. 만약 이 소프트웨어에 오류가 있다면? ‘그 사건’의 원인이 사람의 실수나 기계 결함이 아니라 소프트웨어 버그였다면? 이 책은 ‘한 줄의 오류’가 만든 어마어마한 결과를 추리 소설처럼 흥미롭지만 사서처럼 사실 그대로 다룬다.
이인묵 / 조선일보 산업2부 IT팀 기자

역사 속의 중대한 시스템 사건 사고의 이면에는 임베디드 소프트웨어의 오류가 그 중심에 있다고 해도 과언이 아니다. 이는 사실이다. 이 책은 자동차, 금융뿐만 아니라 국방, 항공, 우주과학에 이르기까지 소프트웨어 오류가 이 위험천만한 사건 사고에 어떻게 관여되고 어떤 영향을 미쳤는지를 개괄하는 한편, 그림을 이용해 이해하기 쉽게 작성한 훌륭한 개요서라고 할 수 있다. 소프트웨어 오류의 중요성을 새삼 일깨워준 이 책을 임베디드 소프트웨어에 종사하거나 연구하는 분들이 꼭 읽어봐야 할 귀중한 도서로 적극 추천한다.
윤희병 / 전 국방대 국방과학학과 교수, 고려대 정보대학 컴퓨터학과 초빙교수

인류 문명을 발전시키는 최첨단 IT기술. 이 꿈을 실현해주는 소프트웨어에도 위험한 얼굴이 있다. 이 책은 막대한 금전적 피해를 야기하기도 하고 다수의 소중한 인명을 앗아가는 일련의 사건을 소개함으로써 소프트웨어를 잘못 다루면 어떤 폭탄보다 무섭다는 사실을 일깨워 준다. 또한 단순 사건 나열로 그치지 않고 소프트웨어 결함의 원인을 파헤치는 과정으로 독자의 호기심을 자극한다. 소프트웨어를 개발하는 프로그래머는 물론, IT 기술을 영유하고 있는 모든 사람이 흥미롭게 읽을 책이다.
정영범 / 공학박사, 파수닷컴 PA사업부 개발팀장

국내 업체들이 시간에 쫒겨 오류가 많은 소프트웨어를 내놓고 나중에 유지보수 하느라 고생하는 경우를 많이 봐왔다. 소프트웨어 오류는 사용자는 물론 해당 개발 업체의 발목도 잡을 수 있는 위험한 존재다. 경쟁력 있는 소프트웨어 회사라면 가급적 오류가 적은 제품을 내놔야 한다. 치명적인 소프트웨어 오류 사례들을 정리한 이 책은 소프트웨어 오류에 대한 인식을 바꿀 수 있는 의미 있는 메시지가 될 것이다.
황치규 / ZDNet Korea 컴퓨팅팀 기자

이 책의 대상 독자

이 책은 소프트웨어 오류로 인해 우주, 항공, 군사, 통신, 금융, 의료, 생활 등 다양한 분야에서 피해를 입은 사례를 역사적인 에피소드를 위주로 다루고 있기에, 평소 역사적인 사건이나 이슈에 관심이 많은 일반인이라면 소프트웨어에 관한 전문적인 지식 없이도 교양서적처럼 누구나 재미있게 읽을 수 있다. 전반적으로 소프트웨어 버그로 인해 피해를 입은 사례를 다루고, 주로 물질적으로 큰 손해를 입히거나 일상 생활에 큰 불편을 준 사건, 그리고 큰 인명 피해를 초래한 사건들을 위주로 구성했기에, 특히 버그 없는 소프트웨어를 작성하는 데 관심이 있는 소프트웨어 개발자나 테스터, 소프트웨어 회사를 경영하는 관리자나 경영진들은 더욱 흥미를 느낄 것이다.

참고 자료 및 그림 출처

참고 자료와 그림 출처를 보시려면 여기를 클릭하세요

저자/역자 소개

저자 서문

이 책은 내 개인 블로그의 글로부터 시작했다. 걸프전 당시 패트리어트 미사일의 명중률이 형편없었다는 이야기를 우연히 접한 후, 관련 자료를 찾다가 미국 정부 측 조사 보고서를 읽게 되었다. 그 보고서에는 이라크 스커드 미사일이 미군 병영을 강타했으며, 스커드 미사일을 요격해야 할 패트리어트 미사일은 소프트웨어 결함으로 인해 요격에 실패했다는 내용이 적혀 있었다. 미디어가 내 머릿속에 ‘패트리어트는 스커드의 천적’으로 각인시켜 놓은 이미지가 산산조각 나던 순간이었다.

이 일을 계기로 나는 소프트웨어의 결함으로 발생한 사건에 대해 조사해서 지속적으로 블로그에 올렸다. 다른 글과는 달리 이 글에 대한 반응이 좋아서 2년가량 꾸준히 적었고 이렇게 책으로 엮어 내놓게 되었다. 그러나 글을 쓰는 과정은 너무나도 힘들었다. 보통 데스크톱 소프트웨어의 결함보다는 임베디드 소프트웨어의 결함이 재산 피해나 인명 피해로 이어지는 경우가 압도적으로 많다. 그래서 임베디드 소프트웨어의 결함에 대해 주로 조사했는데, 문제는 이런 임베디드 소프트웨어는 국방, 과학, 항공, 우주, 의료, 자동차, 철도 등 매우 다양한 분야에 걸쳐 사용되고 있다는 점이었다. 따라서 글 한 편을 쓰기 위해 해당 분야의 배경 지식과 용어를 고루 이해해야 했고, 이 때문에 글 쓰는 데 매우 애를 먹곤 했다. 항공 관련 글을 쓸 때는 항공기 마니아(일명 항덕)가 되어야 했고, 국방 관련 글을 쓸 때는 밀리터리 마니아(일명 밀덕)가 되어야 했다. 전력 관련 글을 쓸 때는 수시로 전력과 관련된 책을 읽으면서 이해해야 했고, 일면부지의 항공대학교 조교에게 다짜고짜 이메일을 보내 용어를 물어본 적도 있었다. 이 때문에 글 한 편을 적는 데 평균적으로 3개월이 소요되었고, 길게는 반 년이 넘는 시간이 걸리기도 했다.

이 책을 출간하면서 한 가지 아쉬운 점은 국내의 소프트웨어 실패 사례를 많이 소개하지 못한 것이다. 외국(특히 미국, 유럽)의 경우에는 실패 사례가 발생하면 조사위원회를 구성해서 끝까지 조사한 후 일반에 공개하지만, 우리나라는 조사위원회를 아예 만들지 않거나 조사 결과를 공개하지 않는 경우가 일반적이었다. 행여나 조사 결과가 공개되더라도 그 정보의 질이 매우 떨어져서 글로 쓸 수 없는 사례가 대부분이었음을 밝혀 둔다. 또한 소프트웨어 분야 종사자의 눈으로 보고 들은 것을 글로 옮긴 것이기 때문에 각 분야 전문가들이 보기에 다소 미흡한 부분이 있더라도 부디 넓은 마음으로 헤아려 읽어 주길 바란다.

저자 소개

김종하

견고한 코드를 작성하는 일에 관심이 많은 개발자다. 소프트웨어 테스팅에도 흥미를 느껴 테스트 자격증 ISTQB를 획득하고 소프트웨어 테스트 엔지니어로도 근무한 적이 있다. 현재 정적 코드 분석 도구를 개발하고 있는 파수닷컴에서 근무 중이다.

소프트웨어와 관련된 블로그http://story.wisedog.net를 운영하며, 주로 소프트웨어 정적 코드 분석과 코딩표준, 버그 없는 코드 작성, 각종 프로그래밍에 대해 글을 쓴다.

목차

목차
  • 1장 0.000000095의 오차가 앗아간 28명의 생명
    • 미 공군 기지에 날아온 스커드 미사일
    • 패트리어트 미사일 시스템의 구조
    • 미사일 대 소프트웨어
    • 미군의 대응
    • 운명의 그 날 - 당시 패트리어트
    • [소프트웨어 개발자를 위한 섹션]

  • 2장 멀고 먼 화성 탐사의 길: 소프트웨어 오류로 화성의 먼지가 된 두 탐사선의 운명
    • 우주 탐사의 르네상스
    • 화성 탐사의 첫 발을 내디딘 소련
    • 미국의 첫 화성 탐사 성공
    • 첫 화성 착륙선
    • 화성 탐사의 주역, 미국
    • 다시 시작된 화성 탐사
    • NASA의 화성 탐사 계획
    • MCO의 궤도 진입
    • MCO의 통신 두절
    • 에어로 브레이킹
    • 단위 표기 불일치가 불러온 참사
    • 또 다른 탐사선, MPL
    • 화성 대기권 진입, 그러나
    • MCO, MPL의 교훈

  • 3장 “여보세요? 여보세요?”코드 한 줄이 초래한 AT&T 장거리 전화 불통 사건
    • AT&T의 역사
    • 신뢰의 AT&T 장거리 네트워크
    • 네트워크 장애의 시작
    • 문제의 원인은 잘못된 코드 한 줄
    • 전화 대란 그 후
    • [소프트웨어 개발자를 위한 섹션]

  • 4장 소프트웨어 오류가 불러온 어둠: 2003 미국 북동부 대정전
    • 우리나라의 9.15 정전 사태
    • 2003년 미국 북동부 대정전
    • 대재앙의 시작
    • 연이은 트립
    • 최후의 보루, 샘미스-스타 345kV 라인
    • 티핑 포인트
    • 아이패드 발매일의 긴 줄
    • 왜 알람이 처리되지 않았을까?
    • [소프트웨어 개발자를 위한 섹션]

  • 5장 불멸의 요크타운
    • 요크타운
    • 태평양전쟁과 요크타운
    • 유지비 절감 프로그램의 테스트 함선으로…
    • 영광의 하드웨어, 불명예의 소프트웨어

  • 6장 인터넷 웜의 시초, 모리스 웜.docx
    • 인터넷의 특성
    • 공격과 방어 기능을 갖춘 소프트웨어
    • 소프트웨어의 결함: 웜의 등장
    • 웜과의 사투
    • 위대한 웜 그 후
    • 모리스의 두 가지 아이러니

  • 7장 소프트웨어는 날아가는 전투기도 떨어뜨린다
    • 스웨덴 JAS 39 그리펜 전투기 추락사고
    • 그리펜 시제기의 추락
    • 또 한 번의 추락
    • 원인은 소프트웨어 문제
    • 항공기에서 점점 더 중요해지는 소프트웨어

  • 8장 70억 달러짜리 불꽃놀이 쇼: 아리안5 501편
    • 성장하는 상업용 우주 산업
    • 아리안5의 개발
    • 아리안5 501호
    • 사건의 재구성
    • 결론
    • [소프트웨어 개발자를 위한 섹션]

  • 9장 잘못 설계한 소프트웨어 사용성: 빈센트호 사건
    • 바다로 번진 전쟁의 불길
    • 긴장이 높아져 가는 미국과 이란
    • 실수와 오판, 운명의 교향곡
    • 이란항공 655편을 향해 발사된 미사일
    • 격추, 그 후

  • 10장 컴퓨터는 이해하기 힘든 인간의 시간 계산
    • 윤년이란
    • 마이크로소프트의 야심작 ‘준’
    • 전 세계 게이머를 골탕먹인 플레이스테이션3 윤년 버그
    • 컴퓨터에서 펜과 종이로, 병원 시스템 오류
    • 멈춰버린 내비게이션
    • 일상의 Y2K 버그
    • [소프트웨어 개발자를 위한 섹션]

  • 11장 게임 버그
    • 일상 속의 게임
    • 각종 게임 버그들
    • 이브 온라인
    • 월드 오브 워크래프트

  • 12장 금단의 열매: 핵무기
    • 소련을 향해 다가오는 핵 미사일
    • 페트로프의 결단
    • 페트로프의 결단, 그 후
    • 북미 항공우주 방위사령부: NORAD
    • 새벽 3시에 걸려온 전화

  • 13장 의료기기의 소프트웨어가 사람을 죽였다: 테락25 사건
    • 늘어가는 암 환자와 암 치료법
    • 방사선 치료
    • 테락25의 개발
    • 테락25의 첫 번째 희생자, 1985년 6월
    • 테락25의 두 번째 희생자, 1985년 7월
    • 세 번째 희생자, 야키마 밸리 메모리얼 병원, 1985년 12월
    • 네 번째 희생자, 동 텍사스 암센터, 1986년 3월
    • 다섯 번째 희생자: 동 텍사스 암센터, 1986년 4월
    • 여섯 번째 희생자: 야키마 밸리 메모리얼 병원, 1987년 1월
    • 사고의 원인 1: 소프트웨어
    • 사고의 원인 2: User Interface
    • 사고의 원인 3: 문서
    • 사고의 원인 4: AECL의 소프트웨어에 대한 무지
    • 소프트웨어 오류가 불러온 참극
    • [소프트웨어 개발자를 위한 섹션]

  • 14장 소프트웨어 오류로 잃은 화성 탐사선
    • 마스 글로벌 서베이어
    • 마스 글로벌 서베이어의 갑작스런 임무 종료
    • 원인은 소프트웨어 오류
    • 화성 탐사 로봇의 시대를 연 소저너
    • 본격적인 화성 탐사 로봇 스피릿
    • 스피릿의 첫 위기: 소프트웨어 오류 발생
    • 스피릿의 두 번째 위기: 바퀴 고장
    • 스피릿의 최후

  • 15장 세계를 쥐락펴락한 금융 소프트웨어 버그
    • 밴쿠버 주식시장 오류
    • 반올림 오류가 원인
    • 호주 퀸즈랜드 은행 카드 단말기 고장
    • 호주 퀸즈랜드 은행 카드 단말기 고장
    • [소프트웨어 개발자를 위한 섹션]

  • 16장 소프트웨어가 막을 수 있었던 항공기 사고: 대한항공 801편과 아메리칸항공 965편 추락사고
    • 괌의 참사: 대한항공 801편
    • 추락까지의 기록들
    • 막을 수 있었던 사고
    • 소프트웨어만 제대로 작동했더라면
    • 아메리칸항공 965편
    • 실수의 시작
    • “음, 우리가 어디에 있는 거죠?”
    • 소프트웨어에 일부 책임

  • 17장 17조 원의 로또, 디지털 예산회계시스템
    • 지옥과 천당을 오르내린 정부
    • 디지털 예산회계시스템의 개발
    • ‘부적정’한 프로젝트
    • 감리의 의견도 무시하고 시스템 가동 강행
    • 예정된 결함들
    • 결국 터진 문제
    • 종합적인 인재의 결정판

  • 18장 도요타 급발진 사고와 소프트웨어
    • 도요타 리콜 위기
    • 도요타 소프트웨어 검사
    • ECU의 소프트웨어가 급발진을 일으킬 수 있다
    • 버그 투성이 도요타 소프트웨어
    • 바 그룹 보고서와 도요타의 항복은 별개 사항

  • 에필로그: 버그 없는 소프트웨어를 만들기 위해
    • 소프트웨어의 원죄: 버그
    • 소프트웨어 개발 프로세스
    • 소프트웨어 버그의 비용
    • 코딩 표준
    • 정적 코드 분석

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2015.3.2 수정사항

[239p : 8째줄]
10진수 4를 2진수로 표현하면 10(2×2¹ + 0×2°)이며
->
10진수 4를 2진수로 표현하면 100(1x2² + 0x2¹ + 0x2°)이며