본문 바로가기

시즌1/세상 돌아가는 이야기

나로호 경미한 소프트웨어 결함 사실일까?

이 글은 지극히 저의 사견으로, 공식 보도만으로 유추하여 쓴 글이므로, 실제 사실과 다를 수 있습니다.

나로호 발사가 중지된 원인이 발사체 문제가 아닌 경미한 소프트웨어 결함이라 교육과학기술부가 밝혔습니다.
1단 추진체의 헬륨 고압 탱크 압력이 발사를 수행할 수 없을 정도로 낮아졌다고 탑재된 소프트웨어가 판단하면서 자동 발사 시퀀스가 중지되었다고 합니다.
이 말은, 1단 추진체의 헬륨 고압 탱크 압력은 정상 범위였으나, 소프트웨어에서 비정상 범위로 판단했다는 뜻입니다.
그렇다면, 왜 이런 일이 발생하였을가요? 이를 알기 위해서는 소프트웨어가 개발되는 과정을 살펴보아야 합니다.

소프트웨어 어떻게 개발되나?

일반적으로 소프트웨어는, 분석, 설계, 구현, 테스트의 과정을 거치게 됩니다.

분석 단계라 함은, 소프트웨어가 가져야 하는 기능/비기능적인 요구 사항을 분석하는 단계입니다. 일반적으로 분석 단계에서는 소프트웨어의 자체 기능과 외부 시스템과 연계하는 외부 인터페이스 기능등에 대한 요구 사항을 수집하고, 해당 요구 사항을 상세화 하는 단계입니다. 그 외에 성능과 같은 비기능적 요구 사항또한 이 단계에서 수집되고 분석되어 집니다. 1단 추진체의 헬륨 고압 탱크와 관련되어 살펴 보겠습니다. 분면 분석 단계에서, 1단 추진체 헬륨 고압 탱크의 정상 압력 범위에 대한 정의가 되었을 것이며, 요구 사항은, "1단 추진체 헬륨 고압 탱크의 정상 압력 범위는 어떠어떠하며, 해당 범위를 벋어났을 경우는 발사 시퀀스가 중지되어야 한다"라는 요구 사항이 분석되었을 것입니다.

그렇다면, 설계단계에서는, 위의 분석 단계에서 분석되어진 요구 사항들을 만족하기 위한 소프트웨어 설계를 하게 됩니다. 소프트웨어 아키텍쳐부터, 세부적인 기능들까지 설계하게 되는 것이지요. 이 설계 단계에서, 1단 추진체 헬륨 고압 탱크로 부터 오는 압력 데이터를 수집하고, 수집된 데이터를 분석하여, 발사 시퀀스를 수행하는 주요 모듈 및 기능을 설계하게 됩니다.

구현 단계는 위 설계 된 모듈 및 기능들을 실제 프로그래밍 언어를 이용하여 구현하게 됩니다. 구현 시, OS Level 없이 맨땅에 개발을 할 수 도 있고, 특정 OS를 선정하여 해당 OS 기반하에 개발을 수행하게 됩니다.

테스트 단계는 구현된 소프트웨어가 분석 및 설계 단계에서 정의된 요구 사항 및 기능들이 정상적으로 수행하고 있는지를 테스트 수행하게 되며, 일반적으로 단위 테스트와 통합 테스트를 수행하게 됩니다. 단위 테스트는 개별 모듈별로 테스트를 수행하는 것이며, 통합 테스트는 실제 모든 연관 시스템과 연결 후, 테스트를 수행하게 됩니다. 물론, 통합 테스트 시에는 발사에서만 구동이 되는 모듈들도 있을 수 있기 때문에 여러 시뮬레이터를 슬 수 밖에 없었을 것입니다.

어디가 문제인가?

분석 단계를 보면, 문제가 있을 수 있는 부분은, 1단 추진체의 헬륨 고압 탱크 압력의 정상 범위입니다. 정상 범위에 대한 요구 사항은 정상적으로 정의가 되었으나, 실제 헬륨 고압 탱크이 압력이 정상 범위보다 낮아졌을 수 있습니다. 이 부분은 교육 과학 기술부 발표 상 발사체 문제가 아니라고 하니, 논외로 하겠습니다. 다른 문제로는 정상 범위 자체가 초기 요구 사항 분석 시에 잘못 정의가 되었을 수 있다는 것입니다. 이는 큰 문제일 수 있습니다. 다른 요구 사항은 정상적으로 분석이 되었는냐를 의심할 수 있기 때문입니다.

설계 및 구현의 경우, 어떠한 기술을 사용하였고, 어떠한 프로그래밍 언어를 사용했는지를 알 수 없으므로, 패스하겠습니다.

테스트 단계는 소프트웨어가 요구 사항을 정상적으로 만족하며 구현되었는지를 테스트하는 단계입니다. 당연히, 이번 발사 전에 수많은 단위 테스트를 거쳤으리라 예상이됩니다. 각종 시뮬레이터를 이용한 통합 테스트로 수없이 수행되었으리라 예상합니다.
그런데도, 이러한 문제가 발생하였다면, 충분한 테스트 케이스로 테스트가 되지 않았다고 풀이할 수 있습니다. 사실, 소프트웨어 테스틷에는 여러 기법이 있으며, 테스트 케이스를 작성하기 위한 분석 기법도 상당수 나와 있습니다. 그런데, 소프트웨어 결함이 발사 직전에 발견되었다고 하는 것은, 위 분석 단계에서 정의된 요구 사항이 잘못 되었거나, 요구 사항은 정상이나, 테스트 수행 중 놓친 부분이 발생하였다고 불 수 있습니다.
후자의 경우 또한 위험하다 할 수 있습니다.경미한 소프트웨어 결함이라 발표는 하였지만, 나로호에 탭재되는 소프트웨어와 같이, 리얼 타임 소프트웨어는 경미한 결함은 있을 수 없습니다. 아무리 경미하더라도, 그 영향이 크게 미칠 수 있기 때문입니다. 사실, 윈도우나 오피스와 같은 소프트웨어는 오류가 있으면, 껏다키면 됩니다. 그러나, 나로호는 자그마한 오류 하나가 발사 실패로 이어질 수 있습니다. 그 수많은 테스트 중에서도 1단 발사체 헬륨 고압 탱크 압력 처리 부분에 결함이 있었는데, 다른 곳이라고 없다고 장담할 수 가 없습니다.

개인적인 사견은 단순한 압력 밸브 고장이었으면 좋겠습니다. 그렇다면, 밸브 하나만 바꿔끼면 되는 것 아니겠습니까? ( 전자, 기계 등에 대해 잘 몰라서 하는 소린가요? ㅡㅡ )

마치며

개인적으로 나로호와 관련아여 자부심을 느끼고 있습니다. 드디어 우리 나라도 우주 발사에에 대한 자체 기술력을 보유할 수 있구나 하면서 말이죠. 대한민국의 우주 시대를 여는 기념비적인 사업인 만큼, 마지막 점검에 최선을 다햐여, 성공리에 발사가 되었으면 합니다.
 
나로호 프로젝트 종사자 여러분 화이팅!!!