자율주행 인공지능 개발을 위한 소프트웨어 시스템 엔지니어링 프로세스와 도구
초록
본 논문은 2007년 DARPA Urban Challenge 참가를 목표로 한 자율주행 자동차 프로젝트에서, 다양한 전공과 경험을 가진 팀원들이 효율적으로 협업할 수 있도록 설계된 소프트웨어·시스템 엔지니어링 프로세스와 이를 지원하는 도구들을 제시한다. 핵심은 테스트 우선 접근, 지속적 통합, 체계적인 릴리즈·구성 관리이며, 특히 도시 환경을 모사한 유연하고 모듈식 시뮬레이터를 활용해 개발된 인공지능의 행동을 빠르게 검증하는 것이 강조된다.
상세 분석
이 논문은 대규모 이기종 팀이 복합적인 자율주행 시스템을 개발할 때 직면하는 조직·기술적 난관을 해결하기 위한 종합적인 프로세스 모델을 제시한다. 첫 번째 핵심은 ‘테스트 퍼스트’ 원칙으로, 요구사항 정의 단계부터 자동화된 단위·통합·시뮬레이션 테스트를 설계하고, 이를 CI(Continuous Integration) 서버와 연동해 코드 커밋 시마다 즉시 검증한다. 이렇게 하면 회귀 버그를 조기에 발견하고, 팀원 간 인터페이스 변경에 대한 가시성을 확보한다. 두 번째는 ‘지속적 통합’ 파이프라인이다. 각 모듈은 독립적인 레포지토리와 빌드 스크립트를 갖지만, 공통 라이브러리와 인터페이스 정의는 중앙 관리한다. 빌드 자동화 도구와 버전 관리 시스템(Git, Subversion 등)을 활용해 매일 밤 전체 시스템을 빌드하고, 시뮬레이터 기반 시나리오 테스트를 실행한다. 세 번째는 ‘신뢰성 있는 릴리즈·구성 관리’이다. 릴리즈는 기능 단위가 아닌 ‘스프린트 마일스톤’ 기반으로 정의되며, 각 마일스톤마다 명시적인 구성 파일과 의존성 그래프를 생성한다. 이를 통해 특정 버전의 소프트웨어와 하드웨어 매개변수를 정확히 재현할 수 있다. 네 번째이자 가장 독창적인 요소는 ‘모듈식 도시 시뮬레이터’이다. 시뮬레이터는 교통 신호, 보행자, 차량, 도로 네트워크 등을 플러그인 형태로 제공하며, 시나리오 스크립트를 통해 복잡한 교차로와 비상 상황을 손쉽게 구성한다. 시뮬레이션 결과는 로그와 시각화 도구로 자동 수집돼, 테스트 자동화 프레임워크와 연동된다. 이러한 구조는 실제 차량 실험에 앞서 수천 번의 가상 주행을 가능하게 하여, 위험을 최소화하고 개발 속도를 크게 높인다. 논문은 또한 도구 체인(IDE, 버전 관리, CI 서버, 시뮬레이터) 간의 인터페이스 표준화를 강조하며, 팀원들이 동일한 작업 흐름을 따르게 함으로써 지식 전이와 신규 인력 온보딩을 용이하게 만든다. 전체적으로 이 프로세스는 애자일 방법론과 전통적인 시스템 엔지니어링을 융합해, 복합 시스템 개발에 필요한 엄격함과 유연성을 동시에 제공한다.