Transactions of KSAE, Vol. 22, No. 3, pp.68-74 (2014) Copyright C 2014 KSAE / 129-09 pissn 1225-6382 / eissn 2234-0149 DOI http://dx.doi.org/10.7467/ksae.2014.22.3.068 ISO 26262 표준기반의소프트웨어검증을위한소프트웨어결함주입기법 이상호 * 신승환 현대오트론주행제어팀 Software Fault Injection Test Methodology for the Software Verification of ISO 26262 Standards-based Sangho Lee * Seunghwan Shin Driving Control Engineering Team, Hyundai-autron, Mtek IT Tower, 344 Pangyo-ro, Bundang-gu, Seongnam-si, Gyeonggi 463-400, Korea (Received 31 October 2013 / Revised 29 January 2014 / Accepted 26 February 2014) Abstract : As the number of ECUs (Electronic control units) are increasing, reliability and functional stability of a software in an ECU is getting more important. Therefore the application of functional safety standards ISO 26262 is making the software more reliable. Software fault injection test (SFIT) is required as a verification technique for the application of ISO 26262. In case of applying SFIT, an artificial error is injected to inspect the vulnerability of the system which is not easily detected during normal operation. In this paper, the basic concept of SFIT will be examined and the application of SIFT based on ISO26262 will be described. Key words : Dynamic verification( 동적검증 ), FMEA( 고장형태영향분석 ), ISO 26262( 기능안전표준 ), Robustness( 강건성 ), SFIT( 소프트웨어결함주입테스트 ) 1. 배경 1) 최근차량의주행성능, 편의성, 안전성을높이기위한차량내전자제어장치 (ECU) 의급속한증가및네트워크화로인하여자동차내전장부품에대한비중이지속적으로증가되고있다. 컨설팅업체인맥킨지社의보고서에의하면, 자동차제조원가에서전장이차지하는비중은 2004년 19퍼센트에서현재 20 퍼센트대중반으로높아진데이어 2015 년엔 40 퍼센트수준으로급성장할것으로예상된다. 1) 이처럼전자부품의사용이크게증가하면서전자적오류에따른자동차사고위험성을줄이는것이자동 * A part of this paper was presented at the KSAE 2013 Annual Conference and Exhibition * Corresponding author, E-mail: sangho.yi@hyundai-autron.com 차업계의화두로떠오르고있다. 따라서전자제어장치에들어가는소프트웨어의품질및기능안정성이자동차산업에서중요해지고있으며이를만족시키고신뢰성을갖기위한소프트웨어검증이필요해지고있다. 이러한흐름에맞춰전자제어장치에탑재되는소프트웨어의오류로인한사고방지를위하여자동차기능안전국제규격 (ISO 26262) 이제정되었다. ISO 26262 표준은명세, 설계, 구현, 통합, 검증, 인증에이르는개발전단계에서최신개발방법및테스트방법을적용하도록하고있으며기능안전규격을준수하기위한각단계에서의요구사항을정의한다. 세부적으로는시스템레벨, 하드웨어레벨, 소프트웨어레벨에서각요구사항들이정의되어있으며다시소프트웨어레벨 (ISO 26262, Part 6) 에서소프 68
ISO 26262 표준기반의소프트웨어검증을위한소프트웨어결함주입기법 트웨어개발시준수해야할요구사항과소프트웨어검증시준수해야할요구사항이정의되어있다. 따라서 ISO 26262 표준을기반으로소프트웨어를개발할때에는표준에정의된소프트웨어검증방법들을수행해야한다. 하지만이처럼 ISO26262 표준기반의소프트웨어검증의중요성이대두되고있음에도표준의특성상적용을위한실질적인방법론에대한설명은부족한측면이있다. 소프트웨어결함주입기법 (Software Fault Injection Test) 이란 ISO 26262 표준의적용에있어필요한소프트웨어검증단계중하나로써시스템에인위적으로결함을주입하여오류를파악하고시스템의기능안전상의강건성을검증하는방법이다. 2) 이를통해시스템의정상작동시쉽게발견되지않는내부결함을파악하고안전기능이예상치못한상황에서적절하게통제되고견고성을유지하는지에대한검증이가능하다. 현재 ISO 26262 표준에서는소프트웨어통합검증단계에서결함주입기법을 ASIL C, D 등급에서반드시적용해야한다고정의하고있으며하위등급에서도적용을권장하고있다. 하지만역시기법의적용을위한자세한방법론에대해서는정의되지않았다. 따라서결함주입대상의식별, 입력할결함데이터추출, 결함주입방법등실제적용을위한방법론에대한논의가필요한시점이다. 커맨드라인파라미터, API를대상으로결함주입을통한소프트웨어에검증기법에대한연구가다수이루어져왔으며근래에임베디드소프트웨어에서의결함주입기법의연구가활발해지고있는추세이다. 따라서이미기존에소프트웨어결함주입기법에대한다양한논문들이존재하고있으며, 크게컴파일타임주입기법, 런타임주입기법으로나뉘어각각에따른세부결함주입기법이연구되었다. 최근자동차분야에서소프트웨어개발은모델기반개발 (Model Based Development) 로진행된다. 따라서소프트웨어개발시소프트웨어결함주입을모델링하고시뮬레이션함으로써소프트웨어의강건성을검증하는연구가진행되었다. 6) 다른연구로는소프트웨어에주입하는결함을식별하기위해서시스템수준에서식별된기능안전요구사항 (Functional Safety Requirement) 과기술적안전요구사항 (Technical Safety Requirement) 를분석하여결함주입시험을수행하는방법에관한것이있다. 7) 자동차분야에서진행되는결함주입기법의최근연구는모델을사용하여결함을주입하거나상위시스템요구사항에서소프트웨어에관한결함을식별하는것으로볼수있다. 하지만기능안전에서요구하는결함주입시험은소프트웨어아키텍처수준에서결함을식별하고식별된결함을소프트웨어주입하고테스트하여강건성을확인해야한다. 3. 본론 Fig. 1 ISO 26262 Part6 Table 13. Methods for software integration testing 2. 관련연구동향 결함주입기법 (Fault Injection Test) 은초기에하드웨어의강건성을테스트하기위한방법으로써하드웨어에고의적인결함을인위적으로일으키고그에따른시스템의의존성을평가하는검증기법으로개발되었다. 그후소프트웨어검증에도입되어주로프로토콜, 본론에서는결함주입기법을수행하기위한결함주입대상의식별, 입력할결함데이터추출, 결함주입방법등에대한실제적용을위한방법론을다루었다. 3.1 결함주입대상식별소프트웨어결함주입기법을적용하기위해서는먼저결함이주입될대상소프트웨어를식별해야한다. 시스템전체에대하여결함을주입하고그에대한시스템의반응과결과를관찰하는것도의미가있을수있으나이는많은시간적비용적낭비를유발할수있다. Transactions of the Korean Society of Automotive Engineers, Vol. 22, No. 3, 2014 69
Sangho Lee Seunghwan Shin 결함주입기법은인위적인결함을주입하였을때시스템이결함을잘처리하여전체시스템이문제없이정상수행되는지를살펴보는강건성테스트라고볼수있다. 따라서결함주입기법은장애허용시스템 (Fault Tolerant System) 에의한강건설계가구현된소프트웨어모듈에대하여수행하였을때의미가있다. 만약강건설계가이루어지지않은모듈에대하여원치않는결함데이터가입력될경우잘못된결과값이리턴되는것은일견당연한현상이기때문이다. 이를 ISO26262 표준에따른소프트웨어개발과접목시켜보면기능안전표준에서는작성된소프트웨어아키텍처에잠재적인결함이없는지분석하는안전분석을반드시수행해야한다. 이를위해소프트웨어아키텍처를정의한후소프트웨어 FMEA (Failure Mode and Effects Analysis), FTA(Fault Tree Analysis) 등의과정을통해아키텍처상의취약점을분석하고이를보완하는장애허용시스템이추가된소프트웨어아키텍처를다시설계하는방식으로개발이이루어진다. 따라서 ISO26262 표준기반의결함주입기법을활용하기위해서는표준개발프로세스에따라소프트웨어안전분석을통해강건설계가이루어진소프트웨어모듈에대하여결함주입을활용하면장애허용시스템이잘설계되었는지에대하여올바른검증을할수있을것이다. FMEA 결과는테이블형식으로문서화되므로시스템의고장과원인과의논리적관계를나타내기어렵다. 개발초기에개발하는소프트웨어에대한이해부족으로 FTA를통한분석은최상위고장으로부터하향식으로모든원인을찾기가쉽지않기때문에, 중요한고장원인이누락될수있는위험이있다. 8) 따라서하드웨어나기구처럼시스템의구조가명확하지않은소프트웨어의경우 FTA 보다는 FMEA를사용하여안전분석을수행하는편이더욱효과적이다. 아래에서예시를통해 FMEA를통한강건설계가이루어지는방법을나타내보겠다. Fig. 1과같이레이더에서입력신호를받아차량을제어하는적응형순항제어시스템을단순하게고려해보면제어기에대한소프트웨어아키텍처를아래와같은 DFD(Data Flow Diagram) 으로표현할 Fig. 2 Data flow diagram of SCC 수있을것이다. 4) 위시스템에대하여 FMEA를수행하기위해서는먼저일어날수있는결함을식별해야한다. SAE ARP 5580을보면총 6가지의결함이정의된다. 5) 1) 실행되지않는결함 2) 불완전하게실행되는결함 3) 실행타이밍이불안전해서생기는결함 4) 에러가발생하는결함 5) 리턴되지않아서낮은우선순위의인터럽트가실행되는것을막는경우 6) 올바르지않은우선순위를리턴하는경우위 SAE 권고사항을시스템의 1.1.1 레이더데이터보정모듈에대하여적용해보면다음과같은결함의발생을예상할수있다. 1) 모듈이실행되지않음 2) 모듈이불완전하게실행됨 3) 모듈의실행타이밍이느리거나빠름 4) 모듈실행시에러가발생레이더데이터보정모듈이실행되지않거나불완전하게실행되는경우보정된레이더입력값이전해지지않아적응형순항제어기능이오작동을일으킬수있다. 또한레이더데이터보정모듈의실행타이밍이느리거나빠를경우이전에처리된데이터가입력되거나이후처리될데이터가입력되어마찬가지오작동을일으킬수있다. 이는전체시스템의관점에서잘못된레이더데이터처리로인하여선행차량과의거리계산이잘못되어차량이비정상적으로제동이걸리거나가속이가해져선행차량과의충돌또는급제동과같은사고를일으킬수있다. 위내용을소프트웨어 FMEA 형식으로 Table 1 70 한국자동차공학회논문집제 22 권제 3 호, 2014
Software Fault Injection Test Methodology for the Software Verification of ISO 26262 Standards-based Table 1 Result of software FMEA 1 차아이템 1.1 레이더데이터입력처리 결함 고장 원인 레이더데이터보정이안되어잘못된레이더입력처리값을전달 선행차량과의거리계산이잘못되어충돌발생가능 레이더데이터보정모듈이실행되지않거나불완전실행 2 차기능 1.1.1 레이더데이터보정 필요조치 과같이정리할수있다. 레이더데이터보정모듈의모니터링메커니즘을추가하여보정모듈이정상작동하는지검사함 이와같이고장과결함을식별한뒤이결함을제거하는대책을수립하고해결하는과정이뒤따르게된다. 이를통해기능안전측면에서소프트웨어의오작동에따른위험성을줄일수있는강건설계가이루어지게된다. 3.2 결함주입데이터 결함주입기법을활용하기위해서는어떠한입력데이터를결함으로주입해야하는가? 결함주입기법에서입력되는결함데이터에는크게 2가지방식이있다. 무작위 (Random) 데이터와부분유효 (Semi-Valid) 데이터입력방식이다. 무작위데이터입력방식은입력횟수가많아질수록더많은검증의정확도를가질수있으나검증대상소프트웨어의특성을고려하지않기때문에입력단계에서폐기되거나의미없는검증결과들이다수발생할수있다. 예를들면계층구조로이루어진모듈에서하위모듈에대해결함주입을하고자하는경우, 무작위데이터입력방식을사용하는경우상위함수에서이미무작위데이터가폐기되는상황이발생할수있다. 따라서무작위데이터입력방식은경우에따라비효율적일수있다. 부분유효데이터입력방식은검증대상소프트웨어의특성을분석하여입력될결함데이터를결정하는방식이다. 따라서먼저대상소프트웨어의입력데이터들에대한분석이필요하다. 본논문에서는이과정을앞서언급된소프트웨어 FMEA 과정과접목하는방법론을제안한다. 앞서예시를통해살펴봤듯이소프트웨어아키텍처설계과정에서소프트웨어 FMEA를수행하려면소프트웨어의특성과나타날수있는결함의유형들을식별해야한다. 소프트웨어 FMEA 과정에서위 6가지유형중대상소프트웨어에서일어날수있는결함을식별하고해당결함에의해발생할수있는고장 (Failure effects) 과발생하는원인 (cause) 을식별하는과정을거친다. 또한각결함에의해발생하는리스크에대해 HARA(Hazard Analysis & Risk Assessment) 에서발생확률, 제어가능성, 심각도를평가하여리스크의우선순위를정하는과정을거친다. 이와같은 ISO 26262 표준프로세스와 FMEA를통해설계된소프트웨어라면이미위의과정에서각각의검증대상소프트웨어발생할수있는결함들이식별되어있다고볼수있다. 또한개별결함이미치는리스크에대하여우선순위가정해져있으므로우선순위가높은리스크에대하여검증의강도를부여한다면좀더높은신뢰성을갖춘검증결과를얻을수있을것이다. 3.3 결함주입방법식별된결함을주입하는방법에는결함주입시기에따라컴파일타임레벨과런타임레벨의 2가지방법이가능하다. 먼저컴파일타임레벨에서결함을주입하는경우는이미작성된소프트웨어의코드를변형하여컴파일후실행시켜변형된코드에의한시스템의결과를관찰하는것이다. 실제로이미구현된소프트웨어의코드가변형되는경우는존재할수없지만, 소프트웨어가실제 ECU에탑재되어동작되는경우레지스터값의변형이일어나거나행 (Hang) 이걸려처리되는값의지연이일어날수있다. 이러한현상을코드단위에서의수정을통해모사하여검증하는것이다. 이때코드의변형에는뮤테이션과제너레이션 (Generation) 두가지방법이있다. 3) 뮤테이션은기존의올바르게작성된코드에대하여일부를임의적으로변형시키는방법이다. 앞서예를들었던레이더데이터보정모듈에서결함이나타났다고가정해보자. 아래의 Table 2와같이코 Transactions of the Korean Society of Automotive Engineers, Vol. 22, No. 3, 2014 71
이상호 신승환 Table 2 Code mutation examples 변경전 radar_data = radar_input +100; 변경후 radar_data = radar_input -100; 드의일부에간단한변형을줌으로써소프트웨어의결함을유발시킬수있다. 실제로소프트웨어가작동하는환경에서는내외부의예상치못한특정원인에의하여레지스터값의변형이일어날수있다. 코드뮤테이션을통하여이러한레지스터값의변형과같은경우를모사하는것이다. 제너레이션은기존의코드에새로운코드를삽입하여소프트웨어의동작특성에변화를주는것이다. 예를들어레이더데이터보정소프트웨어모듈의결함유형중실행타이밍이불안전해서생기는결함이있을수있다. 이는어떠한실행함수에서빠져나오지못하거나행에걸려지연이발생하는경우를생각해볼수있다. 이런경우를모사하기위하여아래의 Table 3과같이기존의코드에임의의 1초간의지연을발생시키는함수를만들어코드에삽입할수있다. 만약위와같은코드가삽입된다면시스템에지연이발생하여결과값을처리하는데문제가생길것이다. 하지만이러한결함유형에대하여제대로된강건설계가이루어진소프트웨어일경우올바른타이밍에결과값이들어오지않는다고판단되면시스템전체처리속도를늦추거나다른경로를통해올바른결과값을받아들이는등의결함처리방식을통해문제를해결할것이다. 두번째로런타임레벨에서결함을주입하는경우는소프트웨어를실행시키며디버거를통해결함을주입하는방법이다. 기본적인결함주입의개념은앞서기술한코드단위에서의결함주입과동일하 Table 3 Code generation examples 변경전 int radar_data; radar_data = radar_input + const ; return radar_data; Fig. 3 SFIT environment using debugger 지만코드가실행되는상태에서디버거를통해입력값들을변경하거나임의의시점에서실행을지연시키며그에따른결과값을관찰하여결함주입에따른결과를검증할수있다. 이때타깃보드의유무에따라코드만을실행하여컴파일러의디버깅상태에서변수값들을조정하거나 Fig. 3과같이타깃보드에소프트웨어를탑재하여 Trace32와같은디버거를통해결함을주입할수있다. 특히타깃보드에따라메모리의크기, 레지스터설정등소프트웨어의실행환경이다르므로타깃보드에소프트웨어를탑재하여디버거장비를이용하는경우좀더실제시스템의실행환경에가까운검증이가능하다. 3.4 결함주입테스트프로세스결함주입테스트프로세스는 Fig. 4와같이 4단계로나뉜다. 결함식별단계에서는소프트웨어 FMEA결과에서결함발생시소프트웨어를강건하게유지하기위해서소프트웨어로직을보강한결함을소프트웨어에주입하는결함으로식별한다. 예를들어 Table 1에서식별된결함인레이더데이터보정올바르게처리되지않은경우필요조치로보정모듈을추가하는작업을하였다. 이결함은필요조치를취했기때문에결함주입테스트를통하여제대로된결함대응로직이구현되었는지확인해야한다. 따라서이결함은결함주입테스트의결함으로식별한다. 결함주입단계에서는결함식별단계에서식별된결함을소프트웨어에주입한다. 결함을주입하기위해서는 Fig. 5와같은소프트웨어추적매트릭스 (Software Traceability Matrix) 를사용한다. 소프트 변경후 int radar_data; radar_data = radar_input + const ; wait (1000); return radar_data; Fig. 4 Fault injection test process 72 한국자동차공학회논문집제 22 권제 3 호, 2014
ISO 26262 표준기반의소프트웨어검증을위한소프트웨어결함주입기법 Fig. 5 Software traceability matrix 웨어추적매트릭스란소프트웨어요구사항에서소프트웨어코드까지연관관계를매트릭스형태로표현한것으로써아키텍처상에서의모듈이어떤소프트웨어코드로구현되었는지확인할수있다. 따라서결함식별단계에서결함을주입하는모듈은소프트웨어추적매트릭스를사용하여어떤코드에서구현되었는지확인할수있다. 코드에결함주입은코드를변형하는뮤테이션이나제너레이션기법을사용하여식별된결함을해당모듈에삽입한다. 테스트수행은결함주입단계에서결함을주입한소프트웨어를대상으로소프트웨어기능검증에서사용하는테스트케이스를입력하여진행한다. 정상적인소프트웨어의경우에는기능검증에서사용한테스트케이스를입력하였을때는예상결과를모두만족할것이나, 결함을주입한소프트웨어의경우해당결함을처리하기위해기능검증에서예상한결과와는다르게나올수있다. 이러한결과를결과취합단계에서기록하여하나의결함주입테스트를종료한다. 이상의총 4단계를보안조치를한모든결함에대하여수행하여완료하고다음결과분석으로넘어간다. 3.5 결과분석끝으로결함주입기법을통해얻은결과를분석하는방법에대한논의가필요하다. 본논문에서는결함주입기법의대상을소프트웨어 FMEA를통해강건설계가이루어진소프트웨어모듈에한정하였다. 따라서입력되는결함역시 FMEA과정에서식 별된결함에대하여이루어졌으며검증결과는결함의처리가잘이루어져전체시스템의동작에영향이미치지않는지를판단하는방식으로이루어지면될것이다. 앞서들었던 레이더데이터보정모듈 을예로들어보면레이더입력데이터보정이불완전하게이루어지는결함에대하여보정처리된입력값의레지스터값에변형을주어결함을주입하였다. 이러한결함의가능성에대하여강건설계가제대로이루어졌다면결함의주입에대하여모니터링모듈이정상적으로작동하여결함을제거하거나데이터를다른방식으로보정하여전체시스템이정상작동해야할것이다. 따라서결함주입기법의결과는결함에의해전체시스템의안정성에문제가발생하는가의여부를살펴보면될것이다. 결함의주입과상관없이전체시스템이정상적으로작동한다면 FMEA과정을통한강건설계가제대로이루어졌음을검증할수있고만약결함주입에의하여전체시스템의안정성에문제가생겼다면원인을파악하고추가적인아키텍처설계를통해강건설계가이루어지는과정이다시수행되어야한다. 이러한과정의반복을통해좀더기능안전을만족하는시스템의구현이가능할것이다. 코드뮤테이션의경우코드변형에따른원인분석이명확하지않을수있으나본논문에서는하나의결함에대해서코드뮤테이션을수행하여테스트를수행하기때문에결함과관련된코드수정을쉽게확인할수있다. 4. 결론결함주입기법은지금까지소프트웨어테스팅을보완하는보조적인검증방법으로많은연구가이루어져왔으며결함주입이가능한인터페이스, 결함유발데이터형성방법에대하여많은논의가이루어져왔다. 하지만이제 ISO 26262 표준검증프로세스에결함주입기법이포함되며이제는필수적인테스팅기법이되고있다. 이에기존에연구된많은연구들에대하여 ISO 표준개발프로세스와접목된결함주입기법의방법론에대한정리가필요하다. Transactions of the Korean Society of Automotive Engineers, Vol. 22, No. 3, 2014 73
Sangho Lee Seunghwan Shin 본논문에서는이에 ISO 26262 표준개발프로세스항목중소프트웨어 FMEA와결합하여결함주입기법이수행되어야할대상, 결함의식별, 결함주입방법을장애허용시스템에의한강건설계가이루어진소프트웨어모듈에한정하여결함주입기법을수행하는방법론에대하여서술하였다. 이를통해검증대상과방법론을좀더명확하게확정지을수있다. 또한이러한방법은소프트웨어아키텍처에대한분석과코드단위의분석을통해결함주입기법을활용하므로화이트박스테스팅기법을바탕으로한다고할수있어기존의블랙박스테스팅기법을주로사용했던결함주입기법과의차별성을꾀하였다. 하지만아직주입된결함에대한결과에대한정확한측정방법을체계화하고명시적으로나타내는방법에대한연구는부족한듯하다. 앞으로이부분에대한활발한연구가더욱진행되어야할것이다. References 1) Mckinsey & Company, Analysis of the Global Dimensional Metrology Market in Electronic Manufacturing, http://www.mckinsey.com, 2007. 2) R. Thorhuus, Software Fault Injection Testing, M. S. Thesis, KTH, Royal Institute of Technology, Stockholm, 2000. 3) K. Kim, Y. Choi, J. Yang and S. Hong, Software Security Testing using Fault Injection, Information Security Academic Journal, National Security Research Institute, 2006. 4) S. Shin and S. Cho, Smart-car Software Engineering, Acon, 2013. 5) SAE International, SAE ARP5580: Recommended Failure Modes and Effects Analysis (FMEA) Practices for Non-automobile Applications, http://standards.sae.org/arp5580, 2001. 6) R. Rana, Improving Fault Injection in Automotive Model Based Development using Fault Bypass Modeling, Computer Science & Engineering, M. S. Thesis, Chalmers, University of Gothenburg, Gothenburg, Sweden, 2013. 7) R. Rana, Increasing Efficiency of ISO 26262 Verification and Validation by Combining Fault Injection and Mutation Testing with Model Based Development, Computer Science & Engineering, M. S. Thesis, Chalmers, University of Gothenburg, Gothenburg, Sweden, 2013. 8) Z. Hong, Integrated Analysis of Software FMEA and FTA, International Conference on Information Technology and Computer Science, Beighang Universty, Beijing, 2009. 74 한국자동차공학회논문집제 22 권제 3 호, 2014