KR102128004B1 - 소프트웨어 검증 장치 및 방법 - Google Patents

소프트웨어 검증 장치 및 방법 Download PDF

Info

Publication number
KR102128004B1
KR102128004B1 KR1020180001251A KR20180001251A KR102128004B1 KR 102128004 B1 KR102128004 B1 KR 102128004B1 KR 1020180001251 A KR1020180001251 A KR 1020180001251A KR 20180001251 A KR20180001251 A KR 20180001251A KR 102128004 B1 KR102128004 B1 KR 102128004B1
Authority
KR
South Korea
Prior art keywords
software
target
component
target software
output
Prior art date
Application number
KR1020180001251A
Other languages
English (en)
Other versions
KR20190083512A (ko
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/ko
Publication of KR20190083512A publication Critical patent/KR20190083512A/ko
Application granted granted Critical
Publication of KR102128004B1 publication Critical patent/KR102128004B1/ko

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 일 실시예에 따른 소프트웨어 검증 방법은, 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 단계, 상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 단계 및 상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 단계를 포함할 수 있다.

Description

소프트웨어 검증 장치 및 방법 {APPARATUS AND METHOD FOR SOFTWARE VALIDATION}
본 발명은 소프트웨어에 대한 효과적인 검증을 수행하기 위한 방법과, 상기 방법을 수행하는 장치에 관한 것이다.
오늘날 내장형 시스템은 자동차, 휴대폰 등에 널리 적용되어 제품의 성능을 향상시키는 한편 새로운 기능의 창출 역시 수행하고 있다. 이와 같은 내장형 시스템의 원활한 동작 및 신뢰성 향상을 위해서, 내장형 시스템에 적용될 소프트웨어에 대한 검증 절차는 필수적이라고 할 수 있다.
하지만 현재의 소프트웨어 검증 방법에는 여러 가지 문제점이 내포되어 있다. 구체적으로, 기존의 검증 방법에 의하면, 소프트웨어 검증 시 검증 대상이 되는 소프트웨어 코드에 대한 수정이 필요할 수 있다. 즉, 개발자가 설계한 검증 대상 소프트웨어 코드 외에도 테스트에 필요한 부가적인 테스트 코드들이 상기 소프트웨어 코드 내에 삽입되어야 하므로, 이에 따른 시간과 노력이 소요될 수 있다.
또한, 검증 대상 소프트웨어가 적용될 시스템의 구조 및 인터페이스가 복잡해질수록, 시스템의 각 구성 요소에 적용될 소프트웨어 코드 간의 연결 문제가 중요해진다. 따라서, 하나의 검증 대상 소프트웨어 코드를 검증하기 위해서는 다른 대상 코드와의 상호 작용을 고려하여 검증 시스템을 개발하여야 한다. 이에 따르면, 시스템의 복잡도가 증가할수록 검증이 어려워지는 문제점이 발생하게 된다.
한국공개특허공보, 10-2009-0065144 (2009.06.22. 공개)
본 발명이 해결하고자 하는 과제는, 전술한 종래의 소프트웨어 검증 방법의 문제점을 극복하고, 보다 효과적인 소프트웨어 검증을 수행하기 위한 방법과, 상기 방법을 수행하기 위한 장치를 제공하는 것이다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따른 소프트웨어 검증 방법은, 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 단계, 상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 단계 및 상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 단계를 포함할 수 있다.
또한, 상기 구축하는 단계는, 상기 각 가상 구성 요소가 상기 가상 인터페이스를 통해 입력받는 입력 데이터와, 상기 가상 인터페이스를 통해 출력하는 출력 데이터의 종류를 정의하는 단계를 포함할 수 있다.
또한, 상기 결합하는 단계는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결하는 단계를 포함할 수 있다.
또한, 상기 결합하는 단계는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며, 상기 방법은, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함할 수 있다.
또한, 상기 방법은, 기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함할 수 있다.
또한, 상기 결합하는 단계는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시키는 단계를 포함할 수 있다.
또한, 상기 방법은, 상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 소프트웨어 검증 장치는, 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 시스템 분석부, 상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하는 검증 시스템을 구축하는 검증 시스템 생성부 및 상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 소프트웨어 결합부를 포함할 수 있다.
또한, 상기 검증 시스템 생성부는, 상기 각 가상 구성 요소가 상기 가상 인터페이스를 통해 입력받는 입력 데이터와, 상기 가상 인터페이스를 통해 출력하는 출력 데이터의 종류를 정의할 수 있다.
또한, 상기 소프트웨어 결합부는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결할 수 있다.
또한, 상기 소프트웨어 결합부는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며, 상기 장치는, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함할 수 있다.
또한, 상기 장치는, 상기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함할 수 있다.
또한, 상기 소프트웨어 결합부는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시킬 수 있다.
또한, 상기 장치는, 상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 제어부를 더 포함할 수 있다.
본 발명의 일 실시예에 따르면, 검증 대상이 되는 소프트웨어 코드와, 상기 소프트웨어 코드를 검증하기 위한 가상 시스템을 나타내는 테스트 코드를 완전히 분리함으로써, 종래 기술의 문제점을 해결할 수 있다. 구체적으로, 본 발명의 일 실시예에 의하면, 검증 대상 소프트웨어가 적용될 실제 시스템의 구성 요소 및 인터페이스와 각각 일대일 매칭되는 가상 구성 요소 및 가상 인터페이스를 갖는 검증 시스템을 구축하고, 상기 검증 시스템에 검증 대상 소프트웨어를 결합하여 구동시킬 수 있다.
이에 따라, 검증 대상인 소프트웨어 코드 내부를 수정하는 복잡한 절차가 방지될 수 있으며, 복잡한 구조를 갖는 실제 시스템에 적용될 소프트웨어도 효과적으로 검증할 수 있게 되는 효과를 가질 수 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 검증 장치의 구성에 대해 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 각 단계를 도시한 도면이다.
도 3a 및 3b는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 적용 예시에 대해 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
한편, 본 발명의 일 실시예에서 제시하는 방법은 적어도 일부의 소프트웨어와 하드웨어의 하이브리드 구현 방식으로, 프로세서 및 프로세서에 의해 실행되는 명령어들을 저장하는 메모리를 포함하는 전자 디바이스 또는 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성되는 프로그래밍 가능한 머신(machine)상에서 구현될 수 있다.
또한, 본 발명의 일 실시예에서 제시하는 특징들 및/또는 기능성들 중 적어도 일부는 최종 사용자 컴퓨터 시스템, 컴퓨터, 네트워크 서버 또는 서버 시스템, 모바일 컴퓨팅 디바이스(예를 들어, PDA(personal digitalassistant), 모바일 전화기, 스마트폰, 랩탑, 태블릿 컴퓨터 또는 그와 유사한 것), 소비자 전자 디바이스, 또는 임의의 다른 적합한 전자 디바이스 또는 그들의 임의의 조합과 같은 하나 이상의 범용 네트워크 호스트 머신에서 등에서 구현될 수 있다.
또한, 적어도 일부 실시예들에서, 여기에 개시된 개념 계층 구조를 생성하는 방법의 실시예의 특징들 및/또는 기능성들의 적어도 일부는 하나 이상의 가상화된 컴퓨팅 환경(예를 들어 네트워크 컴퓨팅 클라우드 또는 그와 유사한 것)에서 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 검증 장치의 구성에 대해 설명하기 위한 도면이다. 도 1의 소프트웨어 검증 장치(100)는 시스템 분석부(110), 검증 시스템 생성부(120), 소프트웨어 결합부(130) 및 제어부(140)를 포함할 수 있다. 다만 도 1의 소프트웨어 검증 장치(100)의 구성 요소는 본 발명의 일 실시예에 불과하므로, 도 1에 의해 본 발명의 기술적 사상이 한정 해석되는 것은 아니다.
이하에서 설명할 소프트웨어 검증 장치(100)의 각 구성 요소들은 마이크로프로세서(microprocessor)와 같은 연산 장치를 포함하여 구현될 수 있으며, 경우에 따라서는 데이터의 송신 및 수신을 위한 유/무선 통신 모듈 혹은 입/출력 버스 등을 더 포함할 수 있다. 또한, 아래에서는 소프트웨어 검증 장치(100)의 각 구성 요소의 동작을 개략적으로 설명할 것이며, 동작의 구체적인 사항에 대해서는 이후에 보다 자세히 설명하도록 한다.
시스템 분석부(110)는 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템에 대한 분석을 수행할 수 있다. 이와 같은 실제 시스템은, 이하에서 설명될 자동차 자율주행 시스템이나, 다양한 모바일 시스템, 로봇 시스템 등이 될 수 있다. 구체적으로, 시스템 분석부(110)는 상기 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석할 수 있다.
검증 시스템 생성부(120)는 검증 시스템에 대한 시스템 분석부(110)의 상기 분석 결과에 기초하여, 검증 대상 소프트웨어를 테스트하기 위한 검증 시스템의 구축을 수행할 수 있다. 구체적으로, 검증 시스템 생성부(120)는 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하도록 검증 시스템을 구축할 수 있다. 여기서, 검증 대상 소프트웨어의 코드와 이러한 검증 대상 소프트웨어와 일대일 대응되는 각 가상 구성 요소의 코드간이 서로 분리되게 검증 시스템을 구축할 수 있다. 즉, 이와 같은 검증 시스템은 상기 실제 시스템의 구조를 모사한 가상 시스템이라고 할 수 있다.
소프트웨어 결합부(130)는 검증 대상 소프트웨어를, 검증 시스템의 대상 구성 요소에 결합시킬 수 있다. 이와 같이 대상 소프트웨어가 결합될 대상 구성 요소는, 실제 시스템의 구성 요소 중 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 구성 요소에 대응되는 검증 시스템의 가상 구성 요소일 수 있다. 이와 함께, 소프트웨어 결합부(130)는 경우에 따라서는 검증 대상 소프트웨어가 동작시킬 구성 요소 외의 다른 구성 요소에 대응되는 가상 구성 요소에 대해서도 필요한 소프트웨어를 결합시킬 수 있다.
제어부(140)는 검증 대상 소프트웨어를 동작시킴으로써, 검증 대상 소프트웨어에 대한 검증 결과를 도출할 수 있다. 이와 같은 검증 대상 소프트웨어의 동작 시에는, 상기 대상 소프트웨어만을 동작시키는 것도 가능하겠지만, 대상 소프트웨어 외에도 상기 검증 시스템의 각 가상 구성 요소에 결합된 다른 소프트웨어를 함께 동작시킴으로써, 전체 검증 시스템에 대한 동작을 수행하는 것 역시 가능할 것이다.
도 2는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 각 단계를 도시한 도면이다. 도 2의 방법은 도 1을 참조하여 설명한 소프트웨어 검증 장치(100)에 의해 수행될 수 있으며, 도 1과 겹치는 부분에 대해서는 설명이 생략될 수 있다. 단, 도 2에 도시된 방법은 본 발명의 일 실시예에 불과하므로 도 2에 의해 본 발명의 사상이 한정 해석되는 것은 아니며, 도 2에 도시된 방법의 각 단계는 경우에 따라 도면에 제시된 바와 그 순서를 달리하여 수행될 수도 있음은 물론이다.
우선, 시스템 분석부(110)가 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석을 수행할 수 있다(S110). 다음으로, 시스템 분석부(110)에 의해 수행된 전술한 분석 결과에 기초하여, 검증 시스템 생성부(120)가 가상 구성 요소 및 가상 인터페이스를 포함하는 검증 시스템을 구축할 수 있다 여기서, 검증의 대상이 되는 소프트웨어의 코드와 이러한 검증 대상 소프트웨어와 일대일 대응되는 각 가상 구성 요소의 코드간이 서로 분리되게 검증 시스템을 구축할 수 있다(S120).
상기 단계 S110 및 S120의 수행에 의해, 검증 시스템은 실제 시스템의 실제 구성 요소와 일대일로 대응되는 가상 구성 요소를 갖게 된다. 상기 가상 요소를 상호 연결하는 가상 인터페이스 역시 상기 실제 시스템의 실제 인터페이스와 일대일로 대응되어, 실제 시스템과 동일한 연결 관계를 가상의 검증 시스템에게 제공할 수 있다. 이에 따라, 검증 시스템은 실제 시스템과 동일한 계층적 구조 및 구조 간의 연결 관계를 가질 수 있다.
소프트웨어 결합부(130)는 검증 시스템의 가상 구성 요소 중, 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 대상 소프트웨어를 결합시킬 수 있다(S130). 이에 의하면, 상기 대상 구성 요소는 대상 소프트웨어의 코드를 직접적으로 감싸는 구조를 취할 수 있다.
본 발명의 일 실시예에 따르면, 대상 구성 요소가 대상 소프트웨어의 코드를 감싸는 구조를 갖게 되므로, 소프트웨어 결합부(130)는 대상 구성 요소의 입력 변수에 대상 소프트웨어의 코드의 입력 변수를, 대상 구성 요소의 출력 변수에 대상 소프트웨어의 코드의 출력 변수를 각각 연결하는 동작을 수행할 수 있다.
이에 따르면, 대상 소프트웨어 코드 내부에 대한 수정을 수행해야 할 필요가 없어지며, 단지 변수를 연결하기만 해도 대상 소프트웨어 코드의 테스트를 위한 환경을 마련할 수 있다. 다만, 경우에 따라서는 대상 소프트웨어 코드의 입력 변수 혹은 출력 변수를 추가해야 할 필요가 있을 수는 있다. 하지만 이와 같은 변수의 추가 역시 단지 대상 구성 요소의 변수와의 연결을 위한 것으로서, 대상 소프트웨어 코드의 내부 구조에 대한 수정이나 변경을 가할 필요가 없다는 점에 있어서는 변함이 없다.
소프트웨어 결합부(130)는 전술한 바와 같은 결합 동작을 수행하고 나면, 먼저 대상 소프트웨어의 초기화를 수행할 수 있다. 다음으로, 대상 소프트웨어의 실행 주기를 설정할 수 있다. 이는 대상 소프트웨어가 어떠한 시간 간격으로 실행되는가를 설정하기 위한 것이다. 이에 따르면, 대상 소프트웨어는 입력 변수의 값을 입력받고, 상기 입력받은 입력 변수의 값에 기초하여 대상 소프트웨어의 코드를 동작시킬 수 있으며, 상기 동작의 결과에 따른 결과, 즉 출력 변수의 값을 출력하는 일련의 동작을, 상기 실행 주기가 경과할 때마다 수행할 수 있다.
이와 같은 실행 주기는, 실제 시스템의 요구에 따라 대상 소프트웨어가 실행하는 기능에 적합하도록 설정될 수 있다. 예컨대, 대상 소프트웨어가 결합될 대상 구성 요소에 대응되는 실제 시스템의 구성 요소가, 실제 시스템 내에서 센서의 계측값을 읽어들여, 상기 계측값을 정해진 형식에 따라 출력하는 동작을 0.1초에 한 번 수행하도록 설정되어 있다면, 대상 소프트웨어의 실행 주기 역시 0.1초로 결정될 수 있다.
전술한 바와 같은 주기적 동작을 비롯한 다양한 동작의 설정을 위해, 소프트웨어 결합부(130)와 후술할 제어부(140)는 다양한 API(application programming interface)를 이용할 수 있다. 예컨대, 소프트웨어 결합부(130)는 SetTimer 라는 함수를 이용할 수 있는데, 소프트웨어 결합부(130)의 대상 소프트웨어의 호출 주기(동작 주기)의 설정은 바로 SetTimer를 이용하여 수행될 수 있다. 그 외에도, 후술할 OnTimer 함수가 이용될 수 있으며, 대상 소프트웨어 코드의 초기화 및 입력 변수, 출력 변수의 설정 등도 API를 이용하여 수행될 수 있다.
전술한 바와 같은 소프트웨어 결합부(130)의 동작이 완료되면, 제어부(140)는 검증 대상 소프트웨어를 동작시킴으로써, 검증 대상 소프트웨어에 대한 검증 결과를 도출할 수 있다(S140). 보다 구체적으로, 제어부(140)는 검증 대상 소프트웨어를 동기적으로, 혹은 비동기적으로 호출함으로써 검증 대상 소프트웨어를 동작시키고, 상기 동작에 따른 검증 결과를 생성할 수 있다.
제어부(140)는 검증 대상 소프트웨어의 호출을 위해, 앞서 설명한 OnTimer 함수를 이용할 수 있다. 제어부(140)는 위에서 설명한 바와 같이 설정된 호출 주기와 같은 값으로, SetTimer 함수를 이용하여 타이머(Timer)를 구동할 수 있다. 타이머의 값이 만료될 때마다, 제어부(140)는 OnTimer 함수를 호출하여, 검증 대상 소프트웨어를 구동시킬 수 있다. 제어부(140)는 OnTimer 함수를 다시 호출하여 소프트웨어를 구동시키기 위해 SetTimer 함수를 다시 호출하여 타이머를 재가동시킬 수 있으며, 타이머의 계속적 재가동에 의해 상기 호출 주기마다 대상 소프트웨어가 구동될 수 있다. 제어부(140)는 이와 같이 호출 주기마다 대상 소프트웨어를 호출하여 동작시키는, 대상 소프트웨어의 동기적 호출을 수행할 수 있다.
이와 달리, 제어부(140)는 대상 소프트웨어 외부로부터의, 혹은 대상 구성 요소 외부로부터의 트리거(trigger) 조건 만족에 의해, 대상 소프트웨어를 비동기적으로 호출할 수도 있다. 즉, 이러한 비동기적 호출은 상기 호출 주기와는 무관한 것으로서, 제어부(140)는 기 정해진 특정 이벤트가 발생했을 때 대상 소프트웨어를 호출하여 동작시킬 수 있다. 예컨대, 대상 구성 요소의 입력 변수 중 특정 입력 변수의 값에 변동이 발생할 경우, 제어부(140)는 대상 소프트웨어를 호출하여 동작시킬 수 있다.
대상 소프트웨어를 동작시키는 데 있어서, 제어부(140)는 기 정해진 API를 이용하여, 대상 구성 요소의 입력 변수를 통해 입력된 입력값을, 대상 소프트웨어의 입력 변수가 처리할 수 있는 형태로 변환하여 대상 소프트웨어로 입력할 수 있다. 대상 소프트웨어의 동작에 의해 대상 소프트웨어의 출력 변수가 값을 출력하면, 제어부(140)는 또 다른 API를 이용하여, 상기 출력된 값 역시 대상 구성 요소의 출력 변수가 처리할 수 있는 형태로 변환하여 대상 구성 요소의 출력값을 통해 출력되도록 할 수 있다.
제어부(140)는 대상 소프트웨어의 동작이 이루어질 때마다, 상기 대상 소프트웨어의 출력 변수의 값(혹은 대상 구성 요소의 출력 변수의 값)을 관찰함으로써, 대상 소프트웨어가 정상적으로 동작하고 있는지를 알 수 있다. 즉, 제어부(140)는 이와 같은 동작을 통해 대상 소프트웨어의 검증을 수행하고, 혹시 대상 소프트웨어가 정상적으로 동작하지 않는다면, 출력 변수의 값을 관찰함으로써 대상 소프트웨어에 어떠한 오류가 있는지를 규명할 수 있다.
지금까지 설명한 바와 같은 원리를 이용하여, 소프트웨어 검증 장치(100)는 검증 시스템에 포함된 각 가상 구성 요소에 포함된 소프트웨어를 동작시키는 방식으로 검증 시스템 전체에 대한 동작을 수행할 수 있다. 즉, 소프트웨어 검증 장치(100)는 실제 시스템을 모사한 가상의 검증 시스템을 동작시켜, 상기 검증 시스템에 포함된 각 가상 구성 요소에 포함된 소프트웨어들에 대한 테스트를 개별적으로, 혹은 통합적으로 테스트하는 것이 가능하다.
도 3a 및 3b는 본 발명의 일 실시예에 따른 소프트웨어 검증 방법의 적용 예시에 대해 설명하기 위한 도면이다. 도 3a 및 3b의 예시는 최근 관심의 대상이 되고 있는 자율주행 시스템에 대하여 본 발명의 일 실시예를 적용한 것이다.
도 3a은 실제 시스템으로서 자율주행 시스템(200)을 도시하고 있다. 자율주행 시스템(200)은 센서(210)와, 상기 센서에 의해 운행되는 자동차 부분인 플랫폼(220)을 포함할 수 있으며, 센서(210)에 의해 획득된 센싱 정보(211)를 처리하여 플랫폼(220)의 구동을 위한 신호를 출력하는 센서 제어부(미도시)를 더 포함할 수 있다. 이와 같은 자율주행 시스템(200)에 대한 구체적인 사항은 본 발명에서 직접적으로 다루고 있는 부분은 아니므로, 여기에서는 더 이상의 자세한 설명은 생략한다.
도 3b은 상기 자율주행 시스템(200)을 모사한 가상 시스템으로서, 자율주행 시스템(200)에 적용될 수 있는 소프트웨어를 검증하기 위한 자율주행 소프트웨어 검증 시스템(300)을 도시하고 있다. 자율주행 소프트웨어 검증 시스템(300)은, 자율주행 시스템(200)의 센서(210)와 플랫폼(220)에 각각 대응되는 가상 구성 요소인 센서부(310)와 플랫폼부(320)를 포함할 수 있다. 이에 더하여, 자율주행 소프트웨어 검증 시스템(300)은 자율주행 시스템(200)의 센서 제어부에 대응되는 가상 구성 요소로서 센서 통제 기능부(330), 센서 구동 통제부(340) 및 센서 표적 처리부(350)를 더 포함할 수 있다. 도 3b에서는 자율주행 소프트웨어 검증 시스템(300) 중에서도, 센서부(310)에 의해 획득된 센싱 값을 처리하여 플랫폼부(320)의 구동을 위한 신호를 출력하는 부분에 대해 자세히 설명하도록 한다.
센서 통제 기능부(330)는 플랫폼부(320)로부터 플랫폼 기동 정보와 센서 구동 명령을, 센서부(310)로부터 탐지 신호를 각각 수신할 수 있다. 센서 통제 기능부(330)는 플랫폼 기동 정보와 센서 구동 명령을 센서 구동 통제부(340)로, 탐지 신호를 센서 표적 처리부(350)로 각각 전달할 수 있다.
센서 구동 통제부(340)는 플랫폼 기동 정보와 센서 구동 명령을 입력 변수로 가질 수 있으며, 상태 정보를 출력 변수로 가질 수 있다. 센서 표적 처리부(350)는 탐지 신호를 입력 변수로 가질 수 있으며, 표적 정보를 출력 변수로 가질 수 있다. 상태 정보는 센서가 지향하는 방향 등 센서의 상태에 관한 정보이며, 표적 정보는 센서가 탐지한 표적의 방향 및 거리에 관한 정보이다.
이와 같은 가상 구성 요소의 기능 수행을 위해, 센서 구동 통제부(340)와 센서 표적 처리부(350)의 내부에는 대상 소프트웨어(341, 351)가 각각 결합될 수 있다. 대상 소프트웨어의 입력 변수는 가상 구성 요소의 입력 변수와, 대상 소프트웨어의 출력 변수는 가상 구성 요소의 출력 변수와 각각 연결될 수 있다. 내부의 대상 소프트웨어를 구동시킴으로써, 센서 구동 통제부(340)와는 상태 정보를, 센서 표적 처리부(350)는 표적 정보를 각각 출력하여 센서 통제 기능부(330)로 전달할 수 있다. 센서 통제 기능부(330)는 전달받은 상태 정보와 표적 정보를 센서 통제 기능부(330)로 출력할 수 있다. 물론 센서 구동 통제부(340)와 센서 표적 처리부(350)에 비해 상위의 가상 구성 요소인 센서 통제 기능부(330) 역시 소프트웨어(331)가 내부에 결합될 수 있다.
센서 구동 통제부(340)와 센서 표적 처리부(350)의 내부에 결합된 대상 소프트웨어(341, 351)는 일정 호출 주기에 따라, 혹은 특정 이벤트의 발생에 따라 호출되어 작동될 수 있다. 상기 대상 소프트웨어(341, 351)에 의해 각각 출력되는 상태 정보와 표적 정보의 값을 관찰하면 대상 소프트웨어(341, 351)의 정상 작동 여부를 검증할 수 있을 것이며, 더 나아가 자율주행 소프트웨어 검증 시스템(300) 전체에 대한 테스트를 통해 자율주행 시스템(200) 자체를 검증할 수 있을 것이다.
이처럼 지금까지 설명한 본 발명의 일 실시예에 따르면, 검증 대상인 소프트웨어 코드 내부를 수정하는 복잡한 절차가 방지될 수 있으며, 복잡한 구조를 갖는 실제 시스템에 적용될 소프트웨어도 효과적으로 검증할 수 있게 된다.
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 소프트웨어 검증 장치
110: 시스템 분석부
120: 검증 시스템 생성부
130: 소프트웨어 결합부
140: 제어부
200: 자율주행 시스템
300: 자율수행 소프트웨어 검증 시스템

Claims (16)

  1. 소프트웨어 검증 장치의 소프트웨어 검증 방법으로서,
    검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 단계;
    상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하되, 상기 대상 소프트웨어의 코드와 상기 일대일 대응되는 각 가상 구성 요소의 코드간이 서로 분리되게 검증 시스템을 구축하는 단계; 및
    상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 단계를 포함하고,
    상기 결합하는 단계는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결하는 단계를 포함하는
    소프트웨어 검증 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 결합하는 단계는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며,
    상기 방법은, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함하는
    소프트웨어 검증 방법.
  5. 제 1 항에 있어서,
    기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 단계를 더 포함하는
    소프트웨어 검증 방법.
  6. 제 1 항에 있어서,
    상기 결합하는 단계는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시키는 단계를 포함하는
    소프트웨어 검증 방법.
  7. 제 1 항에 있어서,
    상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 단계를 더 포함하는
    소프트웨어 검증 방법.
  8. 검증의 대상이 되는 대상 소프트웨어가 적용될 실제 시스템의 구성 요소와, 상기 구성 요소 간의 연결 인터페이스에 대해 분석하는 시스템 분석부;
    상기 분석 결과에 기초하여, 상기 실제 시스템의 각 구성 요소와 일대일 대응되는 각 가상 구성 요소와, 상기 실제 시스템의 각 인터페이스와 일대일 대응되는 각 가상 인터페이스를 포함하되, 상기 대상 소프트웨어의 코드와 상기 일대일 대응되는 각 가상 구성 요소의 코드간이 서로 분리되게 검증 시스템을 구축하는 검증 시스템 생성부; 및
    상기 각 가상 구성 요소 중, 상기 대상 소프트웨어가 동작시킬 구성 요소로 설정된 대상 구성 요소에, 상기 대상 소프트웨어를 결합하는 소프트웨어 결합부를 포함하고,
    상기 소프트웨어 결합부는, 상기 대상 구성 요소의 입력 변수에 상기 대상 소프트웨어의 코드의 입력 변수를 연결하고, 상기 대상 구성 요소의 출력 변수에 상기 대상 소프트웨어의 코드의 출력 변수를 연결하는
    소프트웨어 검증 장치.
  9. 삭제
  10. 삭제
  11. 제 8 항에 있어서,
    상기 소프트웨어 결합부는, 상기 대상 소프트웨어의 호출 주기를 설정하는 단계를 포함하며,
    상기 장치는, 상기 호출 주기마다 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함하는
    소프트웨어 검증 장치.
  12. 제 8 항에 있어서,
    기 정해진 이벤트가 상기 대상 구성 요소의 입력 변수를 통해 입력되면, 상기 대상 소프트웨어가, 상기 대상 소프트웨어의 입력 변수를 통해 입력된 입력값을 이용하여, 상기 대상 소프트웨어의 동작 결과에 따른 출력값을 상기 대상 소프트웨어의 출력 변수를 통해 출력하도록 하는 제어부를 더 포함하는
    소프트웨어 검증 장치.
  13. 제 8 항에 있어서,
    상기 소프트웨어 결합부는, 상기 검증 시스템에 포함된, 상기 대상 구성 요소 외의 다른 가상 구성 요소 각각에 대해, 대응되는 소프트웨어를 결합시키는
    소프트웨어 검증 장치.
  14. 제 8 항에 있어서,
    상기 대상 소프트웨어의 작동 시에 상기 대상 소프트웨어의 출력 변수가 출력하는 출력값에 기초하여 상기 대상 소프트웨어에 대한 검증 결과를 생성하는 제어부를 더 포함하는
    소프트웨어 검증 장치.
  15. 제 1 항, 제 4 항 내지 제 7 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는, 컴퓨터 판독 가능 기록매체에 저장된 프로그램.
  16. 제 1 항, 제 4 항 내지 제 7 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
KR1020180001251A 2018-01-04 2018-01-04 소프트웨어 검증 장치 및 방법 KR102128004B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180001251A KR102128004B1 (ko) 2018-01-04 2018-01-04 소프트웨어 검증 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180001251A KR102128004B1 (ko) 2018-01-04 2018-01-04 소프트웨어 검증 장치 및 방법

Publications (2)

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

Family

ID=67254152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180001251A KR102128004B1 (ko) 2018-01-04 2018-01-04 소프트웨어 검증 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102128004B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486879B (zh) * 2020-12-07 2024-04-12 博流智能科技(南京)有限公司 Uvm虚接口传递方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146487A1 (en) * 2008-12-05 2010-06-10 Electronics And Telecommunications Research Institute Apparatus and method for application testing of embedded system
KR101039874B1 (ko) * 2011-04-04 2011-06-09 (주)한국전산감리원 정보통신 통합플랫폼 테스트 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065144A (ko) 2007-12-17 2009-06-22 한국전자통신연구원 모바일 응용 소프트웨어의 그래픽 사용자 인터페이스테스트 시스템 및 방법
KR101470319B1 (ko) * 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
KR100952680B1 (ko) * 2008-09-01 2010-04-13 주식회사 케이티 이동통신 단말의 플랫폼 개발검증 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146487A1 (en) * 2008-12-05 2010-06-10 Electronics And Telecommunications Research Institute Apparatus and method for application testing of embedded system
KR101039874B1 (ko) * 2011-04-04 2011-06-09 (주)한국전산감리원 정보통신 통합플랫폼 테스트 시스템

Also Published As

Publication number Publication date
KR20190083512A (ko) 2019-07-12

Similar Documents

Publication Publication Date Title
JP6320328B2 (ja) 被制御システムの制御ソフトウェアをテストする方法およびシステム
US11522903B2 (en) Methods and systems for evaluating effects of cyber attacks on cyber-physical systems
US20140232657A1 (en) Method and system for integrating haptic feedback into portable electronic devices
CN109739656A (zh) 接口数据模拟方法、装置、存储介质和电子设备
WO2014030707A1 (ja) 自己監視機能を備えたコンピュータ、監視プログラム
CN109558313B (zh) 构建异常测试场景的方法及装置
JP6139386B2 (ja) プログラマブルコントローラ
CN106872879B (zh) 硬件无线调试方法、装置、通信芯片及电子设备
Ruchkin et al. Eliminating inter-domain vulnerabilities in cyber-physical systems: An analysis contracts approach
CN113282069A (zh) 底盘线控测试方法、装置、计算机设备和存储介质
KR101323937B1 (ko) Hmi 시뮬레이터 및 plc 시뮬레이터간의 통신 시뮬레이션 시스템
KR102128004B1 (ko) 소프트웨어 검증 장치 및 방법
KR100827269B1 (ko) 시뮬레이션을 이용한 센서 네트워크 디버깅 장치 및 방법
US20190120596A1 (en) Method and apparatus for launch control packet processing
CN117597669A (zh) 一种测试方法、系统及装置
US10311232B2 (en) Embedded systems monitoring systems and methods
CN111770074B (zh) 数据通路测试报文生成装置与方法
KR20150035151A (ko) 애플리케이션 성능 테스트를 위한 시스템, 단말장치, 검증장치, 방법 및 컴퓨터로 판독 가능한 기록 매체
CN111044826B (zh) 检测方法及检测系统
KR101913558B1 (ko) 시퀀스 다이어그램 기반의 통합개발장치
CN112788640A (zh) 通信设备测试方法、装置、存储介质及终端
JP5723675B2 (ja) シミュレーション装置及びシミュレーション方法
CN110546618A (zh) 开发辅助装置
CN117376229B (zh) 基于嵌入式设备的ftp文件系统软件交叉调试方法及系统
KR101127469B1 (ko) 네트워크 기반 로봇의 소프트웨어 개발 시스템 및 방법

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