기술 칼럼

모델 기반 설계를 사용한 DO-178B에 따르는 고-무결성(High-Integrity) 항공기 접근 시스템 개발

작성자: Jan D'Espallier, Septentrio


시야가 확보되지 않은 상황에서, 조종사는 비행기를 착륙시키기 위하여 종종 지상 기반 계기 착륙 시스템(ILS: ground-based instrument landing systems)에 의존합니다. 글로벌 네비게이션 위성 시스템(GNSS: Global navigation satellite system)과 위성 기반 오차 보정 시스템(SBAS: satellite-based augmentation system) 기술은 ILS 사용이 불가능한 장소에서 신뢰성 높고 정확하며 비용 효율적인 대안을 제공합니다. GNSS 기반의 착륙 시스템은 ILS와는 달리 길고 곧은 하강 주로를 필요로 하지 않기 때문에 종종 활주로 수용력을 높여 줍니다.

Septentrio의 AiRx2 OEM은 정밀 항공 응용 분야를 위한 GNSS 및 SBAS 수신기입니다. AiRx2는 수직 유도 정보가 제공되는 로컬라이저 항행 성능(LPV: localizer performance with vertical guidance)과 경로 탐색을 제공하는 활주로 진입을 지원할 뿐만 아니라, 비행 감시 응용 분야에 사용될 수 있습니다.

AiRx2는 고-무결성 항공기 시스템으로서, DO-178B 표준의 엄격한 개발 및 검증 요구 사항을 충족해야 합니다. 모델 기반 설계는 요구 사항을 추적하고, 시뮬레이션을 통해 설계를 검증하고, 개발 전반에서 단일 소스로서 시스템 모델을 유지 관리함으로써 인증 절차를 가능하게 합니다.

우리는 설계 대안들을 신속히 프로토타입화하고 프로그래머가 이를 코드화할 때까지 기다릴 필요 없이 설계 대안들을 평가합니다. 이러한 접근 방식은 최적 설계를 찾는 것을 가능하게 할 뿐만 아니라 개발 초기 단계에서 설계를 검증하도록 해줍니다. 시뮬레이션을 통해 모델을 검증했기 때문에, 결과적으로 가상으로 버그가 없는 코드를 생성합니다.

DO-178B 작업 흐름과 요구 사항

항공 시스템 소프트웨어와 장비 인증인 DO-178B는 Septentrio의 AiRx2의 소프트웨어와 같은 고 무결성 항공 전자 장비 시스템 소프트웨어를 인증하는 데 사용되는 DO-178 국제 안전 표준의 현재 버전입니다. RTCA에 의해 게시된 DO-178B는 조직이 자신들이 개발한 소프트웨어에 대한 FAA 승인을 확보하는 데 사용할 수 있는 고려 사항들을 요약하고 있습니다.

DO-178B에 기술된 프로세스는 소프트웨어 시스템 개발에 대한 계획, 개발, 검증, 구성(Configuration) 관리 및 품질 보장을 다룹니다. 조직은 Simulink® 와 Embedded Coder®를 사용하여 자동 코드 생성에 대한 DO-178B 절차를 자유롭게 매핑할 수 있습니다.

AiRx2 소프트웨어를 개발할 때 Septentrio는 DO-178B를 충족하는 고 무결성 시스템을 구축하기 위해 Simulink 시스템 모델과 모델 기반 설계를 사용하는 데 있어서 잘 정의된 워크플로우를 따랐습니다. 우리는 인증 기관을 위한 툴 인증 계획과 툴에 대한 동작 요구 사항 문서 준비를 돕기 위해 DO Qualification Kit를 사용했습니다. DO Qualification Kit는 Simulink Verification and Validation™ (transitioned at R2017b) 과 Polyspace® 를 포함하여 MathWorks 소프트웨어 검증 툴을 검정하기 위한 리소스를 통해 DO-178B 인증 절차를 지원합니다.

편집자 주: DO-178C 업데이트는 최근 RTCA에 의해 게시되었으나, 작성 시점에 그 사용이 FAA로부터 아직 승인을 받지 못했습니다. DO-178C는 보충 문서인 DO-331(Model-Based Development and Verification Supplement to DO-178C and DO-278A)을 통해, 모델 및 코드 생성을 위해 DO-178 목표를 매핑하는 방법 등 모델 기반 설계의 사용에 대한 안내를 제공합니다. 

설계 환경과 작업 흐름 선택

MATLAB® 은 Septentrio, 특히 연구부서에서 광범위하게 사용됩니다. AiRx2 개발을 위한 Simulink와 Embedded Coder의 선택은 연구 그룹과 개발 그룹 간의 보다 긴밀한 협조를 가능하게 해줍니다.

우리 엔지니어는 Simulink뿐 아니라 특별히 안전 필수 시스템을 위해 설계된 모델링 환경을 평가했습니다. 우리는 이러한 환경은 우리가 필요로 하는 유연성 있는 조건을 제공해 주지 못함을 발견했습니다. 테스트 시나리오에 대한 테스트 입력 생성 기능을 포함하여 Simulink의 시뮬레이션 기능이 부족하기도 했습니다. 승인된 코드를 생성할 수 있었지만, 사용할 수 있는 블록의 수는 상당히 제한되었습니다. 우리는 행렬 연산과 AiRx2의 네비게이션 구성요소에 필수적인 다른 많은 기능을 위하여 우리만의 라이브러리를 구축하기도 했습니다.

우리는 쉽게 설계를 수행하고, 테스트 입력을 만들며, 시뮬레이션을 통해 옵션들을 평가하는 방법이 필요했습니다. MATLAB과 Simulink를 활용한 모델 기반 설계는 시스템 요구 사항을 추적하면서, 두 가지 주요 시스템 구성 요소를 구성하고, 시스템 설계를 검증하며, 소스 코드를 생성하고, 또한 해당 소스 코드를 검증하는 전체 개발 워크플로우를 지원합니다.

시스템 요구 사항의 캡처 및 추적

AiRx2의 고수준의 시스템 요구 사항(high-level system requirements)은 두 가지 부분으로 이루어집니다. 첫 번째 부분은 Word 문서에 캡처한 것과 같이 사용자 또는 판매 요구 사항으로 이루어집니다. 두 번째 부분은 250쪽 문서에 상세히 설명되어 있으며, 항공기 GPS (global positioning system) 장비를 위한 MOPS (minimum operational performance standards)로 정의되는 RTCA의 요구 사항으로 구성됩니다. 우리는 두 가지 요구 사항을 DOORS®요구 사항 관리 시스템으로 가져옵니다. DOORS를 사용하여 시스템 요구 사항을 고수준 소프트웨어 요구 사항과 연결합니다. 반복하여 고수준 소프트웨어 요구 사항(high-level software requirements)은 직접 Simulink에 모델링된 저수준 소프트웨어 요구 사항(low-level software requirements)과 연결됩니다.

시스템 구성

우리는 모델 참조(model referencing) 기능과 다수의 서브모델 또는 모듈을 통합하는 방법을 사용하여 최상위 모델을 관리 가능한 계층 구조로 구성하였습니다(그림 1). 이러한 서브모델들은 수신하는 신호를 기반으로 하여 위성과의 거리를 계산하는 기본 측정 모듈과 측정된 거리를 위치로 변환하는 네비게이션 모듈을 포함합니다. 이 구조는 엔지니어가 독립적으로 각 모듈에 작업을 수행할 수 있도록 해줍니다. 모든 모델과 요구 사항 문서는 팀 협력을 용이하게 하는 SVN (Apache Subversion)을 사용하여 버전 컨트롤되고 있습니다.

septentrio25462_fig1_w_KR.jpg
그림 1. AiRx2 시스템의 일부에 대한 Simulink 모델

모델을 분할할 때, 우리는 각 모듈이 쉽게 테스트될 수 있도록 경계를 나누어 전반적인 설계를 분할했습니다. 우리는 Simulink 내의 설계를 검증하는 데 사용하는 테스트 케이스를 생성된 C 소스 코드에 재사용하려 했습니다. 코드에서 생성된 테스트 결과와 시뮬레이션으로부터 생성된 테스트 결과를 비교함으로써 모델에 대한 소프트웨어 검증이 가능하게 됩니다. 주의 깊게 한 모델 파티셔닝은 테스트 케이스를 바로 재사용 가능하도록 해줍니다.

우리는 모델을 개발하면서, Simulink Verification and Validation 내의 Model Advisor를 사용하여 MAAB (MathWorks Automotive Advisory Board)으로부터의 모델링 가이드라인과 효과적인 코드 생성을 위해 MonkeyProof Solutions와 함께 개발한 모델링 가이드라인에 따라 모델을 점검 합니다.

시스템 설계 검증

Simulink에서 시스템 설계를 모델링 및 시뮬레이션한 후, 소프트웨어로 구현하기 전에 요구 사항에 대해 설계를 검증하기 위하여 파트너사와 협업할 것입니다. DO-178B에서는 검증을 위해 파트너사에 의존하는 것이 필수적인 것은 아니지만, 독립적인 검증이 요구 사항이므로 이는 좋은 관행입니다.

우리는 DOORS 데이타 베이스와 Simulink 모델을 파트너사에 제공할 것입니다. 파트너사는 Simulink Verification and Validation을 사용하여 모델을 검증하고 해당 모델에 대해 인증 크레딧에 대한 Model Advisor 검증을 실행할 것입니다. 저수준 요구 사항의 완전한 기능적 커버리지를 보장하기 위하여 실행 가능한 모델인 테스트 케이스를 만들어 실행합니다. 저수준 요구 사항이 검증 가능하도록 인증 요구 사항을 충족하기 위해 모델 커버리지 분석이 수행됩니다. 생성된 코드에 재사용될 때 모델 커버리지를 최대화하는 테스트 케이스는 코드 커버리지 또한 최대화되도록 도움을 줍니다.

소스 코드 생성과 검증

우리의 모델로부터 Embedded Coder를 사용하여 소스 C 코드를 생성하며, 생성된 코드는 DDC-I로 부터의 Deos 실시간 운영 시스템(Does real-time operating system (Lev A RTOS))에서 동작합니다. MonkeyProof Solutions의 엔지니어는 생성된 코드를 최적화하는 모델링 변경를 제안해 왔습니다.

Embedded Coder는 생성된 코드의 각 라인에서 모델과 DOORS의 요구 사항으로 다시 추적하도록 하는 주석을 자동으로 삽입합니다. 우리는 이러한 주석을 사용하여 수동 코드 검토를 수행합니다. 우리는 Polyspace를 사용하여 생성된 코드에 대한 런타임 오류, 도달 할 수 없는 코드, 초기화 되지 않는 변수, 컴플라이언스 문제에 대한 자동화된 검증을 실행합니다(그림 2). 오류 보고서는 런타임 오류가 없는 것이 증명된 코드를 표시함으로써 코드의 다른 부분에 대한 코드 검토에 집중할 수 있도록 해줍니다.

septentrio25462_fig2_w._KRjpg
그림 2. GPS 디코더 코드에 대한 결과 요약

우리는 저수준 요구 사항 검증에 적용 가능한 테스트 케이스를 재사용합니다. 시스템에 대한 C 코드에서와 마찬가지로 Embedded Coder를 이용하여 테스트 케이스 모델로부터 테스트 코드를 생성합니다. 그런 다음 RTOS 상에서 동작하는 생성된 시스템 코드에 대해 이 테스트들이 수행됩니다. 추가적인 저수준 테스트 케이스는 생성된 테스트 케이스를 보완합니다.

우리는 구문(statement) 커버리지, 결정(decision) 커버리지, 조건(condition) 커버리지와 같은 코드 커버리지와 순환 복잡도(cyclomatic complexity)를 분석합니다.  구문(Statement) 커버리지와 결정(decision) 커버리지는 모두 DO-178 level B 인증에 필요합니다.

소프트웨어 인증과 툴 사용에 대한 우리의 계획은 모델 기반 설계의 사용을 상세히 설명하는 소프트웨어 인증 계획서(Plan for Software Aspects of Certification)를 포함하여 FAA로부터 승인받았습니다.

2012년 기고 - 92122v00

관련 산업에 대한 칼럼 보기