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

실시간·안전 시험 환경 — 시험 결과가 증거가 되기 위한 조건

규격 환경에서 시험 환경은 편의 수단이 아니라 증거의 전제다. 호스트에서 통과한 결과가 대상 하드웨어에서 성립하지 않는 이유, 계측과 관측이 결과를 바꾸는 문제, 실시간 요구를 다루는 환경의 조건, 그리고 환경 자체를 문서로 적격화해 증거에 첨부하는 방법을 다룬다.

  • #시험환경
  • #대상하드웨어
  • #계측
  • #실시간
  • #결정성
  • #환경적격성
  • #증거

개념

범위를 먼저 줄인다

이 레슨의 원래 주제는 "전장관리·무기체계의 실시간·안전 시험 환경" 이었다. 그 범위를 의도적으로 줄였다. 특정 무기체계의 시험 절차, 시험장 운용 방식, 체계별 안전 통제 절차는 사업·기관마다 다르고 공개 확인이 어렵다. 공개되지 않은 절차를 추정해 적는 것은 이 모듈의 원칙에 어긋난다.

그래서 이 레슨은 어느 실시간·안전 소프트웨어에나 공통으로 성립하는 부분 만 다룬다 — 시험 환경이 증거의 전제가 되는 구조 다. 이 부분은 규격이 공개된 항공 쪽과 일반 임베디드 검증에서 확인할 수 있고, 어떤 사업에 들어가더라도 그대로 쓰인다.

그리고 무기체계의 구체적 취약점·공격 기법은 다루지 않는다. 이 모듈의 주제는 규격이 요구하는 검증과 증빙이다.

환경이 증거의 전제라는 말의 뜻

일반 소프트웨어 QA 에서 시험 환경은 편의 다. 어디서 돌려도 결과가 같다면 빠른 환경을 쓴다. 규격 환경에서는 다르다. "어디서 실행했는가" 가 결과의 의미를 바꾼다.

"시험 1,240건 전부 통과" 라는 문장은 그 자체로 아무것도 증명하지 않는다. 증명하는 문장은 이런 모양이다 — "형상 번호 R1.4.2 의 실행 코드를, 대상 하드웨어 동등 구성에서, 계측 없이, 명시된 컴파일 옵션으로 빌드해, 1,240건을 실행해 전부 통과했다." 전제가 빠지면 결과는 재현할 수 없고, 재현할 수 없는 결과는 증거가 되지 못한다.

그래서 이 분야 QA 가 환경에 들이는 시간은 낭비가 아니다. 환경을 문서화하는 일이 시험 작업의 절반 이다.

호스트에서 통과한 것이 대상에서 깨지는 이유

개발 PC(호스트) 에서 돌리는 시험은 빠르고 편하다. 그리고 많은 활동을 그렇게 한다. 문제는 호스트와 대상 하드웨어가 같은 코드를 다르게 실행한다 는 점이다. 차이는 여섯 축에서 나온다.

축차이가 만드는 결함
컴파일러·최적화분기 합치기·순서 변경·미정의 동작 해석 차이
자료형 크기·정렬int 폭, 구조체 패딩, 정렬 제약 위반
바이트 순서통신·저장 데이터 해석이 반대로
부동소수 처리연산 순서·중간 정밀도·라운딩 차이로 값이 미세하게 다름
자원 한계스택 깊이, 힙 없음, 메모리 보호 유무
타이밍클럭, 캐시, 인터럽트, 실제 주기

마지막 두 축이 특히 중요하다. 호스트에는 메모리가 넘치고 스택이 깊지만 대상에는 없다. 호스트에서 멀쩡한 재귀가 대상에서 스택을 넘긴다. 그리고 호스트는 실시간 환경이 아니다 — 주기를 맞춘다는 요구는 호스트에서 검증 자체가 불가능 하다.

그래서 활동을 환경에 배분하는 원칙이 생긴다.

  • 호스트에서 할 수 있는 것 — 요구 기반 시험의 논리 확인, 초기 커버리지 측정, 빠른 회귀. 다만 결과를 최종 증거로 쓰기 전에 대상에서 다시 확인 한다
  • 대상(또는 동등 구성) 에서만 할 수 있는 것 — 타이밍, 자원 사용, 하드웨어 인터페이스, 인터럽트 상호작용, 최종 실행 코드의 동작
  • 둘 다 하는 것 — 안전 관련 핵심 요구. 호스트에서 설계하고 대상에서 확정한다

xIL 계층(MIL·SIL·PIL·HIL) 의 구분과 각 계층이 무엇을 대체하는지는 모듈 46 레슨 5 가 다룬다. 이 레슨은 그 위에서 "그래서 어느 결과를 증거로 쓸 수 있는가" 만 본다.

계측이 대상을 바꾼다 — 관측의 역설

커버리지를 재려면 계측이 필요하고, 타이밍을 재려면 측정 코드나 외부 장비가 필요하다. 그런데 계측은 코드를 바꾼다. 코드가 커지고 느려지고, 때로는 메모리 배치가 달라진다.

여기서 모순이 생긴다.

  • 계측하고 실행한 결과 — 커버리지는 얻지만, 실행된 코드가 배포 코드가 아니다
  • 계측 없이 실행한 결과 — 배포 코드지만, 커버리지를 모른다

실무에서 쓰이는 처리 방식은 둘 다 하고 차이를 설명하는 것 이다.

  1. 계측 빌드로 커버리지를 측정한다
  2. 비계측 빌드로 기능·타이밍 시험을 실행한다
  3. 두 실행이 같은 소스 형상 임을 형상 식별로 보인다
  4. 계측이 결과에 영향을 주지 않았음을 보이는 근거를 적는다 — 동일 케이스의 판정 결과 비교, 타이밍 여유의 비교
  5. 계측 빌드에서만 통과하거나 비계측에서만 통과하는 케이스가 있으면 그 자체가 결함 신호 로 다룬다

5번이 핵심이다. 계측 유무로 결과가 갈리는 코드는 타이밍이나 메모리 배치에 의존하는 코드 이고, 그런 의존은 안전이 걸린 소프트웨어에서 결함이다. 즉 이 비교는 번거로운 절차가 아니라 결함을 찾는 수단 이다.

관측 수단의 영향은 하드웨어 쪽에서도 나타난다. 오실로스코프·로직 분석기로 신호를 보는 일과 그 전기적 영향은 모듈 46 레슨 4 가 다룬다.

실시간 요구를 다루는 환경의 조건

"주기 안에 끝난다" 는 요구를 시험하려면 환경이 세 가지를 만족해야 한다.

1) 측정이 대상을 방해하지 않아야 한다. 소프트웨어 타이머로 자기 자신을 재면 측정 오버헤드가 결과에 들어간다. 외부 관측(출력 핀 토글 + 계측기, 추적 포트) 이 더 신뢰할 수 있다. 어떤 방법을 썼고 오차가 얼마인지가 증거에 들어간다.

2) 최악 조건을 만들 수 있어야 한다. 평균 실행 시간은 거의 의미가 없다. 필요한 것은 가장 오래 걸리는 경로 이고, 그 경로를 만드는 입력과 상태를 설계해야 한다. 캐시가 비어 있는 상태, 인터럽트가 몰리는 상태, 분기가 가장 긴 경로로 가는 입력을 의도적으로 만든다. 최악 실행 시간(WCET) 분석의 기법과 도구는 모듈 46 의 RTOS·실시간 영역에서 다룬다 — 이 레슨은 그 결과를 증거로 남기는 조건 만 본다.

3) 반복 가능해야 한다. 같은 입력으로 같은 결과가 나와야 한다. 실시간 소프트웨어에서 이것이 어려운 이유는 비결정성 이다 — 인터럽트가 언제 들어오는지, 스케줄러가 어떤 순서로 깨우는지가 실행마다 다를 수 있다. 결과가 매번 다르면 "통과" 가 무슨 뜻인지 모호해진다.

비결정성을 다루는 현실적 방법은 셋이다.

  • 고정한다 — 인터럽트 소스를 통제하고, 시작 상태를 매번 같게 만든다
  • 반복한다 — 한 번 통과를 증거로 쓰지 않고, 횟수를 정해 반복하고 분포를 남긴다
  • 여유를 요구한다 — 측정값이 한계에 닿지 않고 여유(margin) 를 갖도록 기준을 세운다. 한계의 몇 %를 여유로 요구할지는 사업·규격이 정하므로 원문 확인 이다

환경 적격성 — 환경 자체를 문서로 만든다

규격 환경에서 시험 환경은 적격성(qualification) 을 설명해야 하는 대상 이다. "이 환경에서 얻은 결과를 왜 믿을 수 있는가" 에 답하는 문서가 필요하다. 적격성 요구의 정확한 범위와 수준별 차이는 규격 원문과 사업의 인증 계획에서 확인한다(원문 확인). 공통으로 요구되는 성격은 이렇다.

항목적어야 하는 것
구성 식별하드웨어 품명·개정, 보드·케이블·전원, 계측기 모델·교정 상태
소프트웨어 식별OS·RTOS 버전, 컴파일러·링커·옵션, 라이브러리, 시험 도구 버전
대상 동등성실제 장비와 다른 점과, 그 차이가 결과에 미치는 영향 평가
자극·부하 생성입력을 어떻게 만드는가, 그 수단의 정확도
관측 수단무엇으로 재는가, 오차와 영향
설정 보존설정이 재현되는가(파일로 관리되는가, 손으로 맞추는가)
변경 통제환경이 바뀌면 무엇을 다시 하는가

"대상 동등성" 칸이 이 표의 핵심 이다. 실제 장비 그대로 시험할 수 있는 경우는 드물다. 거의 항상 일부가 다른 구성 에서 시험하고, 그 차이를 설명해야 한다. 차이를 숨기면 증거가 무너지고, 차이를 적고 영향을 평가하면 증거가 성립한다.

그리고 손으로 맞추는 설정은 증거의 약점 이다. 다음 사람이 같은 환경을 재현할 수 없으면 그 결과는 1회성이다. 환경 설정을 파일로 관리하고 버전을 붙이는 것이 이 분야에서 자동화보다 먼저 오는 기본기다.

환경이 바뀌면 결과가 무효가 된다

사업 중에 환경은 반드시 바뀐다. 보드 개정이 올라가고, 컴파일러 패치가 적용되고, 계측기가 교체되고, RTOS 버전이 올라간다. 그때마다 어느 결과가 무효가 되는가 를 판정해야 한다.

판정 기준을 미리 정해 두는 것이 QA 의 일이다.

  • 전면 재실행 — 컴파일러·최적화 옵션 변경, RTOS 버전 변경, 대상 프로세서 변경
  • 부분 재실행 — 특정 주변장치 관련 변경 → 그 인터페이스 관련 케이스
  • 재실행 불필요(근거 기록) — 결과에 영향을 주지 않음을 설명할 수 있는 변경 (예: 계측기 교정 갱신, 시험 데이터 생성 스크립트의 로그 문구 수정)

이 기준이 없으면 두 극단으로 간다. 전부 다시 돌리느라 일정이 터지거나, 아무것도 다시 돌리지 않아 증거가 실제 형상과 어긋난다. 기준을 문서로 만들어 합의해 두면 변경이 일어날 때마다 논쟁하지 않는다.

안전 전제 — 이 레슨에서 하지 않는 일

시험 환경이 실제 장비·전원·구동부와 연결되는 순간, 그것은 소프트웨어 작업이 아니다. 분명히 해 둔다.

  • 실제 장비·구동부·전원 계통의 조작을 QA 가 임의로 하지 않는다. 승인, 자격, 안전 조치가 전제다. 이 레슨의 실습 과제는 전부 설계·문서 과제 다
  • 구동부가 움직이는 시험은 참관·기록 쪽이 QA 의 자리 다. 조작은 해당 담당이 한다
  • 안전 장치를 우회한 구성으로 시험하지 않는다. 시험 편의를 위해 인터락을 해제하는 구성은 그 자체로 중대한 절차 위반이다
  • 실제 운용 환경에서 임의 시험을 하지 않는다. 시험은 정해진 환경과 일정에서 한다

장애 주입의 일반 기법과 안전 원칙은 모듈 46 레슨 6, 설비 안전 영역의 QA 경계는 모듈 62 레슨 6 이 다룬다. 두 레슨의 원칙이 여기서도 그대로 적용된다.

실무에서 왜 필요한가

이 분야에서 심사·검토에서 가장 자주 되돌아오는 지적이 환경 이다. 시험을 성실하게 했고 결과도 좋은데, "이 결과가 대상 하드웨어에서 얻어진 것입니까", "계측 빌드와 배포 빌드가 같은 형상입니까", "환경 구성이 어디에 적혀 있습니까" 에 답하지 못해 되돌아온다.

그리고 되돌아오는 시점이 사업 후반 이다. 그때는 환경이 이미 바뀌어 있어 같은 조건을 재현할 수 없고, 다시 실행하려면 장비 시간을 새로 받아야 한다. 장비 시간은 이 분야에서 가장 희소한 자원이다.

반대로 환경 문서를 처음부터 관리하면 두 가지를 얻는다. 첫째, 질문에 문서로 답하게 된다. 둘째, 변경이 일어날 때 영향 범위를 즉시 말할 수 있다. 이 두 가지가 가능한 QA 는 사업에서 위치가 다르다.

실무적으로 더 큰 소득이 하나 더 있다. 계측 유무 비교와 반복 실행이 결함을 찾아낸다. 타이밍에 의존하는 코드, 초기화 순서에 의존하는 코드, 간헐적으로 깨지는 코드는 이 절차에서 드러난다. 환경 관리를 형식으로 보면 그 소득을 놓친다.

채용 관점에서는 이 레슨의 내용이 경력의 구분선 이 된다. "시험을 돌렸습니다" 와 "대상 동등 구성에서 비계측 빌드로 100회 반복해 여유를 확인했고 환경 구성서를 첨부했습니다" 의 차이는 면접에서 즉시 드러난다.

실습 과제

이 과제는 전부 설계·문서 과제 다. 실제 장비 조작, 구동부 작동, 전원 계통 조작, 안전 장치 우회는 포함하지 않는다.

과제 1 — 활동 배분표 (25분)

가상의 탑재 소프트웨어 시험 항목 20개를 상상해 적고(요구 기반 기능 시험, 타이밍, 자원 사용, 하드웨어 인터페이스, 인터럽트 상호작용, 커버리지 측정, 회귀 등), 각 항목을 세 칸으로 배분한다.

배분의미
호스트에서 가능(증거로 사용 가능)대상 재확인 불필요
호스트에서 설계, 대상에서 확정두 번 한다
대상에서만 가능대체 불가

배분한 뒤 "대상에서만 가능" 항목의 장비 시간 합계 를 추정하고, 그 시간이 받을 수 있는 시간보다 크면 우선순위를 매긴다. 포기하는 항목에는 남는 위험을 문장으로 적는다.

마지막에 "호스트에서 가능(증거로 사용 가능)" 으로 분류한 항목에 대해 그렇게 판단한 근거 를 항목별로 한 줄 쓴다. 근거를 쓸 수 없는 항목은 가운데 칸으로 옮긴다.

과제 2 — 호스트·대상 차이 점검표 (25분)

위 여섯 축(컴파일러·자료형·바이트 순서·부동소수·자원·타이밍) 에 대해 점검표를 만든다.

  1. 축마다 우리 구성에서 실제로 다른 점 을 적는 칸을 만든다
  2. 축마다 그 차이가 드러날 시험 케이스 를 최소 1개 설계한다 (예: 구조체를 통신으로 주고받아 패딩·바이트 순서 차이를 드러내는 케이스)
  3. 부동소수 축에서는 "값이 미세하게 다를 때 통과 판정을 어떻게 하는가" 를 정한다. 허용 오차를 어디서 가져오는지도 적는다(요구사항에서 와야 한다)
  4. 자원 축에서는 스택 최대 사용량을 어떻게 확인할지 적는다
  5. 점검표를 다 만든 뒤, 호스트 결과를 증거로 쓸 수 있는 조건 을 세 문장으로 정리한다

과제 3 — 계측 영향 처리 절차 (25분)

계측 빌드와 비계측 빌드를 함께 다루는 절차를 설계한다.

  1. 두 빌드의 형상 동일성 을 보이는 방법을 정한다(무엇을 비교해 같다고 말하는가)
  2. 어느 시험을 어느 빌드에서 실행할지 배분한다
  3. 계측이 영향을 주지 않았음을 보이는 비교 항목 을 정한다 (판정 결과 일치, 타이밍 여유 비교, 메모리 사용 비교)
  4. 계측 유무로 결과가 갈리는 케이스가 나왔을 때 의 처리 절차를 쓴다. 이것을 결함으로 다루는 근거를 한 문단으로 적는다
  5. 커버리지 보고서와 타이밍 보고서가 서로 다른 빌드의 결과 임을 독자가 오해하지 않도록 하는 표기 방식을 정한다

과제 4 — 실시간 시험 설계 (25분)

"제어 연산은 정해진 주기 안에 완료된다" 는 요구사항을 시험 가능한 형태로 만든다. 수치는 상상해 넣지 않는다 — 주기와 여유 요구는 "요구사항 명세에서 확인한 값(원문 확인)" 으로 표시한다.

  1. 측정 방법 3가지를 적고 각각의 오차와 대상 방해 정도를 비교한다
  2. 최악 경로를 만드는 입력과 상태 를 설계한다. 캐시·인터럽트·분기 길이를 각각 어떻게 다루는지 적는다
  3. 반복 횟수와 판정 방식을 정한다. 1회 통과를 쓰지 않는 이유를 적는다
  4. 결과를 어떤 형태로 남길지 정한다(분포·최대값·여유, 그리고 각각을 어디에 쓰는가)
  5. 비결정성을 다루는 세 방법(고정·반복·여유) 중 무엇을 어떻게 조합했는지 적는다

과제 5 — 환경 구성서와 변경 영향 기준 (25분)

위 표의 일곱 항목을 담은 환경 구성서 양식 을 만들고, 이어서 변경 영향 기준을 정한다.

  1. 양식을 만든다. 빈칸을 채우면 완성되는 형태로
  2. "대상 동등성" 칸에 실제 장비와 다른 점 5개 를 상상해 적고, 각각의 영향 평가를 한 줄씩 쓴다
  3. 변경 유형 10개를 적고 전면 재실행 / 부분 재실행 / 재실행 불필요 로 분류한다
  4. "재실행 불필요" 로 분류한 것에는 근거 문장 을 붙인다
  5. 환경 설정을 파일로 관리하는 방법을 설계한다. 손으로 맞춰야 하는 항목이 남으면 그것을 증거의 약점 으로 기록하는 방식을 정한다

자가 체크리스트

  • 이 레슨이 공개 확인 가능한 공통 부분으로 범위를 줄였다는 것과 그 이유를 안다
  • 규격 환경에서 "어디서 실행했는가" 가 결과의 의미를 바꾼다는 것을 설명할 수 있다
  • 결과 문장에 형상·환경·빌드 조건이 함께 들어가야 하는 이유를 안다
  • 호스트와 대상이 같은 코드를 다르게 실행하는 여섯 축을 들 수 있다
  • 호스트에서 검증할 수 없는 요구(타이밍·자원) 를 구분할 수 있다
  • 활동을 호스트·양쪽·대상으로 배분하고 근거를 적을 수 있다
  • 계측이 코드를 바꾸기 때문에 생기는 모순을 설명할 수 있다
  • 계측·비계측 두 빌드를 함께 다루고 형상 동일성을 보이는 절차를 설계할 수 있다
  • 계측 유무로 결과가 갈리는 것이 결함 신호인 이유를 말할 수 있다
  • 실시간 측정이 대상을 방해하지 않아야 한다는 조건과 측정 방법의 선택지를 안다
  • 평균이 아니라 최악 경로를 만들어야 하는 이유와 그 설계 축을 안다
  • 비결정성을 고정·반복·여유 세 방법으로 다루는 법을 설명할 수 있다
  • 1회 통과를 증거로 쓰지 않는 이유를 말할 수 있다
  • 환경 적격성 문서에 들어갈 일곱 항목을 들 수 있다
  • "대상 동등성" 칸이 핵심이며 차이를 적는 쪽이 증거가 된다는 것을 안다
  • 손으로 맞추는 설정이 증거의 약점인 이유를 설명할 수 있다
  • 환경 변경을 전면·부분·불필요로 분류하는 기준을 미리 정해야 하는 이유를 안다
  • 실제 장비·구동부·전원 조작과 안전 장치 우회가 QA 의 임의 작업이 아님을 안다

흔한 실수

호스트 결과를 그대로 증거로 쓴다. 빠르고 편해서 전부 호스트에서 돌린 뒤 "시험 완료" 로 보고한다. 심사에서 대상 하드웨어 결과를 요구받는 시점에 장비 시간이 없다.

결과 문장에 전제를 빼놓는다. "1,240건 전부 통과" 는 증거가 아니다. 형상·환경· 빌드 조건이 함께 있어야 재현 가능하고, 재현 가능해야 증거다.

계측 빌드 결과로 타이밍을 보고한다. 계측된 코드는 배포 코드가 아니다. 커버리지와 타이밍은 서로 다른 빌드에서 나오고, 그 사실이 보고서에 보여야 한다.

계측 유무 차이를 "원래 그렇다" 로 넘긴다. 차이는 타이밍·메모리 의존의 신호다. 결함을 찾는 기회를 버리는 처리다.

평균 실행 시간을 보고한다. 실시간 요구에서 평균은 거의 쓸모가 없다. 필요한 것은 최악값과 여유이고, 최악 경로는 의도적으로 만들어야 한다.

소프트웨어 타이머로 자기 자신을 잰다. 측정 오버헤드가 결과에 섞인다. 외부 관측 수단과 그 오차를 적는다.

1회 통과로 끝낸다. 비결정성이 있는 환경에서 한 번의 통과는 운일 수 있다. 반복 횟수와 분포를 정해 남긴다.

여유 없이 한계에 붙은 결과를 통과로 본다. 한계에 닿은 측정값은 다음 변경에서 바로 넘어간다. 여유 기준을 요구사항에서 가져와 적용한다.

환경을 손으로 맞춘다. 다음 사람이 재현할 수 없으면 결과는 1회성이다. 설정은 파일로 관리하고 버전을 붙인다.

대상과 다른 점을 숨긴다. 동등 구성의 차이를 적지 않으면, 발견되는 순간 그 환경의 모든 결과가 의심받는다. 적고 영향을 평가하는 쪽이 증거가 강하다.

환경 변경 후 재실행 판정을 즉흥으로 한다. 기준이 없으면 전부 다시 돌리거나 아무것도 안 돌린다. 둘 다 사업을 망친다.

시험 편의를 위해 안전 장치를 해제한 구성을 만든다. 어떤 이유로도 하지 않는다. 그런 구성에서 얻은 결과는 증거로도 쓰이지 못한다.

참고 자료

  • RTCA/EUROCAE DO-178C(ED-12C) 원문 — 검증 환경에 관한 요구, 대상 컴퓨터 환경에서의 시험 요구, 그리고 환경 적격성 관련 조항(조항 — 원문 확인)
  • DO-330 — 도구 자격: 시험·측정 도구의 결과를 증거로 쓰는 조건(원문 확인)
  • 사용하는 RTOS·컴파일러·디버거·추적 도구의 공식 문서 — 계측 방식, 오버헤드, 추적 포트의 한계가 적혀 있다. 측정값의 의미는 이 문서에서 나온다
  • 계측기(오실로스코프·로직 분석기·타이밍 분석기) 의 사양과 교정 정보 — 오차를 증거에 적으려면 필요하다
  • 사업의 시험 환경 구성서와 시험 환경 승인 문서 — 최종적으로 우리를 구속한다
  • 모듈 46 레슨 4 — 오실로스코프·로직 분석기로 증거 만들기: 하드웨어 관측의 기법
  • 모듈 46 레슨 5 — xIL 환경 계층: 어느 계층에서 무엇을 대체하는가
  • 모듈 46 레슨 6 — 장애 주입 시험: 안전 원칙과 경계
  • 모듈 62 레슨 6 — 설비 안전과 QA 경계: 같은 원칙의 제조 환경 적용
  • 모듈 63 레슨 3 — MC/DC: 계측과 실행 환경이 커버리지 숫자에 미치는 영향

낯선 말 풀이

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

QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
MIL — 모델 시험
부품을 만들기 전에 설계 모델만으로 동작을 시험하는 단계.
SIL — 안전 완전성 수준 · 소프트웨어 포함 시험
이 커리큘럼에서 두 가지로 쓰인다. ① 고장이 났을 때 사람이 다칠 위험이 큰 정도에 따라 매기는 안전 등급(숫자가 클수록 엄격하다) ② 설계 모델이 아니라 실제로 만들어진 코드를 개발용 컴퓨터에서 돌려 보는 시험 단계. 앞뒤 문장에 등급 숫자가 있으면 ①, 모델·실물 시험과 나란히 나오면 ②다.
PIL — 프로세서 포함 시험
실제 칩에 코드를 올려 돌려 보는 단계. 모델 시험과 실물 시험 사이에 있다.
HIL — 하드웨어 포함 시험
실제 부품을 연결해 두고, 주변 환경만 컴퓨터로 흉내 내서 시험하는 방식.
WCET — 최악 실행 시간
어떤 처리가 가장 오래 걸릴 때 얼마나 걸리는지의 상한값.
RTOS — 실시간 운영체제
"정해진 시간 안에 반드시 처리"를 보장하도록 만든 바탕 프로그램.
OS — 운영체제
기기를 돌리는 바탕 프로그램 — 윈도우, 맥, 안드로이드 같은 것.
DO-178C — 항공 소프트웨어 인증 지침
비행기에 들어가는 소프트웨어를 어떻게 만들고 증명해야 하는지 정한 문서.
ED-12C — 항공 소프트웨어 인증 지침(유럽판)
항공 소프트웨어 인증 지침의 유럽 쪽 같은 문서. 내용은 사실상 같다.
MC/DC — 변형 조건·결정 커버리지
조건이 여러 개 붙은 판단문에서, 각 조건이 혼자서 결과를 바꾸는 경우까지 모두 확인했는지 재는 기준.

용어집 전체 보기