개념
모듈 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 1 | SIL 2 | SIL 3 | SIL 4 |
|---|---|---|---|---|---|
| 1 정형 증명 | — | --- | R | R | HR |
| 2 명세·설계의 애니메이션 | — | R | R | R | R |
| 3 정적 분석 | B.8 | R | HR | HR | HR |
| 4 동적 분석과 시험 | B.2 | R | HR | HR | HR |
| 5 설계 명세 → 검증 계획 순방향 추적 | — | R | R | HR | HR |
| 6 검증 계획 → 설계 명세 역방향 추적 | — | R | R | HR | HR |
| 7 오프라인 수치 분석 | — | R | R | HR | HR |
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 1 | SIL 2 | SIL 3 | SIL 4 | 모듈 3 연결 |
|---|---|---|---|---|---|
| 경계값 분석 기반 시험 | R | HR | HR | HR | 경계값 분석 |
| 오류 추정 기반 시험 | R | R | R | R | 오류 추정 |
| 오류 주입(seeding) 기반 시험 | --- | R | R | R | 뮤테이션 발상 |
| 모델 기반 시험 케이스 생성 | R | R | HR | HR | 모델 기반 테스팅 |
| 성능 모델링 | R | R | R | HR | — |
| 동등 분할 시험 | R | R | R | HR | 동등 분할 |
| 구조 커버리지 — 진입점 100% | HR | HR | HR | HR | 함수 커버리지 |
| 구조 커버리지 — 문장 100% | R | HR | HR | HR | 구문 커버리지 |
| 구조 커버리지 — 분기 100% | R | R | HR | HR | 분기 커버리지 |
| 구조 커버리지 — 조건(MC/DC) 100% | R | R | R | HR | MC/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 1 | SIL 2 | SIL 3 | SIL 4 |
|---|---|---|---|---|
| 동적 분석과 시험 (→ B.2) | R | HR | HR | HR |
| 데이터 기록과 분석 | HR | HR | HR | HR |
| 기능·블랙박스 시험 (→ B.3) | HR | HR | HR | HR |
| 성능 시험 (→ B.6) | R | R | HR | HR |
| 모델 기반 시험 | R | R | HR | HR |
| 인터페이스 시험 | R | R | HR | HR |
| 시험 관리·자동화 도구 | R | HR | HR | HR |
| 설계 명세 → 모듈·통합 시험 명세 순방향 추적 | R | R | HR | HR |
"데이터 기록과 분석"이 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은 제품 성능 규격이 아니라 개발·검증 과정의 요구사항 이다. 그래서 시험소가 이 규격을 방법으로 쓸 때 하는 일은 대체로 세 갈래로 나뉜다.
- 증거 적합성 검토 — 기법 선택표와 산출물이 목표 SIL의 표 권고와 맞는지, HR 미채택 근거가 있는지, A→B 전개가 끝까지 되었는지 확인
- 독립 재수행 — 정적 분석이나 구조 커버리지 측정을 시험소 환경에서 다시 수행해 제조사 리포트와 대조
- 표본 시험 — 요구사항 표본을 골라 시험 케이스를 추적하고 실제로 실행해 결과 재현
어느 갈래로 판정했는지는 성적서 범위에 명확히 적어야 한다. "61508-3 적합"이라는 문구는 이 셋 중 무엇을 했는지 숨긴다. 모듈 32 레슨 7에서 규격 문서 유형이 판정 가능성을 정한다고 했는데, 과정 규격은 판정 대상이 제품이 아니라 증거 라는 점을 성적서 표지부터 드러내야 한다. 인증(기능안전 평가, 8장)은 별도의 평가 활동이고, 시험 성적서가 그것을 대신한다고 적으면 안 된다.
실무에서 왜 필요한가
기능안전 프로젝트에서 QA가 가장 먼저 받는 요청은 "SIL 3 대응 시험 계획서를 써 달라"다. 표를 읽지 못하면 계획서는 "단위 시험, 통합 시험, 시스템 시험 수행" 같은 일반론으로 끝나고, 심사에서 어느 표의 어느 항목을 어떤 기법으로 충족했는지 를 묻는 순간 막힌다.
비용 판단에도 표가 필요하다. SIL 2에서 SIL 3으로 올라가면 분기 커버리지·성능 시험·인터페이스 시험·모델 기반 시험·추적성이 HR로 올라온다. 이 차이를 공수로 환산해 SIL 상향 결정의 비용 을 개발 초기에 보여줄 수 있는 QA는 프로젝트 의사결정에 참여한다. 모듈 26에서 C레벨에게 품질 비용을 말하는 법을 다뤘는데, 기능안전에서는 그 숫자가 표에서 나온다.
커버리지 미도달 분류는 시험 기간을 줄인다. 98%에서 100%를 향해 케이스를 억지로 늘리는 대신, 미도달을 네 부류로 나누면 추가 시험이 필요한 줄은 대개 소수로 줄고, 나머지는 근거 문서와 죽은 코드 제거 로 닫힌다. 후자는 제품 품질을 실제로 올린다.