Appia의 IT세상

MISRA AC 구성 및 몇가지 사항들 본문

Development/ETC

MISRA AC 구성 및 몇가지 사항들

Appia 2020. 1. 20. 23:17
반응형

앞서 포스팅에서 모델 기반 개발에 관련해서 포스팅을 했습니다. 실제, 모델 기반 개발(Model Based Development / Model Based Design) 유럽 선진 전장 개발 회사에서는 10 넘게 유행을 해오던 개발 방식입니다. 물론 이러한 개발 방식에 가이드라인등에 방식 또한 많이 개발 되었습니다. 대표적인 것이 MISRA C입니다. 물론 MISRA C 경우 코드 기반의 개발 방식에 적합합니다. 사람이 손으로 코딩을 하면서 행할 있는 많은 문제점들에 대해서 대비하고자, 상당히 엄격한 기준을 가지고 제약을 걸고 있습니다. Model Based Design 경우 모델링에 따라서 코드에 패턴 생성되는 방식이 달라집니다. 따라서 Model based design 몇가지 가이드 라인을 적용한 것이 MISRA AC라고 보시면 됩니다. 여기서 AC Auto Code라고 모시면 됩니다. 그럼 구조를 보시면 다음과 같습니다.

 

위의 구조는 다음과 같은 의미를 지칭합니다.

MISRA AC GMG : 일반적인 모델링에 대한 가이드라인입니다.

MISRA AC TL : TargetLink 이용 모델링 설정 옵션등에 대한 가이드라인입니다.

MISRA AC SL/SF : Simulink /Stateflow 사용시 모델링 설정 옵션에 대한 가이드라입니다.

MISRA AC AGC : Auto Code Generation 결과물에 대한 가이드라인입니다.

 

하지만, 여기에서 다음과 같은 이야기를 있습니다. 만약 MISRA AC 준수한다면, MISRA C 확인하지 않아도 될까요?

먼저 답을 드리면, " 아닙니다. "

물론 관점의 차이는 명확히 존재합니다. 모델링이 되었을 경우 당연히 좋은 코드가 나오겠지만, 코드는 모델링을 바탕으로 코드를 생성하는 툴의 매커니즘에 따라서 엄청 달라집니다. 물론, 최근에는 회사들이 기술력이 발전하고 있으므로 때론 사람보다 효율적이고, 안전한 코드를 생성하기도 합니다. 하지만, 부분들이 안전을 보장해주는 것은 아닙니다.

 

흔히 최신 MISRA C 2012 버전에 별첨에는 Auto code generation 이용 , 몇몇 항목에 대해서 Category 변경해주는 부분들을 보여줍니다. 하지만, 부분에서도 명확하게 이야기 하는 것은 Category 변경을 의미하는 것이지, 준수하지 않아도 된다고 하지 않습니다.

 

그리고 예전에 관련 MISRA AC 관련된 문의를 했던 경험상 다음과 같은 의견을 청취할 있었습니다. "MISRA AC 준수하면 당연히 MISRA C 준수할 가능성이 높아집니다. 하지만, MISRA C 100%만족할 수는 없습니다."

 

따라서, MISRA AC 설령 준수한다고 하더라도 당연히 나온 코드를 결과로 MISRA C 다시한번 확인해야 합니다. MISRA C 2004 버전에서도 간단하게 관련 Comment 있습니다. Auto Code Generation 경우에도 MISRA C 다시 확인해야 한다고 명시하고 있습니다.

 

물론, MISRA C 100% 준수하기는 매우 어려울 있습니다. 따라서, 개발 영역에서 사전에 반드시 준수해야하는 항목들에 대해서는 명확히 필요성은 있습니다. 그렇지 않을 경우 MBD 기반으로 개발하기에 매우 힘겨울 있습니다.

혹 궁금하시거나 문의 사항 있으시면 언제든지 회신 부탁드립니다. 

반응형
Comments