2021-08-14
국방오픈소스아카데미 개발 계획서
프로젝트 - 용사여 그대는 어디에
I. 아이템 개요
본 계획서는 markdown 형식으로 작성되었습니다. Github 에서 보기
1.1 아이템 구상 과정
지원자가 개발하려는 [용사여 그대는 어디에] 앱은 유동병력 관리를 휴대폰에서 할 수 있게 하는 앱이다. 인터넷망의 이점을 통해 유동병력 관리를 훨씬 효율적이게 한다. 앱에 대해 소개하기 전에 유동병력의 의미와 개선할 점을 짚어본다.
영내 거주의무가 있는 용사들은 비일과 시간에 자신의 위치를 지휘관(당직사관)이 알릴 의무가 있다. 이는 실상황에 빠르게 소집하고 예기치 못한 사고 등을 예방하기 위함이다. 개개인의 위치를 공유함으로써 필요한 인원을 빠르게 찾을 수 있게 하는 동시에, 평시에는 다른 공간으로 이동하여 여가시간을 즐길 수 있도록 이동의 자유를 보장해주는 역할을 한다.
지원자의 자대에서는 유동병력 보고가 필요할 시 자신의 위치를 행정반에 있는 화이트보드에 적고, 복귀할 시 이름을 지우는 식으로 보고를 대신한다. 이러한 방법이 많은 부대에 보편적으로 사용되고 있다. 이외에도 이름을 작성하는 대신 이름이 적힌 자석을 원하는 위치에 옮겨 붙이는 방법도 많은 부대에서 채택하고 있다.
1.2 기존 통제 방식의 취약점
기존의 유동병력 통제 방식은 많은 허점이 있다. 그 중 가장 큰 문제는, 최신화가 주체적이지 않다는 점이다. 기존의 유동병력 현황판은 최신화가 개개인의 자발적인 보고로 이루어진다. 개개인 모두가 잊지 않고 현황판에 표시를 해주어야만이 최신화가 완전해진다. 다시 말해, 인간의 실수로 최신화가 불완전해질 여지가 다분하다는 것이다. 일례로, 이동하는 데 보고를 잊을 수도 있고, 기존에 보고된 장소에서 벗어날 때 변경 보고를 하지 않는 경우도 있을 수 있다. 이는 중앙에서 '통제'하는 것이 아닌 '공동규약'을 지키는 것에 가깝다. 병력 관리의 책임이 있는 당직근무자 입장에서는 자신의 통제가 닿지 않는 운영방식인 것이다.
둘째로, 기존의 유동병력통제 방식은 현황을 표시할 뿐, 그 외의 기능은 전혀 없다는 점이다. 유동병력 관제의 핵심은 유사 시 인원들을 즉시 통제할 수 있게 하기 위함인데, 현재 방식은 개개인의 위치만 수동적으로 표현할 뿐, 그들을 소집하거나 이동통제할 방법을 제시하지 못한다.
셋째로, 병력이 보고한 대로 이동하였는지 확인할 방법이 없다는 점이다. 한 용사가 장소 A 에 가겠다고 보고하고 장소 B 로 가도 당직근무자는 알 길이 없다. 이런 허점은 허위보고를 유도하고 현황판이 무의미해지며, 결국 통제의 실패로 이어지게 된다.
2. 앱 의 사용 소개
[용사여 그대는 어디에] 앱은 위의 문제들을 해결하기 위해 고안되었다. 사용자들과 당직근무자가 긴밀하게 소통할 수 있는 채널을 만듦으로써 병력 통제와 비일과시간 자유가 보장된다.
[용사여 그대는 어디에]앱은 사용자가 로그인을 함으로써 서비스가 개인화된다. 용사의 경우 보고를 하는 입장이고, 당직근무자의 경우 보고를 받는 입장이기 때문에, 그에 맞는 페이지가 각각 제공된다.
군의 특성상 GPS 기반의 위치 인식 서비스를 제공하기엔 제한사항과 위험 부담이 크다. 그렇기에, 각 장소를 표현하기 위해 OTP 및 OTP 발생기를 도입한다. 각 발생기에 내장된 고유 key 를 통해 공간을 특정하고, 필요시 용사에게 새로 부여하는 번호를 통해 인증 시각과 사용자를 특정한다. OTP 는 각 장소에 NFC 인식기를 연결함으로써 검증 과정을 편리화할 수 있다.
2.1 용사 사용자의 앱 사용 소개
용사로 로그인 된 [용사여 그대는 어디에]앱은 네 개의 페이지로 구성된다.
1 비대면 유동병력 출발보고 - '이동보고' page
'이동보고' 페이지 에서는 두 가지를 입력해 서버로 요청을 전송할 수 있는 form 이 제공된다. 용사가 갈 수 있는 장소들이 버튼들로 보여지고, 아래에 간단한 사유를 적을 수 있는 textfield 가 보여진다. 적절히 고르고 입력한 수 '보고' 버튼을 누르면 당직사관에게 보고 알림이 간다.
2 비대면 유동병력 도착보고 - '도착보고' page
'이동 보고' 페이지에서 당직근무자의 승인이 났을 경우, 용사의 앱에서는 '도착 보고' 페이지로 자동 전환된다. 이 화면엔 하나의 숫자가 보여진다. 영내의 각 장소에는 장소 고유번호를 내부 key 로 가지는 OTP 발생기 및 NFC 태그가 비치되어 있다. 용사는 가기로 보고한 장소에 도착해서, 태그에 휴대폰을 인식시킨다. 그러면 OTP 발생기는 NFC 로 입력받은 숫자와 현재 시각과 장소 고유번호를 입력값으로 하여 OTP 를 하나 생성해낸다. 사용자는 이 OTP 를 NFC 로 받게 된다. 그렇게 되면 서버는 이 OTP 를 검사하고, 당직사관에게 도착보고가 자동으로 간다. 그와 동시에 서버 내 용사의 위치정보를 갱신한다. 막사로 복귀 시 행정반 안의 NFC 태그에 휴대폰을 인식시키면 된다.
3 현위치 최신화 보고 - '현위치 보고' page
당직근무자가 불시 인원 위치 점검을 요구했을 때, 용사에게 알림이 가게 된다. 각 용사는 자신과 가장 가까운 OTP 생성기를 및 NFC 태그를 통해 자신의 위치를 증명한다. 이를 통해 현재 수집된 이동현황의 신뢰도를 높일 수 있다.
4 소집 지시 하달 - '소집 지시' page
넷째는 '소집 지시' 페이지이다. 이 페이지에서는 초시계와 하나의 textfield 가 주어진다. 초시계는 당직근무자가 정한 소집까지의 기한이고, 아래 textfield 는 용사가 도저희 시간 안에 못 올 사유가 있는 경우, 그 사유를 적어 당직근무자에게 보내는 form 역할을 한다.