사양 우선 개발 방식은 특히 모델링과 구현이 밀접하게 연결되어 있을 때 반복 개발 속도를 늦추는 경우가 많습니다. Vector Application Framework는 데이터 중심의 추상화 계층을 도입하여 이러한 순서를 분리함으로써, 시스템 모델과 독립적으로 개발을 시작할 수 있게 합니다.
완전히 텍스트 기반의 워크플로우, 명령 라인 인터페이스 자동화 및 원활한 VS Code 통합을 통해 팀은 일관성을 유지하면서도 더 유연하게 작업할 수 있습니다. 기존 사양은 그대로 활용할 수 있으며, 전체 프로세스를 다시 작업할 필요 없이 프로덕션 환경으로의 통합이 보장됩니다.
도전 과제
사양 중심의 소프트웨어 개발은 자동차 프로젝트에서 흔히 사용되는 접근 방식입니다. 이 프로세스는 순차적인 워크플로우 형태로 구성된 여러 단계를 거칩니다. 먼저, 텍스트 형식이나 그래픽 도구를 활용하여 시스템과 그 구성 요소에 대한 상세한 모델을 생성합니다. 어떤 경우든, 결과로 도출된 사양은 XML이나 JSON과 같은 텍스트 형식으로 내보내집니다. 그런 다음 이 데이터베이스를 생성기가 활용하여 모델링된 시스템에 맞춤화된 소스 코드를 생성합니다. 마지막으로, 프로그래머들은 이 코드베이스를 자신의 프로젝트에 포함시키고, 생성된 클래스와 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 요구사항에 따라 필요한 기능을 사용합니다.


이 워크플로우를 반복적으로 수행할 수는 있지만, ‘사양 우선’ 접근 방식의 경우 시스템 모델이 갱신되면 전체 순서를 다시 실행해야 합니다. 특히 모델링과 개발 업무가 서로 다른 팀이나 조직에 분담되어 있는 경우 이는 큰 문제가 됩니다. 협력을 체계화하기 위한 프로세스를 마련해야 하며, 사양이 사소하게 변경되더라도 상당한 처리 시간이 소요됩니다. 소프트웨어 개발자들에게는 애자일 방식의 업무 수행이 거의 불가능합니다.
해결책
AUTOSAR Adaptive 미들웨어를 사용하는 마이크로컨트롤러 기반 ECU 프로젝트는 이러한 패턴을 따르기 때문에 앞서 언급한 과제에 직면하게 됩니다. 그러나 Vector Application Framework는 이에 대한 간편한 해결책을 제공합니다. 이 프레임워크는 추상화를 통해 시스템 모델과 소프트웨어 개발 간의 강한 의존성을 줄여줍니다. 개발자는 시스템 모델에서 파생된 미들웨어 인터페이스를 직접 다루는 대신, 데이터 중심의 추상화 계층을 유일한 접점으로 활용합니다.
해당 애플리케이션 체계 API는 데이터 처리 및 교환을 위한 두 가지 기본 패턴을 다룹니다. 데이터 요소는 발행 구독(pub/sub) 메시징 방식을 모방하며, 데이터를 영구적으로 저장할 수 있는 수단을 제공합니다. 연산(Operation)은 원격 프로시저 호출(RPC)을 나타냅니다. 이러한 기본 패턴들은 인터페이스별로 그룹화되어 체계 사용자를 위한 기본 환경을 설정합니다.
이 핵심 구성은 실행 파일을 위한 모듈식 소프트웨어 아키텍처와 결합되어 서로 다른 팀들이 독립적으로 작업할 수 있도록 지원합니다. 그럼에도 불구하고, Vector Application Framework 워크플로는 개별 구성 요소들을 통합할 수 있는 경로를 제공합니다. 기존 모델 아티팩트를 애플리케이션 개발의 출발점으로 사용할 수 있습니다. 해당 아티팩트가 없거나 불완전한 경우, 프로젝트를 적절히 구성하고 수정할 수 있는 ‘코드 기반 구성(Configuration as Code)’ 솔루션이 포함됩니다. 이는 앞서 설명한 순차적 작업 방식을 탈피함으로써 상당한 유연성을 제공합니다. 포함된 명령행 도구는 모든 워크플로 단계를 자동화하고 CI 통합을 용이하게 합니다. 또한 소프트웨어 개발자에게는 Visual Studio Code 확장 프로그램이 제공됩니다. 좋은 소식은 전체 개발 프로세스가 IDE 내에서 처리되므로 더 이상 도구를 전환할 필요가 없다는 점입니다.


미들웨어 추상화 모듈은 대상 시스템과의 통합을 용이하게 합니다. 이러한 모듈은 미들웨어를 Vector Application Framework API에 매핑하고, 그 반대의 매핑도 수행합니다. 다양한 미들웨어 스택에 대한 추상화 모듈을 구현할 수 있으며, 이를 혼합 통합 프로젝트 및 실행 파일에서 결합할 수 있습니다. 기존 애플리케이션 모듈은 영향을 받지 않으므로 수정할 필요가 없습니다.
제어 모듈은 실행 파일 수준에서 모듈식 소프트웨어 아키텍처를 완성하며, 소프트웨어 개발 팀이 흔히 ‘보일러플레이트’라고 불리는 통합 코드의 구현 및 유지보수 부담을 덜어줍니다.
요약하자면, Vector Application Framework는 마이크로컨트롤러 기반 ECU를 위한 모델 주도형 소프트웨어 프로젝트에서 민첩한 협업을 가능하게 하는 현대적인 체계입니다. 이 체계의 통합적인 워크플로는 독립성과 긴밀한 통합을 모두 아우르며, 자동차 산업의 OEM 및 공급자들의 요구 사항을 충족시킵니다.
장점
- 모듈형 소프트웨어 아키텍처: 애플리케이션 모듈을 통해 개발자는 비즈니스 로직에 집중할 수 있습니다.
- 신속한 프로토타이핑. 프로젝트 템플릿과 상용구 생성을 통해 개발자의 부담을 덜어주고 신속한 업무 적응을 가능하게 합니다.
- 텍스트 기반 사용자 경험. 워크플로우 전반을 아우르는 명령 라인 인터페이스(CLI)와 ‘코드화된 구성(Configuration as Code)’을 지원합니다. CI 통합이나 AI agent 도입이 가능합니다.
- 포괄적이고 데이터 중심의 API. 자동차 업계 용어를 배제하여 접근성이 뛰어나고 학습 곡선이 낮습니다.
- 오픈 소스 덕분에 잠금 현상이 발생하지 않습니다. 핵심 체계는 Eclipse Automotive API Framework 프로젝트를 통해 공개되어 있습니다.
- 전체 테스트 과정: 여기에는 생성된 모의 객체(mocks) 및 테스트 스텁(test stubs)을 활용한 초기 단위 테스트는 물론, SIL 테스트 및 사전 통합 테스트가 포함됩니다.
- 이 솔루션은 미들웨어에 구애받지 않습니다. 이를 통해 컨텍스트와 독립적으로 개발할 수 있으며, 공급자의 기성 소프트웨어 도입을 지원합니다.
- 유연한 통합을 가능하게 합니다. 이는 미들웨어 추상화 모듈을 통해 실현됩니다. 사전 통합은 공급자에서 이루어지며, 최종 통합은 OEM에서 이루어집니다.

