2017년 3월 17일 금요일

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

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


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

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


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

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

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


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

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


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

2017년 3월 16일 목요일

SW 기능안전 필요성

현대 사회에서 자동차 , 철도 , 항공우주 , 원자력 원자력 , 국방 등의 다양한 분야에서 대부분의 장치들이 소프트웨어를 내장하고 , 제어용 소프트웨어 시스템이 탑재됨에 따라 소프트웨어의 안전성에 안전성에 대한 중요도가 높아지고 높아지고 있다 . 소프트웨어 소프트웨어 중심 사회가 되어가면서 대부분의 국가기반시설 및 대단위 산업분야에서 소프트웨어를 이용한 제어가 이루어지고 , 금융 , 자동차 , 항공 , 전력 , 국방 , 의료 , 교육 등 대부분 분야에서 소프트웨어 의존도가 높아짐에 따라 이의 오류로 인한 사고의 피해 범위와 규모가 확대되고 있다 .

다양한 산업 분야에 소프트웨어가 사용되면서 소프트웨어에 의한 사고의 위협도 높아지기 때문에 소프트웨어 오동작에 의한 안전성 위협이 큰 이슈로 떠오르게 되었다 . 경미하거나 사소한 소프트웨어 오류가 오류가 사람의 생명을 앗아가거나 막대한 경제적 피해를 초래 한다. 안전의 관점에서 심각한 경제적 물질적 피해를 초래하거나 인간의 생명에 막대한 위협이 되는 경우에는 경우에는 보다 거시적이고 , 체계적인 대응이 필요하다 . 소프트웨어의 소프트웨어의 안전을 확보하는 일은 소프트웨어에 기능적 기능적 오류나 고장 을 방지하려는 예방 과 오류나 오류나 고장 발생을 사전에 사전에 감지하여 적절한 대응을 하고 , 오류 상황이 발생했을 경우에는 경우에는 그 피해를 최소화하는 최소화하는 노력 이 복합적으로 복합적으로 필요하 다. 모든 산업 분야 를 막론하고 소프트웨어 기능안전 관련 사고가 발생하지 않도록 개발과정에 안전한 상태를 확보할 수 있는 조치를 취하는 것이 중요하다 .

소프트웨어의 사고는 사용자의 오조작에 의해서 의해서 발생할 수도 있지만 있지만 근본적으로 개발 초기 과정에서의 과정에서의 안전성에 대한 고려와 검증이 제대로 제대로 이루어지지 않아 발생하게 된다 . 소프트웨어에 소프트웨어에 의한 사고를 예방하기 위해서는 소프트웨어 소프트웨어 안전성에 대한 면밀한 고려가 소프트웨어 개발 단계에서 단계에서 매우 중요 하게 다루어져야한다 . 소프트웨어 시스템 은 외부의 잘못된 입력으로부터 시스템을 안전하게 지켜주고 , 재난 발생을 막기 위한 통제를 통제를 수행할 수 있는 가에 대한 고려에서 출발한다 . 때문에 소프트웨어 안전성 을 만족하기 위해서는 제품개발의 수명주기에 수명주기에 기반한 적절한 안전성 확보 활동의 도입이 필수적이고 , 이를 제품개발의 전단계에 전단계에 적용하는 의지와 노력이 필요하다 .

여타의 소프트웨어 품질활동과 품질활동과 마찬가지로 안전성 확보활동의 결과는 산출물 형태의 문서로 기록되어야하고 기록되어야하고 안전성 확보가 필요하다고 필요하다고 파악된 기능항목은 테스트 단계에서 단계에서 반드시 검증되어야한다 검증되어야한다 . 기능안전성과 기능안전성과 관련된 사고를 사고를 줄이기위해 시스템과 장비를 생산하는 단계에서 안전과 관련된 기능에 대한 위험을 평가하고 무결성을 확보하는 방안이 세계적으로 다양한 산업분야에서 진행되어 왔다 .

전기 , 전자 , 또는 프로그램이 가능한 전자 (E/E/PE: Electric, Electronic or Programmable Elecronic) 시스템 및 제품 에 대한 포괄적 기능안전성 표준 IEC61508을 시작으로 , 철도 , 항공 , 에너지 , 의료 등 주요 산업분야에서 산업분야에서 분야 특성을 고려한 기능안전성 표준을 정의해왔다 . 하지만 이러한 기존 표준 및 지침들은 표준문서의 특성상 기능안전성을 확보에 대한 목표 와 확인 기준만을 명세 하고 있으며 , 목표와 기준을 달성하기 위한 도구 등 구체적 방안에 대한 내용은 다루고 있지 않다 . 특히 소프트웨어 기능안전성에 대해서는 더욱 부족한 상황이다 . 즉, 산업분야를 막론하고 소프트웨어 기능안전성 기능안전성 도입하 기 위해서는 기본적으로 안전성에 대한 이해와 표준에서 제시하는 목적을 달성하기 위한 적절한 활동이 수반되어야한다 .

철도 시스템에 관련된 안전 표준

철도 시스템에 관련된 안전 표준에는 다음의 네 가지가 존재하고 있다.

  • IEC 62278(EN 50126) : RAMS
  • IEC 62279(EN 50128) : 소프트웨어
  • IEC 62425(EN 50129) : 안전성 인증
  • IEC 62280(EN 50159) : 통신



위의 네 가지 표준은 일반산업 분야에 있어서 컴퓨터제어기능을 대상으로 한 안전 표준인 IEC 61508을 기초로 해서 UIC(French: Union Internationale des Chemins de fer or International Union of Railways : 국제철도연합)의 기술지침과 유럽 각 국의 철도 시스템의 기술요구사항을 통합하였다. 





IEC 61508에서는 안전성 활동 생명주기의 범위를 개념설계에서 폐기까지 모든 단계를 포함하였으며 안전성 요구수준에 맞는 기술요구사항을 정하는 SIL, 이 두 가지의 개념을 도입하였다. 이는 생명주기의 각 단계를 엄밀히 구분하고 관리함으로써 불안전한 요소를 제거하는 동시에 요구되는 안전성 수준에 맞추어 다른 안전성 기준을 결정할 수 있도록 하였다. 이들 개념에 기초한 안전성 관리의 개념이 철도를 포함하
여 많은 분야에 있어서 향후 주류가 될 것으로 여겨진다.

철도 시스템 RAMS 관리 원칙을 제공하는 국제 표준, IEC 62278 표준 개요

IEC 62278(또는 EN 50126)은 Railway application-specification of demonstration of
reliability, availability, maintainability and safety(RAMS)에 관한 기술적 내용을 다
루며 철도 시스템 RAMS 관리 원칙을 제공하는 국제 표준이다. 표준은 개념설계부
터 폐기까지 생명주기 모든 단계에서 안전성과 신뢰성 등을 확보하기 위한 각 단
계별 과정과 절차에 대해 다룬다. 본 표준은 철도 차량 뿐만 아니라 전력설비 등
철도 시스템 전반을 대상으로 하여 다음과 같은 기본적인 개념을 다룬다.


  • 생명주기 각 단계에서 RAMS 관리를 위한 절차와 실시항목을 규정한다.
  • RAMS 요구사항과 그 요구사항이 충족되는 것을 확인하는 절차를 규정한다. 이를 위하여 필요한 분석, 작성해야 할 문서를 규정한다.
  • 대상 장치 시스템이 안전에 미치는 영향을 평가하는 위험 분석을 규정한다. 단, 위험 분석을 수행할 것을 요구하고는 있으나 수치에 대해서는 규정하지 않는다.
  • RAMS 관리를 위한 일련의 과정에 있어서 관련 조직과 관계자의 역할 및 자격 등에 대해서는 유럽의 체제를 전제로 한다.

따라서 철도용 전기 설비의 개발 시 표준에서 제시한 RAMS 요구사항을 충족하는 개발 프로세스의 가이드라인을 준수해야 한다. 본 가이드의 적용 범위는 생명주기 상에서 시스템 수용 단계까지이며 시스템 개량, 폐기는 범위에서 제외된다.


그림 1. 철도 안전과 RAMS

철도 RAMS 활동은 크게 안전성(Safety)과 가용성(Availability) 그리고 유지보수성(Maintainability) 영역으로 나뉘게 된다. 철도 RAMS 관리의 목표는 철도 안전성 및 가용성 확보 및 향상이다. 안전성과 가용성은 신뢰성, 유지보수성, 운영 및 유지보수 활동에 의해 좌우됨을 [그림 1]을 통해서 알 수 있다.



철도 시스템의 안전성과 RAM의 활동 및 관리

철도 시스템은 RFP 또는 시스템 설계 시 다른 성능 목표와 함께 RAMS 목표를 구
체적으로 정의하고 하부 시스템에 할당해야 한다. RAMS 관리는 철도 운영 시 발
생 가능한 시스템 장애와 인명사고 및 물적 손실을 초래할 수 있는 부품고장 및
위험요소들을 식별한다. 이후 이를 적절한 수준으로 관리하기 위하여 철도 시스템
의 계획부터 설계, 제작, 시험 및 운영단계에 이르기 까지 전 생명주기에 걸쳐 적
용되는 프로세스 및 단계별 활동을 의미한다. 이러한 관점에서 RAMS 활동을 통해
안전성 활동 영역과 RAM 관리 영역이라는 두 가지 관점의 총체적 관점에서 바라
볼 수 있으며 [그림 2]에 정리하였다.


그림 2. 철도시스템의 안전성과 RAM의 활동 및 관리 영역



철도시스템 RAMS 활동의 수행절차

앞서 생명주기상에서 안전성 분석 기법의 수행 시점을 살펴보았다. 안전성 분석기법의 수행 시점 분석과 더불어 철도시스템 RAMS 활동 또한 생명주기를 따라 수행된다. 이러한 전체적인 흐름을 [그림 3]에 나타내었다.






시스템 생명주기의 첫 단계인 개념 및 시스템 정의와 적용 조건 분석 단계에서 수행되는 RAMS 요구사항 분석 결과를 근거로 RAM 분석 업무가 시스템 생명주기에 따라 수행된다. RAMS 분석을 위한 대상 선정 및 분석 수준을 결정하기 위해 시스템분류 업무를 우선 수행한다. 만일 독립평가 기관 내 검증 팀에서 예비 위험원분석(PHA)을 통해 요구하는 특정 RAM 요구사항이 존재할 경우 설계 및 구현 단계에서 수행될 RAM 분석 업무를 위한 요구조건 분석도 가능하다. 시스템 분류를 통해 정의된 분석대상(최하위 수준)을 기준으로 FMECA를 수행해야 한다. 이후 시스템 기능도를 근거로 한 신뢰성 블록도(RBD)를 작성해야 한다. 또한 FMECA 및 신뢰성 블록도를 근거로 시스템 고유 신뢰성 및 유지보수성을 예측한다. 그리고 특정 RAM 요구 사항(목표)을 예측하기 위해 FTA를 수행하며, 정량적인 예측결과를 도출하기 위해 FMECA에서 분석된 결과를 활용해야 한다.

제작/설치 이전에 시스템 고유 신뢰성 및 유지보수성 예측결과, 그리고 특정 RAM 요구사항에 대한 예측결과가 RAM 요구사항과 부합 하는가에 대한 검증업무를 수행해야 한다. 또한 입증업무의 범위는 설계단계에서 예측된 RAM 분석 데이터와 요구 사항간의 부합성 여부 검토가 해당되며, 시운전 단계나 운영단계에서 수행되는 통계적 입증은 포함되지 않는다.

시스템 설계 생명주기의 첫 단계인 개념 및 시스템 정의와 적용 조건 분석단계에서 수행되는 RAMS 요구사항 분석결과를 근거로 안전성 분석 활동 업무를 시스템 생명주기에 따라 수행해야 한다. 독립평가기관에서 수행될 예비 위험원 분석(PHA) 결과를 근거로 대상 시스템의 위험원 관리를 계층적으로 수행해야 한다. 우선 대상 시스템의 시스템 수준의 위험원 관리를 위해 시스템 위험원 분석(SHA)을 수행한다. 수행된 시스템 위험원 분석(SHA) 결과를 근거로 대상 시스템을 구성하는 하부시스템에 대한 위험원 관리를 위해 하부시스템 위험원 분석 (SSHA)이 수행된다.

또한 하부시스템 간의 인터페이스 상에서 발생 가능한 위험원의 관리를 위해 인터페이스 위험원 분석(IHA)을 수행한다. 유지보수를 포함한 시스템 운영상의 위험원관리를 위해 운영 및 지원상의 위험원 분석(O&SHA)을 수행해야 한다.

설계 및 제작/설치단계에서 수행되는 위험원 관리는 설계 및 기타 운영조건의 변경에 따라 시스템 생명주기의 시스템 확인단계에서 수행되는 시험 및 시운전 단계 이전까지 갱신하여 관리해야 한다. 시스템 확인 단계, 즉 시험 및 시운전 단계에서는 설계 및 제작/설치단계에서 도출된 위험원 관리가 설계 및 운영절차에 반영 되었는가를 확인하는 안전성 확인 업무를 수행한다. 본 가이드에서 제외되는 내용이지만 RAMS 관리업무와는 독립적으로 수행되는 독립안전평가업무의 결과를 검토, 반영함으로써 안전성 활동 검증을 수행해야 한다. 시스템 생명주기에 따라 수행된 안전성 분석 및 RAM 분석 활동에 대한 결과를 총괄하여 종합 안전대책기술서(Safety Case)를 수립함으로써 대상 시스템에 대한 RAMS 활동을 종료하게 된다.

2017년 3월 15일 수요일

철도 안전가이드 적용 범위

철도 안전가이드는 크게 IEC 62278 기반의 시스템 안전성 분석 가이드와 IEC
62279 기반의 소프트웨어 개발 안전가이드로 구성되어 있다.

시스템의 잠재 위험원을 식별하고, 식별된 위험원을 분석해 이를 제거하거나 일정수
준 이하로 관리하는 안전 요구사항을 도출하는 일련의 수행 절차와 기법 등을 포함
하는 시스템 안전성 확보 활동은 시스템 안전성 분석 가이드를 적용해 안전 목표를
달성할 수 있다. 시스템 위험원과 안전 요구사항으로부터 소프트웨어 안전 요구사항
을 식별하고 이를 소프트웨어 아키텍처 설계 및 컴포넌트 설계에 반영하는 수행절
차와 기법 등을 포함하는 소프트웨어 안전성 확보 활동은 소프트웨어 개발 안전가
이드를 적용함으로써 안전 목표를 달성할 수 있다.

다음 그림은 IEC 62278 및 IEC 62279 표준을 기반으로 시스템을 개발 시 본 철도
안전가이드의 적용 범위를 나타낸 그림이다.


철도 분야 SW신뢰·안전성 확보를 위한 가이드

최근 소프트웨어(이하 SW)가 사회 각 분야를 주도하는 SW 중심사회가 도래하면서 국민 안전 확보를 위한 핵심요소로 부각되고 있으며, 철도 산업 분야의 경우 철도 관련 시스템의 규모 및 복잡성의 증가로 인해 최근 철도 SW 개발 시 국제 안전 표준을 준수한 SW 안전성 확보 활동을 의무화 하고 있다.

국내 철도 산업은 정부의 주도적인 발주가 없으면 일부 업체만이 살아남는 포화 상태이기 때문에 해외 시장으로 눈을 돌려야 하는 형편이지만 해외 시장에 진입하기 위해서는 고 수준의 위험도 분석, 제어 및 검증 기술력을 통한 안전성을 확보해야 한다. 그러나 국내 업체들 대부분 안전과 관련된 위험도 분석, 제어 및 검증 기술력이 낮고 기술력이 축적되어 있지 않는 실정이며, 실무에서 시스템 및 SW 개발자들이 국제 안전 표준을 준수해 안전 활동 수행 시 각 활동에 대한 요건을 이해하고 적용하는데 많은 어려움이 존재함으로 개발 현장의 실무차원에서 안전 표준을 보다 쉽게 이해하고 안전 목표 수준을 달성할 수 있도록 구체적인 수행 지침과 쉽게 따라할 수 있도록 실 사례 등을 포함한 철도 분야 안전가이드를 개발하였다.

본 과제에서 제시하는 철도 분야 안전가이드는 표준 IEC 62278 기반의 시스템 안전성 분석 가이드 1종과 IEC 62279 기반의 철도 SW 개발 안전가이드 4종으로 구성되어 있으며, 안전가이드의 시범적용을 통해 가이드의 적정성 검증과, 시범적용 시 확보된 산출물을 실제 개발 현장에서 활용 가능한 수준으로 사례를 가이드에 포함해 제공함으로써 가이드의 사용성과 적용성을 제고하였다.

본 철도 안전가이드를 활용함으로써 인력이나 기술 수준이 영세한 철도 SW 개발관련 업체들이 안전성 높은 SW 시스템을 개발하기 위해서 무엇이 필요하고 어떻게 수행되어야 하는지를 이해할 수 있을 것이다. ‘아는 만큼 보인다.’는 말처럼, 본 가이드를 통해서 안전 소프트웨어 개발의 주요 활동 및 산출물 양식을 이해하는 것이, 업체의 경쟁력 강화에 큰 도움이 될 것이다.

SW신뢰·안전성 확보를 위한 공통 가이드

기능안전성(Functional Safety)은 시스템과 장비에 요구되는 전체 안전성(Safety) 중에서 전자 장비와 관련 소프트웨어에 대한 안전성을 의미한다. 공공장소, 생산현장, 사무실뿐만 아니라 가정에서 사람의 오작동 혹은 여러가지 이유로 인해 전자장비의 결함이 발생하여 사용자에게 위험을 초래하고, 결과적으로 인명과 환경을 해치는 크고 작은 사고로 이어지기도 한다.

최근 시스템의 복잡도가 증가하면서 장비의 안전성에 대한 사회적 기대가 더 높아지고 있으며, 특히 소프트웨어의 비중이 높아짐에 따라 소프트웨어 기능안전성에 대한 관심과 요구가 많아지는 추세이다.

안전성 관련 소프트웨어 제품 및 소프트웨어를 포함하는 시스템을 개발하는 기업은 표준에서 제시하는 기준에 부합하는 제품의 기능안전성을 확보하기 위해 표준을 해석하고 적절한 방법을 도입해야 한다. 구체적 방안이 제시되지 않은 상황에서 소프트웨어 기능안전성 확보를 위한 활동을 수행하는 것은 기업에 어려움을 주게되는 것은 자명하다. 특히, 이러한 상황의 변화는 적응에 미숙한 다수의 국내 소프트웨어 기업에게 또 다른 형태의 시장진입 장벽으로 작용할 수 있다.

본 『SW 안전성 공통 개발 가이드』는 소프트웨어 기능안전성 확보를 위해 소프트웨어 기능안전성의 목표수준 설정, 기능안전성 확보를 위한 활동, 현장 적용에 대한 사례를 포함하였고, 소프트웨어 기능안전성을 도입하고자하는 다양한 산업분야의 프로젝트에 공통적으로 활용이 가능하다. 기능안전성 공통 표준인 IEC61508의 Part 1, 3을 기준으로 소프트웨어 분야에 맞게 SIL 1 수준에 맞춰 개발되어 실무에 활용할 수 있는 유용한 참조물이 되도록 하였으며, 향후 SIL 2, SIL 3, SIL 4 등이 지속적으로 보완 제공될 예정이다.

우리나라 소프트웨어 업계에 종사하는 모든 분들이 소프트웨어 기능안전성의 중요성과 의미에 대해 충분히 이해하고, 소프트웨어 기능안전성 생명주기를 프로젝트에 적절하게 도입하여 소프트웨어 기능안전성이 확보된 제품을 개발할 수 있는 역량을 키워나갈 수 있기를 간절히 희망한다.