본문 바로가기

일상

Toyota 자동차 급발진 - Toyota Code Could Be Lethal

Toyota 자동차 급발진 사건에 대한 기사를 검색하다가 발견하였다. 나름 소프트웨어 관점에서 오류가 발생할 수 있는 여러가지 진단을 한 부분이 눈에 띈다. 얼마나 신빙성이 있는지는 모르겠다.(Barr Group 이란 곳에서 작성한 것이다.) 


ETCS(Electronic Throttle Control System)이라는 쓰로틀 제어 소프트웨어에 대하여 소프트웨어 품질을 조사해보았더니 충격적인 결과를 얻었다고 한다. 아래는 기사내용 중 SW에 해당하는 부분을 적어본 것이다. 좀더 자세한 내용은 Barr 발표자료를 참고한다.


1) 11,000 개가 넘는 전역변수를 사용함.

2) 대부분 함수들의 매우 길고 복잡하였음. 특히 쓰로틀 각도 함수의 순환 복잡도는 100 이상임.

3) 일반 상황에서도 Stack 점유율이 94% 정도였으며, 일반적인 임베디드 환경에서는 사용되지 않는 재귀호출(Recursive code)이 사용됨. 해당 사항은 MISRA에서는 금지하고 있음.

4) MISRA 코딩규칙 위반 80,000 건 이상 발견됨.

5) 중요한 Task가 죽은 상황에도 타 시스템들이 인지하지 않음. 보통의 경우 Watch Dog을 사용하여 재시작을 하곤 함.