최근 첨단 전자 산업의 발전과 함께 IT와 제조업 간의 융합이 가속화 되면서 철도 분야에서도 하드웨어에 소프트웨어가 결합된 철도시스템 사용이 증가하고 있다. 철도는 신속한 이동과 안전한 교통수단이지만 열차 사고 발생 시 자칫 대형사고로 인한 많은 인명 사상에 이를 수 있는 교통수단이기 때문에 안전에 대한 요구사항이 대단히 높다. 지난 5월, 국내에서 250여 명이 중경상 피해를 입은 지하철 2호선 추돌사고도 신호 시스템의 오류에 의한 것으로 밝혀진 바 있다. 이와 같은 소프트웨어 결함은 심각한 문제를 일으킬 소지가 있기 때문에 오늘날의 SW 품질은 과거와는 비교할 수 없을 정도로 중요한 영역이다. 철도산업분야에 대한 국제표준규격 기준 중, SW 품질보증의 구체적 실현 방안에 대해 (주) 세화의 김동환 팀장으로부터 전해들을 수 있었다.


(주)세화 김동환 사진 20151125.jpg

< (주) 세화 신뢰성인증팀 김동환 팀장>


    1. 철도분야 안전표준 -  IEC 62278/ IEC 62425/ IEC 62279/ IEC 62280

      2. 안전무결성수준(SIL)의 설정

        3. 철도분야 SW 수명주기

          4. 철도분야 SW 품질보증

            5. (주) 세화 SW품질보증 사례



            Q:  철도산업에서도 SW품질의 중요성이 크게 증가하고 있죠?


            네, 그렇습니다. 국민 안전과 직결되는 부분이기 때문이죠.

            대표적인 산업 안전 분야는 자동차/국방/원자력/항공/의료기기 분야로 꼽혀왔는데요, 철도

            분야 역시 중요한 산업 안전 분야로 관리되고 있습니다. 현재 한국 철도산업은 KTX의 개통 및 도시 철도의 발달로 인해, 선진 철도국가로의 도약을 위해 빠른 성장을 하고 있죠. 고속철도라 함은 통상적으로 200km 이상의 고속으로 주행하는 철도를 말하는데요. 특히,  2014년부터 진행되고 있는 수도권고속철도사업은 수서~평택간 61Km 구간으로 사업비 약 3조 605억원 규모의 사업 입니다.  이러한 시설물의 증가로 인해 잠재적인 안성 위험성이 증가하고 있는 추이에 있습니다. 따라서 철도 안전에 대한 관심이 지속적으로 높아지고, 국가 기관에서는 관리 규정을 강화하고 있습니다. 잠재적인 안전 문제점을 해결하기 위해서 시스템에 잠재된 위험요인을 조기 발견하여 제거 및 관리하는 공학적인 안전 관리 시스템을 필요로 하게 되었고요. 이에따라 발주 기관(한국철도시설공단 및 한국철도공사 등)은 안전에 대한 요구 사항으로써 국제 표준 규격에 적합한 설비 납품을 요건으로 하고 있습니다.


            현재 진행중인 수도권고속철도 열차시스템 중, 저희 (주)세화에서는 통합감시시스템을 개발하여 납품하고 있으며, 이러한  국제표준규격에 적합한 제품을 개발하기 위해 많은 노력을 기울여 왔습니다.


            Q: 철도분야의 안전표준은 어떤 것이 있나요?


            ‘국제전기표준회의’ 즉, IEC는 전기기술에 관한 표준의 국제적 통일과 조정을 목적으로 설립되었는데요. 1998년 IEC에서는 전기/전자/프로그램 가능한 전자 안전관리 시스템의 기능안전 즉, 컴퓨터에 의해 직접적으로 제어되는 기기와 관련되는 것으로 하드웨어와 소프트웨어의 올바른 기능과 연관된 모든 산업에 적용 가능한 안전표준으로’ IEC 61508’을 제정하였습니다

            최근 국내외적으로 철도시스템이 복잡해짐에 따라, 의도된 기능 수행에 대한 확신을 마련하기 위하여 안전 시스템의 관리방법론이 필요해졌는데요. 이에 따라 IEC 61508에서 파생된 철도 분야의 안전표준 IEC 62278/ IEC 62425/ IEC 62279/ IEC 62280 에서 정의된 수명주기 활동, 위험분석 및 평가에 따른 안전무결성수준(SIL)을 설정하고, 하드웨어와 소프트웨어를 목표된 안전무결성수준(SIL)에 충족하도록 시스템 개발, 안전설계, 시험, 설치, 운영, 유지보수, 폐기 단계까지 관리하도록 규정하고 있습니다.

            철도시스템 애플리케이션의 기능 안전에 관련된 주요 표준규격 범위 및 관계는 아래 [그림 1]과 같습니다. 아래 규격은 모든 안전 관련 철도 시스템, 하부시스템 및 기기에 적용될 수 있습니다.


            <그림 1> The Main IEC railway application standars


            자료: IEC 62425



            Q:  철도분야 안전표준과 각 단계별 자세한 설명 부탁드립니다.    


            1. 철도분야 안전표준 -  IEC 62278/ IEC 62425/ IEC 62279/ IEC 62280

            ‘IEC 62278’은 RAMS 규격으로, 철도 기관과 철도 관련 산업을 위해 신뢰성, 가용성, 유지보수성 및 안전성 관리를 지속적으로 수행할 수 있도록 하기 위한 전체 수명주기 14단계 별로 세부적인 RAMS 활동에 대해 정의하고 있는데요.  RAMS 요구사항을 개발하고, 이행하기 위한 기준을 제공하게 됩니다.

            ‘IEC 62425’은  철도 신호분야에서 안전 관련 전자 시스템의 승인을 위한 요구사항을 정의한 규격 인데요. 신호용 안전 관련 전자 시스템은 하드웨어와 소프트웨어 측면이 모두 고려되어야 하는데, 이 규격은 안전 관련 하드웨어와 전체 시스템에 대한 요구사항들을 제공합니다.

            ‘IEC 62279’은  철도 시스템에 대한 소프트웨어 규격 으로 철도 분야의 안전 관련 소프트웨어의 개발, 시험, 검증 및 유지보수와 준수해야 할 일련의 요구사항들을 제공합니다.

            ‘IEC 62280’은  통신 규격 으로 전송 시스템의 안전 관련 통신에 대해 고려해야 할 요구사항을 제공하고요. 안전 관련 전자 시스템이 다른 장소 간의 정보를 전송할 경우, 전송 시스템은 안전 관련 시스템의 필수 부분이 되고 통신이 안전하다는 것을 증명해야 합니다.


              - IEC 62278: Railway applications - Specification and demonstraion of reliability, availability, maintainability and safety(RAMS)


              - IEC 62425: Railway applications - Communication, signalling and processing systems - Safety related electronic systems for signalling


              - IEC 62279: Railway applications - Communication, signalling and processing systems - Software for railway control and protection systems


              - IEC 62280: Railway applications - Communication, signalling and processing systems - Safety related communication in transmission system


                    2. 위험분석 및 평가에 따른 안전무결성수준(SIL)의 설정

                    안전표준에서의 안전무결성(Safety Integrity)은 ‘안전관련 시스템이 일정기간 내에 모든 일정 조건에서 요구되는 안전 기능을 성공적으로 수행할 확률’로 정의하고 있습니다. 안전무결성(Safety Integrity)은 안전기능을 수행할 때 안전 관련 시스템의 ‘성능’과 관련되는데요. 안전기능목표 달성을 위하여 먼저, 어떤 안전기능을 추가할 것인가를 결정하고, 그 다음으로 정의한 안전기능의 달성 가능한 정도를 안전무결성수준(SIL: Safety Integrity Level)으로 결정함으로써 전개됩니다. 즉, 시스템 전체 안전기능 요구사항은 안전무결성 요구사항과 함께 구성되어 각 하위 시스템의 요구사항으로 할당됨으로써, 하위 시스템의 구조 또는 각 시스템의 기능들을 구현하는 기술 및 측정법을 결정하게 되는 것이죠.

                    시스템에 대해서 요구되는 안전무결성수준(SIL)은 그것을 적용하는 분야에 따라 달라집니다. IEC 62279에 의하면 철도 시스템 자체에 요구되는 안전무결성수준(SIL)의 정의에 대해, 분명하게 설정된 시스템에서 소프트웨어에 대한 안전무결성수준(SIL)의 범위를 다음 [표 1]과 같이 정의하였습니다.


                    <표 1> Software safety integrity Level 

                    자료: IEC 62279


                    3. 철도분야 SW 수명주기

                    안전 시스템의 구성 중 SW의 경우, 실제 고장률을 측정한다는 것은 사실상 불가능합니다. 그렇기 때문에 주로 시스템이 결합되는 하드웨어 및 시스템의 전체 고장률 또는 허용 가능한 범위의 고장률을 결정하여, 안전무결성수준(SIL) 할당에 따른 IEC 62279에서 제시하는 단계별 요구사항을 따르도록 요구하고 있는데요. 즉, SW에 대해서는 안전무결성수준(SIL)에 대한 달성 정도를 증명하지 않고,  단계별 기술 요구사항에 따라 수행해야할 활동에 대한 증거를 검증 하여 목표로하는 안전무결성수준(SIL)을 달성 되었다고 판단합니다.


                    <그림 2>  Development Life cycle

                     자료: IEC 62279


                    4.    철도분야 SW 품질 보증


                    (1)SW 품질요구사항

                    IEC 62279에서 요구하는 품질요구사항은 품질계획 수립시, ‘부합성’을 결정하여 프로젝트 진행함에 따라 적용하도록 권고하고 있는데요. IEC 62279의 SW 품질보증 요구사항에서 권고하는 내용을 프로젝트 수행에 있어 실제 적용하는 방안은 아래와 같습니다. [표2 참조]


                    <표 2>IEC 62279의 SW 품질보증 요구사항과 적용

                    No

                    SW 품질요구사항

                    요구사항 적용

                    1

                    ISO 9000-3의 전문과 IEC 62279에서 요구하는 실행사항, 행위, 문서 등은 SW 품질보증 계획과 세부 개발에 의한 규약을 참조해야 한다. ISO 9000-3에 누락된 사항은 반드시 증명되어야 함을 원칙으로 한다.

                    ISO 9000-3과 IEC 62279에서 요구하는 실행사항, 행위, 문서 등은 본 계획서의 단계별 활동 절차 및 문서관리에 포함 시켜 수행하도록 한다.

                    2

                    수명주기 모델의 정의

                    SW 개발 수행을 위해 개발방법론으로 접근하고 그에 따른 절차는 V&V 모델을 적용한다.

                    3

                    수명주기 단계 정의

                    개발 방법론을 정의하고 그에 따른 수명주기 모델을 정의하고 각각에 포함된 단계를 정의한다.

                    4

                    수명주기 단계 입력과 출력

                    개발 방법론을 정의하고 그에 따른 수명주기 모델을 정의 각각의 포함된 정의된 단계에 입력과 출력물을 정의 한다.

                    5

                    수명주기 단계 품질 활동

                    개발 방법론을 정의하고 그에 따른 수명주기 모델을 정의 각각의 포함된 정의된 단계에 품질활동을 정의한다.

                    6

                    요구사항 추적

                    요구사항의 추적 용이성을 위해 요구사항 추적관리표를 작성하여 추적이 용이하도록 적용한다.

                    7

                    문서 구조의 일관성

                    문서 구조의 추적 용이성을 위해서 표준화된 서식을 사용한다.

                    8

                    SW의 개발, V&V 그리고 유지보수와 관련된 문서

                    SW 품질보증 활동 동안 산출 될 SW 개발, V&V, 유지보수 문서에 대해 정의한다.

                    9

                    시스템 통합 절차

                    시스템 통합 절차를 정의 하고 검증한다.

                    10

                    코딩 표준

                    표준코딩 가이드 및 규격을 정의한다.

                    11

                    SW 매트릭스의 생성시에는 반드시 품질 특성과 ISO/IEC 9126 에서 정의된 평가지침을 참조해야 한다.

                    매트릭스의 정의와 생성에 관한 사항은 Verificatio 계획서와 Validation 계획서에서 정의하도록 한다.

                    12

                    형상관리는 반드시 ISO 9000-3에 기술된 지침에 따라 수행되어야 한다.

                    SW 형상관리계획서를 작성하여 본 사항을 정의하여 형상관리를 수행한다.

                    13

                    SW 문서는 최초의 승인 버전 출시 이전에 반드시 형상제어를 수행해야 한다.

                    SW 형상관리 계획서에 형상제어에 대하여 정의하고 절차를 수립하여 형상제어를 수행하도록 한다.

                    14

                    SW 소스코드는 반드시 모듈 시험의 초기 단계 이전에 구조가 제어 되어야한다.

                    SW 구조사양서와 SW 설계사양서에서 모듈 시험의 초기 단계 이전에 구조가 제어 되도록 정의하고 수행한다.

                    15

                    SW Verification 계획의 결과와 적합성은 반드시 시험되어야 한다.

                    SW Verification 계획서 결과 및 적합성을 확인하기 위한 자체 검토(시험) 및 감사를 실시한다.

                    16

                    이전에 개발된 SW는 반드시 SW 안전무결성들급과 종속성에서 요구하는 완전성을 만족해야한다.

                    SW 품질보증계획서에 정의하고 본 계획과 그 내용에 부합하도록 개발과 유지보수가 되는지 V&V 활동을 통해 수행할 수 있도록 확인한다.

                    17

                    SW 안전무결성수준의 요구사항에 부합하기 위한 문제의 예방 활동에 대한 정의

                    SW 안전무결성수준의 부합성을 위하여 규격서에서의 요구사항을 각 산출문서에서 예발 활동에 대한 내용을 정의한다.

                    18

                    개발과 SW 유지보수에 대한 책임한계에 대한 정확한 정의

                    품질보증계획서 및 SW 유지보수계획서에 SW 조직구성을 정의하고 그에 따른 책임한계를 정의하여 적용한다.

                    19

                    재시험, 재확인, 재검증 그리고 재평가에 대한 요구사항의 정의

                    부적합 사항이나 오류의 발생시 시정조치 후 제시험, 재확인, 검증 그리고 재평가하는 것으로 시정조치 절차에 따라 실행하도록 한다.


                    (2) SW 품질보증 활동

                    SW 품질보증 활동의 목적은 SW 개발 전 과정에 걸친 SW 품질 목표의 충족, 그리고  정의된 프로세스 및 방법을 준수하고 요구사항에 맞게 개발하고 있는지 확인하는 품질보증 활동을 체계적으로 계획하고 이행하는데 있습니다. 철도분야의 SW 품질보증 활동은 IEC 62279를 기반으로 하고요, 단계별 SW 품질보증활동에 따른 입력자료와 출력자료는 아래그림과 같습니다. [그림 3 참조]


                    <그림 3>  SW 품질보증활동에 따른 입출력 자료



                    Q:  (주) 세화에서도 제품의 SW품질을 충족시키기 위해 여러 노력을 기울이셨다고 들었습니다.


                    예. 앞서 말씀드렸듯이 저희도 안전에 대한 국제표준규격에 적합한 제품을 개발하기 위해 꾸준한 노력을 지속해 왔는데요. 올해 초, NIPA 에서 주관하는 SW공학기술현장적용지원을 받아 SW 정적 및 동적 시험 자동화 구축뿐만 아니라 CI(지속적 통합) 시스템을 구축하여 Software Visualization을 실현했습니다.  저희가 진행했던 사례 중, SW부분을 중점적으로 소개해드리겠습니다.  


                    <그림 4> 수도권고속철도 통합감시시스템


                    수도권고속철도 열차제어시스템은 수서~평택간 61Km 구간으로, 2014년 11월 착공했으며 2016년 6월 30일 완공예정입니다.

                    수도권고속철도 열차제어시스템의 주요과업으로는 열차제어시스템(ATC), 연동장치(IXL), 안전설비, 전원설비, 통합감시시스템(TIMS-TCS Integrated Maintenance System)의 서브 시스템으로 구성되어 있는데요, 저희 (주) 세화에서는 통합감시시스템부분을 맡아 진행하고 있습니다. [그림 4 참조]


                    <그림 5> 통합감시시스템 중 RAMS업무  


                    통합감시시스템 중 본사의 업무 범위는 선로전환기 감시장치 및 통합 감시서버 하드웨어 그리고 소프트웨어 개발 부분인데, 적용 국제 규격으로는 IEC 62425를 제외한 IEC 62278 및 IEC 62279를 적용하여 개발을 하고 있습니다.

                    또한, 시스템 V&V 활동은 IEC 62278 규격에 따라 실행하고 있으며, IEC 62279 표준의 정적 및 동적 시험을 포함한 소프트웨어 V&V 활동 및 산출물 작성을 하고 있습니다.[그림 5 참조]


                    <그림 6>개발수명주기에 따른 RAMS활동 



                    위 그림은 시스템 개발 수명주기에 따른 RAMS 측면과 S/W V&V 측면의 연관관계를 보여주고 있습니다. [그림 6참조]

                    보시는 그림의 오른 쪽과 같이 시스템 개발 수명주기에 따른 IEC 62278 활동은HW와 밀접한 관계를 가지고 있는데요. RAMS 업무 내용을 보시면,  RAMS 계획 수립/ RAM 목표 수립 및 안전요구사항 정의의 다음 단계이며,  하부 시스템 RAM 목표 할당 -> 시스템 수준의 RAM 목표를 달성하기 위한 하부 시스템의 RAM 목표를 할당 해야 함을 확인할 수 있습니다.

                    안전성 활동으로는 안전요구사항 정의 시스템 위험원 분석, 인터페이스 위험원 분석 , 운영 및 지원 위험원 분석이 있고요. 왼쪽 IEC 62279 기반의 V&V 활동을 보시면 수명 주기별 검증 및 시험 업무로 구분 할 수 있겠습니다.


                    <그림 7> SW V&V 활동  프로세스 


                    다음은 SW V&V 프로세스 인데요, [그림 7참조]

                    IEC 62279의 점진적 설계 단계를 반영하여 소프트웨어 계획단계- 요건단계- 구조설계단계- 모듈설계단계 - Coding- 시험 - validation 단계로 구성되었으며,  V&V 활동으로는 요건/구조설계/모듈설계 Verification Report 및 code Inspection, 모듈시험, 통합시험, SW/HW 통합시험, 소프트웨어 확인 시험을 수행하도록 프로세스를 구성하였습니다.


                    <그림 8> 표준코딩가이드  



                    위 그림은 본사가 수립한 표준 코딩 가이드 작성 예시 입니다. [그림 8 참조]

                    코딩 가이드는 MISRA C/C++ 표준 및 IEC 61508 및 IEC 62279에서 권고하고 있는 표준 규칙을 검토하여 5단계의 규칙 등급을 생성하였고 SIL 등급에 맞게 규칙 등급을 활용 할 수 있도록 했고요, 또한 이러한 코딩 규칙은 전문가(관련 전문교수) 검토 의견서를 받음으로써 객관적이며 명확하게 입증 된 표준 코딩 가이드 입니다.


                    <그림 9> 소스코드 정적 분석 


                    소스코드 정적 분석 절차는 위와 같이 시험 환경을 구축 하였습니다. [그림 9 참조]

                    저희는 세화 코딩 가이드를 선정하여 Code inspector 도구를 활용하여 결과 분석을 하였는데요. 1차 결과검토에서 verifier 가 false alarm 및 의도된 코드 등의 예외 사항 분류를 하여, 오류라고 판단한 code에 대해 개발자에서 수정을 요청을 하였고요, 오류 발견(규칙위반0)시 검증을 종료 하였습니다.


                    <그림 10> 모듈시험 

                    소스코드의 각 함수 또는 메소드가 의도된 대로 정확히 동작하는 지 검증하기 위해 모듈시험을 시행하였고, 프로그램의 각 부분(함수)을 고립 시켜서 각각의 함수가 정확하게 동작하는 지 확인하는 절차를 거쳤습니다. [그림 10 참조]



                    <그림 11> 통합시험 


                    마지막으로 통합시험에서는 함수 간의 인터페이스와 각 함수의 동작 및 기능에 문제가 없는지 확인했고, 데이터 및 기능의 인터페이스가 정상적으로 동작하는 지 여부에 중점을 두고 시험을 수행하여 함수들의 결합으로 인한 문제 발생 여부를 검증하였습니다. [그림 11 참조]

                    이러한 과정들을 통해 저희는 SW 정적 및 동적 시험 자동화 구축뿐만 아니라 CI(지속적 통합) 시스템을 구축하여 Software Visualization 실현할 수 있었는데요. SW공학기술 현장적용 사업지원을 통해 이러한 자동화 시스템 구축을 지원 받아, 비교적 빠른 기간 안에 구축을 완료 할 수 있었습니다.


                    간략하나마, 철도분야의 기능안전 규격과 SW 수명주기 단계별 활동 및 품질보증 활동을 설명드렸는데요. 이러한 내용은 안전성 평가 또는 SIL 인증을 수행할 때 필수 기반이 되는 활동입니다. 안전 관련 시스템에 대한 SIL 인증절차는 제품 개발부터 폐기까지 전 단계에 걸쳐 안전 및 품질 관련 활동을 모두 심사하는 것이기 때문에 많은 노력과 자원이 필요하죠.  그래서 SW개발업체입장에서는 비용도 많이 들고, 제대로 갖추기 힘든 부분이기도 합니다.

                    SIL 인증을 위해서는 시스템 개발 단계별로 다양하고 정확한 활동이 요구되므로, 기술적인 검토 뿐만 아니라 충분한 시간과 인력의 지원을 고려하는 것이 중요합니다.

                    모든 산업 부문에서 소프트웨어에 대한 의존도가 높아지는 앞으로의 사회에서는 소프트웨어의 안전성 확보가 사회적 이슈로 부상하게 될 가능성이 높고, 이미 세계적인 화두로 나타나고 있습니다. 이러한 상황은 원치 않는다고 해서 회피할 수 있는 것이 아닌 만큼 발 빠르게 변화를 인지하고, 실력을 갖추려는 자세가 시급하다고 생각됩니다.


                    출처: http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?boardId=00000000000000035029&currPage=&searchPrefaceId=&titOrder=&writeOrder=&regDtOrder=&searchCondition=TOT&searchKeyword=

                    Posted by insightalive
                    ,