초보 개발자

소프트웨어의 오류와 심각한 사고 본문

컴퓨터공학 전공/소프트웨어공학

소프트웨어의 오류와 심각한 사고

mandudu 2022. 10. 13. 00:47

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **

소프트웨어의 오류로 인한 사고

  1. 보잉 737 Max 8 항공기의 추락
    새로 도입된 MCAS 소프트웨어 기반 안전장치 시스템의 오작동 
  2. 자율주행 자동차의 사고
    Uber - 보행자 사망 / Tesla - autopilot 소프트웨어 오류 / Waymo ( + 자동차의 급발진 사고 )
  3. Keyless Ignition system: 스마트키를 소지하고 있을 경우 엔진 조작이 가능한 장치
    엔진 정지 버튼을 누르지 않고 떠날 경우에도 시동이 꺼지지 않는 문제 
    엔진 소음이 약해져 시동이 꺼지지 않은 것을 인지하지 못함 → 연료 낭비, 환경 오염, 일산화탄소 질식
    소프트웨어 자체의 오류뿐 아니라 소프트웨어가 제대로 작동했을 경우에도 사고가 발생할 수 있다.
  4. Ariane 5 폭발 사건 (1996)
    Ariane 5 위성을 실은 로켓이 발사 37초만에 폭발한 사건 / 5억불 가량의 손실
    항법장치의 소프트웨어 오류: 64비트 실수형 값 → 16비트 정수형 값
    사소한 오류가 큰 피해를 야기한다.
    ▷ 소스코드를 재사용하더라도 변화된 환경에 맞게 적합한 테스팅이 이루어져야 한다.
  5. 패트리어트 미사일 방어 시스템
    미사일 방어 시스템 내부의 타이머값에서 발생한 소프트웨어 오류
    - 최대 24시간 이상 연속적으로 동작하지 않을 것이라 가정하고 개발한 것이 문제였다.
    ▷ 사고를 단순히 소프트웨어 개발자의 잘못이라고 결론내릴 수 없다.
  6. Therac-25의 오작동

소프트웨어의 오류에서 얻을 수 있는 교훈

  • 윤리적인 문제에 대한 깊은 이해와 치밀한 분석 후 소프트웨어 개발이 필요하다.
  • 사소한 실수가 막대한 피해로 이어진다. (Moris웜이 10% 컴퓨터를 buffer overflow로 감염)
  • 소프트웨어의 보안 취약점으로 인해 사고가 발생할 수 있다. (해킹, 개인정보 유출)
  • 사고 발생이 아니더라도 수익을 창출하지 못해 손실을 일으킬 수 있다.
    → 소프트웨어 프로젝트는 실패할 확률이 높다. (성공 36% Challenged 45% 실패 19%)

 

실패 사례에서 배울 수 있는 교훈을 배우고, 같은 실패를 반복하지 않고자 노력하자
필요 이상으로 소프트웨어 설계를 복잡하게 하지 말자


추가 자료 리스트

  • Wikipedia "list of software bugs"
  • Book "Software Runaways: Monumental Software Disasters" - Robert Glass (1997)
  • Article "Why Software Fails" - IEEE Spectrum (2005)
    - "Software Hall of Shame" 표 보기
  • Wikipedia "Ariane_5"
  • Article "An investigation of the Therac-25 accidents" - Leveson, IEEE Computer (1993)