2022년 봄호

항공기 소프트웨어의 개발인증 표준

 

경상국립대학교 전 용 기(항공우주및소프트웨어공학부)

 

항공기 소프트웨어는 소프트웨어의 응용 사례이기 때문에, 소프트웨어를 기능의 관점에서만 보면 상대적으로 작은 영역의 소프트웨어로 보인다. 하지만 더 확장해서 소프트웨어 품질의 관점에서 보면, 인간이 만드는 소프트웨어 중에서 가장 높은 품질을 가지는 소프트웨어의 하나이다. 그래서 단순히 수행이 가능한 정도의 품질만 있으면 되는 그러한 소프트웨어를 공부하는 사람의 입장에서는 항공기 소프트웨어가 그다지 중요하지 않을 수 있지만 최고 품질의 소프트웨어를 대상으로 하는 소프트웨어 공학도의 입장에서는 무시할 수 없는 관심의 대상이다.

전자 장치를 장착한 초기의 항공기는 아날로그 장치들을 많이 사용했다. 1955년경에는 전투기와 폭격기 겸용으로 쓰이는 전폭기에 일반적으로 장착되는 전자 장비들은 적어도 약 40-50개 정도였다고 한다. 항공기는 그 전체 무게가 비행 성능에 굉장히 중요한 영향을 미치기 때문에, 항공기 안에 그렇게 많은 항공전자 장비들이 실려 있다는 것이 지금의 현대적 시각으로 보면 놀라울 수 있다. 이런 장비들은 그 당시에 전부 독자적으로 기내에 각기 설치되었기 때문에, 전력공급기(power supply)와 같이 각 장비들에서 모두 동일한 기능을 하는 하드웨어들이 중복적으로 필요하여 무게 및 공간에 대단한 부담을 주었다. 하지만 이러한 부담을 주는 장치 하나하나가 그 당시에는 첨단의 장치들이었다.

항공기 소프트웨어는 항공기에 디지털 항공전자 장치를 장착하기 시작하면서 사용되었고, 하드웨어의 기능을 공간, 무게, 전력 등의 부담이 없이 대체할 수 있다는 장점에 의해서 급속히 활용되기 시작했다. 디지털 장치는 오늘날 관점으로 보면 소규모 마이크로 컨트롤러를 연상할 수 있지만, 전자공학의 발전과 함께 곧이어 마이크로프로세서, 컴퓨터 시스템, 그리고 컴퓨터 네트워크가 자연스럽게 활용되었다. 항공기가 최초로 디지털 장치를 장착하기 시작한 시기는 1970년대라고 볼 수 있다. 이 때는 인텔 등의 디지털 산업계에서 8-비트 마이크로프로세서가 반도체 칩으로 등장한 시기였다. Intel 8080 혹은 8086과 같이 컴퓨터 역사 속에서 소개되는 유명한 마이크로프로세서들이 이 시기에 등장했다. 예를 들어, 1974년에서 1976년 사이에 미국의 전투기 F-16 등이 등장했을 때가 항공전자 장치들을 디지털 장치로 바꾸는 시점으로 보인다. 이러한 변화의 대표적인 사례가 조종석인데, 그 시대의 조종석은 오늘날의 디지털 조종석의 모습과는 많이 달라서, 아날로그 장치에 맞는 원형 다이얼 계기판이라든지 수작업으로 입력값을 조작하는 장치들이 사용되었다.

1980년대에 들어와서는 항공기의 소프트웨어 의존성이 점점 높아지기 시작했다. 마이크로프로세서가 눈부신 속도로 발전하였지만 소프트웨어 개발자는 자연히 그보다 더 좋은 걸 꿈꾸었다. 그래서, 그 시대는 인텔 같은 칩 제조사가 굉장히 신나게 사업을 했던 시대였지만, 하드웨어 개발이 질적으로 양적으로 고도화된 소프트웨어 개발을 항상 허덕이며 뒤따라가는 그런 시대였다. 참고로 전투기의 소프트웨어 의존성을 살펴보자. 전투기 시스템을 개발할 때는, 제일 처음에 요구되는 기능을 분류하고 그 중에서 성공적인 개발에 필수적인 기능을 철저하게 분석한다. 그러면 요구하는 기능이 소프트웨어와 관련성이 있거나, 소프트웨어 기능에 의존되는지 여부도 분석될 수 있다. 알려진 자료에 의하면, 1960년대에 처녀비행한 미국제 전투기 F-4 경우에는 소프트웨어 의존성이 약 10%였다. 하지만 1970년대에는 F-15가 약 20%, 그리고 F-16, KF-16 등의 순서로 그 의존성이 빠른 속도로 증대해서, 현재의 최첨단 전투기인 JSF/F-35의 경우에는 항공기의 기능의 소프트웨어 의존성이 거의 100%가 되었다.

항공기 개발에서 소프트웨어 의존성이 급격히 증가하기 시작하면서, 법률에 의해 항공기 개발을 심사하고 인증해야 하는 정부 당국에서는 자연히 항공기 소프트웨어를 위한 인증심사도 하게 되었다. 미국의 경우에는 그 정부 기관을 Federal Aviation Administration (FAA)라 하고, 우리나라의 경우에는 주로 군수용 항공기 개발에 집중해 왔기 때문에 방위사업청이 된다. 미국 정부는 1980년대에 항공기 소프트웨어를 위한 인증표준을 개발하여 DO-178로 불렀는데, 산업체 입장에서 DO-178은 대단히 부담스러운 존재가 되었다. 그 이유는 항공기 개발 과정에서 준수해야 하는 많은 인증표준 중에서 소프트웨어 인증표준이 가장 비용이 많이 들어가는, 즉 가장 인력과 자금이 많이 들어가는 표준 중에 하나가 되었기 때문이다. DO-178은 항공기 소프트웨어를 개발하는 프로세스를 제어하기 때문에 중요한 표준이다. 이 표준은 1982년에 최초로 발표되었지만, 곧이어 약 3년 만에 다시 개정되어 DO-178A로 불렸고, 약 7년이 더 지난 1992년에 다시 개정되어 DO-178B가 되었다. DO-178B에 명시된 주요 소프트웨어 프로세스에는 개발 기획 (planning), 개발 과정 (development), 개발 확인(verification), 형상 관리 (configuration management), 품질 보증 (quality assurance), 인증 지원 (certification liaison)이 포함된다.

하지만 DO-178B는 그 이후로 약 20년간 개정되지 않았기 때문에, 그동안 발전된 소프트웨어 기술을 수용하지 못하여 이와 관련된 많은 분쟁이 발생하게 되었다. 사실 DO-178B에 대한 개정 요구는 엄청나게 있었지만, 개정 작업의 진척은 느렸다. 왜냐하면, 소프트웨어 기술이 너무나 빠른 속도로 발전되었기 때문에, 오랫동안 연속성을 가지게 적용할 수 있어서 산업체가 생산설비를 자주 바꾸지 않아도 상당 기간 적용할 수 있는 그런 안정된 인증 표준을 도출하고 합의에 이르기가 너무나 힘들었기 때문이다. 그러다가, 2011년 11월에 이르러 산업체, 정부, 학계가 획기적으로 합의를 보는 데 성공하고, 그 이듬 해인 2012년 봄에 오늘날 항공 산업계가 적용하고 있는 문서로 출간되었다. 이렇게 20년만에 개정된 DO-178C는, 핵심적인 부분은 DO-178B를 그대로 포함하지만 사용자가 선택할 수 있는 확장된 인증 표준들을 동반하고 있다. 이렇게 확장된 인증표준은 도구품질 (DO-330), 모델기반 확장 (DO-331), 객체지향 확장 (DO-332), 형식지향 확장 (DO-333)의 4 부문으로 구성된다.

항공기 소프트웨어 기술을 충분히 이해하기 위해서는, 항공기 소프트웨어를 개발하고 실행하기 위해서 해결되어져야 하는 공학적 문제들과 함께 지금까지 그 문제들을 해결해 오면서 축적된 공학적 지식을 살펴보아야 한다. 본 고에서는 항공기 소프트웨어 기술을 공부하고자 하는 독자와 항공기 소프트웨어 기술에 관심있는 독자들에게 도움을 주고자 항공기 소프트웨어가 등장하여 발전한 역사를 간략히 살펴보고 항공기 소프트웨어를 개발하는 과정에서 축적된 지식의 집약체라고 할 수 있는 국제 인증 표준을 소개하였다.