1강: 탄생 배경과 적용 목적
자동차 소프트웨어 개발자라면 꼭 알아야 할 코딩 표준의 시작점!
🚗 MISRA, 누구냐 넌?
"미스라(MISRA)"라는 단어, 처음 들으면 왠지 이탈리아 스포츠카 브랜드 같지만… 사실은 엄청 진지한 이름입니다.
MISRA(Motor Industry Software Reliability Association)는 1990년대 초, 영국의 자동차 업계와 정부가 협력해서 만든 조직입니다. 목적은 단 하나!
“자동차 전자제어 시스템의 소프트웨어 신뢰성을 높이자!”
그 시절, 자동차에 탑재된 전자 시스템이 급격히 복잡해지면서 C 언어 기반의 소프트웨어가 폭발적으로 늘어났습니다. 그런데 C 언어, 성능은 좋지만...
무섭게 자유롭고 방심하면 뼈를 때리는 언어입니다. 포인터, 캐스팅, 정의되지 않은 동작들(Undefined Behavior)... 말만 들어도 등골이 서늘하죠.
그래서, MISRA는 말합니다:
“우리가 C 언어를 안전하게 쓸 수 있는 가이드라인을 만들자.”
그리하여 1998년, 최초의 MISRA-C가 탄생했습니다.
🧠 MISRA-C가 왜 필요한가요?
C 언어는 그 자체로 완성형이지만, 자동차 같은 생명과 직결된 시스템에서는 매우 위험할 수 있습니다.
- 컴파일러마다 결과가 다를 수 있고
- 버퍼 오버플로우나 메모리 누수가 자주 발생하며
- 포인터 하나 잘못 쓰면 차량이 멈출 수도 있습니다(!)
MISRA-C는 바로 이런 문제를 사전에 막고, 코드를 정적으로 검증할 수 있도록 도와주는 규칙들의 모음입니다.
그리고 그 목적은 명확합니다:
✅ 안전(Safety)
✅ 신뢰성(Reliability)
✅ 예측 가능성(Predictability)
🔗 ISO 26262와 MISRA-C의 관계
여기서 중요한 질문 하나!
“우린 ISO 26262도 따르고 있는데, MISRA-C도 꼭 해야 하나요?”
정답은… 그렇습니다!
ISO 26262는 기능안전(Function Safety)을 위한 국제 표준으로, ASIL (Automotive Safety Integrity Level)에 따라 시스템의 위험도를 평가합니다.
하지만!
❗ ISO 26262는 "무엇을 해야 하는지"를 말하지, "어떻게 코드를 써야 하는지"는 알려주지 않습니다.
그래서 MISRA-C가 그 빈자리를 채웁니다.
- ISO 26262는 요구사항 수준의 안전 표준
- MISRA-C는 코드 레벨의 안전 구현 가이드라인
즉, MISRA-C는 ISO 26262의 코드 구현 파트너 같은 존재죠.
🧑💻 실무에서는 어떻게 쓰이나요?
Tier 1 부품사나 OEM에서는 대부분 MISRA-C 규정을 기반으로 다음과 같은 실무 프로세스를 운영합니다.
- ✅ MISRA-C 기반 정적 분석 도구 사용 (e.g., Polyspace, QAC, LDRA 등)
- ✅ 규칙 위반 시 Deviation 처리를 통해 정당성 확보
- ✅ 코드 리뷰 시 MISRA 위반 여부를 체크 리스트로 확인
- ✅ ISO 26262 기능안전 감사 대응을 위한 MISRA-C 컴플라이언스 문서화
🔍 요약!
- MISRA는 자동차 소프트웨어의 안전성을 높이기 위해 시작된 조직이다.
- MISRA-C는 C 언어의 위험 요소를 사전에 방지하기 위한 코딩 가이드라인이다.
- ISO 26262와는 상호 보완적인 관계로, 실무에서 함께 적용된다.
- 오늘날 대부분의 차량용 소프트웨어는 MISRA-C를 준수해야 한다.
📢 다음 회차 예고!
[2강] MISRA-C:2012의 구조와 주요 개념 이해
Rule vs Directive? Required vs Advisory?
도대체 이 규칙들은 어떻게 나뉘고, 뭘 먼저 봐야 하나요?
다음 시간에 아주 쉽게, 그러나 깊이 있게 알려드립니다!
자동차 소프트웨어, 똑똑하게 쓰고 안전하게 만듭시다! 🚘
'SW Dev. > MISRA-C' 카테고리의 다른 글
| (MISRA-C 6강) 전처리기 사용 규칙과 코드 가독성 확보 (0) | 2025.09.07 |
|---|---|
| (MISRA-C 5강) 포인터 사용 제한과 안전한 메모리 접근 (1) | 2025.08.21 |
| (MISRA-C 4강) 제어 흐름과 조건문 규칙 (4) | 2025.08.16 |
| (MISRA-C 3강) Rule Categories: 기본 문법 & 타입 안전성 규칙 (5) | 2025.08.12 |
| (MISRA-C 2강) 구조와 주요 개념 이해하기 (5) | 2025.08.08 |
