[기고] 코드 우선 개방형 협업 통해 자동차 SW 개발 혁신 나서야

벡터 콘스탄틴 크리스트만 제품 관리 그룹 책임자, 하트무트 회르너 개발 그룹 책임자

2025-04-29     박재현 기자
벡터 콘스탄틴 크리스트만 제품 관리 그룹 책임자(왼쪽), 하트무트 회르너 개발 그룹 책임자

[아이티데일리] 자동차 산업 내 소프트웨어(SW) 개발의 미래는 일관된 협업 방식의 정립에 달려 있다. 명확한 조직적 프레임워크와 최적화된 프로세스를 바탕으로, 코드 우선(code-first) 접근 방식과 최고 수준의 품질 요구사항을 결합한 개방형 협업이 성공적으로 구현될 수 있다.


SW 개발 분야에서의 협업

SW 개발 영역에서 코드 저장소를 중심으로 한 협업은 혁신의 중요한 원동력이다. 이 같은 소스코드 기반 협업은 종종 조직의 경계를 넘어, 심지어는 학계, 기업, 개인 간 산업 간 경계를 넘나들며 이루어진다. 이러한 협업의 조직적 틀은 종종 오픈소스 프로젝트에서 제공되곤 한다[1].

그러나 자동차 산업 내 임베디드 SW 개발은 그동안 타사와의 코드 공유, 특히 외부 기여를 자사 제품에 통합하는 데 어려움을 겪어 왔다. 이는 주로 높은 품질 기준과 공정 산출물의 추적성에 대한 요구 때문일 수 있다. 그럼에도 소스코드 기반의 협업은 자동차 SW 개발 분야에 막대한 혁신 가능성을 제공한다.


자동차 산업에서의 코드 우선 접근법의 도입

우선 개방된 환경에서의 협업 개발 방식과 자동차 산업의 폐쇄형 개발 방식을 구분하는 것이 중요하다. 오픈소스 프로젝트에서와 같이 공동 사용되는 소스코드 산출물에 대한 개방형 협업은 일반적으로 코드우선 접근 방식을 따른다. 변경사항은 소스코드 형태로 제안되며, 프로젝트 유지 관리자가 이를 긍정적으로 평가하면 프로젝트에 통합된다.

코드 우선 접근 방식은 기능을 조기에 제공하고, 고객 피드백이나 프로젝트 상황 내의 경험을 기반으로 개선해 나가는 방식이다. 이 접근 방식은 소스 코드 외의 프로세스 산출물(예: 요구사양서, 테스트 커버리지, 문서화 및 추적성)에 대해 거의 또는 전혀 요구하지 않는다. 이를 통해 자동차 산업의 특수한 프로세스에 익숙하지 않은 개발자도 소스코드에 기여할 수 있기에 광범위한 협업이 가능해진다.

반면 자동차 산업의 임베디드 SW 개발은 지금까지 ‘코드 정확성(code-right)’ 접근 방식이 지배적이었으며, 이는 V-모델[2]에 기반한다. 기능의 구현은 사전에 정의된 요구사양서를 기반으로 하며, 개발 과정에서는 출시 및 양산을 위한 요건을 완벽히 충족시키기 위해 모든 프로세스 관련 산출물이 생성된다. 각 접근 방식은 특정 상황에서 장점을 가진다(표 1 참조).

표 1

만약 자동차 SW 분야에서 코드 정확성에서 코드 우선 접근 방식으로의 전환이 이뤄진다면, 프로세스 요구사항은 여전히 고려돼야 한다. 즉 공동으로 생성된 소스코드를 바탕으로 SW 컴포넌트의 유지 관리자가 강화(hardening) 단계를 수행해 필요한 프로세스 단계를 거치고 필수적인 산출물을 생성해야 한다. 이 강화 단계는 외부 공격에 대한 시스템 강화와 유사하다 [3]. 그러나 여기에서는 보안뿐만 아니라 신뢰성과 기능 안전성까지 포함하여 보다 전체론적으로 고려된다. 이렇게 강화된 소스 코드를 기반으로 추가적인 협업 개발이 가능해진다(그림 1 참조).

그림 1

이 강화 단계는 단순한 사후 문서화가 돼서는 안 된다. 기능이 프로세스 요구사항을 충족하기 위해 대폭 재구성돼야 할 수도 있다. 따라서 코드 우선 접근 방식은 외부 기여를 통한 개발 역량 증대를 목적으로 하기보다, 외부 기여를 통한 혁신을 허용하고 이를 하류 단계에서 안전하게 확보하는 데 초점이 맞춰졌다.


코드 우선 접근 방식에 필요한 조직적 조건

코드 우선 접근 방식에 기반한 협업 개발은 다양한 조직적 프레임워크 내에서 가능하며, 예를 들어 오픈소스 프로젝트의 일환으로서 또는 오픈소스 정의(OSD)[4]와는 다른 ‘소스 가용(source-available)’ 라이선스를 기반으로 한 공개 저장소가 있다. 또는 파트너 간 폐쇄 루프 내에서 소스코드가 공동 개발되는 커뮤니티 방식이나, 회사가 선택된 고객에게 코드 저장소 접근 권한을 부여해 능동적인 참여를 유도하는 파트너 개발 방식도 존재한다.

해당 조직 모델에 따라 전체 소스코드 및 기여 코드의 사용 권한은 명확히 규정돼야 하며, 일반적인 조직 모델별 규정은 표 2에 요약돼 있다.

표 2

파트너 개발 관점에서는 협력 파트너가 자사가 상업적으로 활용할 수 없는 소스코드에 기여할 동기가 있는지의 문제도 발생할 수 있다. 이러한 상황은 고객이 자신이 사용하는 제품의 혁신을 촉진하고자 하나, 해당 제품의 상업적 활용에는 관심이 없을 경우 발생한다.


코드 우선 접근 방식을 위한 품질 및 프로세스 요건

앞서 언급했듯이, 코드 우선 접근 방식은 외부 기여를 통한 효율성 증대보다는 협업 증진에 중점을 둔다. 따라서 협력 개발자들이 최소한의 진입 장벽으로 개발을 시작할 수 있도록 프로세스는 최대한 간소화돼야 한다.

동시에 기여된 소스코드가 최대한 채택 가능해야 한다. 그래야만 강화 단계에서 해당 구현이 양산 SW에 부적합하다는 사실이 뒤늦게 밝혀지는 상황을 방지할 수 있다. 이를 위해 유지 관리자는 다음과 같은 가이드라인을 제공해야 한다.

● 구현 사전 조율: 초기에 기여자와 유지 관리자 간에 구현 내용에 대해 협의가 필요하다. 이를 통해 기능이 기존 코드에 어떻게 최적으로 통합될 수 있는지 확인할 수 있다. 새로운 컴포넌트일 경우 제품 아키텍트가 참여해야 하며, 기존 제품의 핵심 설계 개념(에러 처리, 병렬성 처리 등)의 일관된 적용이 중요하다.

● 정적 코드 분석 활용: 리팩토링 위험이 높은 프로그래밍 관행은 정적 코드 분석을 통해 방지할 수 있다. 여기서 중점은 MISRA와 같은 기준에 따른 완전한 분석이 아닌, 치명적인 메시지를 즉시 수정하는 것이다.

● 테스트 커버리지 확보: 코드 우선 개발 단계에서는 완전한 요구사양서 기반 테스트가 불가능하므로, 개발자의 경험에 따라 테스트 케이스를 생성한다. 커버리지 측정 도구가 이를 지원할 수 있으며, 기여된 코드는 리뷰 후 유지 관리자에 의해 승인되어야 한다. 이때 구현에 필요한 최적화와 같은 기술적 누락 및 프로세스적으로 누락된 산출물이나 개선점이 필요한 항목들을 함께 문서화해야 한다.

리뷰에서 식별된 기술적·프로세스 누락은 이후 강화 단계에서 해소되며(그림 1 참조), 이 단계를 마치면 모든 산출물 및 인증을 포함한 완전한 릴리즈가 가능하다. 이 방식은 A-SPICE[5] 및 ISO 26262[6]와 호환되며, 두 표준 모두 반복적 개발을 지원하고 ISO 26262는 안전성 관점이 초기부터 고려되는 한 단계적 정제를 명시적으로 허용한다.


코드 우선 인프라의 구현 사례

개발 파트너가 쉽게 접근할 수 있도록, 인프라는 클라우드 환경에서 운영된다. 이는 파트너의 로컬 환경에 관계 없이 필요한 인프라가 항상 제공되도록 보장한다. 그림 2는 이 접근 방식의 한 구현 예시를 보여준다.

그림 2

이 인프라는 코드 우선 단계에서 외부에서 접근 가능한 저장소와 강화 단계를 위해 유지 관리자만 접근하는 내부 저장소로 구성된다. 두 단계 모두에 대해 맞춤화된 연속 통합(CI) 파이프라인이 제공되며, 외부 협업자용 분기(branch)를 통해 하나의 저장소에서 공동 작업도 가능하다.

코드 우선 CI(Code-First CI) 파이프라인은 개발 파트너를 위한 빌드 및 테스트, 기본 정적 분석, 자동 문서화 생성 등을 포함하며, 빠른 반복과 효율적인 피드백을 위해 간소화돼 있다. 강화 CI(Hardening CI) 파이프라인은 정밀 분석, 보안 검사, 산출물 검증 등 완전한 릴리즈 제공을 위한 모든 프로세스를 포함하며, 견고하고 오류 없는 SW 제공을 위한 기반이 된다.

코드 우선 인프라의 핵심은 텍스트 기반 산출물의 활용이며, 이는 개발 도구의 표준화된 활용 및 결과의 추적성과 재사용성을 향상시킨다. 이로써 기민한 반복과 높은 품질 확보라는 민첩한 개발 문화를 구현할 수 있다.


소프트웨어 개발의 미래

기업 간 경계를 넘는 협업은 미래 SW 개발의 핵심 동력이다. 이러한 협업적 접근을 더욱 정착시키고 기존의 장벽을 제거하는 것이 중요하다. 명확한 조직 프레임워크와 적절한 프로세스 설계를 통해, 자동차 산업의 고품질 요구사항과 개방형 교류는 충분히 양립할 수 있다. 그 핵심은 바로 코드-우선(code-first) 인프라를 신속하고 쉽게 도입할 수 있는 개발 파이프라인의 정립에 있다.