소프트웨어 안전성 분석으로 위험요소를 식별하는 방법
안전 필수 시스템에서 위험요소를 식별하고 통제하기 위한 HAZOP, FMEA, FTA, ETA와 소프트웨어 분석 적용 방식을 정리한다.
2026-08-14 · 최초 발행 2025-05-23
위험한 상태로 이어지는 경로를 개발 초기에 찾는다
항공, 철도, 의료, 원자력처럼 안전 필수(Safety-Critical) 시스템에서는 소프트웨어 결함이 인명 피해로 이어질 수 있다. 시스템의 복잡성과 소프트웨어 의존도가 높아질수록 안전성은 개발 후반에 확인하는 항목이 아니라, 개발 생명주기 전체에서 다뤄야 하는 조건이 된다.
소프트웨어 안전성 분석은 위험요소(Hazard)를 미리 찾아 분석하고, 제거하거나 완화할 방안을 마련하는 체계적 접근이다. 요구사항 정의, 설계, 구현, 테스트를 거치면서 반복적으로 수행한다.
안전 필수 시스템은 오작동했을 때 인명 피해, 환경 파괴, 고가 장비 손상 같은 심각한 결과를 초래할 수 있는 시스템이다. 여기서 안전성(Safety)은 시스템이 의도하지 않은 상황에서도 위험한 상태로 전이하지 않는 특성을 뜻한다. 기능적 실패(Functional Failure)는 명세된 기능을 수행하지 못하는 상태이며, 위험요소는 특정 조건에서 사고(Accident)로 이어질 수 있는 시스템 상태다.
식별에서 통제까지 이어지는 안전성 분석
안전성 분석의 목적은 잠재적 위험요소를 식별하고, 그 위험이 만드는 리스크를 평가한 뒤, 제거 또는 완화 방안을 마련하는 데 있다. 통제 이후에도 잔존 리스크가 수용 가능한지 평가해야 한다.
분석 기법은 위험을 어떤 방향에서 추적하는지에 따라 구분된다. 정상 동작에서의 이탈을 찾는 방법도 있고, 구성요소의 고장모드에서 영향을 따라가는 방법도 있다. 사고가 발생한 상태에서 원인을 분해하거나, 초기 사건 이후의 결과 시나리오를 전개하는 방법도 사용한다.
정상 동작에서 벗어난 상황을 찾는 HAZOP
위험 및 운용성 분석(HAZOP: Hazard and Operability Study)은 가이드워드(Guide Words)를 이용해 정상 동작에서 벗어난 이탈(Deviation)을 식별한다. 팀 기반의 체계적인 분석 방식이며, 브레인스토밍 세션을 통해 수행한다.
분석 대상 시스템을 스터디 노드로 나누고, 각 노드에 No, More, Less, Part of, Other than 등의 가이드워드를 적용한다. 발견된 이탈 사항에 대해서는 원인과 결과를 분석하고 안전 대책을 수립한다.
화학 공장의 제어 시스템에서는 압력 조절 밸브가 LESS 기능을 수행하는 경우를 검토해 과압으로 인한 폭발 위험을 식별할 수 있다.
고장모드에서 시스템 영향까지 추적하는 FMEA
고장모드 및 영향 분석(FMEA: Failure Mode and Effects Analysis)은 구성요소의 잠재적 고장모드와 그 영향을 분석하는 귀납적 기법이다. 컴포넌트 수준에서 시스템 수준으로 올라가는 상향식(Bottom-up) 접근을 사용한다.
구성요소를 식별한 뒤 각 요소의 고장모드를 정의하고, 고장 원인과 영향을 분석한다. 이어서 고장 감지 방법을 정하고 심각도, 발생 가능성, 감지 용이성을 평가해 RPN을 계산한 후 개선 조치를 제안한다. FMECA(Failure Mode, Effects and Criticality Analysis)는 FMEA에 치명도 분석을 더한 형태다.
자동차 제동 시스템에서는 ABS 센서의 고장모드를 분석해 센서 고장 시 필요한 백업 메커니즘을 설계할 수 있다.
소프트웨어 FMEA(SW-FMEA)는 이 방법을 소프트웨어 컴포넌트에 적용한다. 분석 대상은 모듈, 함수, 인터페이스 등이며, 다음과 같은 고장모드를 다룬다.
- 기능 미실행(Function not executed)
- 기능 불완전 실행(Function incompletely executed)
- 기능 부정확 실행(Function inaccurately executed)
- 기능 타이밍 오류(Function executed with timing error)
- 의도하지 않은 기능 실행(Unintended function executed)
자율주행차 충돌 방지 알고리즘에서는 SW-FMEA를 통해 센서 입력 처리 오류를 식별할 수 있다.
사고 상태의 원인과 이후 경로를 읽는 FTA와 ETA
결함 트리 분석(FTA: Fault Tree Analysis)은 정상 사건(Top Event)에서 출발해 그 원인을 논리적으로 분해하는 연역적 방법이다. 하향식(Top-down) 접근으로 진행하며, 불리언 논리로 사건 간 관계를 표현한다.
정상 사건인 위험요소를 정의하고 즉각적인 원인을 식별한 뒤, 기본 사건까지 원인 체인을 분석한다. 이후 최소 절단 집합(Minimal Cut Sets)을 도출하고 정량적 또는 정성적 평가를 수행한다.
원자력 발전소 냉각 시스템의 고장을 분석할 때는 FTA로 단일 장애점(Single Point of Failure)을 식별하고 제거할 수 있다.
이벤트 트리 분석(ETA: Event Tree Analysis)은 초기 사건에서 시작해 가능한 결과 시나리오를 체계적으로 전개하는 귀납적 방법이다. 사건의 시간적 순서와 조건부 확률을 고려하며, 안전 기능과 방호벽이 성공하거나 실패할 때의 결과를 평가한다.
항공기 엔진 고장이 발생했을 때 비상 대응 시스템이 어떤 효과를 내는지 분석하는 사례가 ETA에 해당한다.
소프트웨어 특성에 맞춘 HAZOP 분석
소프트웨어 HAZOP은 전통적인 HAZOP을 소프트웨어 분석에 적용한 방법이다. 소프트웨어 인터페이스, 데이터 흐름, 알고리즘 등을 분석 대상으로 삼고, Early, Late, Before, After 같은 소프트웨어 특성의 가이드워드를 적용한다. 이탈 사항이 발견되면 원인과 결과를 분석한다.
의료기기 소프트웨어의 데이터 처리 알고리즘을 이 방식으로 검토하면 타이밍 이슈를 식별할 수 있다.
생명주기와 시스템 조건에 맞춰 기법을 배치한다
개발 단계에 따라 분석 기법의 초점도 달라진다. 요구사항 정의에서는 PHA와 HAZOP을 적용하고, 아키텍처 설계에서는 FTA와 HAZOP을 활용한다. 상세 설계에서는 FMEA와 FTA, 구현 단계에서는 SW-FMEA와 정적 분석, 테스트 단계에서는 안전성 테스트와 동적 분석을 적용한다.
기법을 선택할 때는 제어 시스템, 실시간 시스템, 분산 시스템처럼 시스템이 가진 특성을 먼저 본다. 개발 단계, 안전 무결성 수준(SIL), 팀 규모·일정·예산 같은 리소스 제약도 분석의 깊이와 범위를 결정한다. IEC 61508(일반), ISO 26262(자동차), DO-178C(항공) 등 산업별 표준의 요구사항도 함께 고려해야 한다.
분석 결과는 문서에만 남기지 않는다. 식별한 위험요소로 안전 요구사항을 도출하고, 고장 안전(Fail-safe), 다중화(Redundancy), 다양성(Diversity)을 갖춘 안전 아키텍처 설계에 반영한다. 위험 기반 테스트(Risk-based Testing)로 테스트 케이스를 개발하며, 인증과 승인을 위한 안전성 논증(Safety Case)에도 활용한다.
안전성 분석은 조기에 적용할수록 비용 효율적이다. 상호 보완적인 기법을 함께 사용하고, 변경 관리 과정에서도 안전성 영향 평가를 지속해야 한다. 다양한 전문성을 가진 팀의 협업, 전문 도구와 자동화, 과거 프로젝트의 교훈과 업계 사례 연구를 통한 경험 축적이 분석 품질을 뒷받침한다.
소프트웨어 안전성 분석은 규제 준수에 그치지 않는다. 위험요소를 조기에 식별하고 대응함으로써 안전 필수 시스템의 무결성과 사용자 신뢰를 지키는 개발 활동이다.