엔진 관리 및 첨단 운전자 보조 시스템(ADAS)용 소프트웨어를 개발하는 대형 자동차 부품 공급업체는 C/C++ 코드베이스의 복잡성 증가에 직면했습니다. 임베디드 시스템은…
CppDepend가 기본으로 지원하는 표준은 무엇인가요? 기본 제공 규칙 세트의 적용 범위 MISRA C/MISRA C++, CWE, CERT C/CERT C++ 및 AUTOSAR C++14 — 다른 표준은 포함되지 않습니다. 이 페이지에서 언급된 다른 모든 표준(ISO 26262, DO-178C, IEC 62304, IEC 61508, JSF++ AV, NIST SSDF, ASPICE…)의 준수는 다음을 통해 시행됩니다 사용자 정의 CQLinq 규칙 프로젝트용으로 작성되며, 아키텍처 검증 및 CI 품질 게이트를 추가합니다.
사례 연구: 자동차 임베디드 시스템에서 코드 품질 및 MISRA 컴플라이언스 개선
산업: 자동차고객 프로필: 유럽 Tier-1 자동차 부품 공급업체(익명)분야: 파워트레인 및 ADAS 제어 장치용 임베디드 소프트웨어팀 규모: 3개 대륙에 걸친 약 60명의 엔지니어언어: C, C++핵심 표준: MISRA C, MISRA C++, ISO 26262
과제
엔진 관리 및 첨단 운전자 보조 시스템(ADAS)용 소프트웨어를 개발하는 대형 자동차 부품 공급업체는 C/C++ 코드베이스의 복잡성 증가에 직면했습니다. 임베디드 시스템은 MISRA 및 ISO 26262 요구 사항을 엄격히 준수해야 했지만:
수동 MISRA 컴플라이언스 검사는 시간이 많이 소요되고 팀 간에 일관성이 없었습니다.
아키텍처 계층화가 자주 위반되어 회귀 및 더 긴 디버깅 주기로 이어졌습니다.
개발자는 기술 부채와 시스템의 장기적인 유지보수성에 대한 가시성이 부족했습니다.
ISO 26262 문서 감사에는 준비에 며칠이 걸리는 임시 수동 보고가 필요했습니다.
소프트웨어 팀은 개발 속도를 늦추지 않으면서 규칙 준수를 보장하고 아키텍처 규율을 적용하며 감사까지의 시간을 단축할 수 있는 자동화된 통합 솔루션이 필요했습니다.
솔루션: CppDepend
CppDepend는 임베디드 소프트웨어 스택의 모든 중요 구성 요소에 걸쳐 정적 분석 플랫폼으로 배포되었습니다. 이 도구는 팀의 CI/CD 파이프라인에 직접 통합되었고 내부 개발 워크플로 및 안전 목표에 맞게 구성되었습니다.
사용된 주요 기능:
사용자 정의 가능한 CQLinq 규칙을 통한 MISRA C 및 C++ 적용
아키텍처 드리프트를 방지하기 위한 계층화 및 종속성 검사
조기 피드백을 위한 Jenkins 및 GitLab과의 CI 통합
기술 부채 추적 및 시각적 대시보드
병합 요청 중 비준수 코드를 차단하는 사용자 정의 품질 게이트
구현 전략
1단계: 초기 스캔에서 모듈 전반에 걸쳐 2,000건 이상의 MISRA 위반과 150건 이상의 아키텍처 규칙 위반이 발견되었습니다. "소프트 페일" 정책을 사용하여 추세를 추적하면서 팀을 점진적으로 온보딩했습니다.
2단계: 규칙은 MISRA뿐만 아니라 내부 성능, 이식성 및 보안 제약도 반영하도록 개선되었습니다.
3단계: 팀 리더가 품질 변화를 모니터링할 수 있는 대시보드가 생성되고 Jenkins 빌드에서 추세 경고가 활성화되었습니다.
4단계: CppDepend가 생성한 보고서는 감사 중 제출된 ISO 26262 문서에 직접 포함되었습니다.
12주 후 결과
지표
CppDepend 도입 전
12주 후
MISRA 위반
2,030
270
아키텍처 위반
158
27
감사 준비 시간
3~5일
< 4시간
병합 요청 재작업
높음
약 35% 감소
성과 및 이점
자동화된 컴플라이언스: 코딩 표준 적용의 85% 이상이 이제 자동화되었습니다.
더 짧은 리뷰: 수동 코드 리뷰는 이제 형식이나 구조가 아닌 로직에 집중됩니다.
감사 준비 완료: 안전 요구 사항에 맞춘 최신 메트릭 및 보고서에 즉시 액세스.
협업 개선: 시각적 종속성 그래프가 신입 엔지니어가 서브시스템 경계를 더 빨리 이해하도록 도왔습니다.
더 나은 계획: 추세 데이터와 기술 부채 메트릭으로 팀은 리팩터링 작업의 우선 순위를 전략적으로 정할 수 있었습니다.
왜 CppDepend인가?
CppDepend는 심층 코드 분석, 사용자 정의 가능한 규칙, 아키텍처 제어를 팀의 개발 워크플로에 직접 연결되는 단일 솔루션으로 결합했기 때문에 돋보였습니다. 기본적인 린터나 체커와 달리 코드베이스의 전략적 관점을 제공했으며, 이는 자동차 임베디드 소프트웨어와 같은 안전 필수적이고 긴 수명 주기 환경에서 필수적입니다.
결론
CppDepend를 개발 워크플로에 통합함으로써 이 자동차 부품 공급업체는 코딩 표준 적용, 아키텍처 관리 및 ISO 26262 감사 준비 방식을 혁신했습니다. 한때 수동적이고 시간이 많이 걸리던 프로세스가 자동화되고 측정 가능하며 일관되게 되었습니다.
CppDepend는 개발 팀이 문제를 조기에 발견하고, 리뷰 부담을 줄이며, 안전 필수 품질 표준을 대규모로 유지할 수 있게 했습니다. 그 결과 생산성이 향상되고 기술적 위험이 감소했으며, 가장 엄격한 자동차 안전 표준을 준수하면서 차세대 임베디드 차량 시스템 개발을 자신 있게 진행할 수 있었습니다.