
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)과 같은 새로운 표준이 등장했습니다. 특히 C11에 추가된 이러한 기능은 특히 동시성 및 공유 데이터를 다룰 때 안전하고 신뢰할 수 있는 코드를 작성하는 데 새로운 과제를 안겨주었습니다.
수정 및 부록이 없는 MISRA-C:2012는 더 이상 이러한 최신 표준의 최신 기능을 완전히 포괄할 수 없습니다. 범위를 단 4개의 C 언어 버전으로 축소하는 MISRA-C:2023으로 진입하세요: C90, C99, C11, C18입니다. C18은 C11에 비해 기능적인 변화는 미미하지만, 가이드라인이 진화하는 언어와 그 기능을 따라잡기 위해 이 업데이트는 필수적이었습니다.
MISRA-C:2023의 새로운 기능은 무엇인가요?
MISRA-C:2023의 주요 특징 중 하나는 최신 언어 구문과 그에 따른 규칙을 지원한다는 점입니다. 예를 들어, 안전한 멀티스레드 애플리케이션에 필수적인 C11에 도입된 원자 형을 생각해 보세요. 이는 여러 스레드에서 공유 변수를 안전하게 관리하는 데 도움이 됩니다. 하지만 잘못 사용하면 잠재적인 위험이 따르기 때문에 MISRA-C:2023에는 다음과 같은 업데이트된 규칙이 포함되어 있습니다:
- 규칙 9.7 원자 객체는 액세스하기 전에 적절하게 초기화되어야 합니다.
- 규칙 12.6 원자 객체의 구조체 및 공용체는 직접 액세스해서는 안 됩니다.
다음 예제는 C11에 도입된 원자형 수정자의 사용법을 보여줍니다. 그러나 앞서 언급한 규칙을 준수하지는 않습니다.
이 업데이트에 관심을 가져야 하는 이유
개발에 멀티스레딩 또는 멀티코어 시스템이 포함되는 경우 주의를 기울여야 합니다. 업계가 이러한 프로그래밍 패러다임을 수용함에 따라 C11과 C18이 제공하는 새로운 구문을 활용하는 것이 필수적이 될 것입니다. 하지만 큰 힘에는 큰 책임이 따릅니다! 최신 MISRA 가이드라인을 따르지 않으면 미묘한 버그나 정의되지 않은 동작이 코드에 도입될 위험이 있으며, 이러한 문제를 놓칠 수 있습니다.
정적 분석 도구로 해결
물론 규칙을 아는 것은 전투의 절반에 불과하며, 코드가 규칙을 준수하는지 확인하는 것도 그에 못지않게 중요합니다. 정적 분석 도구는 규칙 위반이 비용이 많이 드는 버그로 발전하기 전에 이를 잡아낼 수 있도록 도와주는 매우 유용한 도구입니다. 임베디드 개발의 선두주자인 IAR은 MISRA-C:2023을 신속하게 채택했습니다. 버전 9.60.2에 도입된 IAR 임베디드 워크벤치용 IAR C-STAT 애드온을 사용하면 이제 최신 가이드라인에 따라 코드를 검증하여 프로젝트가 규정을 준수하는지 확인할 수 있습니다.
요약
MISRA-C:2023은 안전이 중요한 분야에서 일하는 C 프로그래머에게 중요한 진전을 의미합니다. 업데이트된 가이드라인은 C 언어의 최신 기능을 다루고 있어 기능뿐만 아니라 안전하고 신뢰할 수 있으며 미래에 대비할 수 있는 코드를 작성하는 데 도움이 됩니다. 이미 MISRA-C:2012를 사용하고 있다면 지금이 바로 업그레이드하여 임베디드 프로젝트에 최신 표준을 활용할 수 있는 완벽한 시기입니다.
IAR의 C-STAT와 같은 새로운 가이드라인과 툴을 도입하면 차세대 임베디드 개발 과제를 해결할 수 있습니다.

Hiroki Akaboshi는 일본 도쿄에 있는 IAR의 선임 현장 애플리케이션 엔지니어입니다. 그는 규슈 대학에서 컴퓨터 과학 학사(1991), 석사(1993), 박사(1996) 학위를 포함한 수많은 학위를 취득했습니다. Hiroki의 학문적 초점은 주로 CPU 아키텍처와 컴파일러에 관한 것이지만, 그의 열정은 임베디드 소프트웨어 개발에 있습니다. 그는 20년 이상 그 열정을 자동차 산업의 안전과 기능성에 초점을 맞춘 광범위한 프로젝트에 집중했습니다.