한 선도적인 항공우주 기술 기업이 차세대 항공전자용 임베디드 소프트웨어를 개발하고 있었습니다. 이 소프트웨어는 최고 보증 수준인 DO-178C 레벨 A 안전 표준을 준수해야 했습니다…
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 품질 게이트를 추가합니다.
사례 연구: 항공우주 소프트웨어 개발에서 DO-178C 준수 및 아키텍처 제어
산업: 항공우주 및 방위고객 프로필: 글로벌 항공우주 계약업체(비공개)분야: 비행 제어 및 항법 시스템용 항공전자 소프트웨어팀 규모: 분산된 지역의 100명 이상의 엔지니어언어: C 및 C++핵심 표준: DO-178C, MISRA C/C++, JSF++ AV
과제
한 선도적인 항공우주 기술 기업이 차세대 항공전자용 임베디드 소프트웨어를 개발하고 있었습니다. 이 소프트웨어는 탑재 시스템의 최고 보증 수준인 DO-178C 레벨 A 안전 표준과 엄격한 사내 코딩 지침, 그리고 MISRA C 및 JSF++ AV.
고도의 자격을 갖춘 팀과 엄격한 V&V 프로세스에도 불구하고 다음과 같은 반복적인 과제에 직면했습니다:
아키텍처 가시성 부족: 팀은 설계 계층화 정책을 검증하고 모듈 간 의도하지 않은 종속성을 탐지하는 데 어려움을 겪었습니다.
수동 컴플라이언스 부담: MISRA와 같은 표준에 대한 코드 리뷰는 시간이 오래 걸리고 오류가 발생하기 쉬웠으며, 특히 레거시 모듈에서 그랬습니다.
긴 소프트웨어 수명 주기: 현재 프로젝트의 변경 사항은 최소 15~20년 동안 유지 관리 가능하고 안전해야 했습니다.
그들은 아키텍처 일관성을 모니터링하고 코딩 표준 준수를 보장하며 인증 문서화를 간소화할 수 있는 확장 가능한 자동화 솔루션이 필요했습니다.
솔루션: CppDepend
CppDepend는 세 가지 후보 도구로 내부 파일럿을 진행한 후 선택되었습니다. 결정 요인은 다음과 같습니다:
CQLinq를 사용하여 규칙을 사용자 정의하여 JSF++ AV 및 MISRA 해석에 맞추는 기능
팀과 시간에 걸쳐 아키텍처를 모니터링하는 시각적 종속성 그래프
장기 유지보수성 추적 지원(기술 부채, 코드 변경률, 메트릭 추세)
생산성 저하 없이 적용을 가능하게 하는 CI/CD 통합
CppDepend는 특히 구조적 커버리지와 설계 규칙 적용을 위해 검증 및 확인(V&V) 전략의 중앙 분석 엔진으로 자리 잡았습니다.
구현
1단계 – 파일럿(4주)
비행 안정화에 사용되는 레거시 항공전자 서브시스템(약 40만 LOC) 분석
1,200건 이상의 규칙 위반 탐지(대부분 숨겨진 include 체인과 의도하지 않은 계층 간 호출에서 발생)
기준 아키텍처 다이어그램 및 대시보드 생성
2단계 – 정책 정의(6주)
내부 아키텍처 및 JSF++ AV 제약을 나타내는 약 80개의 사용자 정의 CQLinq 규칙 정의
안전하지 않은 형 변환, 동적 메모리 사용 및 계층 위반에 대한 경고 생성
DO-178C 문서 구조(SOI-2 / SOI-3)에 맞게 보고서 맞춤화
3단계 – CI 통합 및 팀 역량 강화(8주)
CppDepend를 Jenkins 기반 CI 파이프라인에 통합
모든 빌드에서 컴플라이언스 보고서 및 기술 부채 메트릭 생성
개발자는 풀 리퀘스트 내에서 코드 위반에 대한 실시간 피드백을 받았습니다
3개월 후 결과
지표
CppDepend 도입 전
3개월 후
아키텍처 규칙 위반
1,220+
< 150
평균 V&V 체크리스트 완료 시간
12~14시간
< 3시간
수동 MISRA/JSF++ 검토에서 누락된 문제
흔함
거의 없음
구조적 복잡성 경고
85
21
인증 추적 보고서 생성 시간
5일 이상
< 6시간
성과 및 이점
DO-178C 지원: CppDepend는 코딩 표준, 제어 흐름 복잡성 및 아키텍처 구조의 검증을 자동화하여 목표 A-5(설계), A-6(구현), A-7(코드 표준)을 달성하는 데 도움이 되었습니다.
장기적인 코드 상태: 코드 변경률, 결합도, 부채와 같은 메트릭을 지속적으로 추적하여 팀은 인증을 위험에 빠뜨리지 않으면서 리팩터링을 더 잘 계획할 수 있었습니다.
감사 부담 감소: CppDepend가 생성한 보고서는 SOI-2 및 SOI-3 문서에 직접 사용되어 며칠간의 수작업이 제거되었습니다.
개발 속도 향상: 품질 게이트가 마련되어 개발자는 백그라운드에서 컴플라이언스를 보장하면서 기능에 집중할 수 있었습니다.
왜 CppDepend인가?
CppDepend는 정적 분석 능력뿐만 아니라 확장성과 시각화 도구로도 돋보였습니다. 모든 변경에 문서화, 추적성, 정당화가 필요한 안전 필수 영역에서 CppDepend는 소프트웨어 엔지니어링 워크플로의 필수 요소가 되었습니다.
결론
CppDepend는 이 항공우주 팀에 아키텍처 정책을 적용하고, 시간에 따라 코드 품질을 추적하며, 인증 부담을 줄이는 확장 가능하고 자동화된 방법을 제공했습니다. 코드 분석을 왼쪽으로 이동하고(shift-left) 모든 단계에서 구조와 표준을 가시화함으로써 더 안전하고 깔끔하며 인증 가능한 항공전자 소프트웨어를 구축할 수 있었습니다.