반응형

제목: MISRA 개요(MISRA: An Overview)

저자: Paul Burden, 영국

문서유형: 화이트페이퍼( 4페이지), 2011

 

MISRA 코딩 표준에 대해 간략한 개요를 제공한 자료



MISRA (the Motor Industry Software Reliability Association)

  • MISRA는 자동차 산업에 종사하는 여러 회사의 대표들로 구성된 컨소시움
  • 자동차에서 소프트웨어 사용 증가로 인해 제기된 문제들을 살피고 임베디드 소프트웨어가 어떻게 개발되어야 하는지에 대한 안내를 제공하기 위한 목적으로 영국 정부 지원을 일부 받아 설립됨
  • 소프트웨어 엔지니어링의 다양한 측면을 다룬 문서를 꾸준히 발표해 옴. 예를 들면, IEC 61508 표준을 자동차에 특정해 해석한 “Development Guidelines for Vehicle Based Software”라는 제목의 문서가 1994년 가장 먼저 발표됨
  • 자금 지원을 받은 프로젝트가 종료된 후에는 주로 코딩 표준 개발에 집중해 옴. 워킹그룹을 구성하여 지난 수 년간 CC++ 언어에 고유한 문제에 대한 가이드라인과 일련의 문서들을 발표함


코딩 표준

  • 일관성 있는 코딩 관행(coding practices)들을 정의함으로써 가장 간단한 형태의 코딩 표준이 생성됨. 스타일 획일성이 소프트웨어 프로젝트에서 가치가 크기는 하지만 이런 이슈가 종종 개인적인 선호도의 문제이며 소프트웨어 품질의 중요한 속성들(, 신뢰성, 이식성, 유지보수성)을 다루지는 않음
  • 코딩 표준의 더 근본적인 역할은 유해한 것으로 알려진 코딩 구조물(coding constructs)을 제거하는 규칙들을 수립함으로써 프로그래밍 언어의 더 안전한 부분집합을 정의하는 것이다.
  • 코딩 규칙의 근본적인 목적은 개발자가 본질적으로 잘못된(또는 잠재적으로 위험한) 뭔가를 하는 것을 예방할 수 있도록 언어의 사용을 제한하는 것이다.


MISRA 코딩 가이드라인

MISRA-C:1998

  • MISRA에 의해 발표된 첫 코딩 가이드라인이 1998년에 등장
  • MISRA 구성원인 FordRover가 자신들의 코딩 표준을 생성하는데 도움을 달라고 PRQA에게 요청하였고, 이 작업이 MISRA-C 초판(“Guidelines for the Use of the C Language in Vehicle Based Software”)의 바탕을 형성함
  • 이 버전이 127개 코딩 규칙을 포함하고 있으며, 13년이 지난 지금도 많은 레가시 시스템의 유지보수에서 여전히 사용되고 있음


MISRA-C:2004

  • MISRA-C가 널리 도입되면서 개선과 정제가 필요한 부분이 식별되었고, 새로운 버전이 2004년에 발표됨
  • 구조가 약간 달라지고 몇몇 추가 규칙이 포함되었지만 본질적으로 오리지널 버전을 유지함
  • MISRA-C가 이제 자동차 산업 외의 분야에서도 널리 사용되게 됨에 따라 제목에 “vehicle based software”라는 용어 대신 “critical systems”이 쓰이게 됨


MISRA-C++:2008

  • 안전필수시스템(safety critical systems)을 위한 프로그래밍 언어로 C가 여전히 지배적이지만 C++의 사용도 꾸준히 증가함
  • C++의 인기에 부응하여 새로운 워킹그룹 설립되었으며, 2008년에 MISRA C++이 등장하게 됨
  • C++C보다 훨씬 더 복잡한 언어라 추가적인 이슈들을 위한 더 많은 수의 규칙(228)을 포함


MISRA Autocode

  • 시스템 개발에서 모델링 도구의 사용이 증가함. 모델로부터 코드를 자동 생성하는 것이 빠르고 유연한 프로세스(특히, 제품 개발 주기 후반에 변경을 반영하는데 있어서 이런 장점이 두드러짐)
  • 수동 코드 개발을 위해 개발된 규칙들이 자동 생성된 코드에 항상 적합하지는 않음. 따라서 MISRA가 코드 생성 도구에서 어떻게 MISRA-C:2004 규칙이 적용되어야 할지의 이슈를 다룬 추가 가이드라인을 발표함
  • 하지만 자동 생성된 코드의 품질이 온전히 코드 생성 도구의 책임만은 아니며, 해당 코드 생성의 원천인 모델의 설계도 코드 품질에 반영될 수 있음. 따라서 SimulinkTargetlink 같은 모델링 언어 적용에서의 설계/스타일 가이드라인을 제공하는 많은 문서가 발표됨


MISRA-C3

  • MISRA-C가 최신 C99 표준(ISO/IEC 9899:1999) 보다는 C90 언어 표준(ISO 9899:1990) 준수에 여전히 기반하고 있음. 컴파일러 벤더의 C99 구현이 더디며, 현재까지도 대부분의 임베디드 컴파일러가 모든 추가 기능을 위한 포괄적인 지원을 제공하지 않고 있음
  • MISRA-C:2004가 발표될 당시에 C99의 이슈를 나중으로 미루기로 하는 의사결정이 이루어졌음
  • MISRA C 워킹그룹이 이전 문서들의 개선과 C99를 다루는 가이드라인의 세 번째 버전을 거의 완성했으며, MISRA-C3의 초안 버전의 공공 검토(public review)2012년 초에 가능할 것으로 기대됨


반응형

+ Recent posts