韓國航空宇宙學會誌 359 論文 자동코드생성을이용한무인기용 OFP 의검증에관한연구 조상욱 *, 최기영 ** A Study on Validation of OFP for UAV using Auto Code Generation Sangook Cho* and Keeyoung Choi** ABSTRACT MATLAB Autocode generation is a feature that converts a block diagram model in Simulink to a c program. Utilizing this function makes MATLAB/Simulink an integrated developing environment, from controller design to implementation. It can reduce development cost and time significantly. However, this automated process requires high reliability on the software, especially the original Simulink block diagram model. And thus, the verification of the codes becomes important. In this study, a UAV flight program which is generated with Simulink is validated and modified according to DO-178B. As a result of applying the procedures, the final program not only satisfied the functional requirement but is also verified with structural point of view with Decision Coverage 93%, Condition Coverage 95% and MC/DC 90%. 초 록 자동코드생성이란 MATLAB 의 Simulink 환경에서설계한블록다이어그램을 c 코드로변환시켜주는기능으로 MATLAB 과의연동을통해소프트웨어설계부터검증까지의통합된개발환경을제공함으로서개발시간을크게줄일수있다. 하지만생성된 c 프로그램을무인기에탑재하기위해서는소프트웨어의신뢰성확보가필요하며특히원본이되는 Simulink 블록의검증이중요하다. 본연구에서는자동코드생성기능을고려하여 Simulink 환경에서구성한무인기용자동비행프로그램을 DO-178B 에명시된소프트웨어시험과정에따라검증하였다. 이과정을통해최종프로그램은기능요구사항에대한만족함을확인했을뿐아니라 Decision Coverage 93%, Condition Coverage 95% 그리고 MC/DC 90% 로구조적측면에서검증을수행했다. Key Words : Model-Based Design( 모델기반설계 ), Code Generation( 코드생성 ), Software Verification( 소프트웨어검증 ), DO-178B Ⅰ. 서론 2008 년 7 월 10 일접수 ~ 2009 년 3 월 24 일심사완료 * 정회원, 인하대학교항공우주공학과대학원 ** 정회원, 인하대학교항공우주공학과교신저자, E-mail : kchoi@inha.ac.kr 인천광역시남구용현 3 동 253 번지 MATLAB 은제어기를설계할수있는환경과시뮬레이션환경을제공함으로써선박, 자동차, 항공등여러분야에서많이사용하는개발도구중하나이다. 또한 MATLAB Simulink 환경에서
360 조상욱 최기영韓國航空宇宙學會誌 설계된제어기는자동코드생성기능을통해 c 또는 c++ 의코드로변환이가능하다. 이는 Simulink 환경에서구현한알고리즘을담당엔지니어가직접다른언어로변환하는기존의과정에비해개발시간및비용을크게줄일수있으며이미다양한분야에서사용되고있다. 코드생성도구에대한신뢰성은이미다양한시스템개발사례를통해확인할수있다. 예를들어항공분야의경우 MATLAB 의자동코드생성도구는록히드마틴에서 JSF 의비행제어시스템을설계하고개발하는과정에서사용되었으며그신뢰성을입증한바있다. 하지만코드생성기능은단순히 Simulink 블록을다른언어로바꾸어주는것일뿐이므로잘못된블록을구성했을경우생성된코드도반드시오작동을일으키게되어있다. 그러므로생성된코드를시스템에탑재하여사용하기위해서는무엇보다원본이되는 Simulink 블록에대한엄격한검증과정이필요하다. 아래그림과같이 Simulink 환경에서구현한알고리즘은 c 코드로변환하기전에시험조건 (Test Case) 을정의하여원본모델에대해충분히검증을수행한다. 검증이완료된원본모델은자동코드생성을통해 c 코드로변환하며다시이에대해앞에서정의한시험조건들을바탕으로원본블록과의동일성에대해검증한다. 그이유는사용자의 Real-Time Workshop 설정에따라최적화가이루어지기때문에생성된 c 코드의구조가 Simulink 블록과다를수도있기때문이다 [2]. 그러므로생성된코드의구조가변했을경우검증결과를바탕으로추가시험조건을정의하여원본블록과동일한수준의목표 Coverage 결과가나올때까지테스트를수행한다. 마지막으로생성된코드에대해추가로정의한시험조건들은다시원본불록에적용하여테스트결과가일치한지를확인하다. 본연구에서는 MATLAB 환경에서원본 Simulink 블록에대하여항공분야에서주로사용되는소프트웨어개발규격서 DO-178B 에근거해검증절차를적용하였다. Ⅱ. 본론 2.1 소프트웨어신뢰성과규격서 소프트웨어의신뢰성확보는소프트웨어의품질을기반으로하는것이며이를위해서는규정된개발절차를따르는것이중요하다. 즉소프트웨어신뢰성의특성을파악하고개발하고자하는분야에적합한규격및절차를따랐을때소프트웨어를사용하기위한최소한의신뢰성을확보했다고할수있다. 그러므로소프트웨어시험을수행하기위해서는해당소프트웨어가사용될분야및환경을고려하여테스트방법을결정해야한다. 이러한환경또는목적을만족하기위하여각분야별소프트웨어규격서가존재한다. 예를들어자동차산업의경우 MISRA 가있으며철도분야에는 EN 50126 이있다 [3]. 본연구는방산및항공분야에서사용되는 RTCA DO-178B[4] 를바탕으로하였다. DO-178, Software Considerations in Airborne Systems and Equipment Certification[4] 은 RTCA 에서항공기탑재부품및시스템의소프트웨어개발을위해만든규격서로감항 (Airworthiness) 요구조건의만족을목표로하고있다. 본연구에서는검증절차에대해서술한 6 장소프트웨어검증에대한내용을바탕으로하였다. 그림 2. DO-178B 의구성 [4] 2.2 소프트웨어레벨정의 그림 1. 생성된코드의검증과정 [1] 소프트웨어내의오류는시스템의고장상태를유발할수있으며이러한고장상태의위험정도에따라소프트웨어의레벨이결정된다.
第 37 卷第 4 號, 2009. 4 자동코드생성을이용한무인기용 OFP 의검증에관한연구 361 표 1. 소프트웨어레벨에따른 Coverage Level Software Level Structural Coverage Level A M C/DC, DC & SC Level B DC & SC Level C SC Level D N ot Requi red Level E N ot Requi red 다음은 DO-178B 에서명시한소프트웨어의고장상태의종류및정의이다. Catastrophic Failure Condition 안전한비행이나이착륙을수행할수없는고장상태로이것을일으킬수있는소프트웨어는 Level A 로분류된다. Hazardous/Severe-Major Failure Condition 시스템의고장에대처하기위하여항공기의능력또는승무원의능력이상당히감소되며잠재적으로는심각한손상을일으킬수있는고장상태로이것을일으킬수있는소프트웨어는 Level B 로분류된다. Major Failure Condition 시스템의고장에대처하기위하여항공기의능력또는승무원의능력이상당히감소되며안전성여유및기능이상당히줄어든고장상태로이것을일으킬수있는소프트웨어는 Level C 로분류된다. Minor Failure Condition 항공기의안전성은크게줄어들지않지만이를대처하기위하여주어진범위내에서승무원의능력수행이필요한고장상태로이것을일으킬수있는소프트웨어는 Level D 로분류된다. No Effect Failure Condition 항공기의동작능력이나승무원의업무부담이발생하지않는고장상태로이것을일으킬수있는소프트웨어는 Level E 로분류된다. 각각의고장상태의위험도에따라해당소프트웨어의레벨이결정이되며각소프트웨어레벨에따라표 1 에서명시한종류의 Coverage 를만족해야한다. 위의표에서 SC 는 Statement Coverage 를 DC 는 Decision Coverage 를그리고 MC/DC 는 Modified Condition/Decision Coverage 를의미한다. 것으로이들은시험을하기전에수행된다. 이때검토와분석이수행되는대상은다음과같다. 상위, 하위레벨요구사항 소프트웨어구조 소스코드 통합과정에서의결과 시험조건 (Test Case), 절차및결과소프트웨어시험과정 (Software Testing Process) 을수행하기위해서는우선시험조건 (Test Case) 을정의해야한다. 시험조건은시험대상에대한입력, 실행조건그리고예상되는결과로구성되어있으며이는우선적으로소프트웨어요구사항 (Software Requirement) 을기반으로만들어져야한다. 시험조건을만드는목적은대상의정확한작동을검증하고잠재적으로발생할수있는오류를찾아내기위함이다. 그림 3은 DO-178B에명시된소프트웨어시험과정이다. 처음수행할시험은하위레벨시험 (Low-Level Testing) 으로이과정에서는하위레벨요구사항 (Low-Level Requirements) 이소스코드로정확히구현되었는지를확인한다. 다음으로는소프트웨어통합시험 (Software Integration Testing) 을수행하며소프트웨어요구사항과구성요소간의상관관계를확인하고이들간의명시된사항들에대한구현을확인하다. 마지막으로하드웨어 / 소프트웨어통합시험 (Hardware/ Software Integration Testing) 을수행하며소프트웨어가대상하드웨어환경에서정확히동작하는가를확인한다. 각각의시험대상에대하여수행할시험항목중첫번째는기능검증을의미하는 Software Requirement Coverage Analysis로앞서정의한기능요구사항에대한만족여부를확인한다. 이때시험의입력범위는정상범위시험조건 2.3 소프트웨어시험과정 검증 (Verify) 은시험 (Test), 분석 (Analysis) 그리고검토 (Review) 로이루어져있다. 분석은소프트웨어가옳다는증거를제시하는과정이며검토는옳다는것에대하여정성적인자료를만드는 그림 3. 소프트웨어시험과정 [3]
362 조상욱 최기영韓國航空宇宙學會誌 (Normal Range Test Case) 과강건성시험조건 (Robustness Test Case) 을모두적용한다. 기능검증을마친소프트웨어는 Software Structure Coverage Analysis 를수행하며이는구조적관점에서의시험을뜻한다. 구조적시험의목적은소프트웨어내에서수행되지않는데드코드 (Dead Code) 를찾아내는것이며소프트웨어의레벨에따라지정된종류의 Coverage 를만족시켜야한다. 2.4 Coverage 의종류및특징 소프트웨어구조적시험의최종목적은소프트웨어의구조를파악하여내부의모든구문이정상적으로수행하는지를확인하고실행되지않는구문을찾아내이를제거하는것이다. 하지만시험결과를판단하기위해서는수치적인지표가필요하다. 구조적시험에대해 DO-178B 에명시된 Coverage 의종류는다음과같다. 1) Statement Coverage SC(Statement Coverage) 는코드내에서각각의라인이실행되었는가를측정하며 Line Coverage 또는 Segment Coverage 라불리기도한다. 이는소스코드에별다른과정없이오브젝트코드에도적용시킬수있다는장점을가지고있으나특정한제어구조에대해서는반응하지않는다. 이를 100% 만족했다는것은프로그램내의모든코드가실행되었음을의미한다. 2) Decision Coverage DC(Decision Coverage) 는논리구문내의논리연산자에관계없이전체조건문이참과거짓을모두수행했는지를측정하며 Branch Coverage 라고도불린다. 이는 Statement Coverage 보다엄격한시험을수행할수있으며단순하다는이점을가지지만조건문내에서 && 와 등의 Short-circuit Operator 에의해발생하는분기를무시한다. 이를 100% 만족했다는것은프로그램내의각조건문들에대하여참과거짓인경우가모두실행되었음을의미한다. 3) MC/DC MC/DC(Modified Condition/Decision Coverage) 는각개별조건이다른개별조건에의해영향을받지않고조건문결과에독립적으로영향을미치는지를확인하며 DO-178B Level A의소프트웨어는이를반드시확인해야한다. MC/DC 의결정테이블을만들기위한접근방법은아래와같다. 표 2. Coverage 의예문 if (A & B) (C & D) statement1; els e statement2; 표 3. M C/ DC 를만족하기위한조건 Con d i ti on True Out Fals e Out Condi tion A TTTF FTTF Condi tion B TTTF TFTF Condi tion C FTTT FTFT Condition D FTTT FTTF 프로그램에있는모든결정포인트내의조건문은적어도한번이상가능한모든결과 ( 참, 거짓 ) 에대하여수행되어야한다. 프로그램에있는결정포인트내의모든개별조건들은적어도한번이상가능한결과 ( 참, 거짓 ) 에대하여수행되어야한다. 결정포인트에있는각각의개별조건들은다른개별조건에영향을받지않고그결정포인트의결과에독립적으로영향을주어야한다. 표 2 에서조건문내의개별조건은 A, B, C, D 총 4 개로구성되어있다. 그러므로 MC/DC 를 100% 만족하기위해서는최소한표 3 의조건들에대하여시험을수행해야한다. 표 3 에서 T 는 True 를 F 는 False 를의미한다. Condition A 를보면 B, C 그리고 D 의상태를각각 T, T, F 로고정시킨채, A 의상태를 T 그리고 F 로변화시켜가면서 A 가전체조건문에대하여정상적으로영향을미칠수있는지에대하여확인한다. 이때표 3 의 Condition A 에명시된조건들은 A 의영향을확인할수있는경우의수중하나이며, 이외에도 TTFF & FTFF, TTFT & TFFT 등의경우도 A 에대한시험조건으로동일하게사용할수있다. MC/DM 를 100% 만족했다는것은프로그램내의모든개별조건들이각조건문에대해정상적으로영향을미쳤음을의미한다. 2.5 무인기용 OFP 검증 본연구에서는 Simulink 환경에서구현한무인기용자동비행알고리즘블록에대하여각구성요소들의단위시험과소프트웨어통합시험을
第 37 卷第 4 號, 2009. 4 자동코드생성을이용한무인기용 OFP 의검증에관한연구 363 모두수행하였으며, 다음은통합시험중고도제어블록에대하여시험한예이다. DO-178B 에명시된시험과정중 Requirement Coverage Analysis 는시험담당자가기능요구사항을바탕으로검증을수행하였으며 Structure Coverage Analysis 는 Simulink 에서지원하는 Model Coverage Tool[5] 을사용하여 Decision Coverage, MC/DC 를산출하였다. 다음그림은검증을위해사용한 Model Coverage 의설정을나타낸것이다. 본연구에서는 DO-178B 에서만족하도록명시된 Decision Coverage 와 MC/DC 와함께추가자료로 Condition Coverage 를측정하도록설정하였다. Condition Coverage 란조건문내의각각개별조건에대하여참과거짓이모두수행되었는지를측정하는지표이다. 또한위의설정을통해시뮬레이션을수행한결과는 HTML 형식의보고서로확인할수있다. 비록대상프로그램에서정의한소프트웨어레벨에대하여 DO-178B 에서는 Statement Coverage 를만족해야한다고명시되어있지만 Simulink 의특성상대상소프트웨어는코드가아닌블록과신호선들로구성되어있기때문에 Statement Coverage 가존재하지않는다. 그러므로 Simulink 환경에서의검증에서는 Decision Coverage 와 MC/DC 만을확인하였으며 그림 4. M od el Coverage 설정 [7] Statement Coverage 는위의 Coverage 결과들을바탕으로각블록의실행여부를통해서예측하였다. 다음은시험과정을정리한것이다 [6]. 1 대상프로그램에대하여분석 (Analysis) 및검토 (Review) 를수행한다. 2 기능요구사항을바탕으로시험조건 (Test Case) 을정의하여 Requirement Coverage Analysis 를수행한다. 3 프로그램을실행하는동안내부의수행경로를분석한후이를통해 Decision Coverage 와 MC/DC 를산출한다. 4 산출된 Coverage 를바탕으로이를증가시킬수있는시험조건을추가로정의한다. 5 추가된시험조건들을수행하여 3 과동일한방법으로 Coverage 를산출한다. 6 목표한 Coverage 를만족할때까지 4 와 5 의과정을반복한다. 무인기의자동비행알고리즘의경우소프트웨어의오작동이사고를의미하므로본연구에서는대상소프트웨어의레벨을 A 로정의하였으며 DO-178B 에명시된 DC, MC/DC 가 90% 이상만족하는것을목표로하였다. 1) 기능요구사항검증기능요구사항검증에서는정의된기능요구사항항목들을바탕으로명시된기능의수행여부를확인하기위해총 21 개의시험조건을정의하였으며표 4 는전체블록중고도제어블록의검증을위해사용한시험조건중하나이다. 아래그림은위의시험조건을바탕으로시뮬레이션을수행한항공기의고도와방위각을나타낸것이다. 그림 6 을보면 300m 의고도명령에대하여항공기가약 8m 의오차를가지고있으며이때항공기의방위각은명령값인 180 에서최대 3 의오차를가지고추종하고있어프로그램개발시자체적으로정의한기능요구사항의만족함을확인하였다. 2) Structure Coverage 검증표 4 에대해시뮬레이션을수행한 Model Coverage 결과, 고도제어블록에대하여 DC 가 50%(3/6) 로측정되었다. 이는전체블록중에고도제어블록에대한 Decision 의수는총 6 개이며이중위의설정으로시뮬레이션을수행하는동안 3 개의경우만수행되었음을의미한다. 표 4. 시험조건 1 의시뮬레이션설정 그림 5. 시험조건에대한 M od el Coverage 결과 비행명령 : 고도제어모드고도명령 : 300m 초기방위각 : 180 초기고도 : 213m 기타항공기의자세및각속도는 0 으로설정
364 조상욱 최기영韓國航空宇宙學會誌 그림 9. If block "If1" 의 Deci si on Coverage 결과 그림 10. 고도제어블록의하위블록 : If block "If" 그림 6. 시험조건 1 의시뮬레이션결과 그림 11. If block "If" 의 Deci si on Coverage 결과 그림 7. 고도제어블록의 M od el Coverage 결과 그림 8. 고도제어블록의하위블록 : If block "If1" 그림 8 은고도제어블록에포함된조건문중하나로방위각명령과현재항공기의방위각의차이값을 -180 ~180 의범위로만들어주는부분이다. 그림 9 에서볼수있듯이시뮬레이션동안 if 블록은거짓의경우만수행되어이조건문에대한 Decision Coverage 결과는 50% 로계산되었다. 그림 10 은고도제어블록에포함된다른조건문으로 if 와 elseif 로구성되어있다. 이들 if 와 elseif 에대하여각각참과거짓에대해총 4 가지의 Decision 이존재하며이에대한 Model Coverage 결과는그림 11 과같다. 이를보면시뮬레이션을수행하면서 if 와 elseif 모두참인경우만이수행되어이조건문에대한 Decision Coverage 는 50% 로계산되었다. 그러므로고도제어블록에대한 Coverage 를높이기위해서는 Model Coverage 결과를바탕으로이전시뮬레이션에서수행하지않은조건문들이참과거짓인경우가모두수행될수있도록추가적인시험조건을정의해야한다. 다음표는이러한정보를바탕으로정의한추가시험조건들이다. 표 5. 시험조건 2 의시뮬레이션설정 비행명령 : 고도제어모드고도명령 : 300m 초기방위각 : 2 초기고도 : 213m 기타항공기의자세및각속도는 0 으로설정
第 37 卷第 4 號, 2009. 4 자동코드생성을이용한무인기용 OFP 의검증에관한연구 365 표 6. 시험조건 3 의시뮬레이션설정 비행명령 : 고도제어모드고도명령 : 300m 초기방위각 : 359 초기고도 : 213m 기타항공기의자세및각속도는 0 으로설정 그림 12. 시험조건 2 에대한 If block "If" 의 Deci s i on Coverage 결과 시험조건 2 의경우그림 10 에서 Psi_cmd 의값이 0 으로설정되어있을때, 초기에 if 블록으로들어가는입력이 2 이므로그림 11 의 Input 2 "elseif condition 이참이된다. 그림 12 는이에대한 Coverage 결과이다. 이를보면추가로정의한시험조건이예상한경로를수행하여 Decision Coverage 가증가했음을볼수있다. 동일한방법으로시험조건 3 을정의하였으며이는그림 12 에서수행되지못한경로를수행하기위한조건이다. 그림 10 의 Psi_cmd 의값이 0 으로설정되었을때 if 블록으로들어가는입력이 -359 이므로그림 12 의 Input 1 "if condition 이참이된다. 다음그림은시험조건 3 을추가했을때의 Coverage 결과이다. 하지만고도제어블록의검증을수행하는과정에서그림 8 의조건문블록은어떠한경우라도참을수행하는조건이존재하지않았으며원인분석결과고도제어블록이전에신호처리를하는부분에서이와동일한기능이이미있었기때문으로밝혀졌다. 그러므로이조건문블록은데드코드 (Dead Code) 로판단되어제거하였다. 고도제어블록에대한검증과정을전체블록에대해수행한결과 Coverage 를 90% 이상만족시킬수있는최종시험조건은총 41 개로이들에대해시뮬레이션을수행했을때 DC 93%, MC/DC 90% 의결과를얻었다. 이는기능요구사항에대해서만검증을수행했던이전검증방법의 Coverage 결과인 DC 80%, MC/DC 50% 보다높은수치로대상프로그램의분기및내부코드들이더많은영역에대하여정상적으로수행되었음을의미한다. 위의결과에서검증되지않은분기들은 Rate limit', 'Saturate' 블록내의조건문등으로위와같은통합시험을이용하여이를만족하기는어렵기때문에단위시험을통하여추가로확인하였다. Ⅲ. 결론 본연구에서는 MATLAB 의 Simulink 환경에서무인기용자동비행프로그램을구성하고이를 DO-178B 에명시된내용을바탕으로검증을수행하였다. 이때기능요구사항에대한검증뿐만아니라구조에대한검증을수행하였으며각각의시험조건에대하여정의한요구사항들을만족함을확인하였다. 이를통해기존의테스터에의지한시험과정과는달리체계화된시험방법을정립할수있었으며시험결과 Decision Coverage 93%, Condition Coverage 95%, MC/DC 90% 로측정되었다. 또한만족하지못한 Coverage 들은추가로단위시험을통해검증하였다. 이러한절차를바탕으로기능검증만을확인했던이전검증방법보다더높은신뢰성을갖는블록을구성할수있었다. 위의검증과정을수행한블록은그신뢰성이확보되었기때문에자동코드생성을통해 c 코드로변환할수있다. 추후로는그림 1 에명시한절차와같이변환된코드에대해서도검증을수행할예정이다. 후 기 그림 13. 시험조건 3 에대한 If block "If" 의 Deci s i on Coverage 결과 이논문은인하대학교의지원으로연구된결과입니다.
366 조상욱 최기영韓國航空宇宙學會誌 참고문헌 1) William Aldrich, "Using Model Coverage Analysis to Improve the Controls Development Process", AIAA Modeling and Simulation Technologies Conference and Exhibit, 2002. 8. 2) The Mathworks, "Real-Time Workshop User's Guide", The Mathworks Inc., 2005. 3) 장수주, 소프트웨어신뢰도및테스팅, 소프트웨어분석및테스팅교육, 2007. 10. 4) RTCA Inc., "Software Considerations Airborne Systems and Equipment Certification", Document RTCA/DO-178B, December 1992. 5) The Mathworks, "Simulink Verification and Validation 2 User's Guide", The Mathworks Inc., 2007. 6) Andre. C. Coulter, "Graybox Software Testing Methodology Embedded Software Testing Technique", IEEE Digital Avionics Systems Conference, 1999. 10. 7) 김영일외 3 인, 항공전자시스템컴퓨터탑재소프트웨어개발, 한국항공우주학회지, 제 33 권 9 호, 2005, pp. 104~112. 8) http://www.mathworks.co.kr