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

IEC 61508-3 부속서 A·B 기법표 읽기 — SIL별 권고를 시험 계획서로 옮기기

기능안전 소프트웨어 규격은 "이렇게 하라"가 아니라 기법 목록과 SIL별 권고 강도를 표로 준다. IEC 61508-3의 수명주기 절과 부속서 A·B의 두 겹 표 구조, HR·R·---·NR과 대체 기법 표기를 읽고, 동적 분석·구조 커버리지(B.2)와 검증(A.9) 표를 기법 선택표와 미채택 근거로 옮기는 법을 다룬다.

  • #IEC61508
  • #기능안전
  • #SIL
  • #기법표
  • #구조커버리지
  • #안전계획

개념

모듈 25 레슨 5의 계보도에서 한 걸음 안으로

모듈 25 레슨 5에서 기능안전 규격의 계보를 그렸다. 뿌리에 IEC 61508 이 있고, 자동차(ISO 26262)·철도(IEC 62279)·공정산업(IEC 61511)이 그 적용판으로 갈라져 나왔다. 레슨 4에서는 ISO 26262 Part 6의 방법 표가 "이 등급에서는 이 방법을 이만큼 강하게 권고한다" 는 형식이라는 것도 봤다.

그 레슨들은 지도였다. 이 모듈은 시험 현장이다. 모듈 32 레슨 7의 KOLAS 인정범위 목록에 IEC 61508-3:2010, ISO 26262-6:2018, IEC 62279:2015, MISRA C:2012 가 시험 방법으로 올라가 있었다. 시험소가 이 규격들로 무엇을 확인하고 어떤 증거를 만드는가 가 이 모듈의 질문이다.

출발은 뿌리인 61508-3이다. 여기서 표를 읽는 법을 익히면 26262-6과 62279의 표는 이름만 다른 같은 구조로 읽힌다.

61508-3의 뼈대 — 수명주기 절과 두 부속서

61508-3은 소프트웨어 안전 수명주기를 7장의 절로 나눠 요구한다. 시험과 직접 닿는 절만 뽑으면 이렇다.

절내용대응 표
7.2소프트웨어 안전 요구사항 명세A.1
7.4.3소프트웨어 아키텍처 설계A.2
7.4.4지원 도구와 프로그래밍 언어A.3
7.4.5상세 설계A.4
7.4.6코드 구현(A.4·B.1 코딩 표준)
7.4.7 · 7.4.8모듈 시험 · 통합 시험A.5
7.5프로그래머블 전자장치 통합(하드웨어·소프트웨어)A.6
7.7시스템 안전 확인의 소프트웨어 측면A.7
7.8소프트웨어 수정A.8
7.9소프트웨어 검증A.9
8기능안전 평가A.10

부속서는 두 겹이다.

  • 부속서 A — 절마다 기법·수단의 선택 지침 표(A.1~A.10). 규범적 부속서다
  • 부속서 B — A의 표 항목 중 여러 하위 기법으로 갈라지는 것을 펼친 상세 표(B.1~B.9)

B의 표 제목을 보면 어디서 갈라져 나왔는지 알 수 있다.

B.1 설계·코딩 표준          B.4 고장 분석          B.7 준정형 방법
B.2 동적 분석과 시험         B.5 모델링            B.8 정적 분석
B.3 기능·블랙박스 시험       B.6 성능 시험          B.9 모듈식 접근

표기 읽기 — HR·R·---·NR, 그리고 대체 기법

표의 각 칸은 SIL 1~4별 권고 강도다.

표기뜻실무에서의 무게
HR이 SIL에서 강력 권고쓰지 않으면 왜 안 썼는지 를 안전 계획에 근거로 적어야 한다
R권고채택하면 좋고, 조합의 일부로 쓴다
---권고도 반대도 없음선택 사항
NR이 SIL에서 권고하지 않음쓰려면 쓰는 이유를 적어야 한다

HR 줄의 무게를 정확히 이해해야 한다. HR은 의무(mandatory)가 아니다. 그러나 HR 기법을 쓰지 않았다면 그 판단의 근거가 문서로 있어야 한다. 심사에서 HR 미채택 칸에 근거가 비어 있으면 곧바로 지적 사유가 된다.

번호 뒤에 알파벳이 붙은 항목(1a, 1b, 1c)은 대체 가능한 기법 묶음으로 쓰이는 경우가 많다. 이런 묶음에서는 그중 하나 이상을 충족하는 것으로 족하다 는 취지로 읽는다. 다만 모든 알파벳 항목이 대체 관계인 것은 아니다. 뒤에서 볼 B.2의 7a~7d 는 구조 커버리지의 수준 을 나눈 것이라, SIL별 HR 표시를 각각 따라 읽어야 한다. 알파벳 항목을 만나면 표 아래 주석 을 먼저 확인한다.

두 겹 표를 따라가는 법 — A가 B를 가리킨다

A 표의 한 칸은 종종 B 표 전체를 가리킨다. A.9(소프트웨어 검증)를 예로 따라가 보자.

A.9 항목참조SIL 1SIL 2SIL 3SIL 4
1 정형 증명—---RRHR
2 명세·설계의 애니메이션—RRRR
3 정적 분석B.8RHRHRHR
4 동적 분석과 시험B.2RHRHRHR
5 설계 명세 → 검증 계획 순방향 추적—RRHRHR
6 검증 계획 → 설계 명세 역방향 추적—RRHRHR
7 오프라인 수치 분석—RRHRHR

SIL 3 프로젝트에서 A.9의 3번 "정적 분석"은 HR이다. 그런데 이 한 칸은 B.8 표 전체 를 가리킨다. B.8을 펼치면 제어 흐름 분석·데이터 흐름 분석(SIL 3에서 HR), 경계값 분석, 체크리스트, 오류 추정, 정형 검사 같은 하위 기법이 다시 SIL별 권고로 나온다. 결국 "정적 분석을 했다"는 한 줄은 B.8의 어떤 하위 기법을 어떤 도구와 절차로 했는가 로 풀려야 증거가 된다.

같은 방식으로 A.9의 4번 "동적 분석과 시험"은 B.2를, A.5(모듈 시험·통합)의 기능·블랙박스 시험은 B.3을, 성능 시험은 B.6을 가리킨다. A 표만 보고 시험 계획을 세우면 계획이 한 단계 덜 풀린 상태 로 끝난다.

B.2를 시험 계획으로 — 동적 분석과 구조 커버리지

B.2는 이 모듈에서 가장 자주 쓰는 표다. 모듈 3에서 배운 기법들이 그대로 규격 항목으로 나온다.

B.2 항목SIL 1SIL 2SIL 3SIL 4모듈 3 연결
경계값 분석 기반 시험RHRHRHR경계값 분석
오류 추정 기반 시험RRRR오류 추정
오류 주입(seeding) 기반 시험---RRR뮤테이션 발상
모델 기반 시험 케이스 생성RRHRHR모델 기반 테스팅
성능 모델링RRRHR—
동등 분할 시험RRRHR동등 분할
구조 커버리지 — 진입점 100%HRHRHRHR함수 커버리지
구조 커버리지 — 문장 100%RHRHRHR구문 커버리지
구조 커버리지 — 분기 100%RRHRHR분기 커버리지
구조 커버리지 — 조건(MC/DC) 100%RRRHRMC/DC

구조 커버리지 네 줄을 SIL별로 누적해 읽으면 이렇게 정리된다.

HR 로 요구되는 구조 커버리지
SIL 1   진입점
SIL 2   진입점 · 문장
SIL 3   진입점 · 문장 · 분기
SIL 4   진입점 · 문장 · 분기 · MC/DC

그리고 표 아래에 중요한 단서가 붙어 있다. 100%를 달성할 수 없는 경우(예: 하드웨어 고장이 나야만 진입하는 방어 코드의 문장 커버리지)에는 적절한 설명을 제시해야 한다. 61508-7의 구조 기반 시험 설명도 같은 취지로, 목표는 언제나 100%이고 도달하지 못하면 그 이유를 시험 보고서에 적으라고 한다.

이 단서가 실무의 핵심이다. 커버리지 리포트가 98%로 끝났을 때 할 일은 테스트를 억지로 추가하는 것이 아니라, 미도달 2%를 한 줄씩 분류 하는 것이다.

미도달 코드 분류
  A. 시험 누락      → 케이스 추가 (요구사항 기반으로 도출할 수 있어야 한다)
  B. 방어 코드      → 도달 불가 근거 + 코드 리뷰 증거
  C. 죽은 코드      → 요구사항에 없는 코드. 제거 대상 (결함)
  D. 도구 한계      → 측정 도구가 인식하지 못하는 구문. 수동 확인 증거

C가 흥미롭다. 요구사항 기반 시험을 다 했는데도 밟히지 않는 코드가 요구사항에서 나오지 않은 코드라면, 그것은 커버리지 문제가 아니라 추적성 결함 이다. 모듈 25 레슨 5에서 "테스트가 요구사항에서 나왔음을 증명한다"는 발상을 봤는데, 커버리지 미도달 분석이 그 증명을 거꾸로 검산하는 장치다.

A.5 — 모듈 시험과 통합에서 SIL이 올리는 것

A.5는 모듈 시험·통합 시험의 기법 선택 표다. SIL 3에서 강력 권고로 올라오는 항목을 중심으로 보면 무엇이 늘어나는지 보인다.

A.5 항목SIL 1SIL 2SIL 3SIL 4
동적 분석과 시험 (→ B.2)RHRHRHR
데이터 기록과 분석HRHRHRHR
기능·블랙박스 시험 (→ B.3)HRHRHRHR
성능 시험 (→ B.6)RRHRHR
모델 기반 시험RRHRHR
인터페이스 시험RRHRHR
시험 관리·자동화 도구RHRHRHR
설계 명세 → 모듈·통합 시험 명세 순방향 추적RRHRHR

"데이터 기록과 분석"이 SIL 1부터 HR이라는 점을 놓치지 말자. 시험 결과를 기록하고 분석한 증거 는 가장 낮은 SIL에서도 강력 권고다. 모듈 32 레슨 4의 원자료 설계가 기능안전 영역에서 규격 항목으로 나타난 모습이다. 그리고 "시험 관리·자동화 도구"가 SIL 2부터 HR로 올라가면서, 레슨 6에서 다룰 그 도구를 얼마나 믿을 수 있는가 의 문제가 따라온다.

표를 시험 계획서로 — 기법 선택표

이 모든 것을 시험 계획서로 옮기는 형식은 한 가지로 수렴한다. 기법 선택표 다.

| 절 | 표·항목 | 기법 | 목표 SIL 권고 | 채택 | 적용 범위 | 미채택·대체 근거 | 증거 산출물 | 도구(→레슨 6) |
|---|---|---|---|---|---|---|---|---|
| 7.9 | A.9-3 → B.8-3 | 제어 흐름 분석 | HR | O | 전 모듈 | — | 정적 분석 리포트 v1.3 | 분석기 X 7.2 |
| 7.9 | A.9-1 | 정형 증명 | R | X | — | SIL 3 R. 대신 B.8 데이터 흐름 분석 + 코드 리뷰로 대체 | — | — |
| 7.4.7 | A.5-2 → B.2-7c | 분기 커버리지 100% | HR | O | 안전 모듈 | 방어 코드 12줄 미도달 — 부록 C 근거 | 커버리지 리포트 + 미도달 분석표 | 커버리지 도구 Y 4.0 |

이 표의 품질을 좌우하는 칸은 두 개다.

"미채택·대체 근거" — HR을 채택하지 않았거나 R 기법을 다른 것으로 대체했다면 여기에 판단이 적힌다. 모듈 34 레슨 2에서 권고 조항 미충족 사유를 기기 특성 → 위협 부재나 대체 통제 → 결론 으로 적으라고 했던 형식이 그대로 쓰인다.

"증거 산출물" — 기법마다 어떤 파일이 증거인지 적는다. 이 칸이 비어 있으면 기법은 "했다고 말한 것"에 머문다.

시험소는 이 규격으로 무엇을 판정하는가

61508-3은 제품 성능 규격이 아니라 개발·검증 과정의 요구사항 이다. 그래서 시험소가 이 규격을 방법으로 쓸 때 하는 일은 대체로 세 갈래로 나뉜다.

  1. 증거 적합성 검토 — 기법 선택표와 산출물이 목표 SIL의 표 권고와 맞는지, HR 미채택 근거가 있는지, A→B 전개가 끝까지 되었는지 확인
  2. 독립 재수행 — 정적 분석이나 구조 커버리지 측정을 시험소 환경에서 다시 수행해 제조사 리포트와 대조
  3. 표본 시험 — 요구사항 표본을 골라 시험 케이스를 추적하고 실제로 실행해 결과 재현

어느 갈래로 판정했는지는 성적서 범위에 명확히 적어야 한다. "61508-3 적합"이라는 문구는 이 셋 중 무엇을 했는지 숨긴다. 모듈 32 레슨 7에서 규격 문서 유형이 판정 가능성을 정한다고 했는데, 과정 규격은 판정 대상이 제품이 아니라 증거 라는 점을 성적서 표지부터 드러내야 한다. 인증(기능안전 평가, 8장)은 별도의 평가 활동이고, 시험 성적서가 그것을 대신한다고 적으면 안 된다.

실무에서 왜 필요한가

기능안전 프로젝트에서 QA가 가장 먼저 받는 요청은 "SIL 3 대응 시험 계획서를 써 달라"다. 표를 읽지 못하면 계획서는 "단위 시험, 통합 시험, 시스템 시험 수행" 같은 일반론으로 끝나고, 심사에서 어느 표의 어느 항목을 어떤 기법으로 충족했는지 를 묻는 순간 막힌다.

비용 판단에도 표가 필요하다. SIL 2에서 SIL 3으로 올라가면 분기 커버리지·성능 시험·인터페이스 시험·모델 기반 시험·추적성이 HR로 올라온다. 이 차이를 공수로 환산해 SIL 상향 결정의 비용 을 개발 초기에 보여줄 수 있는 QA는 프로젝트 의사결정에 참여한다. 모듈 26에서 C레벨에게 품질 비용을 말하는 법을 다뤘는데, 기능안전에서는 그 숫자가 표에서 나온다.

커버리지 미도달 분류는 시험 기간을 줄인다. 98%에서 100%를 향해 케이스를 억지로 늘리는 대신, 미도달을 네 부류로 나누면 추가 시험이 필요한 줄은 대개 소수로 줄고, 나머지는 근거 문서와 죽은 코드 제거 로 닫힌다. 후자는 제품 품질을 실제로 올린다.

실습 과제

과제 1 — SIL 3 기법 선택표 (25분)

가상의 SIL 3 산업용 안전 컨트롤러 소프트웨어를 대상으로, 본문의 A.5·A.9·B.2 표를 근거로 기법 선택표를 최소 열두 행 작성한다.

  • A 표 항목이 B 표를 가리키면 반드시 B 하위 기법까지 전개한다
  • HR 항목 중 일부러 두 개를 미채택 하고 그 근거를 쓴다
  • 증거 산출물 칸에 파일 이름 수준까지 적는다

과제 2 — 커버리지 미도달 분석표 (15분)

분기 커버리지 리포트에서 미도달 분기 여섯 개가 나왔다고 가정한다.

1. switch default 분기 — 열거형 값이 모두 case 로 처리됨
2. ADC 읽기 실패 시 안전 상태 전환 분기
3. 설정 파일 버전 불일치 처리 분기
4. 레거시 통신 프로토콜 v1 처리 분기 — 현재 요구사항에 v1 없음
5. 워치독 타임아웃 핸들러
6. 매크로로 확장된 조건 — 도구가 분기로 인식 못 함

본문의 네 부류(A 시험 누락 / B 방어 코드 / C 죽은 코드 / D 도구 한계)로 분류하고, 부류별로 필요한 증거를 적는다. 고장 주입으로 도달시킬 수 있는 분기가 있다면 표시한다.

과제 3 — SIL 상향의 비용 (15분)

같은 소프트웨어의 목표가 SIL 2에서 SIL 3으로 올라갔다. 본문 표에서 R → HR로 바뀌는 항목 을 모두 뽑고, 항목마다 추가 산출물과 대략의 공수(일)를 추정해 표로 만든다. 표 맨 아래에 합계를 적고, 경영진에게 보낼 한 문단 요약을 쓴다.

과제 4 (선택) — 성적서 범위 문구 (10분)

시험소가 61508-3을 방법으로 쓴 성적서의 "시험 범위" 문단을 작성한다. 본문의 세 갈래(증거 적합성 검토·독립 재수행·표본 시험) 중 무엇을 했는지, 무엇은 하지 않았는지(예: 8장 기능안전 평가)를 명시한다.

자가 체크리스트

  • 61508-3의 수명주기 절과 부속서 A 표(A.1~A.10)의 대응을 설명할 수 있다
  • 부속서 A와 B의 관계(A 항목이 B 표를 가리킴)를 예로 설명할 수 있다
  • HR·R·---·NR의 뜻과, HR 미채택 시 근거 기록이 필요한 이유를 안다
  • 알파벳 붙은 항목을 만났을 때 대체 관계인지 수준 구분인지 주석으로 확인해야 한다는 것을 안다
  • B.2 구조 커버리지 네 줄의 SIL별 HR 누적을 말할 수 있다
  • 100% 미달 시 설명 의무와, 미도달을 네 부류로 분류하는 법을 안다
  • 죽은 코드가 커버리지 문제가 아니라 추적성 결함인 이유를 설명할 수 있다
  • A.5에서 "데이터 기록과 분석"이 SIL 1부터 HR이라는 점의 의미를 안다
  • 기법 선택표의 열 구성과, 품질을 좌우하는 두 칸을 안다
  • 시험소가 과정 규격으로 판정할 때의 세 갈래와, 성적서 범위에 그것을 적어야 하는 이유를 안다

흔한 실수

A 표만 보고 계획을 세운다. "정적 분석 수행" 한 줄은 B.8 하위 기법으로 풀려야 증거가 된다.

HR을 의무로, R을 무시해도 되는 것으로 읽는다. HR은 의무가 아니지만 미채택 근거가 필요하고, R 기법은 HR을 대체하거나 보강하는 조합의 재료다.

알파벳 항목을 전부 "하나만 고르면 된다"로 읽는다. B.2의 7a~7d처럼 수준을 나눈 항목도 있다. 표 주석을 먼저 본다.

커버리지 100%를 위해 요구사항에 없는 케이스를 만든다. 요구사항에서 도출되지 않은 케이스로 채운 커버리지는 추적성을 무너뜨린다. 미도달을 분류하고, 죽은 코드는 제거한다.

미도달 근거를 "방어 코드"라는 한 단어로 끝낸다. 어떤 고장 조건에서만 진입하는지, 코드 리뷰나 고장 주입으로 어떻게 확인했는지까지 적는다.

성적서에 "61508-3 적합"이라고만 적는다. 증거 검토·재수행·표본 시험 중 무엇을 했는지 숨기는 문구이고, 기능안전 평가(8장)와 혼동을 부른다.

참고 자료

낯선 말 풀이

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

IEC — 국제전기기술위원회
전기·전자 분야의 국제 규격을 만드는 단체.
ISO — 국제표준화기구
여러 나라가 모여 "이건 이렇게 하자"를 문서로 정하는 단체. 그 문서 자체를 번호로 부른다.
KOLAS — 한국인정기구
시험·검사를 하는 기관이 믿을 만한지 국가가 인정해 주는 제도. 인정받은 기관의 성적서는 공식 문서로 통한다.
HR — 인사
채용과 인사를 담당하는 조직.
SIL — 안전 완전성 수준 · 소프트웨어 포함 시험
이 커리큘럼에서 두 가지로 쓰인다. ① 고장이 났을 때 사람이 다칠 위험이 큰 정도에 따라 매기는 안전 등급(숫자가 클수록 엄격하다) ② 설계 모델이 아니라 실제로 만들어진 코드를 개발용 컴퓨터에서 돌려 보는 시험 단계. 앞뒤 문장에 등급 숫자가 있으면 ①, 모델·실물 시험과 나란히 나오면 ②다.
MC/DC — 변형 조건·결정 커버리지
조건이 여러 개 붙은 판단문에서, 각 조건이 혼자서 결과를 바꾸는 경우까지 모두 확인했는지 재는 기준.
QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
PDF — 피디에프
어디서 열어도 모양이 같게 나오도록 만든 문서 형식.
LDRA — 엘디알에이
안전이 중요한 분야에서 쓰는 코드 검사·커버리지 측정 도구 제품군.

용어집 전체 보기