콘텐츠로 건너뛰기
Home » [LDRA] MISRA C:2023 변경사항

[LDRA] MISRA C:2023 변경사항

[vc_row][vc_column][vc_column_text]

MISRA(Motor Industry Software Reliability Association)는 처음에는 자동차 시스템에서 C 언어를 사용하기 위해 만들어진 지침이었습니다. 차량 내 소프트웨어의 결함을 줄이기 위해서 만들어졌지만, 다른 산업 분야에서도 널리 채택되며 활용되고 있습니다.

2000년대에는 MISRA C가 확장되어 C++ 언어에 대한 MISRA C++이 발표되었습니다.

MISRA의 주요 목표는 고장 발생 가능성이 큰 소프트웨어의 사용을 줄이고, 소프트웨어 개발자들이 더 안전하고 신뢰할 수 있는 코드를 작성할 수 있도록 지침을 제공하는 것입니다.

그림1 [Engine Control Unit]

(출처: https://www.pngwing.com/en/free-png-soxcd)

자동차의 전자제어장치(ECU)는 차량의 엔진, 변속기, ABS, 에어백 등을 제어하는 중요한 시스템입니다.

이 시스템들은 실시간으로 작동하며, 고도의 신뢰성과 안전성이 요구됩니다. 이 때문에 MISRA C 지침을 따라 직접 메모리 접근을 최소화하고, 포인터 사용을 제한하며, 모든 조건문과 반복문에 명확한 종료 조건을 부여하는 등의 방식으로 신뢰성과 안전성을 확보합니다.

그림2 [비행 제어 시스템]

(출처: https://namu.wiki/w/%ED%94%8C%EB%9D%BC%EC%9D%B4%20%EB%B0%94%EC%9D%B4%20%EC%99%80%EC%9D%B4%EC%96%B4)

항공기 비행 제어 시스템은 항공기의 자세, 방향, 고도 등을 제어하는 매우 중요한 시스템입니다.

이 시스템은 극한의 신뢰성과 안전성을 요구하며, 소프트웨어 결함으로 인한 사고를 방지하기 위해 비행 제어 소프트웨어 개발 시, MISRA C 지침을 적용하여 오버플로우 방지, 전역 변수를 최소화하는 등 코드의 안정성을 확보합니다.

이렇게 여러 분야에서 활용되는 MISRA가 최근에 MISRA C:2023, MISRA C++:2023이 발표되었습니다.

이번 글에서는 MISRA가 2023에서는 어떤 점이 변경되고 추가되었는지 알아보겠습니다.

MISRA C 변화

그림3 [MISRA C 1998 to 2019]

MISRA C는 1998년 4월에 C 언어를 대상으로 처음 발표되었습니다. 이후 MISRA C:2004, MISRA C:2008이 발표되고 난 다음, 현재 대표적으로 사용되고 있는 MISRA C:2012가 2013년 2월에 발표되었습니다.

MISRA C:2012가 발표되고 2016년에는 새로운 보안 관련 규칙 14개가 추가된 Amendment 1, 2017년에는 문제점을 보완한 Tech.Corr.1이 나왔습니다.

이후, 2019년에 MISRA C:2012(2019)가 Amendment 1, Tech.Corr.1을 합쳐 업데이트된 형태로 발표되었습니다.

그림4 [MISRA C:2012 2019 to 2023]

MISRA C:2012(2019)는 2020년 C11/C18에 관련된 2개의 규칙이 추가된 Amendment 2가 발표되었고, 2022년에는 C11/C18에 관련된 24개의 규칙이 추가된 Amendment 3, 2023년에는 C11/C18에 관련된 22개의 규칙이 추가된 Amendment 4가 발표되었습니다.

그리고 2023년 10월에는 Amendment 1, 2, 3, 4에 추가된 규칙들이 모두 포함된 MISRA C:2023이 발표되었습니다.

MISRA C:2023에서 변경된 점

이전 버전의 지침, 개정(Amendment 4를 포함한) 및 부록들을 단일하고 포괄적인 판본으로 통합하여 준수를 쉽게 하는 것을 목적으로 MISRA C:2023이 만들어졌습니다.

MISRA C:2023에서는 규칙 수가 아래와 같이 변경되었습니다.

그림5 [MISRA C:2012와 MISRA C:2023 비교]

위에서도 언급했듯 MISRA C:2023에서는 Amendment 1, 2, 3, 4에서 추가되었던 보안 규칙 14개와 C11/C18 관련 규칙 48개가 포함되어서 총 221개의 규칙이 있습니다.

특히 중요성이 높은 Mandatory와 Required가 증가함으로써 신뢰성과 안전성을 확보하는데 더욱 도움을 줍니다.

MISRA C++ 변화

2008년에 업계에서 C++의 사용이 증가하고 있음을 캐치하여 MISRA C++:2008이 발표되었습니다. 그 이후 C++ 언어는 새 버전과 새로운 언어 기능을 도입하여 기존 기능을 변경하면서 크게 달라졌습니다.

그래서 AUTOSAR에서 MISRA C++:2008을 기반으로 하는 AUTOSAR C++14가 발표되었고, C++ 14를 대상으로 하여 개발자를 지원하기 시작했습니다.

하지만 C++ 언어의 지속적인 발전에 따라 C++ 17에 언어 기능이 추가되며 새로운 코딩 지침이 필요해졌습니다.

C++ 17을 지원하기 위해 MISRA C++ 및 AUTOSAR C++을 통합하기로 하였고 2023년 10월에 통합 및 C++ 17을 대상으로 한 MISRA C++:2023이 발표되었습니다.

 

MISRA C++:2023에서 변경된 점

MISRA C++ 및 AUTOSAR C++을 통합하여 C++ 17 언어를 지원하기 위해 만들어진 MISRA C++:2023은 아래와 같이 변경되었습니다.

그림6 [MISRA C++:2008과 MISRA C++:2023 비교]

MISRA C++:2008 에서는 110개의 Advisory와 39개의 Document, 10개의 Required로 구성되어 있는 228개의 규칙이 있었지만, MISRA C++:2023에서는 148개의 Rule과 24개의 Directive로 구성되어 있습니다.

MISRA C++:2008은 구현에만 초점을 맞추었지만, AUTOSAR는 설계, 인프라 또는 문서화와 관련된 권장 사항들도 제공하였기에 통합된 MISRA C++:2023은 코드에 너무 많은 지침과 규칙들을 제공하지 않으면서 실수를 방지하는 데 중점을 두었습니다.

최신 C++17 표준에 맞추어 새로 정비되고, 일부 규칙이 통합 또는 개선되면서 MISRA C++:2023은 2008년에 비해 규칙의 개수가 줄어들었음을 알 수 있습니다.

 

LDRA를 이용한 MISRA 검증

그림7 [LDRA MISRA C:2023 Compliance Report]

LDRA에서는 MISRA C:2023을 정적 코드 분석 및 보고 기능에 추가하여 MISRA 최신 가이드라인에 대한 지원이 가능합니다.

그림8 [LDRA MISRA Code Review Report]

MISRA C 가이드라인에서는 정적 분석 도구를 사용하여 규칙 및 지시문에 따라 코드를 검증할 것을 권장하고 있습니다. LDRA는 모든 버전의 MISRA 가이드라인을 지원하고 이를 통해 부적절한 코드를 식별하여 문서화 및 수정을 수월하게 도와주고, MISRA에서 권장하는 대로 소스 코드가 개발될 수 있게 지원합니다.

 

결론

MISRA C의 원래 목적은 자동차 소프트웨어의 안전성 확보를 위한 가이드라인이었지만 현재는 다양한 산업 분야에서의 소프트웨어 안전성에 대한 가이드라인으로 자리 잡은 상태입니다. MISRA C:2023과 MISRA C++:2023이 발표되면서 최신 가이드라인에 대한 지원도 계속해서 필요하므로, LDRA에서는 MISRA 최신 가이드라인을 반영하여 개발자를 위한 지원을 지속하고 있습니다.

 

MISRA 가이드라인 지원 및 관리 도구 LDRA

LDRA – (주)모아소프트 (moasoftware.co.kr)

관련문의 : 02-6945-2156

 

[/vc_column_text][/vc_column][/vc_row]

Send us a message!

앞선 품질, 끊임없는 도전, 정직한 기술로 함께합니다.
문의 글을 작성해 주시면, 담당자 확인 후 빠르게 연락드립니다.

대표전화: (+82)02-420-3203

FAX: (+82)02-407-3511

05770 서울특별시 송파구 오금로 422, 연암빌딩 4F~6F




FAMILY SITE

advanced-floating-content-close-btn