KR101294708B1 - 행위 오류 분석 장치 및 그 방법 - Google Patents

행위 오류 분석 장치 및 그 방법 Download PDF

Info

Publication number
KR101294708B1
KR101294708B1 KR1020100028738A KR20100028738A KR101294708B1 KR 101294708 B1 KR101294708 B1 KR 101294708B1 KR 1020100028738 A KR1020100028738 A KR 1020100028738A KR 20100028738 A KR20100028738 A KR 20100028738A KR 101294708 B1 KR101294708 B1 KR 101294708B1
Authority
KR
South Korea
Prior art keywords
state
transformation
state machine
diagram
software design
Prior art date
Application number
KR1020100028738A
Other languages
English (en)
Other versions
KR20110109146A (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 KR1020100028738A priority Critical patent/KR101294708B1/ko
Priority to US12/912,429 priority patent/US8381145B2/en
Publication of KR20110109146A publication Critical patent/KR20110109146A/ko
Application granted granted Critical
Publication of KR101294708B1 publication Critical patent/KR101294708B1/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
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

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)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 소프트웨어 설계 모델의 검증 기법에 관한 것으로, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램 및 순차 다이어그램을 이용하여 SMT 변환 및 SMT 처리를 수행하여 만족 시 발생 가능한 행위 시나리오를 출력하고, 불만족 시 모순된 행위 시나리오를 검증함으로써, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 효과적으로 검증할 수 있는 것이다.

Description

행위 오류 분석 장치 및 그 방법{BEHAVIOR FALLACY ANALYSIS APPARATUS AND ITS METHOD}
본 발명은 소프트웨어 설계 모델에 대한 행위 오류 분석 기법에 관한 것으로, 더욱 상세하게는 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증하는데 적합한 행위 오류 분석 장치 및 그 방법에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2008-S-007-02, 과제명: 차량 전장용 통합제어 SW 플랫폼 개발].
잘 알려진 바와 같이, 모델 기반 개발 방법론이 대두하면서 소프트웨어 산업 전반에 걸쳐 개발 초기의 설계 모델의 중요성이 강조되고 있다.
이러한 설계 모델의 정확성은 전체 시스템 개발 비용과 시간을 좌우하는 중요한 변수가 되기 때문에, 작성된 설계 모델이 정확한 것인지 분석하는 것은 소프트웨어 개발에 매우 중요하다.
한편, UML(unified modeling language, 이하 'UML'이라 함)은 시스템 모델을 설계하는 표준 언어로서, UML 2.1.2 표준 문서(UML superstructure specification)에서는 시스템의 행위를 객체 내의 행위와 객체 간 행위로 규정되는데, 객체 내의 행위를 표현하는 다이어그램 중 대표적인 것이 상태 기계 다이어그램이고, 객체 간 행위를 표현하는 대표적인 다이어그램이 순차 다이어그램이다.
이러한 상태 기계 다이어그램과 순차 다이어그램이 함께 어우러져 소프트웨어 시스템의 행위를 나타내게 되는데, 상태 기계 다이어그램은 예를 들면, 행위적 상태 기계(behavioral state machine), 프로토콜 상태 기계(protocol state machine) 등을 포함하고, 이 중 프로토콜 상태 기계는 클래스(class)에 의해 발생되는 적법한 전이를 표현하며, 특정 행위적 구현에 구속되지 않고, 클래스(class), 인터페이스(interface), 포트(port) 등의 적법한 사용에 대해 기술하기 때문에, 객체의 생명 주기를 나타내거나 해당 객체 내 연산들의 호출 순서를 정의하기에 편리하며, 특히 객체 내의 연산들이 호출되기 위한 사전 조건과 호출된 후에 만족되어야 할 사후 조건을 기술할 수 있기 때문에, 소프트웨어의 초기 설계 단계에서 요구 사항들을 포함시키기에 매우 적합한 명세(specification) 기법이다.
또한 순차 다이어그램은 실제 현업에서 시스템의 시나리오를 기술하는데 가장 많이 사용되는 다이어그램이기 때문에, 소프트웨어 설계의 초기 단계에서 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성 분석은 매우 중요한 검증 과정이다.
이 때, 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성 분석을 엄격히 하기 위해서는 명확한 정형 명세를 이용하여 다이어그램을 표현하고, 해당 정형 언어에 적합한 정형 검증 기법을 사용하여야만 하는데, 모델 체킹(model checking)은 기술된 정형적 행위 명세의 모든 가능한 경우를 조사하는 기법으로, 현재 안전-위험 산업 분야에서 매우 활발하게 사용되는 기술이다.
이러한 모델 체킹의 단점으로 지적되는 상태 폭발 문제를 해결하기 위해 제안된 기술이 바운드 모델 체킹(BMC : bounded model checking)인데, 바운드 모델 체킹(BMC) 기술은 일정한 행위 바운드 내에서 시스템을 분석하여 오류 발견을 주 목적으로 하는 반증(falsification) 기법으로서, 시간의 흐름에 다른 시스템의 형상(예를 들면, 변수, 변수값 등)의 변화를 나타내는 시스템의 행위를 한정된 범위까지 추적하여 오류 존재 여부를 검증하는데, 시스템 속성을 부정하고, 시스템 명세와 함께 논리식으로 변환하되, 시스템 행위를 K 바운드로 한정하면 만족성 결정 프로시져는 K 바운드 내에서 에러가 존재할 경우 만족(satisfiability)이라는 결과와 함께 그 근거로 시스템의 오류 시나리오(즉, 모델)를 출력한다. 이러한 바운드는 순차 다이어그램에서 가능한 최대 메시지 전달 횟수를 계산하여 산정할 수 있다.
여기에서, 바운드 모델 체킹을 통해 오류가 발견되지 않았다고 해서 시스템의 오류가 없는 것은 아니며, 해당 바운드까지만 오류가 없는 것일 뿐이다. 또한, 해당 바운드 내에서 오류가 발견되었다면, 반드시 오류가 존재한다는 것을 의미한다.
이러한 바운드 모델 체킹(BMC)을 이용한 소프트웨어에 대한 모델 체킹과 같이 소프트웨어 설계 모델을 분석하고, 그 분석 결과의 신뢰성을 높이며, 모델 체킹을 자동화할 수 있는 모델 체킹 기법이 필요한 실정이다.
이에 따라, 본 발명은 바운드 모델 체킹(BMC)의 증명 엔진인 만족성 모듈로 이론(satisfiability modulo theories, 이하 'SMT'라 함)을 이용하여 소프트웨어 설계 모델을 검증할 수 있는 소프트웨어 설계 모델 검증 장치 및 그 방법을 제공하고자 한다.
또한, 본 발명은 프로토콜 상태기계 다이어그램과 순차 다이어그램의 일치성을 검증하여 소프트웨어 설계 모델의 객체 내부 행위와 객체 외부 행위를 비교함으로써, 행위 오류를 분석할 수 있는 소프트웨어 설계 모델 검증 장치 및 그 방법을 제공하고자 한다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시 예에 따르면, 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램과 순차 다이어그램에 대한 SMT 변환을 수행하는 SMT 변환 블록과, 상기 SMT 변환 블록으로부터 상기 프로토콜 상태 기계 다이어그램 및 순차 다이어그램에 대응하여 출력된 각각의 논리식을 이용한 SMT 처리를 통해 만족 여부를 판단하며, 상기 SMT 처리의 결과가 만족한 것으로 판단되면 발생 가능한 행위 시나리오를 출력하는 SMT 처리 블록을 포함하는 행위 오류 분석 장치가 제공된다.
또한, 상기 SMT 변환 블록은, 상기 SMT 처리의 결과가 불만족한 것으로 판단되면 상기 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 상기 SMT 변환을 수행하는 행위 오류 분석 장치가 제공된다.
또한, 상기 SMT 처리 블록은, 상기 SMT 처리의 결과가 불만족한 것으로 판단될 경우 상기 SMT 변환 블록으로부터 상기 프로토콜 상태 기계 다이어그램 및 역순차 다이어그램에 대응하여 출력된 각각의 논리식을 이용한 상기 SMT 처리를 통해 만족 여부를 판단하고, 만족할 경우 모순된 행위 시나리오를 출력하며, 불만족할 경우 상기 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력하는 행위 오류 분석 장치가 제공된다.
또한, 상기 SMT 변환 블록은, 상기 프로토콜 상태 기계 다이어그램에 대한 이벤트 변환, 큐 연산, 상태 변환 및 스텝 의미 변환을 통해 상기 SMT 변환을 수행하는 프로토콜 상태 기계 변환부와, 상기 순차 다이어그램 또는 역순차 다이어그램에 대한 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택 및 전이 관계에 따른 다음 상태 기술을 통해 상기 SMT 변환을 수행하는 순차 다이어그램 변환부를 포함하는 행위 오류 분석 장치가 제공된다.
또한, 상기 프로토콜 상태 기계 변환부는, 상기 프로토콜 상태 기계 다이어그램에 대해 이벤트 집합을 상태 기계가 가지는 이벤트의 종류를 나열하는 스칼라 타입으로 표현하는 방식으로 상기 이벤트 변환을 수행하는 행위 오류 분석 장치가 제공된다.
또한, 상기 프로토콜 상태 기계 변환부는, 상기 이벤트 변환을 수행한 후, 발생한 이벤트를 큐에 저장하도록 큐를 배열로 표현하는 방식으로 상기 큐 연산을 수행하는 행위 오류 분석 장치가 제공된다.
또한, 상기 프로토콜 상태 기계 변환부는, 상기 큐 연산을 수행한 후, 병행으로 펼쳐진 각 상태 기계에서 어떤 상태가 활성화되었는지 그 상태 집합으로 표현하는 방식으로 상기 상태 변환을 수행하는 행위 오류 분석 장치가 제공된다.
또한, 상기 프로토콜 상태 기계 변환부는, 상기 상태 변환을 수행한 후, 'STEP 0'의 스텝에서 상기 각 상태 기계와 상기 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계 초기 값으로 표현하며, 나머지 스텝은 'STEP 1'을 반복해서 표현하는 방식으로 상기 스텝 의미 변환을 수행하는 행위 오류 분석 장치가 제공된다.
또한, 상기 순차 다이어그램 변환부는, 상기 순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는 행위 오류 분석 장치가 제공된다.
또한, 상기 순차 다이어그램 변환부는, 상기 역순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는 행위 오류 분석 장치가 제공된다.
본 발명의 다른 실시 예에 따르면, 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램과 순차 다이어그램에 대한 SMT 변환을 수행하는 단계와, 상기 SMT 변환을 통해 상기 프로토콜 상태 기계 다이어그램 및 순차 다이어그램에 대응하여 출력된 각각의 논리식을 이용한 SMT 처리를 수행하여 만족 여부를 판단하는 단계와, 상기 SMT 처리의 결과가 만족한 것으로 판단되면 발생 가능한 행위 시나리오를 출력하는 단계를 포함하는 행위 오류 분석 방법이 제공된다.
또한, 상기 행위 오류 분석 방법은, 상기 SMT 처리의 결과가 불만족한 것으로 판단되면 상기 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 상기 SMT 변환을 수행하는 단계를 더 포함하는 행위 오류 분석 방법이 제공된다.
또한, 상기 행위 오류 분석 방법은, 상기 프로토콜 상태 기계 다이어그램 및 역순차 다이어그램에 대한 상기 SMT 변환에 따라 출력된 각각의 논리식을 이용한 상기 SMT 처리를 통해 만족 여부를 판단하고, 만족할 경우 모순된 행위 시나리오를 출력하며, 불만족할 경우 상기 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력하는 단계를 더 포함하는 행위 오류 분석 방법이 제공된다.
또한, 상기 SMT 변환은, 상기 프로토콜 상태 기계 다이어그램에 대한 이벤트 변환, 큐 연산, 상태 변환 및 스텝 의미 변환이 수행되고, 상기 순차 다이어그램 또는 역순차 다이어그램에 대한 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택 및 전이 관계에 따른 다음 상태 기술을 통해 수행되는 행위 오류 분석 방법이 제공된다.
또한, 상기 이벤트 변환은, 상기 프로토콜 상태 기계 다이어그램에 대해 이벤트 집합을 상태 기계가 가지는 이벤트의 종류를 나열하는 스칼라 타입으로 표현하는 방식으로 수행되는 행위 오류 분석 방법이 제공된다.
또한, 상기 큐 연산은, 상기 이벤트 변환을 수행한 후, 발생한 이벤트를 큐에 저장하도록 큐를 배열로 표현하는 방식으로 수행되는 행위 오류 분석 방법이 제공된다.
또한, 상기 상태 변환은, 상기 큐 연산을 수행한 후, 병행으로 펼쳐진 각 상태 기계에서 어떤 상태가 활성화되었는지 그 상태 집합으로 표현하는 방식으로 수행되는 행위 오류 분석 방법이 제공된다.
또한, 상기 스텝 의미 변환은, 상기 상태 변환을 수행한 후, 'STEP 0'의 스텝에서 상기 각 상태 기계와 상기 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계 초기 값으로 표현하며, 나머지 스텝은 'STEP 1'을 반복해서 표현하는 방식으로 수행되는 행위 오류 분석 방법이 제공된다.
또한, 상기 SMT 변환은, 상기 순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는 방식으로 수행되는 행위 오류 분석 방법이 제공된다.
또한, 상기 SMT 변환은, 상기 역순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는 방식으로 수행되는 행위 오류 분석 방법이 제공된다.
본 발명은, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램 및 순차 다이어그램을 이용하여 SMT 변환 및 SMT 처리를 수행하여 만족 시 발생 가능한 행위 시나리오를 출력하고, 불만족 시 모순된 행위 시나리오를 검증함으로써, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 효과적으로 검증할 수 있다.
도 1은 본 발명의 실시 예에 따라 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증하는데 적합한 행위 오류 분석 장치의 블록 구성도,
도 2는 본 발명의 실시 예에 따라 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램 또는 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 SMT 변환을 수행하는데 적합한 SMT 변환 블록의 구성도,
도 3은 본 발명의 일 실시 예에 따라 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 분석하는 과정을 도시한 플로우차트,
도 4는 본 발명의 다른 실시 예에 따라 소프트웨어 설계 모델에 대한 모순된 행위 시나리오를 검증하는 과정을 도시한 플로우차트.
본 발명은, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램 및 순차 다이어그램을 이용하여 SMT 변환 및 SMT 처리를 수행하여 만족 시 발생 가능한 행위 시나리오를 출력하고, 불만족 시 모순된 행위 시나리오를 검증함으로써, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증한다는 것이며, 이러한 기술적 수단을 통해 종래 기술에서의 문제점을 해결할 수 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명의 실시 예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시 예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시 예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예를 상세히 설명하기로 한다.
도 1은 본 발명의 실시 예에 따라 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증하는데 적합한 행위 오류 분석 장치의 블록 구성도로서, SMT 변환 블록(100), SMT 처리 블록(200) 등을 포함할 수 있다.
도 1을 참조하면, SMT 변환 블록(100)은 소프트웨어 설계 모델에 대한 예를 들면, 프로토콜 상태 기계 다이어그램, 순차 다이어그램, 역순차 다이어그램 등이 입력되면, SMT 변환하여 SMT 논리식으로 출력하는 것으로, 소프트웨어 설계 모델에 대한 분석 시 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램이 입력되면, 예를 들어 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행하여 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 출력한다.
또한, SMT 변환 블록(100)은 소프트웨어 설계 모델에 대한 분석 시 소프트웨어 설계 모델에 대한 순차 다이어그램이 입력되면, 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등을 포함하는 SMT 변환을 수행하여 순차 다이어그램에 대응하는 제 2 SMT 논리식을 출력한다.
한편, SMT 변환 블록(100)은 모순된 행위 시나리오 검증 시 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램이 입력되면, 예를 들어 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행하여 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 출력하고, 소프트웨어 설계 모델에 대한 역순차 다이어그램(즉, 순차 다이어그램의 역행위)이 입력되면, 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등을 포함하는 SMT 변환을 수행하여 역순차 다이어그램에 대응하는 제 3 SMT 논리식을 출력한다.
다음에, SMT 처리 블록(200)은 출력된 제 1 SMT 논리식 및 제 2 SMT 논리식을 이용하여 만족성을 증명하는 SMT 처리를 수행하거나 출력된 제 1 SMT 논리식 및 제 3 SMT 논리식을 이용하여 만족성을 증명하는 SMT 처리를 수행하는 것으로, 소프트웨어 설계 모델에 대한 분석 시 SMT 변환 블록(100)으로부터 출력된 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식과 순차 다이어그램에 대응하는 제 2 SMT 논리식을 이용하여 만족성을 증명하는 SMT 처리를 수행한 후, SMT 처리 결과가 만족(satisfaction)할 경우 소프트웨어 설계 모델에 대한 발생 가능한 행위 시나리오를 출력하고, SMT 처리 결과가 불만족(unsatisfaction)할 경우 모순된 행위 시나리오를 검증하도록 SMT 변환 블록(100)에 요청한다.
또한, SMT 처리 블록(200)은 모순된 행위 시나리오 검증 시 SMT 변환 블록(100)으로부터 출력된 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식과 역순차 다이어그램에 대응하는 제 3 SMT 논리식을 이용하여 만족성을 증명하는 SMT 처리를 수행한 후, SMT 처리 결과가 만족(satisfaction)할 경우 소프트웨어 설계 모델에 대한 모순된 행위 시나리오를 출력하고, SMT 처리 결과가 불만족(unsatisfaction)할 경우 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력한다.
따라서, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램 및 순차 다이어그램을 이용하여 SMT 변환 및 SMT 처리를 수행하여 만족 시 발생 가능한 행위 시나리오를 출력하고, 불만족 시 모순된 행위 시나리오를 검증함으로써, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증할 수 있다.
다음에, 상술한 바와 같은 구성을 갖는 행위 오류 분석 장치에서 소프트웨어 설계 모델의 분석 시 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램에 대한 SMT 변환을 수행하고, 모순된 행위 시나리오의 검증 시 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 SMT 변환을 수행하는 SMT 변환 블록에 대해 설명한다.
도 2는 본 발명의 실시 예에 따라 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램 또는 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 SMT 변환을 수행하는데 적합한 SMT 변환 블록의 구성도로서, SMT 변환 블록(100)은 프로토콜 상태 기계 변환부(102), 순차 다이어그램 변환부(104) 등을 포함할 수 있다.
도 2를 참조하면, 프로토콜 상태 기계 변환부(102)는 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램에 대한 SMT 변환을 수행하여 SMT 논리식으로 출력하는 것으로, 소프트웨어 설계 모델의 분석 또는 모순된 행위 시나리오의 검증 시 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램이 입력되면, 예를 들어 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행하여 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 출력한다.
여기에서, 프로토콜 상태 기계 다이어그램에 대한 SMT 변환을 수행하는 과정에 대해 상세히 설명하면, UML 상태 기계 다이어그램은 하렐의 상태도에 대한 객체지향적 확장이고, 프로토콜 상태 기계는 하렐의 상태도를 기반으로 하는 것으로, 하렐의 상태도에서는 시스템 내부의 이벤트 처리가 외부 환경의 변화보다 빠르게 진행된다는 동기화 가정을 갖기 때문에, 이벤트 큐가 필요하지 않지만, 본 발명에서의 UML에서 발생하는 이벤트는 모두 이벤트 큐에 저장되고, 저장된 이벤트가 디스패치 되어서 처리되도록 할 수 있으며, 동시에 발생할 수 없는 두 전이가 동시에 발생되려고 하는 상태를 전이의 충돌이라고 하는데, 특별한 계층 관계에 있는 두 전이가 충돌할 경우, 하렐의 상태도에서는 상위의 전이에 우선권을 주지만, 본 발명에서의 UML에서는 하위의 전이가 먼저 발생하도록 한다.
또한, 본 발명에서는 계층간 전이를 허용하지 않는데, 계층을 뛰어넘는 전이는 프로그램으로 볼 때, 'goto'에 해당하는 구문이기 때문에 대부분의 계층 간 전이 없이 동일한 의미를 갖도록 표현할 수 있고, 상태내의 진/출입 액션 등의 기술을 허용하지 않으며, 상태내의 액션은 자신의 상태로 돌아오는 재귀적인 전이로써 동일하게 표현할 수 있다. 여기에서, 프로토콜 상태 기계의 상태들은 'entry', 'exit', 'do activity' 액션을 가질 수 없고, 깊은 혹은 얕은 이력 상태를 가질 수 없으며, 프로토콜 상태 기계의 모든 전이들은 프로토콜 전이를 의미한다.
이러한 프로토콜 전이는 연산을 위한 적법한 전이를 명세(specification)하는 것으로, 프로토콜 상태 기계의 전이는 예를 들면, 선조건(가드), 트리거, 후조건 등의 정보를 가지며, 모든 프로토콜 전이는 0개 이상의 연산과 관련될 수 있다.
또한, 프로토콜 전이는 관련된 연산이 출발 상태와 초기 조건(가드)에서 인스턴스에게 호출될 수 있는 것을 명세하고, 전이의 끝에서, 최종 조건(사후조건)하에 도착 상태에 도달될 수 있으며, 프로토콜 상태 기계의 전이에는 액션이 존재하지 않는다.
이러한 상태에서 프로토콜 상태기계의 SMT 변환은 예를 들면, 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등의 과정을 통해 수행되는데, 첫째, 이벤트 변환에 대해 설명하면, 이벤트 집합은 스칼라(scalar) 타입인 'Event'로 표현하고, 이러한 스칼라 타입은 상태 기계가 가질 수 있는 이벤트의 종류를 나열한다. 여기에서, 이벤트 변수의 집합이 '{play, create, inc, ok, empty}'라면 '(define-type Event (scalar play create inc ok empty))'와 같이 변환될 수 있고, 변수가 'Event' 타입으로 선언 된다면, 변수는 그 타입의 값 중 하나를 가질 수 있다.
둘째, 큐 연산에 대해 설명하면, UML 상태 기계는 발생한 이벤트를 큐에 저장하기 때문에, 큐를 표현할 수 있어야 하는데, SMT 처리기에서는 큐를 직접적으로 지원하지 못하므로, 큐를 배열로써 표현해야 한다.
이러한 SMT에서의 배열은 하나의 함수처럼 처리될 수 있고, 큐를 나타내는 배열은 '(-> int Event)' 타입의 함수인데, 정수를 받아서 이벤트를 돌려줄 수 있다. 여기에서 정수는 인텍스로 생각할 수 있다.
그리고 큐를 다루는 연산은 큐에 이벤트를 삽입하는 'enQueue'와 큐에서 이벤트를 꺼내오는 'deQueue'가 있는데, 큐를 사용하기 위해서는 헤드(head)와 테일(tail)의 값을 보관하고 변화시켜야 하고, 이것은 전이의 발생으로 이벤트가 생성되거나 이벤트 큐에서 이벤트를 디스패치하는 경우에 따라 아래의 (1)와 같이 처리될 수 있다.
(1) : (define enQueue :: (-> (-> int Event) int Event (-> int Event))
(lambda (q:: (-> int Event) tail::int e::Event)
(update q (tail) e)))
(define deQueue :: (-> (-> int Event) int Event)
(lambda (q:: (-> int Event) head::int)
(q head)))
셋째, 상태 변환에 대해 설명하면, 상태 안에는 또 다른 상태 기계를 내포할 수 있는데, 병행으로 펼쳐진 상태 기계로 가정할 경우, 각 상태 기계는 어떤 상태가 활성화되었는지 그 상태 집합으로 나타낼 수 있다. 따라서 상태 기계는 상태들의 집합으로 아래의 (2)와 같이 선언될 수 있다.
(2) : (define-type Machine1 (scalar state0 state1 state2))
(define-type Machine2 (scalar state3 state4))
넷째, 스텝 의미 변환에 대해 설명하면, 스텝은 'STEP 0'로부터 시작되는데, 'STEP 0'에서는 각 상태 기계와 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계의 초기 값으로 아래의 (3)와 같이 준비할 수 있다.
(3) : ;; STEP 0
(define e_0 :: Event)
(define m1_0 :: Machine1)
(define m2_0 :: Machine2)
(assert (= m1_0 state0))
(assert (= m2_0 state3))
;; QUEUE
(define queue :: (-> int Event))
(define queue_0 :: (-> int Event))
(define head_0 :: int 0)
(define tail_0 :: int 0)
(assert (= queue_0 (enQueue queue tail_0 play)))
(assert (= e_0 (deQueue queue_0 head_0)))
그리고, 나머지 스텝은 'STEP 1'을 반복해서 나타낼 수 있는데, 먼저, 상태 다이어그램에 있는 각 상태 변수, 이벤트 변수를 아래의 (4)와 같이 정의한다.
(4) : ;; STEP 1 - declaration
(define e_1 :: Event)
(define m1_1 :: Machine1)
(define m2_1 :: Machine2)
이 후에 전이를 정의하는데, 전이는 정의된 프로토콜 상태 기계의 정형 의미를 좇아 트리거와 선조건(pre-condition)이 만족되고, 형상이 옳고, 전이 충돌이 없을 때, 논리식이 참이 되도록 각 전이에 대해서 아래의 (5)와 같이 정의할 수 있다.
(5) : ;; and trigger guard configuration conflict FREE
(define t1_1::bool (if (and (= e_0 play) (= m2_0 state3) (= m1_0 state0)) true false))
(define t2_1::bool (if (and (pre-condition) (= m2_0 state4) (= m1_0 state1)) true false))
또한, 상태 변수들의 값은 전이의 발생 여부에 의해서 아래의 (6)와 같이 결정될 수 있다. 다만, 해당 상태가 일반적인 상태라면, 자신의 상위 상태가 활성화 되지 않는다면(즉, /= m1_1 state1), 전이는 발생하지 않는다.
(6) : ;; STEP 1 - state (+reset)
(assert (= m2_1 (if (/= m1_1 state1) state3 (if t1_1 state4 (if t2_1 state3 m2_0)))))
다음에, 이벤트가 발생한 만큼 헤드와 테일을 나타내는 변수들을 수정한 후 다음번에 처리할 이벤트를 이벤트 큐에서 빼서 아래의 (7)과 같이 사용할 수 있다.
(7) : ;; STEP 1 - events
(define tail_1_1 :: int (if t2_1 (+ tail_0 1) tail_0 ))
(define queue_1_1 :: (-> int Event) (if t2_1
(enQueue queue_0 tail_1_1 inc) queue_0 ))
(define tail_1_2 :: int (if t3_1 (+ tail_1_1 1) tail_1_1))
(define queue_1_2 :: (-> int Event) (if t3_1
(enQueue queue_1_1 tail_1_2 ok) queue_1_1))
(define head_1 :: int (if (> tail_1_2 head_0) (+ head_0 1) head_0))
(assert (= e_1 (if (= head_1 head_0) empty (deQueue queue_1_2 head_1))))
마지막으로, 사후조건(post-condition)에 대한 처리는 해당 전이가 발생하면 만족하는 것으로 아래의 (8)와 같이 정의할 수 있다.
(8) : ;; STEP 1 - variables
(assert post-condition)
이와 같이, 소프트웨어 프로토콜 상태 기계 다이어그램에 대해 예를 들면, 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행하여 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 출력할 수 있다.
그리고, 순차 다이어그램 변환부(104)는 소프트웨어 설계 모델에 대한 순차 다이어그램 또는 역순차 다이어그램에 대한 SMT 변환을 수행하여 SMT 논리식으로 출력하는 것으로, 소프트웨어 설계 모델에 대한 분석 시 소프트웨어 설계 모델에 대한 순차 다이어그램이 입력되면, 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등을 포함하는 SMT 변환을 수행하여 순차 다이어그램에 대응하는 제 2 SMT 논리식을 출력한다.
또한, 순차 다이어그램 변환부(104)는 모순된 행위 시나리오의 검증 시 소프트웨어 설계 모델에 대한 역순차 다이어그램이 입력되면, 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등을 포함하는 SMT 변환을 수행하여 역순차 다이어그램에 대응하는 제 3 SMT 논리식을 출력한다.
예를 들면, 순차 다이어그램이 LTS(labeled transition system, 이하 'LTS'라 함)로 변환되고, LTS의 상태 집합이 {s0, s1}, 액션 집합이 {a1, a2, a3}이며, 원래 상태 s0에서 가능한 행위가 a1이라고 하면, 이 상태에서 역행위는 액선 a2, a3가 발생할 때, 가상의 에러 상태로 도달하도록 전이를 추가한 것을 의미한다.
여기에서, 순차 다이어그램 또는 역순차 다이어그램에 대한 SMT 변환을 수행하는 과정에 대해 상세히 설명하면, 순차 다이어그램에서 가장 핵심적인 요소는 생명선간에 송수신되는 메시지이기 때문에, 메시지의 발생은 송신 이벤트가 발생하는 생명선인 송신자와 수신 이벤트가 발생하는 수신자 그리고 메시지로 구성될 수 있다.
여기에서, 메시지 발생의 집합은 유한 집합 'O={o1, …,on}'이고, 하나의 메시지 'oi∈O'는 3개의 튜플(즉, si,mi,ri)로 구성될 수 있으며, 'L'이 생명선의 유한 집합이고, 'g∈Gate'는 게이트를 나타낼 때, 'si, ri∈L∪{g}'가 되며, 함수 'sender, receiver : O→L∪Gate'는 메시지 발생을 받아서 그 메시지를 보내고 받는 생명선을 돌려주는 함수를 의미한다. 즉, 'sender(oi)=si'이고 'receiver(oi)=ri'로 나타낼 수 있다.
또한, 본 발명에서 순차 다이어그램에 사용되는 메시지는 연산자 호출만을 다루기 때문에, 메시지 스크립트 'mi∈CALL'은 연산 호출의 집합이 되고, 'message : O→CALL'은 메시지 발생을 받아서 해당 메시지를 돌려주는 함수를 의미한다.
한편, 상호작용의 결합을 나타내는 'F={f1, …, fn}'는 상호작용 연산자와 피연산자 그리고 가드로 구성된 유한 집합을 의미하는데, 하나의 상호작용 'fi∈2Operand×Operator'이고, 'Operand⊆Sd'는 순차 다이어그램의 부분 집합이며, '2Operand'는 피연산자의 멱집합을 의미한다.
또한, 'guard: Operand → Guard∪{ε}'는 피연산자가 가지고 있는 가드를 돌려주는 함수를 의미하는데, 'Guard'는 UML 제약 조건으로 나타낼 수 있는 수식의 집합을 의미하고, 'Operator={opt, alt, ref, par, seq, loop}'는 상호 작용 연산자들의 집합을 의미하며, 각 연산자들은 UML 표준 문서의 메타 모델을 참조한 것으로, 순차 흐름(seq), 선택적인 흐름(opt), 반복적인 흐름(loop), 흐름의 대안(alt), 흐름의 참조(ref), 병행 흐름(par) 등을 정의한 것이다.
한편, 순차 다이어그램 'Sd = {sd0, …, sdn}'는 상호작용의 유한 집합으로, 상호작용 'sdi = (F, Oi,≤i)'는 3개의 튜플로 구성되는데, 'Oi'는 'sdi'에 속한 이벤트 발생의 집합을 의미하고, '≤i⊆(Oi∪F)×(Oi∪F)'는 메시지 발생과 상호작용의 결합의 전체 순서를 의미한다.
여기에서, UML 표준 명세에서는 이벤트 발생의 연속을 트레이스(trace)라고 하고, 트레이스 시멘틱스는 상호 작용의 의미를 기술하기에 적합하며 보편적인 방법이라고 밝히고 있으며, 둘 이상의 트레이스를 결합할 때, 인터리빙 시멘틱스를 적용한다고 기술하고 있어 순차 다이어그램의 의미는 SMT로 변환될 수 있다.
한편, 순차 다이어그램의 의미는 이벤트 발생의 연속이기 때문에, LTS으로 표현될 수 있는데, LTS는 예를 들면, 상태들의 집합, 액션들의 집합, 초기 상태, 전이 관계 등으로 구성될 수 있고, 상태 집합과 액션의 집합이 아래의 (9)와 같이 SMT로 표현될 수 있다. 여기에서, (9)에 표현된 상태집합은 '{s0, s1, s2, s3, s4, s5, s6, s7, s8}'이고, 액션 집합은 '{play, create, assign, ok, non}'이다.
(9) : (define-type _State (scalar s0 s1 s2 s3 s4 s5 s6 s7 s8))
(define-type _Action (scalar play create assign ok non))
이에 따라, 순차 다이어그램에 대한 SMT 변환에 대해 설명하면, 첫째, 초기 상태가 선택되어야 하는데, 초기 상태가 s0일 때 아래의 (10)와 같이 나타낼 수 있다.
(10) : (define _State_1 :: _State s0)
둘째, 각 상태에서 발생 가능한 액션들을 기술하는데, 발생 가능한 액션은 상태와 액션을 받아서 불리언 값을 돌려주는 함수로 정의할 수 있고, 이 함수는 곧 상태와 액션의 관계를 의미한다. 아래의 (11)는 s0 상태에서 play 액션이 가능하고, 상태 s5에서는 create와 ok 액션이 가능하다는 것을 나타낸 것이다.
(11) : (define enable_1 :: (->_State _Action bool))
(assert (= (enable_1 s0 play) true))
(assert (= (enable_1 s1 create) true))
(assert (= (enable_1 s2 assign) true))
(assert (= (enable_1 s3 create) true))
(assert (= (enable_1 s4 assign) true))
(assert (= (enable_1 s5 create) true))
(assert (= (enable_1 s5 ok) true))
(assert (= (enable_1 s6 assign) true))
(assert (= (enable_1 s7 ok) true))
셋째, 실행되는 액션을 선택하는데, 실행되는 액션을 _Action 변수로 선언하고 초기 상태로 선언한 상태 변수 _State_1에서 발생 가능한 액션이 매핑 되도록 아래의 (12)와 같이 기술할 수 있다.
(12) : (define _Action_1 :: _Action)
(assert (= (enable_1 _State_1 _Action_1) true))
넷째, 전이 관계에 의해서 다음 상태를 기술하는데, 아래의 (13)는 다음 상태 변수 _State_2를 정의하고, 이 변수가 s1의 값을 가지려면, 이전 상태 _State_1이 s0이고 _Action_1이 play의 값을 가져야 한다는 것을 나타낸 것이다.
(13) : (define _State_2 :: _State)
(assert (=> (=_State_2 s1) (and (=_State_1 s0) (_Action_1 play)))
(assert (=> (=_State_2 s8) (or (and (=_State_1 s5) (_Action_1 ok)) (and (=_State_1 s7) (_Action_1 ok)))))
여기에서, 현재 발생한 액션과 전이 관계에 의해서 다음 상태가 결정되는데, 다음 상태가 배정되었다는 것은 그 상태가 되기 위한 조건이 만족되어야 하는 것을 의미하며, 상기한 (13)은 이것을 SMT로 나타낸 것이고, 예를 들어 두 번째 assert 구문은 다음 상태가 s8이 될 수 있는 경우가 상태 s5에서 액션 ok이 발생하던지 아니면 상태 s7에서 액션 ok가 발생하는 경우를 의미한다.
따라서, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램이 입력되면, SMT 변환을 수행하여 SMT 논리식으로 출력하고, 순차 다이어그램 및 역순차 다이어그램이 입력되면, SMT 변환을 수행하여 SMT 논리식으로 출력함으로써, 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증하기 위한 SMT 논리식을 효과적으로 출력할 수 있다.
다음에, 상술한 바와 같은 구성을 갖는 행위 오류 분석 장치에서 소프트웨어 설계 모델의 분석 모드에서 프로토콜 상태 기계 다이어그램 및 순차 다이어그램이 입력되면, 프로토콜 상태 기계 다이어그램 및 순차 다이어그램에 대한 SMT 변환을 수행하여 각각의 SMT 논리식을 출력하고, 출력된 각각의 SMT 논리식에 대한 SMT 처리를 통해 각 SMT 논리식이 만족하는지의 여부를 판단한 후, 만족될 경우에 발생 가능한 행위 시나리오를 출력하는 과정에 대해 설명한다.
도 3은 본 발명의 일 실시 예에 따라 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 분석하는 과정을 도시한 플로우차트이다.
도 3을 참조하면, 행위 오류 분석 장치의 소프트웨어 설계 모델 분석 모드에서(단계302), SMT 변환 블록(100)에 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램이 각각 입력된다(단계304).
그리고, SMT 변환 블록(100)의 프로토콜 상태 기계 변환부(102)에서는 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램이 입력되면, 예를 들어 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행한다(단계306). 이에 따라, 프로토콜 상태 기계 변환부(102)에서는 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 SMT 처리 블록(200)으로 출력한다.
여기에서, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램의 SMT 변환은 예를 들면, 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등의 과정을 통해 수행되는데, 이벤트 변환은 이벤트 집합을 상태 기계가 가질 수 있는 이벤트의 종류를 나열하는 스칼라(scalar) 타입인 'Event'로 표현하는 방식으로 수행될 수 있다.
그리고, 큐 연산의 경우 UML 상태 기계는 발생한 이벤트를 큐에 저장하기 때문에, 큐를 배열로 표현하는 방식으로 수행될 수 있다. 이러한 SMT에서의 배열은 하나의 함수처럼 처리될 수 있고, 큐를 다루는 연산은 큐에 이벤트를 삽입하는 'enQueue'와 큐에서 이벤트를 꺼내오는 'deQueue'가 있는데, 큐를 사용하기 위해서는 헤드(head)와 테일(tail)의 값을 보관하고 변화시켜야 하고, 이것은 전이의 발생으로 이벤트가 생성되거나 이벤트 큐에서 이벤트를 디스패치하는 경우에 따라 각각 처리될 수 있다.
또한, 상태 변환의 경우 상태 안에는 또 다른 상태 기계를 내포할 수 있는데, 병행으로 펼쳐진 상태 기계로 가정할 경우, 각 상태 기계는 어떤 상태가 활성화되었는지 그 상태 집합으로 표현하는 방식으로 수행될 수 있다. 따라서 상태 기계는 상태들의 집합으로 상기한 (2)와 같이 선언될 수 있다.
한편, 스텝 의미 변환의 경우 스텝은 'STEP 0'로부터 시작되는데, 'STEP 0'에서는 각 상태 기계와 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계의 초기 값으로 표현하며, 나머지 스텝은 'STEP 1'을 반복해서 표현하는 방식으로 수행될 수 있다.
이 후에, 정의된 프로토콜 상태 기계의 정형 의미를 좇아 트리거와 선조건(pre-condition)이 만족되고, 형상이 옳고, 전이 충돌이 없을 때, 논리식이 참이 되도록 각 전이를 정의하고, 상태 변수들의 값은 전이의 발생 여부에 따라 결정될 수 있으며, 사후조건(post-condition)에 대한 처리는 해당 전이가 발생하면 만족하는 것으로 정의할 수 있다.
이와 같이, 소프트웨어 프로토콜 상태 기계 다이어그램에 대해 예를 들면, 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행하여 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 출력할 수 있다.
또한, SMT 변환 블록(100)의 순차 다이어그램 변환부(104)에서는 소프트웨어 설계 모델에 대한 순차 다이어그램이 입력되면, 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등을 포함하는 SMT 변환을 수행한다(단계308). 이에 따라, 순차 다이어그램 변환부(104)에서는 순차 다이어그램에 대응하는 제 2 SMT 논리식을 SMT 처리 블록(200)으로 출력한다.
여기에서, 소프트웨어 설계 모델의 순차 다이어그램에 대한 SMT 변환은 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등의 과정을 통해 수행되는데, 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택할 수 있다. 여기에서, 실행되는 액션을 _Action 변수로 선언하고, 초기 상태로 선언한 상태 변수 _State_1에서 발생 가능한 액션이 매핑 되도록 기술할 수 있다.
그리고, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 전이 관계에 의해서 다음 상태를 결정할 수 있다. 여기에서, 다음 상태가 배정되었다는 것은 그 상태가 되기 위한 조건이 만족되어야 하는 것을 의미하며, 상기한 (13)은 이것을 SMT로 나타낸 것이고, 예를 들어 두 번째 assert 구문은 다음 상태가 s8이 될 수 있는 경우가 상태 s5에서 액션 ok이 발생하던지 아니면 상태 s7에서 액션 ok가 발생하는 경우를 의미한다.
다음에, SMT 처리 블록(200)에서는 SMT 변환 블록(100)으로부터 출력된 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식과 순차 다이어그램에 대응하는 제 2 SMT 논리식을 이용하여 만족성을 증명하는 SMT 처리를 수행한다(단계310).
한편, SMT 처리 블록(200)에서는 단계310의 SMT 처리 결과가 만족(satisfaction)하는지를 체크한다(단계312).
상기 단계(312)에서의 체크 결과, 단계310의 SMT 처리 결과가 만족할 경우 SMT 처리 블록(200)에서는 소프트웨어 설계 모델에 대한 발생 가능한 행위 시나리오를 출력한다(단계314).
한편, 상기 단계(312)에서의 체크 결과, 단계310의 SMT 처리 결과가 불만족(unsatisfaction)할 경우 SMT 처리 블록(200)에서는 모순된 행위 시나리오를 검증하도록 SMT 변환 블록(100)에 요청한다(단계316).
따라서, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램 및 순차 다이어그램을 이용하여 SMT 변환 및 SMT 처리를 수행하여 만족 시 발생 가능한 행위 시나리오를 출력하고, 불만족 시 모순된 행위 시나리오를 검증함으로써, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증할 수 있다.
다음에, 상술한 바와 같은 소프트웨어 설계 모델에 대한 분석 모드에서 각 SMT 논리식이 불만족할 경우 프로토콜 상태 기계 다이어그램 및 역순차 다이어그램에 대한 SMT 변환을 수행하여 각각의 SMT 논리식을 출력하고, 출력된 각각의 SMT 논리식에 대한 SMT 처리를 통해 각 SMT 논리식이 만족하는지의 여부를 판단한 후, 만족될 경우에 모순된 행위 시나리오를 출력하는 과정에 대해 설명한다.
도 4는 본 발명의 다른 실시 예에 따라 소프트웨어 설계 모델에 대한 모순된 행위 시나리오를 검증하는 과정을 도시한 플로우차트이다.
도 4를 참조하면, 행위 오류 분석 장치의 모순된 행위 시나리오 검증 모드에서(단계402), SMT 변환 블록(100)에 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 역순차 다이어그램이 각각 입력된다(단계404).
그리고, SMT 변환 블록(100)의 프로토콜 상태 기계 변환부(102)에서는 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램이 입력되면, 예를 들어 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행한다(단계406). 이에 따라, 프로토콜 상태 기계 변환부(102)에서는 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 SMT 처리 블록(200)으로 출력한다.
여기에서, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램의 SMT 변환은 예를 들면, 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등의 과정을 통해 수행되는데, 이벤트 변환은 이벤트 집합을 상태 기계가 가질 수 있는 이벤트의 종류를 나열하는 스칼라(scalar) 타입인 'Event'로 표현하는 방식으로 수행될 수 있다.
그리고, 큐 연산의 경우 UML 상태 기계는 발생한 이벤트를 큐에 저장하기 때문에, 큐를 배열로 표현하는 방식으로 수행될 수 있다. 이러한 SMT에서의 배열은 하나의 함수처럼 처리될 수 있고, 큐를 다루는 연산은 큐에 이벤트를 삽입하는 'enQueue'와 큐에서 이벤트를 꺼내오는 'deQueue'가 있는데, 큐를 사용하기 위해서는 헤드(head)와 테일(tail)의 값을 보관하고 변화시켜야 하고, 이것은 전이의 발생으로 이벤트가 생성되거나 이벤트 큐에서 이벤트를 디스패치하는 경우에 따라 각각 처리될 수 있다.
또한, 상태 변환의 경우 상태 안에는 또 다른 상태 기계를 내포할 수 있는데, 병행으로 펼쳐진 상태 기계로 가정할 경우, 각 상태 기계는 어떤 상태가 활성화되었는지 그 상태 집합으로 표현하는 방식으로 수행될 수 있다. 따라서 상태 기계는 상태들의 집합으로 상기한 (2)와 같이 선언될 수 있다.
한편, 스텝 의미 변환의 경우 스텝은 'STEP 0'로부터 시작되는데, 'STEP 0'에서는 각 상태 기계와 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계의 초기 값으로 표현하고, 나머지 스텝은 'STEP 1'을 반복해서 표현하는 방식으로 수행될 수 있다.
이 후에, 정의된 프로토콜 상태 기계의 정형 의미를 좇아 트리거와 선조건(pre-condition)이 만족되고, 형상이 옳고, 전이 충돌이 없을 때, 논리식이 참이 되도록 각 전이를 정의하고, 상태 변수들의 값은 전이의 발생 여부에 따라 결정될 수 있으며, 사후조건(post-condition)에 대한 처리는 해당 전이가 발생하면 만족하는 것으로 정의할 수 있다.
이와 같이, 소프트웨어 프로토콜 상태 기계 다이어그램에 대해 예를 들면, 이벤트 변환, 큐 연산, 상태 변환, 스텝 의미 변환 등을 포함하는 SMT 변환을 수행하여 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식을 출력할 수 있다.
또한, SMT 변환 블록(100)의 순차 다이어그램 변환부(104)에서는 소프트웨어 설계 모델에 대한 역순차 다이어그램이 입력되면, 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등을 포함하는 SMT 변환을 수행한다(단계408). 이에 따라, 순차 다이어그램 변환부(104)에서는 역순차 다이어그램에 대응하는 제 3 SMT 논리식을 SMT 처리 블록(200)으로 출력한다.
예를 들면, 순차 다이어그램이 LTS(labeled transition system, 이하 'LTS'라 함)로 변환되고, LTS의 상태 집합이 {s0, s1}, 액션 집합이 {a1, a2, a3}이며, 원래 상태 s0에서 가능한 행위가 a1이라고 하면, 이 상태에서 역행위는 액선 a2, a3가 발생할 때, 가상의 에러 상태로 도달하도록 전이를 추가한 것을 의미한다.
여기에서, 소프트웨어 설계 모델의 역순차 다이어그램에 대한 SMT 변환은 예를 들어 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택, 전이 관계에 따른 다음 상태 기술 등의 과정을 통해 수행되는데, 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택할 수 있다. 여기에서, 실행되는 액션을 _Action 변수로 선언하고, 초기 상태로 선언한 상태 변수 _State_1에서 발생 가능한 액션이 매핑 되도록 기술할 수 있다.
그리고, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 전이 관계에 의해서 다음 상태를 결정할 수 있다. 여기에서, 다음 상태가 배정되었다는 것은 그 상태가 되기 위한 조건이 만족되어야 하는 것을 의미하며, 상기한 (13)은 이것을 SMT로 나타낸 것이고, 예를 들어 두 번째 assert 구문은 다음 상태가 s8이 될 수 있는 경우가 상태 s5에서 액션 ok이 발생하던지 아니면 상태 s7에서 액션 ok가 발생하는 경우를 의미한다.
다음에, SMT 처리 블록(200)에서는 SMT 변환 블록(100)으로부터 출력된 프로토콜 상태 기계 다이어그램에 대응하는 제 1 SMT 논리식과 역순차 다이어그램에 대응하는 제 3 SMT 논리식을 이용하여 만족성을 증명하는 SMT 처리를 수행한다(단계410).
한편, SMT 처리 블록(200)에서는 단계410의 SMT 처리 결과가 만족(satisfaction)하는지를 체크한다(단계412).
상기 단계(412)에서의 체크 결과, 단계410의 SMT 처리 결과가 만족할 경우 SMT 처리 블록(200)에서는 소프트웨어 설계 모델에 대한 모순된 행위 시나리오를 출력한다(단계414).
한편, 상기 단계(412)에서의 체크 결과, 단계410의 SMT 처리 결과가 불만족(unsatisfaction)할 경우 SMT 처리 블록(200)에서는 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력한다(단계416).
따라서, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램 및 역순차 다이어그램을 이용하여 SMT 변환 및 SMT 처리를 수행하여 만족 시 모순된 행위 시나리오를 출력하고, 불만족 시 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력함으로써, 소프트웨어 설계 모델에 대한 프로토콜 상태 기계 다이어그램과 순차 다이어그램의 일치성을 검증할 수 있다.
본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독할 수 있는 매체에 기록될 수 있는데, 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있고, 이러한 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
그리고, 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
이러한 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있고, 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상의 설명에서는 본 발명의 다양한 실시 예들을 제시하여 설명하였으나 본 발명이 반드시 이에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능함을 쉽게 알 수 있을 것이다.
100 : SMT 변환 블록 102 : 프로토콜 상태 기계 변환부
104 : 순차 다이어그램 변환부 200 : SMT 처리 블록

Claims (20)

  1. 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램 및 순차 다이어그램 각각에 대해서 바운드 모델 체킹(Bounded Model Checking, BMC)을 증명하기 위한 만족성 모듈로 이론(Satisfiability Modulo Theories, SMT) 변환을 수행하여 각각의 논리식을 출력하는 만족성 모듈로 이론 변환 블록과,
    상기 만족성 모듈로 이론 변환 블록으로부터 출력되는 각각의 논리식에 대한 만족 여부를 판단하고, 상기 각각의 논리식이 만족인 것으로 판단되면 발생 가능한 행위 시나리오를 출력하는 만족성 모듈로 이론 처리 블록을 포함하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  2. 제 1 항에 있어서,
    상기 만족성 모듈로 이론 처리 블록은, 상기 만족성 모듈로 이론 변환 블록으로부터 출력되는 각각의 논리식이 불만족인 것으로 판단되면 상기 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 상기 만족성 모듈로 이론 변환을 수행하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  3. 제 2 항에 있어서,
    상기 만족성 모듈로 이론 처리 블록은, 상기 만족성 모듈로 이론 변환 블록으로부터 출력되는 각각의 논리식이 불만족한 것으로 판단되면 상기 만족성 모듈로 이론 변환 블록으로부터 상기 프로토콜 상태 기계 다이어그램 및 역순차 다이어그램에 대응하여 출력된 각각의 논리식으로부터 만족 여부를 판단하고, 만족할 경우 모순된 행위 시나리오를 출력하며, 불만족할 경우 상기 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 만족성 모듈로 이론 변환 블록은,
    상기 프로토콜 상태 기계 다이어그램에 대한 이벤트 변환, 큐 연산, 상태 변환 및 스텝 의미 변환을 통해 상기 만족성 모듈로 이론 변환을 수행하는 프로토콜 상태 기계 변환부와,
    상기 순차 다이어그램 또는 역순차 다이어그램에 대한 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택 및 전이 관계에 따른 다음 상태 기술을 통해 상기 만족성 모듈로 이론 변환을 수행하는 순차 다이어그램 변환부를 포함하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  5. 제 4 항에 있어서,
    상기 프로토콜 상태 기계 변환부는, 상기 프로토콜 상태 기계 다이어그램에 대해 이벤트 집합을 상태 기계가 가지는 이벤트의 종류를 나열하는 스칼라(scalar) 타입으로 표현하는 방식으로 상기 이벤트 변환을 수행하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  6. 제 5 항에 있어서,
    상기 프로토콜 상태 기계 변환부는, 상기 이벤트 변환을 수행한 후, 발생한 이벤트를 큐에 저장하도록 큐를 배열로 표현하는 방식으로 상기 큐 연산을 수행하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  7. 제 6 항에 있어서,
    상기 프로토콜 상태 기계 변환부는, 상기 큐 연산을 수행한 후, 병행으로 펼쳐진 각 상태 기계에서 어떤 상태가 활성화되었는지 그 상태 집합으로 표현하는 방식으로 상기 상태 변환을 수행하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  8. 제 7 항에 있어서,
    상기 프로토콜 상태 기계 변환부는, 상기 상태 변환을 수행한 후, 'STEP 0'의 스텝에서 상기 각 상태 기계와 상기 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계 초기 값으로 표현하며, 나머지 스텝은 'STEP 1'을 반복해서 표현하는 방식으로 상기 스텝 의미 변환을 수행하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  9. 제 4 항에 있어서,
    상기 순차 다이어그램 변환부는, 상기 순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  10. 제 4 항에 있어서,
    상기 순차 다이어그램 변환부는, 상기 역순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 장치.
  11. 소프트웨어 설계 모델의 프로토콜 상태 기계 다이어그램 및 순차 다이어그램 각각에 대해서 바운드 모델 체킹을 증명하기 위한 만족성 모듈로 이론 변환을 수행하여 각각의 논리식을 출력하는 단계와,
    출력되는 상기 각각의 논리식에 대한 만족 여부를 판단하는 단계와,
    상기 각각의 논리식이 만족한 것으로 판단되면 발생 가능한 행위 시나리오를 출력하는 단계를 포함하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  12. 제 11 항에 있어서,
    상기 행위 오류 분석 방법은, 상기 각각의 논리식이 불만족한 것으로 판단되면 상기 프로토콜 상태 기계 다이어그램과 역순차 다이어그램에 대한 상기 만족성 모듈로 이론 변환을 수행하는 단계를 더 포함하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  13. 제 12 항에 있어서,
    상기 행위 오류 분석 방법은, 상기 프로토콜 상태 기계 다이어그램 및 역순차 다이어그램에 대한 상기 만족성 모듈로 이론 변환에 따라 출력된 각각의 논리식을 이용한 만족 여부를 판단하고, 만족할 경우 모순된 행위 시나리오를 출력하며, 불만족할 경우 상기 프로토콜 상태 기계 다이어그램의 내부 모순 결과를 출력하는 단계를 더 포함하는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  14. 제 12 항 또는 제 13 항에 있어서,
    상기 만족성 모듈로 이론 변환은, 상기 프로토콜 상태 기계 다이어그램에 대한 이벤트 변환, 큐 연산, 상태 변환 및 스텝 의미 변환이 수행되고, 상기 순차 다이어그램 또는 역순차 다이어그램에 대한 초기 상태 선택, 발생 가능한 액션 기술, 실행 액션 선택 및 전이 관계에 따른 다음 상태 기술을 통해 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  15. 제 14 항에 있어서,
    상기 이벤트 변환은, 상기 프로토콜 상태 기계 다이어그램에 대해 이벤트 집합을 상태 기계가 가지는 이벤트의 종류를 나열하는 스칼라(scalar) 타입으로 표현하는 방식으로 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  16. 제 15 항에 있어서,
    상기 큐 연산은, 상기 이벤트 변환을 수행한 후, 발생한 이벤트를 큐에 저장하도록 큐를 배열로 표현하는 방식으로 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  17. 제 16 항에 있어서,
    상기 상태 변환은, 상기 큐 연산을 수행한 후, 병행으로 펼쳐진 각 상태 기계에서 어떤 상태가 활성화되었는지 그 상태 집합으로 표현하는 방식으로 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  18. 제 17 항에 있어서,
    상기 스텝 의미 변환은, 상기 상태 변환을 수행한 후, 'STEP 0'의 스텝에서 상기 각 상태 기계와 상기 이벤트의 초기 값을 설정하고, 이벤트 큐를 상태 기계 초기 값으로 표현하며, 나머지 스텝은 'STEP 1'을 반복해서 표현하는 방식으로 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  19. 제 14 항에 있어서,
    상기 만족성 모듈로 이론 변환은, 상기 순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는 방식으로 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
  20. 제 14 항에 있어서,
    상기 만족성 모듈로 이론 변환은, 상기 역순차 다이어그램에 대한 초기 상태를 선택하고, 각 상태에서 발생 가능한 액션들을 기술하며, 실행되는 액션을 선택한 후에, 전이 관계에 따라 다음 상태를 기술하고, 현재 발생한 액션과 상기 전이 관계에 의해서 다음 상태를 결정하는 방식으로 수행되는
    소프트웨어 설계 모델에 대한 행위 오류 분석 방법.
KR1020100028738A 2010-03-30 2010-03-30 행위 오류 분석 장치 및 그 방법 KR101294708B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100028738A KR101294708B1 (ko) 2010-03-30 2010-03-30 행위 오류 분석 장치 및 그 방법
US12/912,429 US8381145B2 (en) 2010-03-30 2010-10-26 Method and apparatus for analyzing fault behavior of a software design model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100028738A KR101294708B1 (ko) 2010-03-30 2010-03-30 행위 오류 분석 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20110109146A KR20110109146A (ko) 2011-10-06
KR101294708B1 true KR101294708B1 (ko) 2013-08-08

Family

ID=44720235

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100028738A KR101294708B1 (ko) 2010-03-30 2010-03-30 행위 오류 분석 장치 및 그 방법

Country Status (2)

Country Link
US (1) US8381145B2 (ko)
KR (1) KR101294708B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055797A1 (en) * 2009-08-26 2011-03-03 Gm Global Technology Operations, Inc. Automatic monitor generation from quantitative scenario based requirement specifications
US10169217B2 (en) * 2016-04-06 2019-01-01 General Electric Company System and method for test generation from software specification models that contain nonlinear arithmetic constraints over real number ranges
CN108897676B (zh) * 2018-06-06 2021-05-07 中国人民解放军海军工程大学 基于形式化规则的飞行引导控制软件可靠性分析系统与方法
KR102276230B1 (ko) * 2019-11-19 2021-07-12 주식회사 카카오뱅크 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램
CN111309626B (zh) * 2020-03-08 2021-07-02 山西大学 基于giss分布故障引进的开源软件可靠性建模方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505342B1 (en) 2000-05-31 2003-01-07 Siemens Corporate Research, Inc. System and method for functional testing of distributed, component-based software
US8122436B2 (en) 2007-11-16 2012-02-21 Microsoft Corporation Privacy enhanced error reports

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100349657B1 (ko) 2000-12-14 2002-08-24 한국전자통신연구원 분산 협력으로 개발된 프로그램 분석을 위한 순차다이어그램 생성 방법
US20070288885A1 (en) * 2006-05-17 2007-12-13 The Mathworks, Inc. Action languages for unified modeling language model
US7971104B2 (en) * 2006-10-24 2011-06-28 Shlomi Dolev Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations
US8001519B2 (en) * 2007-06-27 2011-08-16 International Business Machines Corporation Model driven development including aspect integration tool
US8099711B2 (en) * 2008-01-08 2012-01-17 International Business Machines Corporation System and method for multi-level security filtering of model representations
JP5203806B2 (ja) 2008-06-06 2013-06-05 インターナショナル・ビジネス・マシーンズ・コーポレーション シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505342B1 (en) 2000-05-31 2003-01-07 Siemens Corporate Research, Inc. System and method for functional testing of distributed, component-based software
US8122436B2 (en) 2007-11-16 2012-02-21 Microsoft Corporation Privacy enhanced error reports

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"SMT를 이용한 UML 다이어그램의 통합검증", 학위논문(박사), 경기대학교 일반대학원:전자계산학과, (2009.8.) *

Also Published As

Publication number Publication date
KR20110109146A (ko) 2011-10-06
US20110246954A1 (en) 2011-10-06
US8381145B2 (en) 2013-02-19

Similar Documents

Publication Publication Date Title
Jussila et al. Model checking dynamic and hierarchical UML state machines
Cancila et al. Toward correctness in the specification and handling of non-functional attributes of high-integrity real-time embedded systems
KR101294708B1 (ko) 행위 오류 분석 장치 및 그 방법
US7921411B2 (en) Model checking of non-terminating software programs
Schellhorn et al. Interleaved programs and rely-guarantee reasoning with ITL
Tigori et al. Formal model-based synthesis of application-specific static RTOS
Choi et al. Efficient safety checking for automotive operating systems using property-based slicing and constraint-based environment generation
KR20230098597A (ko) 보안 환경에서 코드의 지속적 통합 및 개발
Heinzemann et al. Automata-based refinement checking for real-time systems
CN109343856A (zh) 自定义算法组件的生成方法及装置
Baresi et al. Loupe: Verifying publish-subscribe architectures with a magnifying lens
Mateescu et al. Quantifying the parallelism in BPMN processes using model checking
US9436582B1 (en) Calculating an immediate parent assertion statement for program verification
CN109858204B (zh) 一种基于llvm的程序代码保护方法及装置
Kamburjan et al. A hybrid programming language for formal modeling and verification of hybrid systems
Ouchani et al. A formal verification framework for Bluespec System Verilog
Besnard et al. Formal semantics of behavior specifications in the architecture analysis and design language standard
Cimatti et al. Software model checking with explicit scheduler and symbolic threads
Vu et al. Contract-driven design of scientific data analysis workflows
Yatake et al. Model checking of OSEK/VDX OS design model based on environment modeling
Barbier et al. Software adaptation: classification and a case study with state chart xml
Collavizza et al. Constraint-based BMC: a backjumping strategy
CN109308256B (zh) 一种java程序动态分析方法、设备和存储介质
Besnard et al. Formal semantics of behavior specifications in the architecture analysis and design language standard
Krichen et al. Design-time verification of reconfigurable real-time embedded systems

Legal Events

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

Payment date: 20170727

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190725

Year of fee payment: 7