MISRA-C:2023에서 변화된 규칙과 사용자들이 유의해야 할 점에 대해 IAR SYSTEMS JAPAN의 Hiroki Akaboshi FAE가 이야기 한다.
“MISRA-C C11·C18 新 구문 활용 必”
MISRA 무시시 미묘한 버그·정의되지 않은 동작 위험
정적 분석 도구, 버그 변하기 전 규칙 위반 포착 도움
■ MISRA-C:2023: C 개발자를 위한 안전 표준 강화
MISRA-C가 다시 진화했다. C로 안전이 중요한 시스템을 작업하고 있다면 MISRA-C:2012를 알고 있을 가능성이 높지만 MISRA-C:2023은 여러분이 알아보고 싶어할 몇 가지 중요한 변화를 제공한다.
■ MISRA-C가 진화하는 이유
MISRA-C는 C 코드를 더 안전하고, 더 안정적이며, 유지 관리하기 쉽게 만들기 위해 설계된 전 세계적으로 인정받는 코딩 지침 세트다.
MISRA-C:1998에서 시작된 이 지침은 현대 개발의 요구 사항을 충족하도록 진화했다. 그렇다면 왜 이렇게 지속적으로 진화하는 것일까.
간단한 답은 C도 진화하고 있다는 것이다. MISRA-C 지침은 프로그래밍 환경이 변화함에 따라 변경되는 C 언어의 새로운 표준을 다루도록 조정된다.
2012년에 주요 표준은 각각 1990년과 1999년에 제정된 C90과 C99 였다.
그 이후로 C11(2011) 및 C18(2018)과 같은 새로운 표준이 등장해 멀티스레딩 및 generic 표현식과 같은 강력한 기능을 제공했다.
특히 C11에서 이러한 추가 기능은 안전하고 신뢰할 수 있는 코드를 작성하는 데 새로운 과제를 제시한다. 특히 동시성과 공유 데이터를 처리할 때 그렇다.
MISRA-C:2012는 더 이상 이러한 새로운 표준의 최신 기능을 완전히 포함할 수 없었다. 범위를 C90, C99, C11 및 C18의 네 가지 C 언어 버전으로 축소한 MISRA-C:2023이 등장했다. C18은 C11에 비해 최소한의 기능적 변경을 제공하지만 이 업데이트는 지침이 진화하는 언어와 그 기능에 발맞추는 데 필수적이었다.
■ MISRA-C:2023의 새로운 기능
MISRA-C:2023의 주요 기능 중 하나는 새로운 언어 구문과 함께 제공되는 규칙에 대한 지원이다.
예를 들어 안전한 멀티스레드 애플리케이션에 필수적인 C11에 도입된 atomic 유형을 고려해 보겠다.
이러한 규칙은 여러 스레드에서 공유 변수를 안전하게 관리하는 데 도움이 된다.
그러나 잘못 사용하면 잠재적인 위험도 발생하므로 MISRA-C:2023에는 다음과 같은 업데이트된 규칙이 포함된다.
※ 규칙 9.7 atomic 객체는 액세스하기 전에 적절하게 초기화해야 함
※ 규칙 12.6 atomic 객체의 구조 및 공용체 멤버는 직접 액세스해서는 안 됨
다음 예에서는 C11에서 도입된 atomic 유형 수정자의 사용을 보여준다. 그러나 이는 이전에 언급한 규칙을 준수하지 않는다.
▲atomic 변수 규칙 위반
■ 이러한 업데이트에 관심을 가져야 하는 이유
개발에 멀티스레딩 또는 멀티코어 시스템이 포함된 경우 주의를 기울여야 한다. 업계가 이러한 프로그래밍 패러다임을 수용함에 따라 C11 및 C18에서 제공하는 새로운 구문을 활용하는 것이 필수적이 될 것이다. 이러한 기능은 매우 강력하지만, 당연히 책임도 발생한다. 최신 MISRA 지침을 따르지 않으면 코드에 미묘한 버그나 정의되지 않은 동작이 발생할 위험이 있다. 이러한 문제는 간과될 수 있다.
■ 구조에 대한 정적 분석 도구
물론 규칙을 아는 것은 절반의 전투일 뿐이다. 코드가 규칙을 준수하는지 확인하는 것도 마찬가지로 중요하다. 정적 분석 도구는 매우 귀중한 도구로, 비용이 많이 드는 버그로 변하기 전에 규칙 위반을 포착하는 데 도움이 된다.
임베디드 개발의 선두 주자로서 IAR은 MISRA-C:2023을 신속하게 채택했다.
버전 9.60.2에 도입된 IAR Embedded Workbench용 IAR C-STAT 애드온을 사용하면 이제 최신 지침에 따라 코드를 검증하여 프로젝트가 규정을 준수하는지 확인할 수 있다.
▲추가된 C-STAT 툴(MISRA-C:2023 관련)
■ MISRA-C : 2023의 프로젝트 적용을 추천
MISRA-C:2023은 안전이 중요한 분야에서 일하는 C 프로그래머에게 큰 진전을 의미한다. 업데이트된 지침은 C 언어의 최신 기능을 다루어 기능적일 뿐만 아니라 안전하고 안정적이며 미래에 대비한 코드를 작성하는 데 도움이 된다.
이미 MISRA-C:2012를 사용하고 있다면 지금이 업그레이드하고 임베디드 프로젝트에 최신 표준을 활용하기에 완벽한 시기다.
IAR의 C-STAT와 같은 새로운 가이드라인과 도구를 채택하면 차세대 임베디드 개발 과제를 해결할 수 있다.
C-STAT에 대한 자세한 정보는 아래에서 확인할 수 있다.
https://www.iar.com/products/c-stat/
※ 작성자
Hiroki Akaboshi / FAE / IAR SYSTEMS JAPAN