제목: 자동차 소프트웨어의 독립적인 검증 및 확인(Independent Verification and Validation of Automotive Software)
저자: Rovsing, 덴마크
문서유형: 테스팅 서비스 업체 브로셔(총 16페이지), Industry
테스팅 서비스 제공 업체인 Rovsing의 자동차 소프트웨어를 위한 독립적인 검증 및 확인 서비스(IV&V services)에 대하여 기술한 자료
자동차 산업에서의 소프트웨어
- 자동차 산업에서 소프트웨어 규모 증가 추세: 고성능 자동차에서 소프트웨어 볼륨이 매 4년 마다 10배로 늘어남(아래 그림)
- 현재 ECU 개발 비용의 50%~70%가 소프트웨어와 관련됨
- 자동차 시스템 복잡성 증가: 오늘날 고성능 자동차는 70개 이상의 분산된 마이크로컨트롤러(microcontrollers)를 포함하고 있으며, 100 메가바이트의 코드와 5개 이상의 별개 커뮤니케이션 네트워크를 가진다. 또한 매 초마다 수천 개의 데이터 및 통제 신호를 실시간으로 교환하고 CAN, LIN, FlexRay, MOST와 같은 자동차 내 네트워크가 분산되어 있는 센서(sensors), 액츄에이터(actuators), 디스플레이, 프로세서들을 연결한다.
자동차 소프트웨어 결함
- 다양한 분야에서 개발된 소프트웨어의 연구에 따르면 프로그래밍 언어와 상관없이 일반 코드에는 1000 라인마다 1개의 에러가 있고(숨은 에러) 높은 안전성이 요구되는 소프트웨어(critical software)에는 10,000라인마다 하나의 에러가 있는 것으로 추정된다.
- 자동차 산업은 매년 약 20~30억 유로(3조~4조5천억원)를 소프트웨어 문제를 해결하는데 지출한다(아래 표는 자동차 소프트웨어 관련 리콜 사례).
- 2007년도 62,369대 리콜: 안티락 브레이크 시스템(ABS) 통제 모듈의 소프트웨어가 특정 브레이킹 조건에서 뒷쪽 브레이크(rear brakes)를 잠그는 문제 초래. 이 에러로 인해 자동차가 통제를 잃고 사고로 이어짐. 문제 해결을 위해 ABS ECU를 다시 프로그램함 - 2006년 5,902대 리콜: 낮은 배터리 전압 조건에서 에어백 통제 유닛이 잘못으로 장애 증상 부호(a fault code)를 세팅하여 승객 좌석의 전면 에어백을 작동 안 하도록 만듬. 결국 충돌 시에도 에어백이 터지지 않는 문제 발생. 문제 해결을 위해 에어백 통제 모듈 소프트웨어를 업데이트함 - 2006년도 127,928대 리콜: 연료 펌프 모듈과 동력전달장치 통제 모듈의(PCM)의 소프트웨어가 특정 운영 환경에서 엔진을 멈추게 만듬. 동력전달장치 통제 모듈을 다시 프로그램함 - 2006년도 2,333대 리콜: 차가 40mph 이상으로 움직이고 기어를 드라이브에서 중립으로 바꾸거나 또는 백에서 드라이브로 변경할 때 동력전달장치(powertrain) 통제 모듈의 소프트웨어가 바퀴의 일시적인 잠금 현상을 초래. 동력전달장치 통제 모듈을 다시 프로그램함 - 2005년도 160,000대 리콜: 소프트웨어 결함으로 하이브리드 자동차의 가솔린 엔진이 의도치 않게 정지됨 - 2004년도 68,000대 리콜: 컨트롤러가 트랜스미션오일(transmission-oil) 압력이 크게 낮아진 걸 감지하면 의도하지 않게 후진 기어(reverse gear)를 선택하는 시스템 결함 - 1999년도 3,500,000대 리콜: 소프트웨어 결함으로 차의 정지 거리가 15미터에서 20미터로 늘어남. 11,000건의 고객 불만과 2,111건의 사고, 293건의 상해 발생 |
독립적인 검증 및 확인(Independent Software Verification and Validation: IV&V)
- 소프트웨어 품질 보증 프로그램의 일환인 IV&V는 기술적으로, 재정적으로, 관리적으로 소프트웨어 개발을 책임지는 조직과 분리된 별개의 조직에 의해 소프트웨어의 검증 및 확인(Verification and Validation)을 하는 것을 말한다.
- 개발 조직에 종속적인 소프트웨어 테스팅은 그 목적이 소프트웨어가 작동한다는 것을 증명하는 것에 치중하는 반면 독립적인 소프트웨어 테스팅은 숨은 에러(residual errors)를 찾아내는데 목적이 있다.
- 우주, 국방, 항공, 철도, 원자력 산업 분야의 소프트웨어(즉, safety-critical software)는 인증을 위해서 IV&V가 의무적이다.
- 자동차 산업에 적용되는 소프트웨어 엔지니어링 표준인 CMMI, IEC-15504, IEC-61508, ISO-26262도 소프트웨어 시스템의 최종 품질을 올리는 수단으로 IV&V 수행을 요구한다.
IV&V의 원칙
- 관심사의 분리(Separation of concerns): 개발자의 V&V와 독립적인 동시에 보완하는 역할을 해야 한다.
- 고객에 의한 범위 결정(Customer defines the scope): IV&V의 범위와 예산은 고객이 결정해야 한다.
- 초기 단계에 관여(Earlier is better): IV&V가 프로젝트 초반에 관여할수록 좋다.
- 개발 완성도(Reasonably mature product): IV&V를 위해 주어지는 산출물 및 코드는 충분한 완성도를 가져야 한다.
- 프로세스 유연성(IV&V is process flexible): 소프트웨어 개발 프로세스에 맞추어 IV&V를 조정해야 한다.
- 투자수익(Return on Investment): 소프트웨어 장애에 따른 비용이 클수록 IV&V의 투자수익도 높아진다. 일반적으로 IV&V의 ROI는 투자의 1.5배~10배 이다.
- 숙련자의 참여(Experienced people): IV&V는 소프트웨어 개발, 테스팅, 품질 보증의 경험이 있는 전문가에 의해 수행되어야 한다.
Rovsing의 IV&V 서비스
- 1992년 설립된 Rovsing은 높은 안정성이 요구되는 safety-critical 임베디드 소프트웨어의 IV&V 서비스를 제공한다. Rovsing의 IV&V 서비스는 품질 향상 및 ROI 최대화를 위해 소프트웨어 개발 프로세스의 모든 단계에서 적용 가능하도록 설계되었다.
- 유럽 우주 기구(European Space Agency)의 ATV(Automated Transfer Vehicle) 시스템의 IV&V를 최근 완료함(ATV는 우주 정거장에 물자를 전달하는 고도의 자동화된 무인 우주선으로서 거의 백만 라인의 소프트웨어 코드를 포함)
- CAIM(Critical Areas Identification Method)와 같은 고유의 IV&V 방법들을 개발함. CAIM은 문제를 일으킬 가능성이 높아서 집중적인 관리와 위험 완화정책이 필요한 소프트웨어 설계 및 코드 세그먼트를 식별하는 방법이다. CAIM은 소프트웨어의 개념적 모델과 주변 환경에 SFMECA(Software Failure Mode Effects and Criticality Analysis) 기법을 적용하여 컴포넌트의 장애 모드(the failure modes)를 식별하고 그 영향을 분석한다. 모든 영향이 치명적(critical) 또는 비치명적(non-critical)으로 분류되고, 특정 장애 모드가 치명적인 영향을 미칠 수 있으면 그 장애 모드가 발생하는 소프트웨어 컴포넌트는 주요 관심 영역(a critical area)이 된다. 즉, Criticality Analysis를 통해 IV&V의 노력이 적절한 영역에 집중되도록 가이드 한다.
- 자동차 산업에서는 자동 코드 생성(Automatic Code Generation)을 지원하는 모델 기반 소프트웨어 개발 방법이 널리 사용된다. 따라서 Rovsing은 모델 기반 소프트웨어 개발을 하는 프로젝트의 IV&V 서비스를 제공할 수 있는 고유의 평가 프로세스(assessment process)를 개발하였다.
- ECU를 위한 테스트 플랫폼인 SVF(Software Validation Facility) 개발. SVF는 시장에 나온 표준 테스트 도구들보다 더 강력한 기능을 제공하고 테스트를 위해 정상적이거나 또는 비정상적인 운영 조건을 만들어 준다. 예를 들면, 메모리 에러, 비트 플립(bit flips), 센서 고장, 액츄에이터 고장(actuator failures), 커뮤니케이션 에러, 버퍼 오버로드(buffer overloads), 인터럽트 도착 간격 에러(interrupt inter arrival errors), 네트워크 오버로드(network overloads), 데드라인 준수 실패(missed deadlines), 스케쥴링 실패, 비정상적 이벤트 발생 순서(abnormal event sequences), 예상치 못한 리셋(unexpected resets) 등이 있다. SVF는 테스트 시나리오 실행과 테스트 결과 캡쳐를 자동화한다.
'산업종류별 > 자동차' 카테고리의 다른 글
페이퍼요약 – 자동차 소프트웨어 플랫폼 AUTOSAR와 마이크로컨트롤러 드라이버 MCAL (0) | 2017.12.13 |
---|---|
페이퍼요약 - 임베디드 시스템의 분류 트리 테스팅 방법 CTM/ES by Conrad (0) | 2017.12.07 |
MISRA-C++ 기본 개념 정리 (0) | 2017.12.05 |
MISRA-C 기본 개념 정리 (0) | 2017.12.01 |
문서요약 - 자동차 SPICE의 프로세스 참조 모델 by Automotive SIG (0) | 2017.11.27 |