페이지

2017년 1월 28일 토요일

역사속의 소프트웨어 오류


하늘에 떠 있던 위성과 비행기가 떨어지고
발전기와 전화국이 멈추며,
병원의 기기가 폭주한다.

그로인해 사람이 죽어 나가고 
수백억 손실이 발생하며
많은 사람들이 불편을 겪는다.

원인을 찾아보니 소프트웨어 오류였다.

무엇이 문제 였었는지 책 한 권을 다 읽은 후, 생각나는대로 한 번 기록해 본다.

--------------------------------------------------------------------------------------------------------------------------------------
- 나는, 혹은 우리는 절대 문제가 없을거라는 안일한 생각. 혹은 최대한 책임을 회피하려는 자세.

- 기존의 다른 환경에서 잘 동작 되었던 모듈이 새 환경에서도 잘 구동 되리라는 믿음.
  즉 테스트 미흡.

- 소숫점 연산 정밀도 문제. 작은 숫자라도 연산량이 크게 쌓이면,
  연산에 오차가 생겼을 경우 재앙이 발생한다.

- 데이터 송수신 간의 데이터 단위 표준 불일치에 의해 사람의 실수로 발생할 수 있는 코딩 오류.

- 0으로 나누기. 나눗셈 연산은 웬간하면 곱셈 연산으로 처리 하거나 연산 전에 제수의 0 검사 실행.

- 임베디드 환경에서 다수의 테스크 간에 발생할 수 있는 데드락.
  가급적 단일 쓰레드/프로세스로 문제를 해결해자.

- 유지보수가 불가능할 정도의 복잡한 코드. 순환 복잡도라는 개념을 참조해 보기.
  http://story.wisedog.net/sw-metric-cyclomatic-complexity-%EB%B3%B5%EC%9E%A1%EC%84%B1-%EC%A7%80%ED%91%9C/
--------------------------------------------------------------------------------------------------------------------------------------

댓글 없음:

댓글 쓰기