KR20190083512A - Apparatus and method for software validation - Google Patents

Apparatus and method for software validation Download PDF

Info

Publication number
KR20190083512A
KR20190083512A KR1020180001251A KR20180001251A KR20190083512A KR 20190083512 A KR20190083512 A KR 20190083512A KR 1020180001251 A KR1020180001251 A KR 1020180001251A KR 20180001251 A KR20180001251 A KR 20180001251A KR 20190083512 A KR20190083512 A KR 20190083512A
Authority
KR
South Korea
Prior art keywords
software
target
target software
output
verification
Prior art date
Application number
KR1020180001251A
Other languages
Korean (ko)
Other versions
KR102128004B1 (en
Inventor
황근철
유찬우
김정훈
이동훈
Original Assignee
국방과학연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 국방과학연구소 filed Critical 국방과학연구소
Priority to KR1020180001251A priority Critical patent/KR102128004B1/en
Publication of KR20190083512A publication Critical patent/KR20190083512A/en
Application granted granted Critical
Publication of KR102128004B1 publication Critical patent/KR102128004B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Abstract

According to one embodiment of the present invention, provided is a method for verifying software, which comprises the following steps: analyzing components of an actual system to which target software to be verified is applied and a connection interface between the components; constructing a verification system including each virtual component in one-to-one correspondence with each component of the actual system, and each virtual interface in one-to-one correspondence with each interface of the actual system based on the analysis result; and coupling the target software to a target component set as a component to be operated by the target software among the virtual components.

Description

소프트웨어 검증 장치 및 방법 {APPARATUS AND METHOD FOR SOFTWARE VALIDATION}[0001] APPARATUS AND METHOD FOR SOFTWARE VALIDATION [0002]

본 발명은 소프트웨어에 대한 효과적인 검증을 수행하기 위한 방법과, 상기 방법을 수행하는 장치에 관한 것이다.The present invention relates to a method for performing an effective verification of software and an apparatus for performing the method.

오늘날 내장형 시스템은 자동차, 휴대폰 등에 널리 적용되어 제품의 성능을 향상시키는 한편 새로운 기능의 창출 역시 수행하고 있다. 이와 같은 내장형 시스템의 원활한 동작 및 신뢰성 향상을 위해서, 내장형 시스템에 적용될 소프트웨어에 대한 검증 절차는 필수적이라고 할 수 있다.Today, embedded systems are widely applied to automobiles, mobile phones, etc. to improve performance and create new functions. In order to improve the smooth operation and reliability of the embedded system, it is essential to verify the software to be applied to the embedded system.

하지만 현재의 소프트웨어 검증 방법에는 여러 가지 문제점이 내포되어 있다. 구체적으로, 기존의 검증 방법에 의하면, 소프트웨어 검증 시 검증 대상이 되는 소프트웨어 코드에 대한 수정이 필요할 수 있다. 즉, 개발자가 설계한 검증 대상 소프트웨어 코드 외에도 테스트에 필요한 부가적인 테스트 코드들이 상기 소프트웨어 코드 내에 삽입되어야 하므로, 이에 따른 시간과 노력이 소요될 수 있다.However, current software verification methods have several problems. Specifically, according to the existing verification method, it may be necessary to modify the software code to be verified during software verification. That is, in addition to the verification target software code designed by the developer, additional test codes necessary for the test are inserted into the software code, so that it may take time and effort accordingly.

또한, 검증 대상 소프트웨어가 적용될 시스템의 구조 및 인터페이스가 복잡해질수록, 시스템의 각 구성 요소에 적용될 소프트웨어 코드 간의 연결 문제가 중요해진다. 따라서, 하나의 검증 대상 소프트웨어 코드를 검증하기 위해서는 다른 대상 코드와의 상호 작용을 고려하여 검증 시스템을 개발하여야 한다. 이에 따르면, 시스템의 복잡도가 증가할수록 검증이 어려워지는 문제점이 발생하게 된다.Further, as the structure and interface of the system to which the verification target software is to be applied become complicated, the problem of connection between the software codes to be applied to each component of the system becomes important. Therefore, in order to verify one verification target software code, a verification system should be developed considering interaction with other target codes. According to this, as the complexity of the system increases, verification becomes difficult.

한국공개특허공보, 10-2009-0065144 (2009.06.22. 공개)Korean Patent Publication No. 10-2009-0065144 (published on June 22, 2009)

본 발명이 해결하고자 하는 과제는, 전술한 종래의 소프트웨어 검증 방법의 문제점을 극복하고, 보다 효과적인 소프트웨어 검증을 수행하기 위한 방법과, 상기 방법을 수행하기 위한 장치를 제공하는 것이다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a method for overcoming the problems of the conventional software verification method described above and performing more effective software verification and an apparatus for performing the method.

다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.It is to be understood, however, that the present invention is not limited to the above-mentioned embodiments, but other and further objects which need not be mentioned can be clearly understood by those skilled in the art from the following description will be.

본 발명의 일 실시예에 따른 소프트웨어 검증 방법은, 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 단계, 상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 단계 및 상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 단계를 포함할 수 있다.A software verification method according to an embodiment of the present invention includes analyzing a component of an actual system to which a target software to be verified is applied and a connection interface between the components, Comprising the steps of: constructing a verification system including each virtual component corresponding one-to-one with each component of the system and each virtual interface corresponding one-to-one with each interface of the real system; And combining the target software with a target component configured as a target component.

또한, 상기 구축하는 단계는, 상기 각 가상 구성 요소가 상기 가상 인터페이스를 통해 입력받는 입력 데이터와, 상기 가상 인터페이스를 통해 출력하는 출력 데이터의 종류를 정의하는 단계를 포함할 수 있다.The building step may include defining input data received by the virtual component through the virtual interface and output data output through the virtual interface.

또한, 상기 결합하는 단계는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결하는 단계를 포함할 수 있다.The combining step may include connecting an input variable of the target software code to the input variable of the target component and connecting an output variable of the target software code to the output variable of the target component can do.

또한, 상기 결합하는 단계는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며, 상기 방법은, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함할 수 있다.In addition, the combining step may include setting a paging cycle of the target software, wherein the target software uses an input value input through an input variable of the target software at each paging cycle And outputting an output value according to an operation result of the target software through an output variable of the target software.

또한, 상기 방법은, 기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함할 수 있다.When the predetermined event is input through the input parameter of the target component, the target software performs a predetermined process on the operation result of the target software using the input value input through the input variable of the target software And outputting the output value according to the output variable of the target software.

또한, 상기 결합하는 단계는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시키는 단계를 포함할 수 있다.In addition, the combining may comprise combining corresponding software, for each of the virtual components other than the target component, included in the verification system.

또한, 상기 방법은, 상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 단계를 더 포함할 수 있다.The method may further include generating a verification result for the target software based on an output value output by an output variable of the target software when the target software is operated.

본 발명의 일 실시예에 따른 소프트웨어 검증 장치는, 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 시스템 분석부, 상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 검증 시스템 생성부 및 상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 소프트웨어 결합부를 포함할 수 있다.A software verification apparatus according to an embodiment of the present invention includes a system analysis unit for analyzing a component of an actual system to which target software to be verified is applied and a connection interface between the components, A verification system generation unit for constructing a verification system including each virtual component corresponding one-to-one with each component of the real system and each virtual interface corresponding one-to-one with each interface of the real system, And a software coupling unit for coupling the target software to a target component that is set as a component to be operated by the target software.

또한, 상기 검증 시스템 생성부는, 상기 각 가상 구성 요소가 상기 가상 인터페이스를 통해 입력받는 입력 데이터와, 상기 가상 인터페이스를 통해 출력하는 출력 데이터의 종류를 정의할 수 있다.The verification system generation unit may define input data received by the virtual component through the virtual interface and output data output through the virtual interface.

또한, 상기 소프트웨어 결합부는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결할 수 있다.The software combination unit may connect an input variable of the target software code to an input variable of the target component and an output variable of the target software code to an output variable of the target component.

또한, 상기 소프트웨어 결합부는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며, 상기 장치는, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함할 수 있다.In addition, the software combining unit may include setting a paging cycle of the target software, and the apparatus may further include, at each paging cycle, the target software, using input values input through input parameters of the target software, And outputting an output value according to an operation result of the target software through an output variable of the target software.

또한, 상기 장치는, 상기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함할 수 있다.In addition, when the predetermined event is input through the input parameter of the target component, the target software may use the input value input through the input parameter of the target software, And outputting the output value according to the output variable of the target software.

또한, 상기 소프트웨어 결합부는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시킬 수 있다.The software combining unit may combine software corresponding to each of the virtual components other than the target component included in the verification system.

또한, 상기 장치는, 상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 제어부를 더 포함할 수 있다.The apparatus may further include a control unit for generating a verification result for the target software based on an output value output by the output variable of the target software when the target software is operated.

본 발명의 일 실시예에 따르면, 검증 대상이 되는 소프트웨어 코드와, 상기 소프트웨어 코드를 검증하기 위한 가상 시스템을 나타내는 테스트 코드를 완전히 분리함으로써, 종래 기술의 문제점을 해결할 수 있다. 구체적으로, 본 발명의 일 실시예에 의하면, 검증 대상 소프트웨어가 적용될 실제 시스템의 구성 요소 및 인터페이스와 각각 일대일 매칭되는 가상 구성 요소 및 가상 인터페이스를 갖는 검증 시스템을 구축하고, 상기 검증 시스템에 검증 대상 소프트웨어를 결합하여 구동시킬 수 있다. According to an embodiment of the present invention, the problem of the prior art can be solved by completely separating the software code to be verified and the test code representing the virtual system for verifying the software code. Specifically, according to an embodiment of the present invention, a verification system having a virtual component and a virtual interface that are each one-to-one matched with components and interfaces of an actual system to be verified software is constructed, Can be combined and driven.

이에 따라, 검증 대상인 소프트웨어 코드 내부를 수정하는 복잡한 절차가 방지될 수 있으며, 복잡한 구조를 갖는 실제 시스템에 적용될 소프트웨어도 효과적으로 검증할 수 있게 되는 효과를 가질 수 있다.Thus, complicated procedures for modifying the software code to be verified can be prevented, and software to be applied to an actual system having a complicated structure can be effectively verified.

도 1은 본 발명의 일 실시예에 따른 소프트웨어 검증 장치의 구성에 대해 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 각 단계를 도시한 도면이다.
도 3a 및 3b는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 적용 예시에 대해 설명하기 위한 도면이다.
1 is a diagram for explaining a configuration of a software verifying apparatus according to an embodiment of the present invention.
FIG. 2 is a diagram illustrating steps of a software verification method according to an exemplary embodiment of the present invention. Referring to FIG.
3A and 3B are diagrams for explaining application examples of a software verification method according to an embodiment of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. To fully disclose the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims.

본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions in the embodiments of the present invention, which may vary depending on the intention of the user, the intention or the custom of the operator. Therefore, the definition should be based on the contents throughout this specification.

한편, 본 발명의 일 실시예에서 제시하는 방법은 적어도 일부의 소프트웨어와 하드웨어의 하이브리드 구현 방식으로, 프로세서 및 프로세서에 의해 실행되는 명령어들을 저장하는 메모리를 포함하는 전자 디바이스 또는 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성되는 프로그래밍 가능한 머신(machine)상에서 구현될 수 있다. On the other hand, a method proposed in an embodiment of the present invention is a hybrid implementation of at least some software and hardware, selectively activated by an electronic device or a computer program comprising a processor and a memory storing instructions executed by the processor Or reconfigured on a programmable machine.

또한, 본 발명의 일 실시예에서 제시하는 특징들 및/또는 기능성들 중 적어도 일부는 최종 사용자 컴퓨터 시스템, 컴퓨터, 네트워크 서버 또는 서버 시스템, 모바일 컴퓨팅 디바이스(예를 들어, PDA(personal digitalassistant), 모바일 전화기, 스마트폰, 랩탑, 태블릿 컴퓨터 또는 그와 유사한 것), 소비자 전자 디바이스, 또는 임의의 다른 적합한 전자 디바이스 또는 그들의 임의의 조합과 같은 하나 이상의 범용 네트워크 호스트 머신에서 등에서 구현될 수 있다.Also, at least some of the features and / or functionality presented in an embodiment of the present invention may be implemented in an end user computer system, a computer, a network server or server system, a mobile computing device (e.g., a personal digital assistant (PDA) At one or more general purpose network host machines, such as a cellular telephone, a smart phone, a laptop, a tablet computer, or the like), a consumer electronic device, or any other suitable electronic device or any combination thereof.

또한, 적어도 일부 실시예들에서, 여기에 개시된 개념 계층 구조를 생성하는 방법의 실시예의 특징들 및/또는 기능성들의 적어도 일부는 하나 이상의 가상화된 컴퓨팅 환경(예를 들어 네트워크 컴퓨팅 클라우드 또는 그와 유사한 것)에서 구현될 수 있다.Also, in at least some embodiments, at least some of the features and / or functionality of an embodiment of a method for generating a concept hierarchy disclosed herein may be implemented in one or more virtualized computing environments (e.g., a network computing cloud or the like ). ≪ / RTI >

도 1은 본 발명의 일 실시예에 따른 소프트웨어 검증 장치의 구성에 대해 설명하기 위한 도면이다. 도 1의 소프트웨어 검증 장치(100)는 시스템 분석부(110), 검증 시스템 생성부(120), 소프트웨어 결합부(130) 및 제어부(140)를 포함할 수 있다. 다만 도 1의 소프트웨어 검증 장치(100)의 구성 요소는 본 발명의 일 실시예에 불과하므로, 도 1에 의해 본 발명의 기술적 사상이 한정 해석되는 것은 아니다. 1 is a diagram for explaining a configuration of a software verifying apparatus according to an embodiment of the present invention. The software verification apparatus 100 of FIG. 1 may include a system analysis unit 110, a verification system generation unit 120, a software combination unit 130, and a control unit 140. However, the components of the software verification apparatus 100 of FIG. 1 are only one embodiment of the present invention, and therefore the technical idea of the present invention is not limited to FIG.

이하에서 설명할 소프트웨어 검증 장치(100)의 각 구성 요소들은 마이크로프로세서(microprocessor)와 같은 연산 장치를 포함하여 구현될 수 있으며, 경우에 따라서는 데이터의 송신 및 수신을 위한 유/무선 통신 모듈 혹은 입/출력 버스 등을 더 포함할 수 있다. 또한, 아래에서는 소프트웨어 검증 장치(100)의 각 구성 요소의 동작을 개략적으로 설명할 것이며, 동작의 구체적인 사항에 대해서는 이후에 보다 자세히 설명하도록 한다.Each component of the software verification apparatus 100 to be described below may be implemented by including a computing device such as a microprocessor, and may be a wired / wireless communication module for inputting / / Output bus, and the like. Hereinafter, the operation of each component of the software verification apparatus 100 will be schematically described, and details of the operation will be described in detail later.

시스템 분석부(110)는 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템에 대한 분석을 수행할 수 있다. 이와 같은 실제 시스템은, 이하에서 설명될 자동차 자율주행 시스템이나, 다양한 모바일 시스템, 로봇 시스템 등이 될 수 있다. 구체적으로, 시스템 분석부(110)는 상기 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석할 수 있다.The system analysis unit 110 can analyze the actual system to which the target software to be verified is to be applied. Such an actual system may be an automobile autonomous driving system described below, various mobile systems, a robotic system, and the like. Specifically, the system analysis unit 110 can analyze the components of the actual system and the connection interfaces between the components.

검증 시스템 생성부(120)는 검증 시스템에 대한 시스템 분석부(110)의 상기 분석 결과에 기초하여, 검증 대상 소프트웨어를 테스트하기 위한 검증 시스템의 구축을 수행할 수 있다. 구체적으로, 검증 시스템 생성부(120)는 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하도록 검증 시스템을 구축할 수 있다. 즉, 이와 같은 검증 시스템은 상기 실제 시스템의 구조를 모사한 가상 시스템이라고 할 수 있다.The verification system generation unit 120 may perform construction of a verification system for testing the verification target software based on the analysis result of the system analysis unit 110 for the verification system. Specifically, the verification system generation unit 120 may construct the verification system so that each of the virtual components corresponding to each component of the actual system and each virtual interface corresponding to each interface of the actual system includes one-to-one correspondence. That is, such a verification system is a virtual system that simulates the structure of the actual system.

소프트웨어 결합부(130)는 검증 대상 소프트웨어를, 검증 시스템의 대상 구성 요소에 결합시킬 수 있다. 이와 같이 대상 소프트웨어가 결합될 대상 구성 요소는, 실제 시스템의 구성 요소 중 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 구성 요소에 대응되는 검증 시스템의 가상 구성 요소일 수 있다. 이와 함께, 소프트웨어 결합부(130)는 경우에 따라서는 검증 대상 소프트웨어가 동작시킬 구성 요소 외의 다른 구성 요소에 대응되는 가상 구성 요소에 대해서도 필요한 소프트웨어를 결합시킬 수 있다.The software combining unit 130 may combine the software to be verified with the target component of the verification system. Thus, the target component to which the target software is to be coupled may be a virtual component of the verification system corresponding to a component of the actual system that is set as a component to be operated by the target software. At the same time, the software combining unit 130 may combine necessary software with virtual components corresponding to other components other than the component to be operated by the verification target software, as the case may be.

제어부(140)는 검증 대상 소프트웨어를 동작시킴으로써, 검증 대상 소프트웨어에 대한 검증 결과를 도출할 수 있다. 이와 같은 검증 대상 소프트웨어의 동작 시에는, 상기 대상 소프트웨어만을 동작시키는 것도 가능하겠지만, 대상 소프트웨어 외에도 상기 검증 시스템의 각 가상 구성 요소에 결합된 다른 소프트웨어를 함께 동작시킴으로써, 전체 검증 시스템에 대한 동작을 수행하는 것 역시 가능할 것이다.The control unit 140 can derive the verification result for the verification target software by operating the verification target software. In operation of such verification target software, it is also possible to operate only the target software, but by operating other software coupled to each virtual component of the verification system in addition to the target software, Things will also be possible.

도 2는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 각 단계를 도시한 도면이다. 도 2의 방법은 도 1을 참조하여 설명한 소프트웨어 검증 장치(100)에 의해 수행될 수 있으며, 도 1과 겹치는 부분에 대해서는 설명이 생략될 수 있다. 단, 도 2에 도시된 방법은 본 발명의 일 실시예에 불과하므로 도 2에 의해 본 발명의 사상이 한정 해석되는 것은 아니며, 도 2에 도시된 방법의 각 단계는 경우에 따라 도면에 제시된 바와 그 순서를 달리하여 수행될 수도 있음은 물론이다.FIG. 2 is a diagram illustrating steps of a software verification method according to an exemplary embodiment of the present invention. Referring to FIG. The method of FIG. 2 can be performed by the software verification apparatus 100 described with reference to FIG. 1, and the description of the portions overlapping with FIG. 1 can be omitted. However, since the method shown in FIG. 2 is only one embodiment of the present invention, the concept of the present invention is not limited to FIG. 2, and each step of the method shown in FIG. But may be performed in different orders.

우선, 시스템 분석부(110)가 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석을 수행할 수 있다(S110). 다음으로, 시스템 분석부(110)에 의해 수행된 전술한 분석 결과에 기초하여, 검증 시스템 생성부(120)가 가상 구성 요소 및 가상 인터페이스를 포함하는 검증 시스템을 구축할 수 있다(S120). First, the system analysis unit 110 may analyze an actual system component to which target software to be verified is applied, and a connection interface between the components (S110). Next, based on the above-described analysis result performed by the system analysis unit 110, the verification system generation unit 120 may construct a verification system including a virtual component and a virtual interface (S120).

상기 단계 S110 및 S120의 수행에 의해, 검증 시스템은 실제 시스템의 실제 구성 요소와 일대일로 대응되는 가상 구성 요소를 갖게 된다. 상기 가상 요소를 상호 연결하는 가상 인터페이스 역시 상기 실제 시스템의 실제 인터페이스와 일대일로 대응되어, 실제 시스템과 동일한 연결 관계를 가상의 검증 시스템에게 제공할 수 있다. 이에 따라, 검증 시스템은 실제 시스템과 동일한 계층적 구조 및 구조 간의 연결 관계를 가질 수 있다.By performing the above steps S110 and S120, the verification system has virtual components corresponding one-to-one with actual components of the actual system. The virtual interface interconnecting the virtual elements is also associated with the actual interface of the real system on a one-to-one basis, so that the same connection relationship as the actual system can be provided to the virtual verification system. Accordingly, the verification system can have the same hierarchical structure and connection relationship as the actual system.

소프트웨어 결합부(130)는 검증 시스템의 가상 구성 요소 중, 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 대상 소프트웨어를 결합시킬 수 있다(S130). 이에 의하면, 상기 대상 구성 요소는 대상 소프트웨어의 코드를 직접적으로 감싸는 구조를 취할 수 있다. The software combining unit 130 may combine the target software with a target component that is set as a component to be operated by the target software among the virtual components of the verification system (S130). According to this, the target component can take a structure to directly encapsulate the code of the target software.

본 발명의 일 실시예에 따르면, 대상 구성 요소가 대상 소프트웨어의 코드를 감싸는 구조를 갖게 되므로, 소프트웨어 결합부(130)는 대상 구성 요소의 입력 변수에 대상 소프트웨어의 코드의 입력 변수를, 대상 구성 요소의 출력 변수에 대상 소프트웨어의 코드의 출력 변수를 각각 연결하는 동작을 수행할 수 있다. According to the embodiment of the present invention, since the target component has a structure for wrapping the code of the target software, the software combining unit 130 inserts the input variable of the code of the target software into the input variable of the target component, The output variable of the target software can be connected to the output variable of the target software.

이에 따르면, 대상 소프트웨어 코드 내부에 대한 수정을 수행해야 할 필요가 없어지며, 단지 변수를 연결하기만 해도 대상 소프트웨어 코드의 테스트를 위한 환경을 마련할 수 있다. 다만, 경우에 따라서는 대상 소프트웨어 코드의 입력 변수 혹은 출력 변수를 추가해야 할 필요가 있을 수는 있다. 하지만 이와 같은 변수의 추가 역시 단지 대상 구성 요소의 변수와의 연결을 위한 것으로서, 대상 소프트웨어 코드의 내부 구조에 대한 수정이나 변경을 가할 필요가 없다는 점에 있어서는 변함이 없다.According to this, there is no need to perform modifications to the target software code, and an environment for testing the target software code can be provided by simply connecting the variables. However, in some cases it may be necessary to add input or output variables to the target software code. However, the addition of these variables is only for linking with the variables of the target component, and there is no need to modify or modify the internal structure of the target software code.

소프트웨어 결합부(130)는 전술한 바와 같은 결합 동작을 수행하고 나면, 먼저 대상 소프트웨어의 초기화를 수행할 수 있다. 다음으로, 대상 소프트웨어의 실행 주기를 설정할 수 있다. 이는 대상 소프트웨어가 어떠한 시간 간격으로 실행되는가를 설정하기 위한 것이다. 이에 따르면, 대상 소프트웨어는 입력 변수의 값을 입력받고, 상기 입력받은 입력 변수의 값에 기초하여 대상 소프트웨어의 코드를 동작시킬 수 있으며, 상기 동작의 결과에 따른 결과, 즉 출력 변수의 값을 출력하는 일련의 동작을, 상기 실행 주기가 경과할 때마다 수행할 수 있다.After the software combining unit 130 performs the combining operation as described above, it can first perform the initialization of the target software. Next, the execution cycle of the target software can be set. This is to set the time interval at which the target software runs. According to this, the target software receives the value of the input variable, operates the target software code based on the value of the inputted input variable, and outputs the result according to the result of the operation, that is, the value of the output variable A series of operations can be performed each time the execution cycle elapses.

이와 같은 실행 주기는, 실제 시스템의 요구에 따라 대상 소프트웨어가 실행하는 기능에 적합하도록 설정될 수 있다. 예컨대, 대상 소프트웨어가 결합될 대상 구성 요소에 대응되는 실제 시스템의 구성 요소가, 실제 시스템 내에서 센서의 계측값을 읽어들여, 상기 계측값을 정해진 형식에 따라 출력하는 동작을 0.1초에 한 번 수행하도록 설정되어 있다면, 대상 소프트웨어의 실행 주기 역시 0.1초로 결정될 수 있다.Such an execution cycle may be set to suit the function executed by the target software in accordance with the requirements of the actual system. For example, a component of an actual system corresponding to a target component to which the target software is coupled reads an instrument measurement value in an actual system, and outputs the measurement value according to a predetermined format once every 0.1 second The execution cycle of the target software can also be determined to be 0.1 second.

전술한 바와 같은 주기적 동작을 비롯한 다양한 동작의 설정을 위해, 소프트웨어 결합부(130)와 후술할 제어부(140)는 다양한 API(application programming interface)를 이용할 수 있다. 예컨대, 소프트웨어 결합부(130)는 SetTimer 라는 함수를 이용할 수 있는데, 소프트웨어 결합부(130)의 대상 소프트웨어의 호출 주기(동작 주기)의 설정은 바로 SetTimer를 이용하여 수행될 수 있다. 그 외에도, 후술할 OnTimer 함수가 이용될 수 있으며, 대상 소프트웨어 코드의 초기화 및 입력 변수, 출력 변수의 설정 등도 API를 이용하여 수행될 수 있다.The software combining unit 130 and the control unit 140, which will be described later, can use various application programming interfaces (APIs) for setting various operations including the periodic operation as described above. For example, the software combining unit 130 may use a function called SetTimer, and the setting of the calling period (operation period) of the target software of the software combining unit 130 may be performed using SetTimer. In addition, the OnTimer function to be described later can be used, and the initialization of the target software code and setting of the input variable and the output variable can be performed using the API.

전술한 바와 같은 소프트웨어 결합부(130)의 동작이 완료되면, 제어부(140)는 검증 대상 소프트웨어를 동작시킴으로써, 검증 대상 소프트웨어에 대한 검증 결과를 도출할 수 있다(S140). 보다 구체적으로, 제어부(140)는 검증 대상 소프트웨어를 동기적으로, 혹은 비동기적으로 호출함으로써 검증 대상 소프트웨어를 동작시키고, 상기 동작에 따른 검증 결과를 생성할 수 있다.When the operation of the software combining unit 130 as described above is completed, the control unit 140 can derive the verification result of the verification target software by operating the verification target software (S140). More specifically, the control unit 140 can activate the verification target software by calling the verification target software synchronously or asynchronously, and generate the verification result according to the operation.

제어부(140)는 검증 대상 소프트웨어의 호출을 위해, 앞서 설명한 OnTimer 함수를 이용할 수 있다. 제어부(140)는 위에서 설명한 바와 같이 설정된 호출 주기와 같은 값으로, SetTimer 함수를 이용하여 타이머(Timer)를 구동할 수 있다. 타이머의 값이 만료될 때마다, 제어부(140)는 OnTimer 함수를 호출하여, 검증 대상 소프트웨어를 구동시킬 수 있다. 제어부(140)는 OnTimer 함수를 다시 호출하여 소프트웨어를 구동시키기 위해 SetTimer 함수를 다시 호출하여 타이머를 재가동시킬 수 있으며, 타이머의 계속적 재가동에 의해 상기 호출 주기마다 대상 소프트웨어가 구동될 수 있다. 제어부(140)는 이와 같이 호출 주기마다 대상 소프트웨어를 호출하여 동작시키는, 대상 소프트웨어의 동기적 호출을 수행할 수 있다.The control unit 140 can use the OnTimer function described above for calling the software to be verified. The control unit 140 can drive a timer using the SetTimer function with the same value as the set paging period as described above. Every time the timer value expires, the control unit 140 calls the OnTimer function to start the software to be verified. The control unit 140 may call the OnTimer function again to call the SetTimer function again to start the software so that the timer can be reactivated and the target software can be driven by the continuous restart of the timer every paging cycle. The control unit 140 can perform the synchronous call of the target software, which calls and operates the target software every paging cycle.

이와 달리, 제어부(140)는 대상 소프트웨어 외부로부터의, 혹은 대상 구성 요소 외부로부터의 트리거(trigger) 조건 만족에 의해, 대상 소프트웨어를 비동기적으로 호출할 수도 있다. 즉, 이러한 비동기적 호출은 상기 호출 주기와는 무관한 것으로서, 제어부(140)는 기 정해진 특정 이벤트가 발생했을 때 대상 소프트웨어를 호출하여 동작시킬 수 있다. 예컨대, 대상 구성 요소의 입력 변수 중 특정 입력 변수의 값에 변동이 발생할 경우, 제어부(140)는 대상 소프트웨어를 호출하여 동작시킬 수 있다.Alternatively, the control unit 140 may invoke the target software asynchronously from outside the target software or by satisfaction of a trigger condition from the outside of the target component. That is, the asynchronous call is not related to the call cycle, and the control unit 140 can call and operate the target software when a predetermined specific event occurs. For example, when a change occurs in a value of a specific input variable among input variables of a target component, the control unit 140 can call and operate the target software.

대상 소프트웨어를 동작시키는 데 있어서, 제어부(140)는 기 정해진 API를 이용하여, 대상 구성 요소의 입력 변수를 통해 입력된 입력값을, 대상 소프트웨어의 입력 변수가 처리할 수 있는 형태로 변환하여 대상 소프트웨어로 입력할 수 있다. 대상 소프트웨어의 동작에 의해 대상 소프트웨어의 출력 변수가 값을 출력하면, 제어부(140)는 또 다른 API를 이용하여, 상기 출력된 값 역시 대상 구성 요소의 출력 변수가 처리할 수 있는 형태로 변환하여 대상 구성 요소의 출력값을 통해 출력되도록 할 수 있다.In operation of the target software, the control unit 140 converts the input value input through the input variable of the target component into a form that can be processed by the input variable of the target software, using the predetermined API, As shown in FIG. When the output variable of the target software outputs a value by the operation of the target software, the control unit 140 converts the output value into a form that can be processed by the output variable of the target component using another API, It is possible to output through the output value of the component.

제어부(140)는 대상 소프트웨어의 동작이 이루어질 때마다, 상기 대상 소프트웨어의 출력 변수의 값(혹은 대상 구성 요소의 출력 변수의 값)을 관찰함으로써, 대상 소프트웨어가 정상적으로 동작하고 있는지를 알 수 있다. 즉, 제어부(140)는 이와 같은 동작을 통해 대상 소프트웨어의 검증을 수행하고, 혹시 대상 소프트웨어가 정상적으로 동작하지 않는다면, 출력 변수의 값을 관찰함으로써 대상 소프트웨어에 어떠한 오류가 있는지를 규명할 수 있다.The control unit 140 can know whether the target software is operating normally by observing the value of the output variable of the target software (or the value of the output variable of the target component) every time the target software is operated. That is, the control unit 140 performs verification of the target software through such an operation, and if the target software does not operate normally, the control unit 140 can identify the error in the target software by observing the value of the output variable.

지금까지 설명한 바와 같은 원리를 이용하여, 소프트웨어 검증 장치(100)는 검증 시스템에 포함된 각 가상 구성 요소에 포함된 소프트웨어를 동작시키는 방식으로 검증 시스템 전체에 대한 동작을 수행할 수 있다. 즉, 소프트웨어 검증 장치(100)는 실제 시스템을 모사한 가상의 검증 시스템을 동작시켜, 상기 검증 시스템에 포함된 각 가상 구성 요소에 포함된 소프트웨어들에 대한 테스트를 개별적으로, 혹은 통합적으로 테스트하는 것이 가능하다.Using the principles described so far, the software verification apparatus 100 can perform operations on the entire verification system in a manner that operates the software contained in each virtual component included in the verification system. That is, the software verification apparatus 100 operates a virtual verification system that simulates an actual system, and individually or integrally tests the tests for the software included in each virtual component included in the verification system It is possible.

도 3a 및 3b는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 적용 예시에 대해 설명하기 위한 도면이다. 도 3a 및 3b의 예시는 최근 관심의 대상이 되고 있는 자율주행 시스템에 대하여 본 발명의 일 실시예를 적용한 것이다.3A and 3B are diagrams for explaining application examples of a software verification method according to an embodiment of the present invention. The examples of FIGS. 3A and 3B apply an embodiment of the present invention to an autonomous travel system, which has recently become an object of interest.

도 3a은 실제 시스템으로서 자율주행 시스템(200)을 도시하고 있다. 자율주행 시스템(200)은 센서(210)와, 상기 센서에 의해 운행되는 자동차 부분인 플랫폼(220)을 포함할 수 있으며, 센서(210)에 의해 획득된 센싱 정보(211)를 처리하여 플랫폼(220)의 구동을 위한 신호를 출력하는 센서 제어부(미도시)를 더 포함할 수 있다. 이와 같은 자율주행 시스템(200)에 대한 구체적인 사항은 본 발명에서 직접적으로 다루고 있는 부분은 아니므로, 여기에서는 더 이상의 자세한 설명은 생략한다.FIG. 3A shows an autonomous navigation system 200 as an actual system. The autonomous navigation system 200 may include a sensor 210 and a platform 220 that is a portion of a vehicle that is operated by the sensor and may process the sensing information 211 acquired by the sensor 210 to provide a platform And a sensor control unit (not shown) for outputting a signal for driving the display unit 220. The detailed description of the autonomous mobile system 200 is not directly related to the present invention, and thus a detailed description thereof will be omitted here.

도 3b은 상기 자율주행 시스템(200)을 모사한 가상 시스템으로서, 자율주행 시스템(200)에 적용될 수 있는 소프트웨어를 검증하기 위한 자율주행 소프트웨어 검증 시스템(300)을 도시하고 있다. 자율주행 소프트웨어 검증 시스템(300)은, 자율주행 시스템(200)의 센서(210)와 플랫폼(220)에 각각 대응되는 가상 구성 요소인 센서부(310)와 플랫폼부(320)를 포함할 수 있다. 이에 더하여, 자율주행 소프트웨어 검증 시스템(300)은 자율주행 시스템(200)의 센서 제어부에 대응되는 가상 구성 요소로서 센서 통제 기능부(330), 센서 구동 통제부(340) 및 센서 표적 처리부(350)를 더 포함할 수 있다. 도 3b에서는 자율주행 소프트웨어 검증 시스템(300) 중에서도, 센서부(310)에 의해 획득된 센싱 값을 처리하여 플랫폼부(320)의 구동을 위한 신호를 출력하는 부분에 대해 자세히 설명하도록 한다.3B shows an autonomous driving software verification system 300 for verifying software that can be applied to the autonomous driving system 200 as a virtual system simulating the autonomous driving system 200. [ The autonomic driving software verification system 300 may include a sensor unit 310 and a platform unit 320 which are virtual components corresponding to the sensor 210 and the platform 220 of the autonomous navigation system 200, respectively . In addition, the autonomic driving software verification system 300 includes a sensor control function unit 330, a sensor drive control unit 340, and a sensor target processing unit 350 as virtual components corresponding to the sensor control unit of the autonomous driving system 200, As shown in FIG. 3B, a portion for processing the sensed value acquired by the sensor unit 310 and outputting a signal for driving the platform unit 320 will be described in detail in the autonomic driving software verification system 300. FIG.

센서 통제 기능부(330)는 플랫폼부(320)로부터 플랫폼 기동 정보와 센서 구동 명령을, 센서부(310)로부터 탐지 신호를 각각 수신할 수 있다. 센서 통제 기능부(330)는 플랫폼 기동 정보와 센서 구동 명령을 센서 구동 통제부(340)로, 탐지 신호를 센서 표적 처리부(350)로 각각 전달할 수 있다.The sensor control function unit 330 can receive the platform start information and the sensor drive command from the platform unit 320 and the detection signal from the sensor unit 310, respectively. The sensor control function unit 330 can transmit the platform start information and the sensor drive command to the sensor drive control unit 340 and the detection signal to the sensor target processing unit 350, respectively.

센서 구동 통제부(340)는 플랫폼 기동 정보와 센서 구동 명령을 입력 변수로 가질 수 있으며, 상태 정보를 출력 변수로 가질 수 있다. 센서 표적 처리부(350)는 탐지 신호를 입력 변수로 가질 수 있으며, 표적 정보를 출력 변수로 가질 수 있다. 상태 정보는 센서가 지향하는 방향 등 센서의 상태에 관한 정보이며, 표적 정보는 센서가 탐지한 표적의 방향 및 거리에 관한 정보이다. The sensor drive control unit 340 may have the platform start information and the sensor drive command as input variables, and may have state information as output variables. The sensor target processing unit 350 may have a detection signal as an input variable and target information as an output variable. The status information is information on the state of the sensor, such as the direction the sensor is aiming at, and the target information is information about the direction and distance of the target detected by the sensor.

이와 같은 가상 구성 요소의 기능 수행을 위해, 센서 구동 통제부(340)와 센서 표적 처리부(350)의 내부에는 대상 소프트웨어(341, 351)가 각각 결합될 수 있다. 대상 소프트웨어의 입력 변수는 가상 구성 요소의 입력 변수와, 대상 소프트웨어의 출력 변수는 가상 구성 요소의 출력 변수와 각각 연결될 수 있다. 내부의 대상 소프트웨어를 구동시킴으로써, 센서 구동 통제부(340)와는 상태 정보를, 센서 표적 처리부(350)는 표적 정보를 각각 출력하여 센서 통제 기능부(330)로 전달할 수 있다. 센서 통제 기능부(330)는 전달받은 상태 정보와 표적 정보를 센서 통제 기능부(330)로 출력할 수 있다. 물론 센서 구동 통제부(340)와 센서 표적 처리부(350)에 비해 상위의 가상 구성 요소인 센서 통제 기능부(330) 역시 소프트웨어(331)가 내부에 결합될 수 있다.In order to perform the function of the virtual component, the target software 341 and 351 may be coupled to the sensor drive control unit 340 and the sensor target processing unit 350, respectively. The input variables of the target software can be connected to the input variables of the virtual component, and the output variables of the target software can be respectively connected to the output variables of the virtual component. The sensor target processing unit 350 may output the status information to the sensor driving control unit 340 and the target information to the sensor control function unit 330 by driving the target software in the sensor control unit 330. [ The sensor control function unit 330 may output the received state information and the target information to the sensor control function unit 330. [ Of course, the software 331 may also be coupled to the sensor control function unit 330, which is a higher virtual component than the sensor drive control unit 340 and the sensor target processing unit 350.

센서 구동 통제부(340)와 센서 표적 처리부(350)의 내부에 결합된 대상 소프트웨어(341, 351)는 일정 호출 주기에 따라, 혹은 특정 이벤트의 발생에 따라 호출되어 작동될 수 있다. 상기 대상 소프트웨어(341, 351)에 의해 각각 출력되는 상태 정보와 표적 정보의 값을 관찰하면 대상 소프트웨어(341, 351)의 정상 작동 여부를 검증할 수 있을 것이며, 더 나아가 자율주행 소프트웨어 검증 시스템(300) 전체에 대한 테스트를 통해 자율주행 시스템(200) 자체를 검증할 수 있을 것이다.The target software 341 and 351 coupled to the sensor drive control unit 340 and the sensor target processing unit 350 may be called and operated according to a predetermined paging cycle or upon the occurrence of a specific event. It is possible to verify whether the target software 341 or 351 is operating normally or not by observing the status information and the target information values respectively output by the target software 341 and 351. Further, The autonomous drive system 200 itself can be verified through a test on the whole.

이처럼 지금까지 설명한 본 발명의 일 실시예에 따르면, 검증 대상인 소프트웨어 코드 내부를 수정하는 복잡한 절차가 방지될 수 있으며, 복잡한 구조를 갖는 실제 시스템에 적용될 소프트웨어도 효과적으로 검증할 수 있게 된다.As described above, according to the embodiment of the present invention described above, complicated procedures for modifying the software code to be verified can be prevented, and software to be applied to an actual system having a complicated structure can be effectively verified.

본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.Combinations of each step of the flowchart and each block of the block diagrams appended to the present invention may be performed by computer program instructions. These computer program instructions may be loaded into a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus so that the instructions, which may be executed by a processor of a computer or other programmable data processing apparatus, And means for performing the functions described in each step are created. These computer program instructions may also be stored in a computer usable or computer readable memory capable of directing a computer or other programmable data processing apparatus to implement the functionality in a particular manner so that the computer usable or computer readable memory It is also possible for the instructions stored in the block diagram to produce a manufacturing item containing instruction means for performing the functions described in each block or flowchart of the block diagram. Computer program instructions may also be stored on a computer or other programmable data processing equipment so that a series of operating steps may be performed on a computer or other programmable data processing equipment to create a computer- It is also possible that the instructions that perform the processing equipment provide the steps for executing the functions described in each block of the block diagram and at each step of the flowchart.

또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.Also, each block or each step may represent a module, segment, or portion of code that includes one or more executable instructions for executing the specified logical function (s). It should also be noted that in some alternative embodiments, the functions mentioned in the blocks or steps may occur out of order. For example, two blocks or steps shown in succession may in fact be performed substantially concurrently, or the blocks or steps may sometimes be performed in reverse order according to the corresponding function.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are intended to illustrate rather than limit the scope of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.

100: 소프트웨어 검증 장치
110: 시스템 분석부
120: 검증 시스템 생성부
130: 소프트웨어 결합부
140: 제어부
200: 자율주행 시스템
300: 자율수행 소프트웨어 검증 시스템
100: Software verification device
110: System Analysis Department
120: verification system generation unit
130: software combining section
140:
200: Autonomous driving system
300: autonomous software verification system

Claims (16)

검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 단계;
상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 단계; 및
상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 단계를 포함하는
소프트웨어 검증 방법.
Analyzing a component of an actual system to which a target software to be verified is applied and a connection interface between the components;
Constructing a verification system based on the analysis result, the verification system including virtual components each having a one-to-one correspondence with each component of the real system and each virtual interface corresponding one-to-one with each interface of the real system; And
And combining the target software with a target component configured as a component to be operated by the target software among the virtual components,
Software verification method.
제 1 항에 있어서,
상기 구축하는 단계는, 상기 각 가상 구성 요소가 상기 가상 인터페이스를 통해 입력받는 입력 데이터와, 상기 가상 인터페이스를 통해 출력하는 출력 데이터의 종류를 정의하는 단계를 포함하는
소프트웨어 검증 방법.
The method according to claim 1,
Wherein the constructing step includes the steps of defining input data received by the virtual component through the virtual interface and output data output through the virtual interface
Software verification method.
제 1 항에 있어서,
상기 결합하는 단계는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결하는 단계를 포함하는
소프트웨어 검증 방법.
The method according to claim 1,
Wherein the combining comprises concatenating an input variable of a code of the target software to an input variable of the target component and concatenating an output variable of the code of the target software to an output variable of the target component
Software verification method.
제 1 항에 있어서,
상기 결합하는 단계는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며,
상기 방법은, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함하는
소프트웨어 검증 방법.
The method according to claim 1,
Wherein the combining step comprises setting a paging cycle of the target software,
The method includes causing the target software to output an output value according to an operation result of the target software through an output variable of the target software using an input value input through an input variable of the target software Further comprising
Software verification method.
제 1 항에 있어서,
기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함하는
소프트웨어 검증 방법.
The method according to claim 1,
When the predetermined event is input through the input variable of the target component, the target software uses an input value inputted through the input variable of the target software to output an output value according to the operation result of the target software to the target software To output through an output variable of < RTI ID = 0.0 >
Software verification method.
제 1 항에 있어서,
상기 결합하는 단계는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시키는 단계를 포함하는
소프트웨어 검증 방법.
The method according to claim 1,
Wherein the combining comprises combining corresponding software for each of the virtual components other than the target component included in the verification system
Software verification method.
제 1 항에 있어서,
상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 단계를 더 포함하는
소프트웨어 검증 방법.
The method according to claim 1,
And generating a verification result for the target software based on an output value output by the output variable of the target software in operation of the target software
Software verification method.
검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 시스템 분석부;
상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 검증 시스템 생성부; 및
상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 소프트웨어 결합부를 포함하는
소프트웨어 검증 장치.
A system analyzer for analyzing a component of an actual system to which a target software to be verified is applied and a connection interface between the components;
A verification system generation unit for constructing a verification system based on the analysis result, the verification system including virtual components corresponding one-to-one to each component of the real system and virtual interfaces corresponding one-to-one with the respective interfaces of the real system; And
And a software coupling unit for coupling the target software to a target component that is set as a component to be operated by the target software among the virtual components
Software verification device.
제 8 항에 있어서,
상기 검증 시스템 생성부는, 상기 각 가상 구성 요소가 상기 가상 인터페이스를 통해 입력받는 입력 데이터와, 상기 가상 인터페이스를 통해 출력하는 출력 데이터의 종류를 정의하는
소프트웨어 검증 장치.
9. The method of claim 8,
Wherein the verification system generation unit defines a type of output data that each virtual component inputs through the virtual interface and output data through the virtual interface
Software verification device.
제 8 항에 있어서,
상기 소프트웨어 결합부는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결하는
소프트웨어 검증 장치.
9. The method of claim 8,
Wherein the software combining unit connects the input variable of the code of the target software to the input variable of the target component and connects the output variable of the code of the target software to the output variable of the target component
Software verification device.
제 8 항에 있어서,
상기 소프트웨어 결합부는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며,
상기 장치는, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함하는
소프트웨어 검증 장치.
9. The method of claim 8,
Wherein the software combining unit includes setting a paging cycle of the target software,
The apparatus may cause the target software to output the output value according to the operation result of the target software through the output variable of the target software using the input value input through the input variable of the target software at each paging cycle Further,
Software verification device.
제 8 항에 있어서,
상기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함하는
소프트웨어 검증 장치.
9. The method of claim 8,
Wherein when the predetermined event is input through an input variable of the target component, the target software uses an input value input through an input variable of the target software to output an output value according to an operation result of the target software, And outputting the result through an output variable of < RTI ID = 0.0 >
Software verification device.
제 8 항에 있어서,
상기 소프트웨어 결합부는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시키는
소프트웨어 검증 장치.
9. The method of claim 8,
Wherein the software combining unit combines, for each of the virtual components other than the target component included in the verification system, corresponding software
Software verification device.
제 8 항에 있어서,
상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 제어부를 더 포함하는
소프트웨어 검증 장치.
9. The method of claim 8,
And a control unit for generating a verification result for the target software on the basis of an output value output by the output variable of the target software in operation of the target software
Software verification device.
제 1 항 내지 제 7 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는, 컴퓨터 판독 가능 기록매체에 저장된 프로그램.A program stored on a computer-readable medium for performing the respective steps according to the method of any one of claims 1 to 7. 제 1 항 내지 제 7 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독 가능 기록매체.A computer-readable medium having recorded thereon a program for carrying out the steps according to the method of any one of claims 1 to 7.
KR1020180001251A 2018-01-04 2018-01-04 Apparatus and method for software validation KR102128004B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180001251A KR102128004B1 (en) 2018-01-04 2018-01-04 Apparatus and method for software validation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180001251A KR102128004B1 (en) 2018-01-04 2018-01-04 Apparatus and method for software validation

Publications (2)

Publication Number Publication Date
KR20190083512A true KR20190083512A (en) 2019-07-12
KR102128004B1 KR102128004B1 (en) 2020-06-29

Family

ID=67254152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180001251A KR102128004B1 (en) 2018-01-04 2018-01-04 Apparatus and method for software validation

Country Status (1)

Country Link
KR (1) KR102128004B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486879A (en) * 2020-12-07 2021-03-12 博流智能科技(南京)有限公司 UVM virtual interface transmission method and system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065144A (en) 2007-12-17 2009-06-22 한국전자통신연구원 System and method for testing graphic user interface of mobile application software
KR20090088605A (en) * 2008-02-15 2009-08-20 삼성전자주식회사 Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using thereof
KR20100026604A (en) * 2008-09-01 2010-03-10 주식회사 케이티 Platform developing appratus for mobile communication device
US20100146487A1 (en) * 2008-12-05 2010-06-10 Electronics And Telecommunications Research Institute Apparatus and method for application testing of embedded system
KR101039874B1 (en) * 2011-04-04 2011-06-09 (주)한국전산감리원 System for integration platform of information communication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065144A (en) 2007-12-17 2009-06-22 한국전자통신연구원 System and method for testing graphic user interface of mobile application software
KR20090088605A (en) * 2008-02-15 2009-08-20 삼성전자주식회사 Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using thereof
KR20100026604A (en) * 2008-09-01 2010-03-10 주식회사 케이티 Platform developing appratus for mobile communication device
US20100146487A1 (en) * 2008-12-05 2010-06-10 Electronics And Telecommunications Research Institute Apparatus and method for application testing of embedded system
KR101039874B1 (en) * 2011-04-04 2011-06-09 (주)한국전산감리원 System for integration platform of information communication

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486879A (en) * 2020-12-07 2021-03-12 博流智能科技(南京)有限公司 UVM virtual interface transmission method and system
CN112486879B (en) * 2020-12-07 2024-04-12 博流智能科技(南京)有限公司 UVM virtual interface transmission method and system

Also Published As

Publication number Publication date
KR102128004B1 (en) 2020-06-29

Similar Documents

Publication Publication Date Title
US9946628B2 (en) Embedding and executing trace functions in code to gather trace data
CN109739770B (en) Debugging method and device for small program
KR102537875B1 (en) Method and apparatus for dinamically injecting fault for vehicle ecu software test
CN109739656A (en) Interface data analogy method, device, storage medium and electronic equipment
CN106872879B (en) Hardware wireless debugging method and device, communication chip and electronic equipment
CN111338943A (en) Test method, test device, electronic equipment and readable storage medium
CN111178512A (en) Device operation neural network test method and device
CN108021791B (en) Data protection method and device
CN111158465A (en) Force touch vibration feedback method and system
CN109558313B (en) Method and device for constructing abnormal test scene
CN111400716A (en) Security mechanism verification method based on operating system
KR20140078344A (en) Method for determining efficiency software of osek os
KR20230036179A (en) Construction management method for railway infrastructure using bim and ar
KR20190083512A (en) Apparatus and method for software validation
KR20070058957A (en) Apparatus and method for debugging sensor network using simulation
CN112559335A (en) Test method, device, equipment and storage medium
CN106484604B (en) Application test control method and device
CN105138373A (en) Vehicle diagnosis device firmware upgrading method and device
CN112527571B (en) CPU instruction set coverage rate calculation method and device
CN111897726A (en) Abnormity positioning method, abnormity positioning device, storage medium and mobile terminal
CN112269740A (en) Automatic testing method and device for automatic driving software
KR101913558B1 (en) Sequence diagram based integrated development apparatus
CN116610557B (en) Action binding information debugging method and device, storage medium and electronic equipment
KR101127469B1 (en) System and method for development of software for network-based robot
JP4194959B2 (en) Simulation analysis system, accelerator device and emulator device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant