Home MISRA C++ 2008 가이드라인 개요
Post
Cancel

MISRA C++ 2008 가이드라인 개요

  • 안전성과 신뢰성이 요구되는 임베디드시스템에서 사용되는 MISRA C++ 2008 가이드라인을 소개한다.

소프트웨어 안전성 관점에서의 C++ 특징

  • C++은 다중 상속, 템플릿, 연산자 오버로드, 예외처리, 실행시 형 식별 등과 같은 다양한 기능을 가지고 있다. 하지만 그만큼 C++의 표준은 다른 언어보다 복잡하고 난해하기에, 오류로 이어질 가능성이 크다. 이러한 C++의 특징은 컴파일러 개발자가 C++ 표준을 잘못 해석하여 표준과 다른 방향으로 결과를 출력할 가능성이 다른 언어보다 크다.
  • C++ 표준은 언어의 정의를 명확하게 정의하지 않았다. 따라서 개발자의 예상과 다른 의도치 않은 결과를 초래할 수 있으며 이는 결함으로 이어질 수 있다. 또한 C++ 컴파일러 마다 언어 정의를 다르게 구현하여 같은 소스 코드라도 컴파일러 마다 다른 결과를 출력할 수 있기에, 개발자는 이점을 유의해야 한다.
  • C++은 실행 시간을 점검하는 기능이 부족하기에, 예기치 못한 실행 시간 에러가 발생할 수 있다. 일반적으로 산술 예외(0으로 나누기), 오버플로, 포인터 주소의 유효성 또는 잘못된 배열 참조 에러는 개발자가 직접 확인해야 한다.

MISRA C++란?

  • MISRA(Motor Industry Software Reliability Association) 자동차 산업에서 개발된 C++ 개발 가이드라인이다.
  • 안전성, 보안성, 이식성, 신뢰성이 요구되는 안전 필수 시스템(safety-critical- systems, 자동차, 우주, 항공, 국방, 철도 등) 소프트웨어 개발에서 대표적인 표준 가이드라인으로 사용되고 있다.
  • MISRA C++ 2008 가이드라인을 통하여 C++ 안전성을 검증 할 수 있다.
  • C++ 03 표준인 ISO 14882 : 2003에 정의된 대로만 사용해야 하며, 언어 확장 사용을 금지한다.
  • 총 228개의 규칙으로 구성된다.

Deviation(예외)

  • 특정 경우에 따라서 예외적으로 MISRAC C++: 2008 규칙을 위배할 수 있다.
  • 이러한 deviation은 코드나 파일로 문서화하여 기록해야 한다.
  • 규칙을 위배하는 경우 소프트웨어의 안전성에 부정적인 영향을 주지 않는다는 근거와 이에 대한 자세한 설명이 문서에 명시되어야 한다.
  • Deviation의 대부분은 입출력 작업에서 발생하며, 출력 프로세스를 다른 부분과 분리되도록 설계할 것을 권고한다.

ex) Deviation 예제
마이크로프로세서 하드웨어와의 인터페이스에 작성된 소스 코드는 언어 확장을 사용해야 하므로, MISRA C++ 2008 규칙을 위배하게 된다.

This post is licensed under CC BY 4.0 by the author.

Project Lab 7. 게시판 개발(새로운 글 표시) - 4

Project Lab 8. 게시판 개발(파일 업로드 및 다운로드) - 5

Comments powered by Disqus.

Trending Tags