페이지 내비게이션
- 맨 위로
새로운 소프트웨어, 더 빨리 만들기
자동차 어플리케이션에 테스트 주도 개발 도입하기
디지털화, 전기화, 연결성, 자율 주행 등, 자동차 OEM 및 공급업체들은 큰 패러다임 변화의 시기에 있습니다. 더불어, 가치 사슬이 빠르게 변하고 있습니다. 기존 혁신 및 개발 프로세스는 이에 맞춰 빠르고 유연하게 유지할 수 있을까요?
현재 시장에서는 여전히 주요 자동차 브랜드의 전통적인 개발 주기를 따르고 있습니다. 그러나 점점 더 많은 사용자가 가전 분야에서 훨씬 더 빠른 혁신 속도에 익숙해지고 있습니다. 자동차 시장에서도 생존을 위해서 앞으로 다가올 미래에 빠르게 대응하고 준비해야 합니다.
소프트웨어가 제품 차별화에 점점 더 중요해짐에 따라 소프트웨어 개발도 자동차 세계에서 핵심 역량이 되고 있습니다. 소프트웨어가 발전함에 따라 TDD (Test-driven development)와 같은 민첩한 개발 방법도 자동차 산업에 쏟아져 나오고 있어 도전과제를 부여하는 동시에 변화에 대응할 수 있는 기회를 제공합니다.
테스트 기반 개발
비용 절감 및 향상된 코드 품질
테스트 기반 개발은 주로 프로그램 코드가 작성되기 전에 테스트를 작성한다는 점에서 테스트에 대한 기존 접근 방식과 다릅니다. 따라서 개발자는 코드 디자인이 아닌 요구사항 및 인터페이스를 기반으로 테스트 케이스를 생각해야 합니다.
TDD를 배포하면 개발 비용 절감, 고품질 소프트웨어 및 출시 기간 단축 등 프로젝트에 여러 가지 이점이 있습니다. 헬싱키 대학(University of Helsinki)이 수행한 자세한 분석에서 TDD의 효과는 여러 소프트웨어 개발 범주에서 확인되었으며 (그림 1) 전통적인 방법과 비교하여 TDD의 효과가 입증되었습니다. [1]
결과적으로, 소프트웨어 개발의 확장을 가능하게 하고 비용을 낮추고 품질을 높이는 소프트웨어 개발 방법론이 중요합니다. 이 문제는 TDD를 사용하여 해결할 수 있습니다.
가상 물리 시스템
복잡한 시스템을 관리가능한 요소로 분해하기
차량에 사용되는 최신 시스템은 일종의 기능적 활동을 수행할 뿐만 아니라 인터넷에도 연결되어 있기 때문에 종종 가상 물리 시스템(Cyber-Physicla System, CPS)이라고합니다. 이를 통해 OTA (Over-the-Air) 소프트웨어 업데이트, 유지 보수를 위한 차량 진단 연결 및 현장 데이터를 기반으로 한 컴포넌트의 R & D 향상이 가능합니다. 따라서 제어 시스템은 시스템의 소프트웨어 측면을 캡슐화한 것으로 간주 할 수 있으며 특정 기능은 더 큰 서브 시스템 컴포넌트와 분해된 더 작은 소프트웨어 컴포넌트(Software Component, SWC)로 나뉩니다.
소프트웨어의 설계 및 개발에 대한 이러한 구조적 접근 방식은 모델 기반 설계(model-based design)와 같은 기존의 소프트웨어 엔지니어링 방식과 비교할 수 있습니다. 자동차 공간의 크기와 무게에 대한 고려와 안전 및 보안 요구사항이 증가하여 OEM의 요구사항에 따라 전체 CPS 및 해당 서브 시스템이 더 작은 SWC로 분리되거나 하나의 통합 시스템으로 분류됩니다.
CPS에서 CPS로의 아키텍처 모델의 끊임없는 변화는 새로운 아키텍처 모델을 설계, 반복 및 게시하는데 툴 사용이 정확하고 빠르고 효율적으로 하는 데에 중요하다는 것을 의미합니다.
자동차 업계에서 이러한 소프트웨어 아키텍처 설계 표준은 AUTOSAR입니다. 벡터는 소프트웨어 아키텍처 설계를 위한 툴인 DaVinci Developer 및 PREEvision을 제공합니다. DaVinci Developer는 AUTOSAR 소프트웨어 구성 요소 설계에 중점을 두고 있지만 PREEvision은 CAN 및 Ethernet과 같은 통신 버스를 포함한 전체 시스템 설계의 일부로 소프트웨어 아키텍처를 설계할 수 있습니다. 소프트웨어 컴포넌트의 코드 기반 개발을 위해 생성된 헤더 파일 및 구현 템플릿을 시작점으로 사용할 수 있습니다.
툴에서 생성되는 제품들을 살펴보자면, 우리가 요구사항에서부터 TDD 프로세스를 따르도록 합니다. TDD 방법론은 프로그래머가 소프트웨어 프로젝트를 위해 각 코드를 작성하기 전에 전체적인 테스트 생성을 고려합니다. 애자일(Agile) 프레임워크에서와 같이 테스트 중심 개발을 위해서는 프로젝트를 작은 반복으로 나눠야 하며, 각 반복별로 결과를 생성합니다.
테스트 중심의 접근 방식을 사용할 때 특정 기능이나 컴포넌트를 다루는 개발자는 작성하려는 코드의 요구사항을 확인하는 자동화된 테스트를 만드는 것으로 시작합니다. 이 테스트는 해당 기능 또는 컴포넌트에 대한 사전정의된 스펙 및 요구사항을 기반으로 합니다.
기능이 아직 생성되지 않아서 처음에는 프로그램이 테스트에 실패합니다. 그런 다음 개발자는 테스트를 통과할 코드를 작성합니다. 성공하면 코드를 "정리"하여 코드가 테스트를 계속 통과하는 방식으로 작업할 수 있습니다.
CPS 개발
vTESTstudio와 CANoe로 TDD 개발
vTESTstudio와 CANoe는 임베디드 시스템에 대한 테스트 개발을 위한 다각적이고 통합된 작업 환경을 구축합니다. CPS의 서비스 계층 또는 API를 테스트하도록 환경을 구성할 때 PREEvision 또는 DaVinci Developer의 AUTOSAR SWC 디스크립션으로 연결하면 됩니다. 이를 통해 CPS SWC의 공용 인터페이스로 입력하기 위해 필요한 모든 데이터가 툴에 제공됩니다. 그런 다음 vTESTstudio를 통해 테스터는 외부 포트의 동작 (예: 인터페이스의 입력 및 예상 출력 메시지)을 모델링 한 다음 CANoe에서 테스트를 자동화된 방식으로 실행할 수 있습니다.
vTESTstudio와 CANoe로 새로운 기능이 추가되면 SWC가 모든 요구사항을 충족하기 위해 진행 중이고 기존 기능이 손실되지 않았음을 확인하기 위해 테스트를 다시 실행할 수 있습니다. 새로운 코드가 추가될 때 SWC의 동작이 존재하지 않는 다른 기능에 의존하는 경우, CANoe를 사용하여 시뮬레이션하고 부서 또는 공급 업체에 SWC의 개발을 병렬화 및 배포할 수 있습니다. 인터페이스는 PREEvision에 의해 공식적으로 합의한 설계에 따라 자동으로 생성됩니다.
결론
소프트웨어로 정의되는 차량에 대한 추세가 증가함에 따라 TDD와 같은 프로세스는 이러한 시스템의 개발 비용 절감을 위해 중요합니다. 컨셉에서 전체 시스템 모델링에 이르기까지 자동화된 워크플로우를 생성한 다음 소프트웨어 컴포넌트들로 분해함으로써 자동화된 재사용 가능한 프로세스에서 서비스 및 단위 계층에 대한 API를 정의할 수 있습니다.
이 기능을 사용하면 테스트할 코드 없이 VectorCAST 및 vTESTstudio/CANoe와 같은 툴을 사용하여 요구사항을 기반으로 테스트 케이스 사양 및 구성을 시작할 수 있습니다. 서비스 계층 및 헤더 파일에 대한 AUTOSAR 시스템 디스크립션을 통해 제공하는 API 만 단위 층을 위해 필요합니다. 이러한 툴은 결과의 정확성 자동 측정, 테스트 사례의 자동 분석 및 실행에도 사용할 수 있으므로 지속적인 통합 및 테스트 워크플로우에 적합합니다. 소프트웨어 업데이트 때마다 구현의 정확성을 통해 설계 사양에 대한 완전 자동화된 프로세스가 가능합니다.
참조:
[1] Mäkinen, Simo; Münch, Jürgen: Effects of Test-Driven Development : A Comparative Analysis of Empirical Studies. January 14 - 16, 2014. https://helda.helsinki.fi/handle/10138/42741
[2] Aaron Aboagye, Russell Hensley, Asutosh Padhi and Danish Shafi: Facing digital disruption in mobility as a traditional auto player. December 2017. https://www.mckinsey.com/industries/automotive-and-assembly/our-insights/facing-digital-disruption-in-mobility-as-a-traditional-auto-player
[1] Wikipedia (2019): Mission logo for Voyager Program, [online] https://de.wikipedia.org/wiki/Datei:Voyager_-_mission_logo.png
[2] Jet Propulsion Laboratory, Pasadena, California: Voyager 1 Fires Up Thrusters After 37 Years. December 01, 2017. https://www.jpl.nasa.gov/news/news.php?feature=7014