초보 개발자
소프트웨어의 오류와 심각한 사고 본문
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **
소프트웨어의 오류로 인한 사고
- 보잉 737 Max 8 항공기의 추락
새로 도입된 MCAS 소프트웨어 기반 안전장치 시스템의 오작동 - 자율주행 자동차의 사고
Uber - 보행자 사망 / Tesla - autopilot 소프트웨어 오류 / Waymo ( + 자동차의 급발진 사고 ) - Keyless Ignition system: 스마트키를 소지하고 있을 경우 엔진 조작이 가능한 장치
엔진 정지 버튼을 누르지 않고 떠날 경우에도 시동이 꺼지지 않는 문제
엔진 소음이 약해져 시동이 꺼지지 않은 것을 인지하지 못함 → 연료 낭비, 환경 오염, 일산화탄소 질식
▷ 소프트웨어 자체의 오류뿐 아니라 소프트웨어가 제대로 작동했을 경우에도 사고가 발생할 수 있다. - Ariane 5 폭발 사건 (1996)
Ariane 5 위성을 실은 로켓이 발사 37초만에 폭발한 사건 / 5억불 가량의 손실
항법장치의 소프트웨어 오류: 64비트 실수형 값 → 16비트 정수형 값
▷ 사소한 오류가 큰 피해를 야기한다.
▷ 소스코드를 재사용하더라도 변화된 환경에 맞게 적합한 테스팅이 이루어져야 한다. - 패트리어트 미사일 방어 시스템
미사일 방어 시스템 내부의 타이머값에서 발생한 소프트웨어 오류
- 최대 24시간 이상 연속적으로 동작하지 않을 것이라 가정하고 개발한 것이 문제였다.
▷ 사고를 단순히 소프트웨어 개발자의 잘못이라고 결론내릴 수 없다. - 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)
'컴퓨터공학 전공 > 소프트웨어공학' 카테고리의 다른 글
요구사항을 분석할 때 생길 수 있는 어려움들 (0) | 2022.10.13 |
---|---|
요구사항의 분석과 건강한 의심 (0) | 2022.10.13 |
요구사항을 체계적으로 분석하는 방법은? (0) | 2022.10.13 |
왜 소프트웨어공학을 잘 알아야 하는가? (0) | 2022.10.13 |
소프트웨어공학이란 무엇인가? (0) | 2022.10.12 |