- 안전성과 신뢰성이 요구되는 임베디드시스템에서 사용되는 MISRA C 가이드라인을 소개한다.
C언어의 특징
- C언어는 가장 많이 사용하고 있는 언어 중 하나로서, C언어 컴파일러는 거의 대부분의 프로세서를 지원하고 있다.
- C언어 컴파일러는 작은 크기를 가지는 효율적인 기계어로 변환시킨다. 이는 제한된 메모리를 사용하는 임베디드시스템 소프트웨어 개발에 적합하다.
- 포인터를 통하여 직접 하드웨어 주소에 접근하고 이를 제어할 수 있다.
- C언어 표준은 언어를 명확하게 정의하지 않았다. C언어 컴파일러 마다 언어 정의를 다르게 정의할 수 있고 같은 소스 코드라도 다른 결과를 출력할 수 있기에, 이를 확인해야 한다. 따라서 개발자의 예상과 다른 의도치 않은 결과를 초래할 수 있으며 이는 결함으로 이어질 수 있다.
- C언어는 실행 시간을 점검하는 기능이 부족하기에, 예기치 못한 실행 시간 에러가 발생할 수 있다. 일반적으로 산술 예외(0으로 나누기), 오버플로, 포인터 주소의 유효성 또는 잘못된 배열 참조 에러는 개발자가 직접 확인해야 한다.
MISRA C란?
- MISRA(Motor Industry Software Reliability Association) 자동차 산업에서 개발된 C언어 개발 가이드라인이다.
- 안전성, 보안성, 이식성, 신뢰성이 요구되는 안전 필수 시스템(safety-critical- systems, 자동차, 우주, 항공, 국방, 철도 등) 소프트웨어 개발에서 대표적인 표준 가이드라인으로 사용되고 있다.
- MISRA C 2012 가이드라인과 MISRA C 2012 - Addendum 1 가이드라인을 통하여 C언어 보안 표준을 모두 검증 할 수 있다. 이는 시큐어 코딩 표준인 C Secure와 CERT C를 MISRA C 2012 가이드라인에 매핑한 MISRA C 2012 Addendum 2, 3에서 확인할 수 있다.
- MISRA C 2012: 159개 규칙, MISRA C 2012 - Addendum 1: 14개 규칙, MISRA C 2012 - Addendum 2: 2개 규칙 총 175개 규칙을 준수해야 한다.
개정 이력
- MISRA C 1998
- 127 rules / 93 required / 34 advisory
- MISRA C 2004
- 142 rules / 122 required / 20 advisory
- MISRA C 2012: 159개 규칙 제공
- 143 rules/ 16 directives, decidable/undecidable, 10 mandatory /110 required / 39 advisory, single translation unit / system
- MISRA C 2012 - Addendum 1: 14개 규칙 추가 제공
- 14 security guidelines, 13 rules / 1 directives, 6 mandatory / 8 required
- MISRA C 2012 - Addendum 2: 2개 규칙 추가 제공
- Coverage of MISRA C 2012 against ISO/IEC TS 17961:2013 ‘C Secure’
- MISRA C 2012 - Addendum 3
- Coverage of MISRA C 2012 against ‘CERT C’
- MISRA Compliance:2016
- Define what is meant by MISRA Compliance , Provide clearer guidance on the use of deviations
Comments powered by Disqus.