본문으로 건너뛰기
고급약 35분

국방 소프트웨어 규격 환경 읽기 — 산출물과 단계, 그리고 확인해야 할 질문

국방 사업의 품질 기준은 팀이 정하지 않고 규격과 사업 문서가 정한다. 공개 확인이 가능한 범위(제도의 존재와 성격, 규격 문서 체계를 읽는 법)와 사업·기관마다 달라 반드시 원문으로 확인해야 하는 범위를 가르고, QA 가 착수 시점에 누구에게 무엇을 물어야 하는지를 질의 목록으로 만든다.

  • #국방SW
  • #국방규격
  • #신뢰성시험
  • #산출물
  • #추적성
  • #방산QA

개념

이 레슨은 규격 내용을 가르치지 않는다

먼저 분명히 해 둔다. 국방 소프트웨어 개발·시험 규격의 세부 요구사항을 이 레슨에서 전달하지 않는다. 이유는 두 가지다.

첫째, 공개 확인이 고르지 않다. 제도의 존재와 큰 성격은 공개 자료로 확인되지만, 구체적인 산출물 목록, 단계별 검토 항목, 시험 기준 수치, 적용 대상 판정 기준은 규정 원문과 사업 문서에서만 확인할 수 있다. 공개 논문과 업체 자료에 조각이 흩어져 있지만, 판본이 다르거나 개정 전 내용인 경우가 많다.

둘째, 개정된다. 지침과 매뉴얼은 통합·개정을 거치고, 사업마다 적용 판본이 다르다. 외운 내용을 적용하면 틀린 판본으로 일한다.

그래서 이 레슨의 산출물은 지식이 아니라 질의 목록 이다. 이 분야에 들어간 QA 가 첫 주에 해야 하는 일은 규격을 외우는 것이 아니라 "우리 사업에 적용되는 문서가 무엇이고, 그 문서의 어느 판본이며, 그것이 요구하는 산출물 목록이 어디에 적혀 있는가" 를 확인하는 것이다. 그 확인을 할 줄 아는 사람이 이 시장에서 쓰인다.

공개 자료로 확인되는 것

공개 범위에서 말할 수 있는 것은 이 정도다.

방위사업청이 무기체계 소프트웨어의 개발·관리에 관한 매뉴얼을 발간해 운용한다. 기존에 흩어져 있던 매뉴얼과 실무지침서를 사용자 중심으로 통합·개정한 문서라고 공개 자료가 설명하고 있고, 개발 단계별 활동과 검토 사항을 정의하는 성격을 갖는다. 정확한 문서명·판본·목차·요구 산출물 목록은 원문에서 확인한다.

소프트웨어 신뢰성 시험 제도가 운용된다. 공개 자료는 이 제도의 목적을 소스코드 안의 잠재적 결함을 체계적으로 제거해 품질을 높이는 것 으로 설명한다. 즉 기능이 되는지를 보는 시험과 별개로, 코드 자체를 들여다보는 활동 이 제도로 들어와 있다는 뜻이다. 시험 항목, 판정 기준, 적용 대상 선정 기준, 등급 구분, 수행 주체와 시기는 규정 원문과 사업 문서에서 확인한다.

국방기술품질원이 관련 품질 업무에 관여한다. 역할의 정확한 범위와 사업 유형별 관여 방식은 기관 공개 문서에서 확인한다.

이 세 문장이 공개 확인의 거의 전부다. 여기서 더 나아가 "산출물은 몇 종이고 단계는 몇 개다" 를 적는 자료들이 있지만, 판본 확인 없이 인용할 수 없다. QA 문서에 그런 숫자를 적었다가 틀리면, 그 문서를 믿고 일한 사람들의 일정이 함께 틀어진다.

규격 환경이 QA 에게 뜻하는 것

세부를 모르더라도 환경의 성격 은 알 수 있고, 그것이 실무에서 더 중요하다. 이 환경의 성격은 네 가지다.

1) 품질 기준이 바깥에서 주어진다. 일반 소프트웨어 QA 는 팀과 함께 "어디까지 되면 출하" 를 정한다. 이 환경에서는 그 선이 규격과 계약 문서에 이미 적혀 있다. QA 의 일은 선을 정하는 것이 아니라 그 선을 시험 가능한 문장으로 번역하고 증거를 모으는 것 이다.

2) 산출물이 결과물의 일부다. 소프트웨어가 돌아가는 것과 별개로, 문서가 납품물이다. 시험 계획서·절차서·결과서·추적표가 빠지면 소프트웨어가 완벽해도 인수되지 않는다. 그래서 일정 산정에서 문서 작업 시간이 실행 시간과 비슷하거나 더 크다.

3) 재배포로 고칠 수 없다. 장비에 실린 소프트웨어는 패치가 사업이다. 운영 중 발견된 결함 하나를 고치는 데 시험과 승인을 다시 거친다. 그래서 출하 전에 잡는 것의 가치가 일반 소프트웨어보다 자릿수로 크고, 그 가치가 두터운 검증 활동의 비용을 정당화한다.

4) 검증의 독립성이 요구된다. 만든 사람이 검증하지 않는다는 원칙이 권장이 아니라 요건으로 들어온다. 이것이 항공 쪽에서 어떻게 구체화되는지는 레슨 2 에서 DO-178C 를 통해 본다 — 그쪽은 공개 규격이라 구조를 그대로 볼 수 있다.

추적성이 산출물의 뼈대다

이 환경의 모든 문서를 꿰는 하나의 축이 추적성 이다. 요구사항 하나가 설계로, 코드로, 시험 절차로, 시험 결과로 이어지고, 거꾸로 되짚을 수 있어야 한다.

추적성이 왜 산출물의 뼈대인가. 이 환경의 질문은 "잘 되나요" 가 아니라 "요구사항 전부가 검증되었음을 어떻게 아는가" 이기 때문이다. 이 질문에 답하는 유일한 방법이 추적표다.

QA 가 처음부터 의식해야 하는 것은 추적표를 나중에 만들 수 없다 는 점이다. 시험을 다 하고 나서 요구사항과 연결하려 하면, 어느 케이스가 어느 요구를 덮는지 기억에 의존하게 되고 빈칸이 생긴다. 추적 식별자는 케이스를 쓰는 순간 붙인다. 이것은 규격을 몰라도 지금 당장 할 수 있는 실천이고, 이 분야 면접에서 바로 통하는 습관이다.

요구사항 수준이 여러 겹이다

이 환경에서는 요구사항이 한 층이 아니다. 체계 수준 요구가 있고, 그것이 소프트웨어 수준 요구로 쪼개지고, 다시 설계로 내려간다. 각 층마다 대응하는 시험이 있다.

층대응하는 시험 성격
체계·상위 요구체계 통합 시험, 운용 시험
소프트웨어 상위 요구소프트웨어 요구 기반 시험
소프트웨어 설계·저수준 요구통합 시험, 단위 시험

QA 가 혼동하기 쉬운 지점은 같은 이름의 시험이 층마다 다른 것을 본다 는 점이다. "통합 시험" 이 소프트웨어 모듈 간 통합인지 체계 구성품 간 통합인지에 따라 대상·환경·증거가 전부 다르다. 사업 문서의 용어 정의를 먼저 읽고, 우리 사업에서 그 단어가 무엇을 가리키는지 를 확인하는 것이 모든 혼선의 예방책이다.

이 층 구조는 항공 쪽 DO-178C 에서 명시적으로 드러나므로, 구조를 이해하는 데는 레슨 2 가 더 좋은 교재다. 국방 사업에 들어가더라도 DO-178C 의 구조를 먼저 이해해 두면 사업 문서를 읽는 속도가 달라진다.

하지 않는 일 — 분명히 해 둘 경계

이 모듈에서 다루지 않는 것이 있다.

  • 실제 무기체계의 구체적 취약점·공격 기법·회피 방법 은 다루지 않는다. 이 모듈의 주제는 규격이 요구하는 검증과 증빙이지 공격이 아니다. 보안 시험 기법 일반은 모듈 50 이 맡는다
  • 비공개 자료의 내용을 추정해 채우지 않는다. 대외비 문서의 내용은 접근 권한이 있는 사람이 원문으로 본다
  • 사업·기관별 절차를 일반화하지 않는다. "국방 사업은 이렇게 한다" 는 문장은 대개 틀린다. 사업 유형, 체계 종류, 계약 형태에 따라 다르다

이 경계를 지키는 것이 이 분야에서 신뢰를 얻는 방식이다. 모르는 것을 모른다고 말하고 확인 경로를 제시하는 사람이, 아는 척하는 사람보다 훨씬 빠르게 일을 받는다.

실무에서 왜 필요한가

이 분야에 들어가는 QA 가 첫 달에 겪는 어려움은 기술이 아니라 문서 체계 다. 규정, 지침, 매뉴얼, 계약 문서, 사업 문서, 체계 개발 실행 계획서, 형상 관리 문서가 서로를 참조하고 있고, 어느 문장이 우리를 구속하는지가 한눈에 보이지 않는다.

이때 두 가지 실패가 흔하다.

첫째, 규격을 읽지 않고 일반 QA 방식으로 시작한다. 테스트 케이스를 잘 쓰고 결함도 잘 찾았는데, 중간 검토에서 산출물 양식이 맞지 않는다 는 지적을 받고 전부 다시 쓴다. 양식은 취향이 아니라 요건이다.

둘째, 어디선가 들은 숫자로 일한다. "신뢰성 시험은 몇 등급이고 기준이 몇 퍼센트" 같은 말을 전해 듣고 계획에 반영한다. 판본이 다르거나 사업 유형이 달라 틀린 전제로 일정을 세우게 되고, 틀어지는 시점은 항상 후반이다.

둘 다 착수 시점의 질의 목록 하나 로 막을 수 있다. 적용 문서와 판본, 요구 산출물 목록과 양식, 제출 시점, 검토 주체, 추적성 요구 수준, 독립성 요구 범위. 이 여섯 가지를 물어 답을 문서로 받아 두면 사업 전체의 뼈대가 잡힌다.

채용 관점에서 이 분야는 경력이 길게 쌓이는 쪽 이다. 진입 장벽이 문서 체계와 보안 절차에 있어서 공급이 적고, 한 번 사업을 끝까지 겪은 사람의 가치가 높다. 공고에는 "방산 사업 경험", "국방규격", "DO-178", "형상관리", "추적성", "신뢰성 시험" 같은 말이 적힌다. 면접에서 규격 조항을 외워 답하는 것보다 "적용 판본을 먼저 확인하고 산출물 목록과 양식을 받아 일정을 역산한다" 고 답하는 쪽이 실제로 일할 사람처럼 들린다.

실습 과제

과제 1 — 착수 질의 목록 (25분)

국방 사업에 QA 로 투입되었다고 가정하고 착수 질의 목록 을 만든다. 각 질문은 아래 형식을 갖춘다.

  • 질문(한 문장, 답이 문서로 나올 수 있게)
  • 물어볼 대상(사업관리·개발PM·품질보증·형상관리 중)
  • 답을 받을 형태(문서명·링크·첨부)
  • 답이 없을 때의 위험
  • 이 답이 결정하는 나의 작업

최소 12개를 만든다. 다음 축을 반드시 포함한다 — 적용 문서와 판본, 산출물 목록과 양식, 제출 시점과 검토 주체, 추적성 요구 수준, 독립성 요구 범위, 시험 환경 제공 범위, 보안 절차와 반출 통제, 결함 처리 절차, 변경 영향 분석 요구, 신뢰성 시험 적용 여부와 수행 주체.

과제 2 — 용어 정의 확인표 (20분)

사업 문서를 읽을 때 뜻이 갈리는 단어 15개를 고르고, 각각에 대해 "우리 사업에서 이 단어가 가리키는 것" 을 적을 빈 칸이 있는 확인표를 만든다.

최소 포함 — 단위 시험, 통합 시험, 체계 시험, 검증, 확인, 요구사항, 상위 요구, 저수준 요구, 결함, 변경, 형상 항목, 기준선, 시험 절차, 시험 결과, 추적성.

각 단어마다 "뜻이 갈리면 무엇이 틀어지는가" 를 한 줄 붙인다. 예: '통합 시험' 의 범위가 갈리면 시험 환경 준비 주체가 갈린다.

과제 3 — 추적 식별자 체계 설계 (25분)

추적표를 나중에 만들지 않기 위한 식별자 체계 를 설계한다.

  1. 요구사항·설계·코드 단위·시험 절차·시험 결과·결함 각각의 식별자 형식을 정한다
  2. 식별자만 보고 어느 층의 무엇인지 알 수 있게 만든다
  3. 요구사항 1개가 시험 케이스 여러 개에 대응하고, 시험 케이스 1개가 요구사항 여러 개를 덮는 다대다 관계 를 어떻게 표현할지 정한다
  4. 요구사항이 변경되었을 때 영향받는 케이스를 찾는 절차를 쓴다
  5. 추적표를 자동 생성하려면 어느 정보를 어디에 기록해야 하는지 적는다

마지막에 "요구사항 하나가 어떤 시험으로도 덮이지 않았음을 어떻게 발견하는가" 와 "시험 하나가 어느 요구에도 연결되지 않았음을 어떻게 발견하는가" 두 질문에 각각 답한다. 양방향 모두 공백이다.

과제 4 — 판본 혼선 사례 분석 (20분)

아래 상황을 분석한다.

사업 착수 6개월째, 시험 절차서를 제출했는데 검토에서 "현재 적용 판본의 양식이 아니다" 라는 지적을 받았다. 확인해 보니 개발팀이 이전 사업에서 쓰던 양식을 그대로 가져왔고, 아무도 적용 판본을 확인한 적이 없었다.

  1. 이 상황에서 당장 해야 할 일을 순서대로 적는다
  2. 영향 범위를 산정하는 방법을 적는다(이미 작성된 산출물 중 무엇이 영향받는가)
  3. 이 일이 처음부터 일어나지 않게 하는 장치를 셋 제안한다
  4. 비슷한 종류의 "아무도 확인하지 않은 전제" 를 세 가지 더 상상해 적는다

자가 체크리스트

  • 국방 소프트웨어 규격의 세부 내용을 외우는 것이 아니라 적용 판본을 확인하는 것이 먼저임을 설명할 수 있다
  • 공개 자료로 확인되는 범위와 원문에서만 확인되는 범위를 구분할 수 있다
  • 소프트웨어 신뢰성 시험이 "코드 자체를 들여다보는 활동" 으로 제도화되어 있다는 성격을 안다
  • 그 제도의 항목·기준·대상 선정은 원문 확인이 필요하다는 것을 안다
  • 이 환경의 네 가지 성격(기준이 바깥에서 주어짐·산출물이 결과물·재배포 불가·독립성 요구) 을 설명할 수 있다
  • 일정 산정에서 문서 작업 비중이 큰 이유를 말할 수 있다
  • 추적성이 산출물의 뼈대인 이유와, 나중에 만들 수 없는 이유를 설명할 수 있다
  • 추적 식별자를 케이스 작성 시점에 붙이는 실천의 이유를 안다
  • 요구사항이 여러 층이고 층마다 대응 시험이 다르다는 구조를 설명할 수 있다
  • 같은 시험 이름이 층마다 다른 것을 가리킬 수 있음을 알고 용어 정의를 먼저 확인한다
  • 착수 질의 목록 6축(적용 문서·산출물·제출·추적성·독립성·환경) 을 들 수 있다
  • 이 모듈이 공격 기법과 비공개 내용을 다루지 않는다는 경계를 설명할 수 있다

흔한 실수

들은 숫자로 계획을 세운다. 이 분야에서 가장 비싼 실수다. 기준·등급·비율을 전해 듣고 반영하면 판본이나 사업 유형이 달라 후반에 전부 틀어진다. 숫자는 문서에서 읽고, 읽은 문서의 이름과 판본을 함께 기록 한다.

"국방 사업은 이렇게 한다" 로 일반화한다. 이전 사업의 경험을 그대로 적용하면 양식부터 다르다. 사업마다 적용 문서를 새로 확인한다.

산출물 양식을 나중 일로 둔다. 내용만 좋으면 된다고 생각해 자유 양식으로 쓰다가 전부 다시 쓴다. 양식은 착수 때 받아 두고 처음부터 그 양식으로 쓴다.

추적표를 마지막에 만든다. 시험을 다 하고 연결하려 하면 빈칸이 생기고, 그 빈칸을 메우려 기억에 의존한다. 식별자는 케이스를 쓰는 순간 붙인다.

추적을 한 방향만 본다. 요구 → 시험만 확인하고 시험 → 요구를 안 본다. 어느 요구와도 연결되지 않은 시험은 범위를 벗어난 작업이거나 요구가 누락된 신호다.

독립성 요구를 조직도 문제로만 본다. 누가 검증했는지가 기록으로 남아야 한다. 사람이 분리되어 있어도 기록에 그 분리가 보이지 않으면 증거가 되지 않는다.

용어 정의를 건너뛴다. '통합 시험' 의 범위가 서로 다른 채로 몇 달이 지나면 시험 환경 준비 주체부터 어긋난다. 정의 확인은 하루면 되고 효과는 사업 내내 간다.

공개되지 않은 내용을 추정해 문서에 적는다. 추정이 문서에 들어가면 다음 사람은 그것을 사실로 읽는다. 모르는 자리는 빈칸과 확인 요청으로 남긴다.

보안 절차를 번거로운 형식으로 본다. 자료 반입·반출 통제, 접근 권한, 매체 관리는 이 환경의 기본 전제다. 우회하는 방식으로 일을 빠르게 하려 하면 사업에서 배제된다.

참고 자료

  • 방위사업청 공개 문서 — 무기체계 소프트웨어 개발·관리에 관한 매뉴얼의 정확한 문서명, 판본, 목차, 요구 산출물 목록은 발간 기관의 공개본에서 확인한다 (문서명·판본·조항 — 원문 확인)
  • 국방기술품질원 공개 문서 — 소프트웨어 신뢰성 시험 관련 업무의 범위와 절차, 사업 유형별 관여 방식(원문 확인)
  • 사업의 계약 문서와 체계 개발 실행 계획서 — 최종적으로 우리를 구속하는 것은 이 문서들이다. 규격 일반론보다 이 문서가 우선한다
  • ISO/IEC/IEEE 12207 — 소프트웨어 생애주기 프로세스의 국제 표준. 국방 분야 문서 체계가 참조하는 공통 골격을 이해하는 데 도움이 된다(조항 — 원문 확인)
  • 모듈 63 레슨 2 — DO-178C: 공개 규격으로 같은 구조(요구 층·목표·독립성·증거)를 구체적으로 볼 수 있다. 국방 사업에 들어가더라도 먼저 읽어 두면 문서 독해가 빨라진다
  • 모듈 35 — 기능안전 소프트웨어 테스팅: 안전 규격이 요구하는 활동의 일반 구조
  • 모듈 46 — 임베디드 시스템 검증: 대상 소프트웨어가 올라가는 하드웨어 계층
  • 모듈 50 — 보안 테스팅 심화: 보안 시험 기법은 이 모듈이 아니라 그쪽이 맡는다

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
DO-178C — 항공 소프트웨어 인증 지침
비행기에 들어가는 소프트웨어를 어떻게 만들고 증명해야 하는지 정한 문서.
PM — 프로젝트 또는 제품 관리자
일정과 범위를 정하고 결정을 내리는 사람. 회사에 따라 프로젝트 관리자와 제품 관리자 둘 중 하나를 뜻한다.
ISO/IEC/IEEE — 세 단체 공동 표준
세 국제 단체가 함께 낸 표준이라는 표시.

용어집 전체 보기