2017년 3월 17일 금요일

IEC 62278 기반 안전성 분석 활동 수행 시점

 그림 1. 위험원 분석 기법의 수행시점

시스템의 안전성 활동에 대한 기법들이 개발 생명주기 상에서 어느 시점에서 활용해야 하는지 사용자가 해당 정보를 인지할 수 있도록 [그림 1]에 제시하였다. 개발 생명주기는
Concept Definition, Development, Production, Operation, Disposal의 5단계로 구성되어 있으며, 대부분의 안전성 활동은 시스템 개발 단계 초기에 수행함으로써 안전을 확보하는데 주력하고 있다. 특히 Development 단계에서 세부적으로 Preliminary Design, Detailed Design, Test 단계를 통해 많은 안전성 활동을 지속적으로 수행한다. 개발 생명주기 상의 주요 마일스톤에는 SDR(System Design Review), PDR(Preliminary Design Review), CDR(Critical Design Review) 등이 있다.

주요 마일스톤에서 각 단계마다 수행되는 안전성 활동에 대한 검토가 이뤄진다. 검토를 통해 해당 단계 수준에서 확보해야할 안전성에 대한 분석이 제대로 되었는지 확인한다. 개발 생명주기 상에서 각 시점마다 수행되는 안전성 활동의 기법들에 대한 Type에는 CD-HAT, PD-HAT, DD-HAT, SD-HAT, OD-HAT, HD-HAT, RD-HAT가 있다. 해당 Type들마다 여러 안전성 활동 기법이 포함될 수 있으며, 상세한 내용은 [그림 2]에서 다룬다.



그림 2. 안전성 분석기법 선정을 위한 속성정보 요약

앞서 개발 생명주기 상에서 안전성 활동 수행 시점을 Type을 통해 제시하였다. 해당 Type에는 여러 기법들이 포함되어 있으며, 기법마다 가지고 있는 속성정보들의 요약을 [그림 2]에 기술하였다. [그림 2]에서 여러 안전성 활동 기법을 확인할 수 있으며, 이러한 안전성 활동 기법들을 개발 생명주기에 따라 각 수행 시점에 활용하여 효과적인 결과를 얻는데 중점을 둔다. 안전성 활동 수행 시점에 따른 Type 중 가장 많이 활용되는 기법들은 PHA, SSHA, SHA, FTA, FMEA, HAZOP 등이 있다. 예를 들어 PHA의 경우 PD-HAT Type으로서 개발 생명주기 상에서 PreliminaryDesign 단계 수행 시점에서 수행되는 것을 알 수 있다. 따라서 사용자가 대상 시스템 개발에서 생명주기 어느 시점 상에서 안전성 활동을 수행할 것인지에 따라해당하는 기법을 선정하여 수행하는데 필요한 정보를 제시하였다.

소프트웨어 안전성

소프트웨어 안전성은 시스템 수준에서의 안전성 분석 결과를 바탕으로 수행되어야 한다. 이를 토대로 시스템 수준에서 식별된 물리적 구성품이 소프트웨어적 특성을 보유하였다면, 소프트웨어 안전성 활동을 수행해야 한다. 소프트웨어 안전성은 IEC 62279와 소프트웨어 생명주기 프로세스를 기초로 한다. 또한 시스템 설계에 적용되는 개발 프로세스와 장치, 통합, 시운전 시험 등을 거쳐야 한다. 이때 대상 시스템이 지닌 소프트웨어 설계의 민감한 요소들을 파악하는 고장계통 분석을 통해 정확한 구현이 가능해야 한다. 그리고 안전성 분석 결과를 필수 시스템(Vital System)과 서브시스템 요구 규격 내에 안전 요구사항 형태로 문서를 정리해야 한다.

소프트웨어 안전성 활동의 핵심은 코드에 대한 안전성 분석에 있다. 이러한 확인을 위한 선행 조건들은 다음과 같다.


  • 안전요구사항을 비롯한 시스템과 서브시스템 소프트웨어 요구사항 명세서를 위험원과 안전성 분석, 점검 전반에 걸쳐 작성한다. 또한 요구사항의 정확성, 완성도, 서브시스템 간 일관성 등을 확인해야 한다.
  • 서브시스템 소프트웨어의 안전 요구사항을 해당 소프트웨어 설계까지 추적 가능해야 한다. 안전성 분석과 검토를 안전에 필수적인 기능들에 대해 수행하여 이들의 정확성, 완성도, 일관성 등을 확인해야 한다.
  • 소스코드가 소프트웨어 안전성 설계 기준에 부합하는지 확인해야 한다.
  • 소프트웨어 상세 설계 준수 여부, 검토 목표는 소스코드가 정확하며 소프트웨어 상세 설계 관점에서 완벽한지 여부와 소스코드에 문서화 되지 않은 기능들이 구현되어 있는지 여부를 확인하는데 있다.
  • 일관성 확인: 데이터 조작 전에 데이터가 일관성을 유지하고 있는지를 확인한다.(제로 속도 확인, 신호기 이동명령 확인 등)
  • 타당성 확인: 관련 데이터들이 논리적으로 정확하게 합당하며 데이터 범위는 예상 범위 내에 있는지 확인한다.
  • 하드웨어 감시확인: 내장 시험, 출력의 교차 비교하여 확인한다.
  • 적정 수준의 통합 시험과 확인 시험을 계획하여 소프트웨어 코드 리뷰에 따라 실행하여 구현 내용이 설계 일치하며 안전 요건을 만족하는지 확인한다.
  • 단, 상용소프트웨어(COTS)를 사용할 경우에는 소프트웨어 안전성 활동에서 제외한다. 하지만 제외된 사항에 대해 동일 사양 제품의 적용사례 또는 카탈로그 등과 같은 증빙자료를 제시해야 한다.

철도 시스템의 소프트웨어 개발과 관련해서는 IEC 62279 기반 RAMS 인증을 받기 위해 아래와 같은 검증기법이 요구된다.


  • 철도 소프트웨어 인증지원 도구 즉, 기능 안전성의 블랙박스 테스팅이 가능하도록 최종 개발한 시스템에 활용하는 통신 인터페이스를 직접 모의하고 실제 신호를 발생, 주입함으로써 시스템 체계를 구성하는 하위 시스템의 모든 소프트웨어 영역을 검증할 수 있도록 기술 지원이 필요로 한다.
  • 또한, 자동차 산업계의 MISRA-C, MISRA-C++, 항공 산업계의 JSF AV C++, 각종 보안 관련 분야의 CERT-C, CERT-C++ 등을 참고하여 철도 시스템을 위한 소프트웨어 코딩 규칙 표준 및 지침이 필요로 한다.
  • 이를 적용함으로써, 시스템의 소프트웨어 안전·신뢰성 확보가 가능해진다. 소프트웨어 시험은 제작 시제품의 소프트웨어 테스팅을 수행하여 품질 및 안전성 검증의 적합성을 문서화하여 제시하여야 한다.
  • 코딩규칙 준수(MISRA-C 코딩규칙, IEC 61508 3 코딩규칙, IEC 62279 코딩 규칙) 여부 입증
  • 동적 테스팅(MC/DC 테스트, 제어흐름 테스트 또는 경로 테스트)을 수행
  • 기능 테스팅(기능요구사항 테스팅, 경계값 분석 포함) 수행

IEC 62278 시스템 생명주기와 안전성 활동

표준의 안전성 활동은 대상 시스템이 내재하고 있는 잠재적 위험원이나 결함을 찾아 제거하거나 그 발생확률을 허용수준 이하로 줄일 수 있도록 하드웨어, 소프트웨어, 설비, 환경, 운영, 문서를 고려한 모든 일련의 활동을 포함한다. 다시 말해, 시스템의 안전성 확보를 위해 본 가이드의 대상 시스템인 철도 시스템의 생명주기 동안 내재한 위험원 및 결함을 도출하고, 도출된 위험원 및 결함을 제거하거나 허용수준 이하로 제어하는 일련의 과정과 입증하는 단계로 구성 되어야 한다.


생명주기 관점에서의 시스템 안전성

본 가이드에서는 표준에서 제시하는 시스템 생명주기를 토대로 안전성 분석 기법을 활용한 안전성 활동 수행에 관하여 기술한다.


그림 1. IEC 62278 시스템 생명주기

표준에서 시스템 생명주기는 [그림 1]와 같이 크게 14단계로 구성되어 있다. 표준에서 안전성 활동은 시스템 생명주기 내에서 시스템의 안전성 향상 및 입증을 위해 각 단계별로 수행되어야 한다. 안전성 활동 단계별 주요 안전성 활동 내용을기술하고 단계별 수행되어야 할 위험 분석 기법에 대해 [표 1]에 기술하였다.

표 1. 시스템 생명주기에 따른 주요 안전성 활동


생명주기 관점에서의 시스템 안전성은 위험원을 제거하거나 위험원으로부터의 사고 위험률을 줄이도록 체계적으로 설계화 하는 과정이다. 또한 시스템에 내재된위험원에 의해 발생할 수 있는 사고를 의도적으로 허용 가능한 수준으로 제어하는 것이다. 따라서 시스템 개발에 있어서 반드시 시스템 개발 초기부터 안전 대책을 검토 및 수립해야 한다.

표준에서 제시하는 시스템 개발 생명주기를 근간으로 안전성 활동 및 관리 영역과 RAMS 분석 및 관리 영역의 활동은 [그림 2]과 같이 구분될 수 있다. 본 가이드 관점에서 다루는 안전성 측면만을 바라본다면, 안전성 활동은 초기 대상 시스템에 대한 위험도 허용 기준을 수립한다. 이후 안전관리 계획서에 반영하여 위험도 허용 기준을 기반으로 안전성 활동 수행 및 안전요구사항 도출 과정을 거치게 된다. 위험도 평가를 반영한 안전요구사항은 설계 반영을 통해, 운영단계에서의 시험 및 시운전 과정의 검증평가를 거치게 된다. 최종적으로 철도 운영기관을 통해 안전성 관리를 수행 받게 된다.


그림 2. 수명주기와 RAMS & 안전성 분석 및 관리