나쁜 소프트웨어 디자인은 군함도 충돌하게 만든다

존 매케인 호, 상선과 충돌!

2017년 8월 21일, 미 해군의 이지스 구축함 ‘존 매케인’ 호가 싱가포르 부근에서 상선과 충돌해 승조원 10명이 사망하는 사고가 발생했습니다. 또다른 구축함 피츠제럴드 호가 일본 인근에서 컨테이너 선박과 충돌해 7명의 해군 장병이 사망한 지 고작 두 달이 지난 다음에 발생한 사고였기에 충격이 컸습니다.

최신 기술로 무장한 군함이 의도하지 않게 상선과 충돌한 것만으로도 당황스러운데, 사고 원인이 군함의 조타 통제력 상실, 즉 조종 과실일 가능성이 있다는 주장까지 제기됐죠. 이에 미 해군은 책임을 물어 함대 사령관을 보직 해임하고 정확한 원인을 규명하기로 했습니다.

왜 사고가 일어났을까?

사건을 재구성한 아래 영상을 참고하면, 존 매케인 호의 과실이 좀 더 뚜렷하게 보입니다. 각자 항로를 유지하며 항해 중이었는데, 존 매케인호가 갑자기 좌현으로 방향을 틀어버렸고, 존 매케인 호와 상선 Alnic MC 호 모두 속도를 줄이긴 했지만, 이미 늦어버렸던 거죠.

사고 시점과 환경을 비유하자면, 새벽 경부 고속도로에서 느린 화물 트럭들이 많은 가운데, 빨리 달리던 스포츠카가 갑자기 다른 차선의 트럭 앞으로 끼어들어 버렸고, 그래서 충돌이 일어났다고도 볼 수 있겠네요.

대체 이런 일이 왜 일어난 걸까요?

Screen Shot 2019-08-25 at 3.27.27 AM.png

19년 6월 공개된 미 연방교통안전위원회(NTSB)의 사고 보고서를 참고해서, 사건을 좀 더 자세하게, 하지만 중요한 것 위주로 재구성하면 다음과 같습니다. (좀 더 이해하기 쉽게 조향은 자동차 핸들, 추진은 자동차의 액셀에 비유해 보겠습니다. 존 매케인 호는 프로펠러가 좌현, 우현에 하나씩 총 두 개인데, 이것도 그냥 왼쪽 액셀, 오른쪽 액셀로 비유할게요.)

  1. 새벽에 번잡한 항로에 도달함
  2. 배의 핸들과 액셀을 함교에서 몇 시간째 A 혼자 조종 중이었는데
  3. 상사가 A가 아침 먹고 올 수 있게 B를 불러옴
  4. (어딘가 느낌이 안 좋았는지) B가 A 자리에 서서 핸들을 맡되, A는 그 옆의 다른 자리에서 액셀을 조작하라고 함
  5. 그래서 B가 A에게 일단 왼쪽 액셀 조작 권한을 넘김
  6. 오른쪽 액셀을 넘길 차례인데 갑자기 B가 핸들 조작이 안 됨 // (나중에 보니) 왼쪽 액셀 넘기면서 핸들 조작도 A에게 넘어감. 그리고 액셀 두 개의 속도를 하나로 맞추게 고정해놨는데, 조작 넘기면서 이 고정도 풀림
  7. 핸들이 안 먹으니 속도를 늦췄지만, 6의 결과로 왼쪽 액셀만 발을 떼고 오른쪽 액셀은 계속 밟은 상태가 됨
  8. 그 결과 배가 왼쪽으로 급회전
  9. 명령에 따라 고물 쪽에 파견된 사람들이 비상 버튼 눌러 핸들 조작권을 가져옴
  10. 하지만 15초 후 B도 비상 버튼 눌러 핸들 조작권을 도로 가져옴
  11. 이제 두 액셀 속도 맞춰져서 발 떼어 감속
  12. B가 핸들 틀려는데, 10초 뒤 고물 쪽에서 허가 받고 핸들 조작권 다시 가져감
  13. 핸들 틀고 있었지만, 이미 늦어 30 결국 충돌

B가 A에게 조작 권한을 넘기기 시작한 지 충돌까지 딱 2분 59초 동안 벌어진 일입니다. 글로 읽기에도 당황스러운데, 사고 과정에 있던 사람들은 정말 당황스러웠겠죠.

모든 사고는 여러가지의 나쁜 조건이 겹쳐서 일어난다고 합니다. 존 매케인 호 사고도 마찬가지인데, 사고 보고서에서 적었듯이 사고 원인은 여럿 있었죠. 조타사가 피곤하지 않았다면 애초에 교대를 지시하지 않았을 테지만, 그렇다 해도 번잡한 항로에서 조타사 교대는 상당히 좋지 않은 결정이죠. 군함 쪽에서 정보를 제대로 빠르게 알렸다면 상선이 미리 대비하거나 피할 수도 있었을 테고요.

그래서 미 연방교통안전위원회는 여러 원인 중 주된 사고 원인으로 해군의 운영 관리 소홀로 함교 인력의 훈련 및 대처 능력이 부족하거나 부적절했다는 것을 꼽았습니다. 하지만, 동시에 아래처럼 구축함의 통합 함교 운항 시스템(이하 IBNS) 디자인도 안전 문제 중 하나로 지적했습니다.

Screen Shot 2019-08-25 at 4.06.14 AM.png

위의 사고 과정을 보면 알 수 있듯이, 결정, 소통 등의 문제도 있지만, 기본적으로는 ‘조작 실수‘가 가장 일차적인 문제입니다. 조타사의 숙련도가 부족했다는 것도 맞겠지만, IBNS가 사람이 실수하기 쉬운, 또는 실수를 알아차리기 어려운 디자인인 것이 문제였다는 얘기죠.

IBNS는 무엇인가?

문제가 된 IBNS는 방위산업체 노스롭 그루먼이 2014년 8월 알레이 버크급 구축함들에 설치하기로 미 해군과 계약한 것으로, 존 매케인 호에는 2016년(사고로부터 약 1년 전)에 설치됐다고 합니다. 계약 당시 보도 자료에 따르면, 해당 시스템은 레이더 시스템, 내비게이션 소프트웨어, 선박 제어 소프트웨어, 차트 서버, 네트워크 인터페이스 박스, 평면 디스플레이, GPS, 선박 제어 디스플레이 시스템을 포함하는 것으로서 해군 전력 현대화에 기여한다고 합니다.

IBNS로 검색했을 때 나오는 몇 가지 자료들을 보면 어떤 느낌인지 대략 파악할 수 있는데요.

JRC IBS.gif

위 이미지와 같이 여러 센서 및 감지 장치에서 얻은 정보들을, 여러 대형 디스플레이에서 통합해서 볼 수 있다는 얘기겠죠.

Sperry_RCLOasis_-15_Hero_0.jpg

카탈로그에서 위와 같은 예시 장면들도 볼 수 있겠고요.

800px-USS_John_S._McCain_(DDG-56)_helm.jpg

위의 사진은 해당 시스템이 설치되기 전의 존 매케인 호 함교의 사진인데, 이런 상태의 함교를 아래 사진과 유사하게 바꿨습니다.

bridge_Arleigh_Burke-class_guided-missile_destroyer_USS_Dewey_US_Navy.jpg

위의 사진은 노스롭 그루먼 쪽에서 공개한, 같은 알레이 버크급 구축함인 듀이 호의 함교 사진입니다. (해당 사진은 존 매케인 호의 실제 버전과는 좀 다릅니다. 존 매케인 호의 장치는 아래에서 더 자세히 다뤄볼게요.)

기존의 수많은 다이얼과 작은 디스플레이들이, 커다란 평면 터치 디스플레이로 바뀐 것이 가장 큰 특징이라고 할 수 있겠는데요. 일견 ‘현대화’된 것으로 보이지만, 사고 보고서의 지적처럼 존 매케인 호의 시스템에는 여러 문제가 있었습니다. (Verge 등 대부분의 매체에서는 터치 스크린의 문제를 부각시켰지만, 사고 보고서를 보면 전반적인 소프트웨어 디자인의 문제가 더 크고, 터치 스크린은 여러 문제 중 하나에 가깝습니다.)

어떤 디자인이 문제였나?

(아래 부분은 사고 보고서를 바탕으로 제가 짚어본 부분입니다. 소프트웨어 디자인에 관해 얘기하고 싶어 적기 시작했지만, 선박, 특히 군함의 운용에 관해서는 잘못된 부분이 있을 수 있습니다. 감안하고 읽어주세요.)

A. 여러 곳에서 조작할 수 있다

선박 조종 장치를 아주 거칠게 요약하면 (1) 방향을 조종하는 조향장치 (2) 추진력을 조종하는 추진장치, 크게 둘로 나눌 수 있을 것입니다.

1808_DesignDocs_2

물론 배가 커지면 훨씬 더 복잡해지겠죠. 조향장치는 방향타를 조정하면 됐지만, 추진장치는 엔진 쓰던 시대에는 기관실에 전보를 보내던 시절도 있었다고 해요. 물론 최근에는 함교에서 바로 엔진을 제어할 수 있기 때문에 스로틀 레버가 달려 있지만, 기존 전통이 내려온 것이 있어서 미 해군 함정은 함교에 helm과 lee helm이라는 영역이 있고, 각각 조향과 추진을 맡았다고 합니다.

1808_DesignDocs_21

기존 존 매케인 호의 함교 사진에서도 이 영역 구분이 명확히 보입니다. 좌현 쪽이 helm 영역으로 조향을 담당하고, 우현 쪽이 lee helm 영역으로 추진을 담당합니다.

그런데 새로운 IBNS에서는 이 영역 경계가 흐릿해집니다.

ibns03

왼쪽이 조향, 오른쪽이 추진을 각각 맡는 것은 이전과 동일해보입니다. (추진 쪽에서 스로틀 없는 게 보이실 텐데, 그건 뒤에 또 얘기해볼게요.) 가운데 타륜이 있는 걸 빼면, 양쪽 모두 터치스크린과 키보드, 트랙볼이 있어서 동일한 모습을 하고 있는데요. 실제로도 동일한 기능을 수행할 수 있습니다. 즉, 오른쪽의 lee helm 영역에서도 추진 뿐만 아니라 조향도 맡을 수 있었던 거죠.

뿐만 아닙니다. 마찬가지로 사고 보고서에 따르면, 존 매케인 호의 함교에서 조향/추진을 조작할 수 있는 곳은 총 네 곳(아래 그림의 1, 2, 3, 4), 추가로 고물 쪽의 조향실(5)에도 같은 장치(디스플레이와 타륜)가 있어서 비상 시에 조향을 맡을 수 있었다고 합니다.

ibns04.png

즉, 배를 각기 다른 다섯 곳에서 조종할 수 있다는 얘기인데요. 왜 이런 디자인 결정을 했는지는 잘 모르겠습니다. (사공이 많으면 배가 산으로 갈 텐데…) 장점을 찾아보자면, 조종할 수 있는 곳이 많으면 여러 인력이 돌아가면서 할 수 있으니 부담을 줄이거나 유사 시에 유용하게 쓸 수도 있겠다…고 추측해볼 수는 있겠지만, 이건 제 추측일 뿐이고 실제 어떤 배경에서 이렇게 디자인했는지는 모르겠습니다.

다만, 이때문에 함교 인력에게 불필요한 인지 부담이 늘어나고(어느 스테이션에서 조작권을 갖고 있는지 확인해야 함), 조작권을 이양하는 과정이 필요해졌고, 덕분에 시스템 복잡도가 상당히 증가했다는 것은 확실해 보입니다.

B. 여러 조향 모드 중 하나를 선택해야 한다

존 매케인 호의 일반적인 조향 모드는 자동항해부터 컴퓨터 보조 수동 모드까지 네 개가 있었다고 합니다. 아마도 자동 기능의 개입이 많은 것부터 적은 것까지 네 단계의 템플릿으로 만들어 제공한 모양이에요. 실제 항해 중에 가장 많이 쓰인 건 컴퓨터 보조 수동 모드였다고 합니다.

그리고,  비상 버튼(아래 그림 참고)을 누르면 동작되는 백업 수동 모드까지 총 다섯 개의 모드가 있었다고 합니다.

ibns05.png

이 비상 버튼은 제어 콘솔(1+2)과 조향실(5)에만 있고, 누르면 해당 위치로 조작권을 강제로 이동시키고 조향 모드를 백업 수동 모드로 바꾸는 기능이 있습니다.

(잠깐 다른 얘기지만, 함정 내 인력들은 해당 버튼을 누르면 조향실로 조작권을 보내는 것으로 알고 있었다고 합니다. 그래서 사고 당시에도 비상 버튼을 누르지 않았다고 합니다…)

슬슬 복잡해지죠? 조향 모드가 여러 개라는 것만 알고, 일단 다음으로 넘어갑시다. 제일 복잡한 걸 얘기할 시간입니다.

C. 조작권/ 조향 모드의 현황을 파악하거나 조작권을 넘기기 어렵다

A와 B에서 총 다섯 곳에서 조작권이 서로 오갈 수 있고, 조향 모드도 총 다섯 개 중 하나를 선택할 수 있음을 확인했습니다. 개념적으로도 꽤 복잡한데요. 그렇다면 현재 조작권이 어디에 있는지, 현재 조향 모드는 어떤 것이며 그것을 변경하고 싶을 때는 어떻게 해야 하는지, 사고 보고서를 참고해서 나름 파악해봤는데요.

ibns06.png

대략 위와 같은 식입니다. 자신 앞의 큰 패널 어딘가에 조향 제어를 가리키는 영역이 있고, 거기에 매우 작은 글씨로 현재 조작권이 어디에 있는지, 현재 조향 모드는 어디에 있는지 확인할 수 있고요. 그 옆의 더 작은 화살표 버튼을 누르면 풀다운 메뉴(!)가 표시되어 선택할 수 있는 것이죠.

잠깐 여기에서 의문이 드는 분들이 있을 겁니다. ‘어라? 내 쪽에서 조작권을 다른 영역으로 보냈는데, 그쪽에 사람이 없거나 조작권 받을 준비가 안 되어 있다면 어떻게 하지? 아니면 애초에 실수로 조작권을 보낸 거면 어떻게 하지?’

그렇습니다. 그래서, 조작권을 넘기고 받는 일은 ‘쌍방 확인’을 통해 진행됩니다.

사고 보고서에서는 실제 사고에서 일어난 추진 장치 조작권 넘기는 과정을 설명하고 있는데요. 복잡하니까 그림으로 표시해보면 다음과 같습니다.

ibns07.png

그림 상으로는 깔끔해보일 수 있겠지만, 다섯 곳에서 조종 가능하고, 모드도 다섯 개 있는데, 이 와중에 좌현/ 우현 축 조작권을 한 번에 하나씩만 보낼 수 있기 때문에, 하나 보내고 또 보내야 하는 아주 혼란스러운 상황입니다.

매케인 호의 사고 상황을 위 그림과 놓고 생각해보면, 조타사들이 겪었을 어려움이 그려집니다.

A 혼자 몇 시간 조향과 추진을 동시에 보고 있었는데, 다음 일도 있어서 꽤 피곤해진 상황이란 말이에요. 그래서 상사가 “야, A 밥 먹으러 가야 되는데, 이제 B가 조타사해라.”라고 지시한 다음 B가 자리에 왔는데, 교통이 붐비는 곳이니 약간 마음에 걸린단 말이죠. “어, A야. 조금만 남아서 B 좀 도와줘라. B는 조향만 하고, A가 추진 보면 되겠네.”라는 지시는 어떻게 보면 자연스러워 보입니다. 별 것 아닌 일일 수도 있어요. 기존 시스템이라면 그냥 B는 타륜을 잡고 A는 그 옆에서 스로틀 레버를 잡으면 되는,  아주 단순한 일입니다.

하지만, 새 시스템에서는 이게 꽤 복잡하고 험난한 일이 됩니다.

B는 타륜을 잡은 채, 터치 스크린 어딘가에서 추진 제어 영역을 찾은 다음, 조작권 넘길 축을 먼저 선택하고, 작은 화살표를 눌러 어느 곳으로 보낼지 결정하고, 교대를 하려다 계속 근무하게 된 A는 옆 자리의 터치 스크린에서 반짝이는 컨펌 창을 확인해가며 조작권을 넘겨 받습니다. 그런데 의도와는 달리 B가 첫 번째 축을 넘기면서 운행 모드가 변경되고 조향 조작권까지 같이 넘어가 버린 거죠.

굉장히 답답하시죠? 아직 하나 더 남았습니다.

D. 스로틀 대신 터치스크린으로 조작한다

추진 조작을 넘기려다 조향 조작이 같이 넘어가버렸고, 그래서 메인 조타사가 조향 제어력을 잃었습니다. 비상 상황입니다. 항로가 혼잡한데 조향 제어가 안 되니까 속도를 줄이자고 결정했고, 원론적으로는 그리 나빠보이지 않는 판단입니다. 속도를 의도에 맞춰 원활하게 줄일 수 있다면 말이죠…

여기에서 또 한 번 조작 장치가 사람의 실수를 만들어 냅니다.

Screen Shot 2019-08-26 at 9.45.07 PM.png

엔진이 여러 개인 탈 것에서, 직선을 유지하며 엔진의 추진력을 높이거나 줄이려면 여러 개의 스로틀을 동시에 같이 움직여야 합니다. (이를 gang이라고 하던데 정확한 한국어 표현이 있을 것 같네요.) 보통 이런 스로틀 레버들은 위의 사진처럼 한 손으로 함께 쥐어 올리거나 내리는 식으로 동시에 같이 움직일 수 있죠.

Thrust_levers_of_an_Airbus_A320.jpg

위의 사진은 비행기 조종석의 스로틀인데 좌/우 엔진 각각의 스로틀을 조종할 수도 있지만, 한 손에 쥐고 함께 추진력을 조종할 수 있게 되어 있어요.

그런데 존 매케인 호에는 이런 물리적인 스로틀이 없었습니다. 대신 다음과 같은 가상의 스로틀이 있었죠.

Screen Shot 2019-08-26 at 10.15.34 PM.png

네, 손으로 쥘 수 있는 스로틀은 없고, 이런 가상의 디지털 스로틀만 있었다고 해요. 뭐랄까, 기계식 장치를 그대로 가상의 디지털 터치스크린으로 옮긴 스큐어모피즘의 전형 같네요. 왼쪽이 좌현 스로틀, 오른쪽이 우현 스로틀이고 위/아래로 된 세모를 눌러 각각 추진력을 높이거나 줄였다고 합니다.

좌우를 동시에 움직여야 한다고요? 화면 하단의 Gang 버튼을 토글하면 됩니다! 한 번 눌러서 초록불이 들어오면 두 쪽이 같이 움직이고, 한 번 더 눌러서 초록불이 꺼지면 각각 따로 움직이게 됩니다…

다시 사고 상황으로 돌아가보면, 원래 조타사는 혼자 타륜과 추진을 제어하고 있었습니다. 추진은 gang으로 해뒀고요. 교대해온 조타사가 원래 조타사에게 좌현 프로펠러의 조작 권한을 넘겼습니다. 어, 그럼 gang 옵션은 어떻게 될까요? 시스템이 자동으로 gang을 해제해버립니다! 사용자는 그걸 모르고요.

한 쪽 프로펠러만 넘겼다고 생각했는데 모드 바뀌고 조향 조작도 넘어가버렸죠. 조향 조작권을 찾는 것도 중요하지만, 일단 나머지 프로펠러 조작권을 마저 넘깁니다. 그리고 속도를 줄이라는 명령이 떨어지니 패널의 삼각형 아이콘을 눌러 속도를 줄입니다. gang 옵션은 계속 켜둔 상태였으니 당연히 같이 움직일 거라고 생각합니다.

하지만, 그렇지 않았고, 좌현 프로펠러는 천천히, 우현 프로펠러는 여전히 빠르게 도니까, 배가 빠르게 좌현으로 회전합니다. 함교 사람들은 비상이지만 뭘 어떻게 해야할지 모르겠습니다. 일단 조향권을 찾아야죠. 그래서 찾았습니다. 그리고 다시 우현으로 배를 돌리기 시작했습니다. 하지만 추진력은 여전히 그 상태였고 충돌을 막기엔 이미 늦었습니다.

나쁜 디자인이 문제를 일으켰다!

지금까지 사고 경위와 조작 시스템을 비교적 상세하게 살펴봤습니다.  보고서를 읽고 있노라면 3분도 안 되는 짧은 시간에 해당 군인들이 얼마나 당황하고 스트레스 받았을지 짐작할 수 있습니다.

미 연방교통안전위원회는 사건 보고서에서 훈련 부족, 판단 오류, 관리 감독 부실 등 주로 사람의 문제를 사고 원인으로 지목하는 한편, 디자인의 문제도 있다고 지적했습니다. ASTM F1166 가이드에 따르면 선박, 해양 시스템, 구조물, 장비 등은 시스템을 운영/유지 보수할 때 (특히 스트레스가 심한 상황에서) 사람이 실수할 수 있는 부분을 최소화할 수 있도록 디자인되어야 하기 때문입니다. 마찬가지로 ASTM 가이드에 따르면, 인간-컴퓨터 상호작용(HCI)은 동적인 행위는 단순해야 하며, 항해나 데이터 입력 과정에서 불필요한 행위가 요구되면 안된다고 밝히고 있습니다. 또한 치명적이거나 긴급 상황의 제어 장치는 시각, 촉각 둘 모두로 식별할 수 있어야 한다고 했고요. 마지막으로 터치스크린은 다지선다형처럼 각각 독립된 기능을 조작할 때 적절하지, 가속/감속처럼 연속적인 단위의 선택을 하기는 적절하지 않으며, 기계식 스로틀이라면 방향, 힘, 여러 엔진을 함께 조작하고 있는지 등을 시각/촉각으로 쉽게 알 수 있었을 것이라고 지적하고 있습니다.

사건 보고서 공개 두 달 뒤인 2019년 8월 9일, 미 해군은 구축함 조타장치의 터치스크린을 폐기하고 기계식 스로틀로 돌아갈 것이라고 밝혔습니다. “그냥 우리가 쓸 수 있는 스로틀을 주기나 하십시오. (Just give us the throttles that we can use.)”라는 함대 쪽의 발언을 인용해서 말이죠. 헤드라인과 인용 발언 덕분에 이 사건은 터치스크린이 문제였다는 식으로 많이 회자되는 편인데요. 앞에서 말씀드린 것처럼 ‘터치스크린 문제’인 상황에 가깝습니다. 굳이 여러 곳에서 배를 조작할 수 있도록 결정하고, 그 조작권의 현황을 알아보거나 넘기는 경험을 매우 복잡하게 만들고, 모드를 여러 개 만들어 비상 시 상황 파악을 어렵게 만들고, 스로틀을 터치스크린으로 대체하는 등, 여러 개의 나쁜 결정이 쌓여 사용자 경험이 몹시 안 좋은 시스템을 만들어낸 겁니다. 그래서, 사람이 실수할 가능성을 크게 높였고요.

생산 비용이 상대적으로 낮기 때문인지, 하드웨어 디자인에 비해 소프트웨어 디자인은 좀 더 편하게 받아들이는 경향이 있습니다. 실제로 만들다가 고치기도 쉬운 편이기도 하고, 잘못 디자인하더라도 (사용하는 사람들이 괴롭긴 하지만) 하드웨어 디자인에 비하면 사람들이 다치거나 죽는 경우는 극히 적으니까요. 존 매케인 호 사고 사례는 사용자가 실수하게 만드는 디자인이 빚어낸 가장 비극적인 사례라고 볼 수 있겠는데요. 소프트웨어 디자인, 참 중요하고 어려운 과제인 것 같네요.

 

나쁜 소프트웨어 디자인은 군함도 충돌하게 만든다”의 8개의 생각

  1. 대단한 자료십니다. 특별히 거부하지 않으시면, 제 블로그에 ‘링크’로 소개좀 하겠습니다.

  2. 좋은 글 잘 읽었습니다. 난해한 내용을 잘 풀어주심에 감사드립니다.

  3. 제가 요즘 자동차에서 느끼는 문제점을 아주 잘 설명해 주셨습니다.
    저는 정리가 안되서…그냥 불만 이었는데…
    기술자들이 왜 이런 방식을 택하는지이해가안가고 있습니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중