KR20050076808A - 메시지 교환 패턴 시뮬레이션 코드의 자동화된 생성 - Google Patents

메시지 교환 패턴 시뮬레이션 코드의 자동화된 생성 Download PDF

Info

Publication number
KR20050076808A
KR20050076808A KR1020040110466A KR20040110466A KR20050076808A KR 20050076808 A KR20050076808 A KR 20050076808A KR 1020040110466 A KR1020040110466 A KR 1020040110466A KR 20040110466 A KR20040110466 A KR 20040110466A KR 20050076808 A KR20050076808 A KR 20050076808A
Authority
KR
South Korea
Prior art keywords
message
valid
exchange pattern
message exchange
state
Prior art date
Application number
KR1020040110466A
Other languages
English (en)
Other versions
KR101031960B1 (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 마이크로소프트 코포레이션
Publication of KR20050076808A publication Critical patent/KR20050076808A/ko
Application granted granted Critical
Publication of KR101031960B1 publication Critical patent/KR101031960B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

본 발명은 테스트 컴퓨팅 시스템의 기능을 테스트하는 코드를 자동으로 생성하여 메시지 교환 패턴을 시뮬레이션하는 메커니즘에 관한 것이다. 코드 생성 컴퓨팅 시스템은 메시지 교환 패턴 정의를 이용하여 시뮬레이션 코드를 생성한다. 메시지 교환 패턴 정의가 유효한 메시지가 전송되는 것을 허용하는 각각의 상태에 대하여, 그러한 상태에 대해서 적어도 유효 전송 메시지의 전송을 시뮬레이션하는 코드가 생성된다. 메시지 교환 패턴 정의가 유효 메시지가 수신되는 것을 허용하는 각각의 상태에 대하여, 그러한 상태에 대해서 유효 수신 메시지의 수신을 시뮬레이션하는 코드가 생성된다. 메시지의 전송 또는 수신이 상태 천이가 발생하도록 야기하는 경우에는, 메시지 교환 패턴에서의 적절한 상태 천이를 야기하는 코드가 생성된다.

Description

메시지 교환 패턴 시뮬레이션 코드의 자동화된 생성{AUTOMATED GENERATION OF MESSAGE EXCHANGE PATTERN SIMULATION CODE}
본 발명은 네트워킹 기술에 관한 것으로, 보다 구체적으로는 메시지 교환 패턴을 시뮬레이션하는 코드의 자동 생성에 관한 것이다.
컴퓨팅 기술은 우리가 일하고 즐기는 방식으로 변형되어왔다. 이제, 컴퓨팅 시스템은 데스크탑 컴퓨터, 랩탑 컴퓨터, 타블릿 PC, PDA(Personal Digital Assistant) 등을 포함하는 다양한 형태를 띠게되었다. 심지어 (냉장고, 오븐, 재봉틀, 보안 시스템 등과 같은)가정용 디바이스도 다양한 레벨의 처리 기능을 가지게 되어 컴퓨팅 시스템으로 간주될 수 있게 되었다.
컴퓨팅 시스템에 의해서 제공되는 기능의 많은 부분이 다른 컴퓨팅 시스템들과 네트워킹되는(그리고, 다른 컴퓨팅 시스템들과 메시지를 통신할 수 있는) 컴퓨팅 시스템에 의존한다. 2개의 통신 컴퓨팅 시스템이 특정 업무를 수행하도록 하기 위하여, 메시지 교환의 패턴에 관련된 메시지 트랜잭션이 필요할 수 있을 것이다. 메시지 트랜잭션에 관련된 각각의 컴퓨팅 시스템은 메시지 교환 패턴을 따르는 트랜잭션의 일부로서 수신된 메시지의 처리 및 메시지 교환 패턴을 따르는 다른 메시지들의 전송 시에 지원하는 애플리케이션(아래에서는 “메시지 교환 패턴 애플리케이션”이라고도 함)을 가진다.
메시지 교환 패턴 애플리케이션을 테스트하기 위하여, 메시지 교환 패턴 애플리케이션은 상이한 컴퓨팅 시스템에 인스톨되어 테스트될 수 있다. 그러나, 많은 경우에 있어서 한 컴퓨팅 시스템상의 메시지 교환 패턴 애플리케이션은 다른 컴퓨팅 시스템상의 메시지 교환 패턴 애플리케이션과는 상당히 다를 수 있으며, 이는 비록 2개의 메시지 교환 패턴 애플리케이션이 메시지 교환 패턴을 이용하여 서로 간에 상호 작용할 수 있는 경우라도 마찬가지이다. 시험자는 메시지 교환 패턴 애플리케이션들 중 하나에 대한 액세스만을 가질 것이다. 더욱이, 다른 메시지 교환 패턴 애플리케이션의 소유자는 2개의 메시지 교환 패턴 애플리케이션의 상호 작용을 협력하여 테스트하려하지 않거나, 또는 테스트할 수 없을 수도 있을 것이다. 따라서, 실행되고 이용될 실제 네트워크 환경에서 메시지 교환 패턴 애플리케이션을 테스트하는 것이 항상 실현 가능한 것은 아니다.
본 발명의 장점은 궁극적으로 이용될 실제 네트워크 환경에서 애플리케이션을 테스트할 필요 없이 메시지 교환 패턴 애플리케이션을 테스트하는 메커니즘에 있다. 더욱이, 이러한 테스트가 메시지 교환 패턴 애플리케이션이 테스트될 때마다 매번 추가적인 테스트 소프트웨어의 제작을 필요로하지 않고서도 이루어질 수 있다면, 이 또한 본 발명의 장점이 될 것이다.
종래 기술에서의 전술한 문제점들은 테스트 컴퓨팅 시스템의 기능을 테스트하는 코드를 자동으로 생성하여 메시지 교환 패턴을 시뮬레이션하는 메커니즘에 대한 본 발명의 원리에 의해서 극복된다.
코드 생성 컴퓨팅 시스템은 메시지 교환 패턴 정의를 이용하여 시뮬레이션 코드를 생성한다. 메시지 교환 패턴 정의는 메시지 교환 패턴내의 각각의 천이 상태에 대하여 아래에 기술되는 사항, 즉, 1) 어느 컴퓨팅 시스템이 주어진 상태에서 각각의 유효 메시지를 전송(및/또는 수신)하였는지에 대한 표시 및 2) 유효 메시지의 전송 또는 수신에 기인하는 상태 천이 기술을 포함한다.
메시지 교환 패턴 정의가 유효 메시지의 전송을 허용하는 각각의 상태에 있어서, 그 상태에 대하여 적어도 유효 전송 메시지의 전송을 시뮬레이션하는 코드가 생성된다. 메시지 교환 패턴 정의가 유효 메시지의 수신을 허용하는 각각의 상태에 있어서, 그 상태에 대하여 적어도 유효 수신 메시지의 수신을 시뮬레이션하는 코드가 생성된다. 메시지의 전송 또는 수신이 상태 천이를 발생케 하는 경우에는, 메시지 교환 패턴 내에 적절한 상태 천이를 야기하는 코드가 생성된다. 코드 생성 컴퓨팅 시스템은 주어진 특정 상태에서 무효 메시지의 전송 또는 수신을 시뮬레이션하는 코드 또한 생성할 수 있을 것이다. 전송되거나 수신되는 (유효 또는 무효의)소정의 메시지(들)에 대하여 확률이 할당될 수 있을 것이다. 메시지 교환 패턴은 여러 차례 시뮬레이션되어 메시지 교환 패턴을 통한 많은, 또는 가능한 모든 상태 천이 경로를 시뮬레이션할 수 있을 것이다. 이것은 시뮬레이션이 실제 이용에 있어서 발생할 잠재적인 모든 가능한 경우를 포함할 수 있도록 할 것이다.
따라서, 시뮬레이션 코드는 메시지 교환 패턴 정의를 이용하여 자동으로 생성되며, 이로 인하여 시뮬레이션 코드의 생성을 보다 용이하게 만든다. 더욱이, 메시지 전송 및 수신이 다른 컴퓨팅 시스템과의 통신 없이 시뮬레이션될 수 있기 때문에 시뮬레이션은 단일 컴퓨팅 시스템 내부에 존재할 수 있을 것이다. 따라서, 네트워크 자원을 이용할 필요가 없다. 이와 달리, 시뮬레이션이 단일 컴퓨팅 시스템의 내부에 존재하지 않더라도, 시뮬레이션은 단일 조직의 네트워크 내의 통신을 허용한다. 따라서, 메시지 교환 패턴 애플리케이션을 테스트하는 데에 다른 조직의 협조에 의존할 필요는 없을 것이다.
본 발명의 추가적인 특징 및 장점은 아래의 명세서에 기술될 것이며, 부분적으로는 명세서로부터 자명하거나, 본 발명의 실시예에 의해서 자명해질 것이다. 본 발명의 특징 및 장점은 첨부된 명세서에서 특히 지적된 수단 및 그 조합에 의해서 구현되고 얻어질 수 있을 것이다. 본 발명의 여러 가지 특징은 아래의 설명 및 첨부된 특허청구범위로부터 보다 명확해질 것이며, 또한 아래에 기술되는 본 발명의 실시예에 의해서 명확해질 것이다.
본 발명으로 인하여 얻을 수 있는 상기 열거된 장점 및 특징뿐만 아니라 다른 장점 및 특징을 기술하기 위하여, 상기 약술된 본 발명에 대한 보다 구체적인 설명이 첨부된 도면에 나타난 특정한 실시예를 참조하여 기술될 것이다. 이들 도면들은 단지 본 발명의 전형적인 실시예만을 나타낼 뿐이며 따라서 본 발명의 범위를 한정하는 것이 아님을 이해한다면, 본 발명은 첨부된 도면의 이용을 통해 보다 구체적이고 상세하게 설명될 것이다.
본 발명의 원리는 메시지 교환 패턴을 시뮬레이션하여 테스트 컴퓨팅 시스템의 기능을 테스트하는 코드를 자동으로 생성하는 메카니즘에 관한 것이다. 이러한 코드 생성 컴퓨팅 시스템은 시뮬레이션 코드를 자동으로 생성하는 근거로서 메시지 교환 패턴 정의를 이용한다. 메시지 교환 패턴 정의가 유효 메시지 전송을 허용하는 각각의 상태에 있어서, 그러한 상태에 대하여 적어도 유효 전송 메시지의 전송을 시뮬레이션하는 코드가 생성된다. 메시지 교환 패턴 정의가 유효 메시지의 수신을 허용하는 각각의 상태에 있어서, 그러한 상태에 대하여 유효 수신 메시지의 수신을 시뮬레이션하는 코드가 생성된다. 메시지의 전송 또는 수신이 상태 천이가 발생하도록 야기하는 경우에 있어서, 메시지 교환 패턴 내에 적절한 상태 천이를 야기하는 코드가 생성된다.
이제 도면에 대하여 기술하면, 동일한 참조 번호는 동일한 요소를 참조하며, 본 발명이 적절한 컴퓨팅 환경에서 실시되는 것으로 도시되어 있다. 아래의 설명은 본 발명의 예시적인 실시예에 근거하며, 본 명세서에 명시적으로 기술되지 않은 다른 실시예와 관련하여 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다.
이어지는 설명에서, 본 발명은 달리 기술되지 않는 한 하나 이상의 컴퓨터에 의해서 수행되는 동작과 작용의 기호적인 표현을 참조하여 기술된다. 이처럼, 때로는 컴퓨터에 의해서 수행되는 것으로 불리는 이러한 동작 및 작용은 구조화된 형태의 데이터를 나타내는 전자 신호의 컴퓨터의 프로세싱 유닛에 의한 처리를 포함함을 이해할 수 있을 것이다. 이러한 처리는 데이터를 변환하거나 데이터를 컴퓨터의 메모리 시스템 내의 위치에 유지하며, 이는 본 기술 분야의 당업자들에게 공지된 방식으로 컴퓨터의 동작을 재구성하거나 그렇지 않으면 변경시킨다. 데이터가 유지되는 데이터 구조는 데이터 포맷에 의해서 정의되는 특정의 특성을 가지는 메모리의 물리적 위치이다. 그러나, 본 발명이 본 명세서의 서두에서 기술되고 있기는 하지만, 이는 본 발명의 기술 분야의 당업자들이 이해하는 바와 같이, 아래에 기술되는 몇몇 동작 및 작용이 하드웨어로도 구현될 수 있음을 의미하는 것으로 제한하기 위한 것이 아니다. 도 1은 이들 디바이스들에서 이용될 수 있는 예시적인 컴퓨터 구조의 개략도이다.
설명을 위하여, 기술되는 구조는 단지 적절한 환경의 일례일 뿐이며, 본 발명의 이용 또는 기능의 범위에 대한 어떠한 제한을 암시하기 위한 것은 아니다. 또한, 컴퓨팅 시스템은 도 1에 도시된 컴포넌트 중 하나 또는 이들의 조합과 관련하여 어떠한 의존성 또는 요건을 가지는 것으로 해석되어서는 안 된다.
본 발명은 많은 다른 범용 또는 특수 목적의 컴퓨팅 또는 통신 환경 또는 구성에서 이용가능하다. 본 발명을 이용하기에 적당한 잘 알려진 컴퓨팅 시스템, 환경 및 구성의 예는 이동 전화, 포켓 컴퓨터, PC, 서버, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 미니 컴퓨터, 메인프레임 컴퓨터 및 상기 시스템 또는 디바이스 중 하나를 포함하는 분산 컴퓨팅 환경을 포함하지만, 이에 한정되는 것은 아니다.
가장 기본적인 구성으로, 컴퓨팅 시스템(100)은 전형적으로 적어도 하나의 프로세싱 유닛(102) 및 메모리(104)를 포함한다. 메모리(104)는 (RAM과 같은)휘발성 메모리, (ROM, 플래쉬 메모리와 같은)비휘발성 메모리 또는 이들의 몇몇 조합일 수 있다. 이러한 가장 기본적인 구성은 도 1에서 점선(106)으로 나타나 있다.
저장 매체 디바이스는 추가적인 특징 및 기능을 가질 수 있다. 예컨대, 이들은 PCMCIA 카드, 자기 및 광 디스크, 자기 테이프를 포함하는 추가적인 (분리형 및 비분리형)저장 장치를 포함할 수 있을 것이다. 이러한 추가적인 저장 장치는 도 1에 분리형 저장 장치(108) 및 비분리형 저장 장치(110)로 도시되어 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 어떠한 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 메모리(104), 분리형 저장 장치(108) 및 비분리형 저장 장치(110)는 컴퓨터 저장 매체의 예를 모두 망라한 것이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리, 다른 메모리 기법, CD-ROM, DVD(digital versatile disks), 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치, 다른 자기 저장 디바이스 및 원하는 정보를 저장하는 데에 이용될 수 있으며 컴퓨팅 시스템에 의해서 액세스될 수 있는 다른 매체를 포함한다.
본 명세서에서 이용되는 바와 같이, “모듈” 또는 “컴포넌트”라는 용어는 컴퓨팅 시스템 상에서 실행하는 소프트웨어 객체 또는 루틴을 일컫는 것일 수 있다. 본 명세서에 기술된 상이한 컴포넌트, 모듈, 엔진 및 서비스는 (예컨대, 별도의 스레드(thread)로서)컴퓨팅 시스템 상에서 실행하는 객체 또는 프로세스로서 구현될 수 있을 것이다. 본 명세서에 기재된 시스템 및 방법들은 바람직하게 소프트웨어로 구현되지만, 소프트웨어 및 하드웨어, 또는 하드웨어로의 구현 또한 가능하며 고려될 수 있다.
컴퓨팅 시스템(100)은 호스트가 네트워크(120)를 통해서 다른 시스템 및 디바이스와 통신하는 것을 허용하는 통신 채널(112) 또한 포함할 수 있을 것이다. 통신 채널(112)은 통신 매체의 예이다. 통신 매체는 전형적으로 반송파와 같은 변조된 데이터 신호 또는 다른 전송 메카니즘 내에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 구현하며, 어떠한 정보 전달 매체도 포함한다. 예로서, 통신 매체는 유선 네트워크 및 직접 유선 접속과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만, 이에 한정되는 것은 아니다. 본 명세서에서 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 모두를 포함하는 것으로 사용된다.
컴퓨팅 시스템(100)은 키보드, 마우스, 펜. 음성 입력 컴포넌트, 접촉식 입력 디바이스 등과 같은 입력 컴포넌트(114) 또한 구비할 수 있다. 출력 컴포넌트(116)는 스크린 디스플레이, 스피커, 프린터 등과 이들을 구동하기 위한 렌더링 모듈들(rendering modules)(종종 “어댑터(adapter)”로 불림)을 포함한다. 컴퓨팅 시스템(100)은 전원(118)을 가진다. 모든 이러한 컴포넌트는 본 발명의 기술 분야에 공지되어 있어서 본 명세서에서 상세히 논의될 필요가 없을 것이다.
도 2는 2개의 통신 시스템(도 2에서 “실행 컴퓨터 시스템“으로 불림)이 특정 업무를 수행하기 위하여 통신하는 네트워크 환경(200)을 도시한다. 특히, 실행 컴퓨터 시스템(201)은 실행 컴퓨팅 시스템(202)과 통신한다. 특정 업무를 수행하기 위하여, 컴퓨팅 시스템(201,202)은 교환의 특정 패턴(230)으로 메시지를 교환한다. 메시지 교환의 특정 패턴은 어느 컴퓨팅 시스템이 어떠한 메시지를 메시지 교환시에 소정의 지점에서 전송할지를 정의한다. 메시지 교환 패턴은 수행될 업무 및 메시지 교환에 이용되는 프로토콜에 의존한다. 본 발명의 원리는 메시지 교환 패턴에 대한 어떠한 주어진 구조에 한정되는 것은 아니다.
각각의 실행 컴퓨팅 시스템은 메시지 교환 패턴에 관여하는 메시지 교환 패턴 애플리케이션을 가진다. 예컨대, 실행 컴퓨팅 시스템(201)은 메시지 교환 패턴 애플리케이션(210)을 실행하며, 실행 컴퓨터(202)는 메시지 교환 패턴 애플리케이션(220)을 실행한다. 실행 컴퓨팅 시스템(201,202)은 컴퓨팅 시스템에 대하여 상기된 바와 같이 구성될 수 있을 것이나, 이러한 것이 필수적으로 요구되는 것은 아니다. 본 명세서와 특허청구범위에서, “컴퓨팅 시스템”은 전자 메시지를 처리할 수 있는 기능을 가지는 소정의 디바이스 또는 시스템으로 정의된다.
메시지 교환 패턴내의 메시지는 컴퓨팅 시스템내의 동일한 컴포넌트에 의해서 생성되고 소모될 필요는 없다. 예컨대, 몇몇 메시지는 2개의 컴퓨팅 시스템 간의 프로토콜 레벨에서의 적합한 조정을 허용하는 프로토콜 레벨 메시지일 수 있을 것이다. 다른 메시지들은 원하는 업무를 수행하는데 필요한 데이터의 교환을 허용하는 애플리케이션 레벨 메시지일 수 있을 것이다. 일 실시예에서, 메시지 교환 패턴내의 프로토콜 레벨 메시지는 본 발명의 기술 분야의 당업자에게 공지된 WS-코디네이션(Web Services Coordination) 및 WS-트랜잭션 사양(specification)에 의해서 관리된다.
도 2는 메시지 교환 패턴 애플리케이션이 궁극적으로 동작할 환경을 도시한다. 그러나, 애플리케이션의 적재(shipping)에 앞서 메시지 교환 패턴 애플리케이션을 테스트하여 올바른 동작을 보장하는 것이 바람직하다. 시뮬레이션을 수행하기 위하여 종종 새로운 코드가 드래프팅(drafting)될 필요가 있기 때문에 애플리케이션을 테스트하는 데에는 종종 상당한 시간이 소요된다. 더욱이, 메시지 교환 패턴 애플리케이션의 테스트는 특히 어려운데, 이는 동작이 본질적으로 분산되며, 종종 신뢰의 경계를 넘어 분산되기 때문이다. 예컨대, 메시지 교환 패턴 애플리케이션(210)의 제작자는 다른 컴퓨팅 시스템 상에서 실행되는 메시지 교환 패턴 애플리케이션에 대한 액세스 권한은 가지지 않을 수 있을 것이다. 더욱이, 메시지 교환 패턴 애플리케이션(220)의 소유자와의 협조가 테스트 목적으로 이루어지기는 어려울 수 있을 것이다.
따라서, 본 발명의 원리는 코드가 자동으로 생성되어 테스트 컴퓨팅 시스템이 광범위한 인간의 코드의 제작을 요구하지 않으며, 다른 조직의 협조하에 또는 네트워크 환경의 협조하에 테스트가 실시될 것을 요구하지 않고서도 메시지 교환 패턴 동작의 시뮬레이션을 허용하는 메카니즘을 제공한다. 도 3은 이러한 자동화된 코드 생성이 실시될 수 있는 환경을 도시한다.
도 3을 참조하면, 코드 생성 컴퓨팅 시스템(301)은 메시지 교환 패턴 정의(302)에 액세스한다. 시뮬레이션 코드 생성 모듈(303)은 메시지 교환 패턴 정의(302)를 이용하여 시뮬레이션 코드(304)를 생성한다. 도 4를 참조하면, 그 후에 이러한 시뮬레이션 코드(304)는 테스트 컴퓨팅 시스템(401)의 시뮬레이터(402)에 의해서 이용되어 메시지 교환 패턴 정의를 테스트할 수 있을 것이다. 이러한 동작에 대한 보다 상세한 것은 메시지 교환 패턴 정의(303)를 먼저 보다 상세히 기술한 후에 기술될 것이다.
메시지 교환 패턴에는 많은 상태들이 존재한다. 메시지 교환 패턴 정의는 이들 상태들을 정의한다. 각각의 상태들에 대하여, 전송될 0개 이상의 유효 메시지 타입이 존재할 것이며, 수신될 0개 이상의 유효 메시지 타입이 존재할 것이다. 유효 메시지 타입의 수신 또는 전송과 함께 메시지 교환 패턴은 상이한 상태로의 천이일 것이다. 메시지 교환 패턴은 각각의 상태에 대한 유효 메시지 타입을 나타내며, 또한 소정의 유효 메시지 타입이 주어진 경우에 어떠한 상태 천이가 발생해야 하는지를 나타낸다. 메시지 교환 패턴 정의는 소정의 포맷일 수 있을 것이다. 그러나, 코드를 자동으로 생성하기 위하여 메시지 교환 패턴을 해석하기 위해서는 메시지 교환 패턴 정의가 보다 용이하게 분석될 수 있는 포맷을 가진다면 유리할 것이다. 이러한 포맷의 예는 WSDL(Web Services Description Language) 표준에 의해서 정의된다.
메시지 교환 패턴 정의는, 예컨대 소정의 주어진 상태에서 소정의 유효 메시지가 수신 또는 전송될 확률적 가능성 또한 포함할 수 있을 것이다. 메시지 교환 패턴 정의는 소정의 주어진 상태에 적용되어야 할 타이밍 규칙을 부과할 수도 있을 것이다. 예컨대, 소정의 기간 내에 응답이 수신되지 않는 경우에는 타이밍 규칙은 이전의 요청이 취소되어야 함을 나타낼 수 있을 것이다.
메시지 교환 패턴 정의는 메시지 교환 패턴 정의를 상태 천이 트리로 감소시킴으로써 보다 잘 이해될 것이다. 본 경우가 그에 해당할 필요는 없지만, 상태 천이 트리는 코드 생성 프로세스 동안에 메모리 내에 구성될 수 있을 것이다. 메시지 교환 패턴 상태 천이 트리는 메시지 교환 패턴 내의 각각의 상태에 대한 노드를 포함한다. 각각의 노드에 대하여, 유효 메시지 타입의 목록과 어떤 컴퓨팅 시스템이 어떠한 타입의 메시지를 송신하여야 할지가 제공된다. 각각의 유효 메시지 타입에 대하여, 특정 메시지를 수신하는 때의(또는 전송하는 때에도 마찬가지 일 것이다) 천이될 상태에 대한 식별 또한 존재한다.
트리의 구조는 메시지 교환 패턴에 전적으로 의존하며, 이는 수행될 업무에 의존하는 것이다. 무한히 다양한 메시지 교환 패턴에 기인하여 모든 가능한 상태 천이 트리를 설명하는 것은 불가능할 것이다. 많은 예를 드는 것은 본 발명의 원리를 모호하게 만들 것이다. 단지 설명을 위해서 하나의 메시지 교환 패턴이 기술될 것이다. 본 발명의 기술 분야의 당업자는 (본 명세서를 읽은 후에는)본 발명의 원리가 어떠한 메시지 교환 패턴에서도 이용될 수 있음을 이해할 것이다.
도 5는 예시적인 메시지 교환 패턴 상태 천이 트리(500)를 도시한다. 상태 천이 트리(500)는 많은 상태(501 내지 507)를 포함한다. 컴퓨팅 시스템들 중 하나로부터의 메시지의 전송은 실선으로 나타난 화살표로 표시된 상태 천이를 야기한다. 반면에, 컴퓨팅 시스템 중 다른 하나로부터의 메시지의 전송은 점선으로 나타난 화살표의 상태 천이를 야기한다. 이제부터, 퍼센트 표시와 화살표(541 및 542)는 무시하라. 이들에 관하여는 도 6과 관련하여 보다 상세히 설명될 것이다. 도 5를 참조하면, 하나의 컴퓨팅 시스템은 메시지를 전송하여 상태 511 내지 514에 이르는 상태 천이를 야기하고, 다른 컴퓨팅 시스템은 메시지를 전송하여 상태 521 내지 527에 이르는 상태 천이를 야기한다. 각각의 화살표는 그 천이에 유효한 특정 메시지 타입 또는 메시지 그룹의 타입과 관련되어 있다.
WS-코디네이션이 이용되는 경우라면, 실행 컴퓨팅 시스템(201)은 먼저 코디네이션 컨텍스트 메시지(coordination context message)를 실행 컴퓨팅 시스템(202)에 전송할 것이다. 그 후에, 실행 컴퓨팅 시스템(202)은 등록 메시지를 실행 컴퓨팅 시스템(201)에 전송할 것이다. 그 후에, 실행 컴퓨팅 시스템(201)은 등록 수신 메시지를 실행 컴퓨팅 시스템(202)에 전송할 것이다. 이러한 단계에서, 실행 컴퓨팅 시스템(201)은 “조정자(coordinator)”의 역할을 하는 것이며, 실행 컴퓨팅 시스템(202)은 “협력자(participant)”의 역할을 하는 것이며, 메시지 교환은 활성 상태(501)에 있게 된다. 도 5에서 실선으로 나타난 부분은 메시지를 전송하는 조정자(즉, 실행 컴퓨팅 시스템(201))에 의해서 야기된 상태 천이를 나타내고, 도 5에서 점선으로 나타난 부분은 협력자(즉, 실행 컴퓨팅 시스템(202))에 의해서 야기된 상태 천이를 나타낸다.
활성 상태(501)로부터, 실행 컴퓨팅 시스템(201)은 취소 메시지(cancel message)를 실행 컴퓨팅 시스템(202)에 전송할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(201)이 이전에 요청된 동작을 취소할 것을 선택하였음을 나타내며, 실선으로 나타난 화살표(511)에 의해서 표시된 바와 같이 활성 상태(501)로부터 취소 상태(502)로의 천이를 야기한다. 보다 일반적으로, 전송 컴퓨팅 시스템은 천이와 관련된 메시지가 전송되자마자 상태 천이를 인식한다. 수신 컴퓨팅 시스템은 천이와 관련된 메시지가 수신되자마자 상태 천이를 인식한다. 따라서, 실행 컴퓨팅 시스템(201)에 의해서 인식되는 상태 천이 차트의 진행 자취와, 실행 컴퓨팅 시스템(202)에 의해서 인식되는 상태 천이 차트의 상태 천이 진행 자취 간에는 다소의 일시적인 차이가 존재할 수 있을 것이다. 이러한 특정의 천이(511)에서, 실행 컴퓨팅 시스템(201)은 취소 메시지를 전송하자마자 이러한 천이(511)를 인식한다. 실행 컴퓨팅 시스템(202)은 취소 메시지를 수신하자마자 천이(511)를 인식한다.
이와 달리, 활성 상태(501)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 엑시트 메시지(exited message)를 수신할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(201)에게 실행 컴퓨팅 시스템(202)이 더 이상 메시지 교환 패턴에 관여하지 않음을 통지한다. 따라서, 엑시트 메시지를 실행 컴퓨팅 시스템(202)으로부터 실행 컴퓨팅 시스템(201)으로 전송하는 것은 활성 상태(501)로부터 종료 상태(ended state)(505)로의 천이(522)를 야기한다.
이와 달리, 활성 상태(501)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 완료 메시지(completed message)를 수신할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(201)에게 실행 컴퓨팅 시스템(202)이 이전 요청과 관련된 처리를 완료하였음을 통지한다. 따라서, 실행 컴퓨팅 시스템(202)으로부터 실행 컴퓨팅 시스템(201)으로의 완료 메시지의 전송은 활성 상태(501)로부터 완료 상태(completed state)(503)로의 천이(523)를 야기한다.
이와 달리, 활성 상태(501)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 폴트 메시지(faulted message)를 수신할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(201)에게 실행 컴퓨팅 시스템(202)이 활성 상태(501)로부터 벗어났음을 통지한다. 따라서, 실행 컴퓨팅 시스템(202)으로부터 실행 컴퓨팅 시스템(201)으로의 폴트 메시지의 전송은 활성 상태(501)로부터 폴트 상태(faulted state)(507)로의 천이를 야기한다.
취소 상태(canceling state)(502)인 동안, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 취소 메시지를 수신할 수 있을 것이다. 이것은 이전에 요청된 동작이 실행 컴퓨팅 시스템(201)의 요청으로 취소되었음을 실행 컴퓨팅 시스템(202)이 인정한 것을 실행 컴퓨팅 시스템(201)에 통지한다. 따라서, 실행 컴퓨팅 시스템(202)으로부터 실행 컴퓨팅 시스템(201)으로의 취소 메시지의 전송은 취소 상태(502)로부터 종료 상태(505)로의 천이(521)를 야기한다.
완료 상태(503)인 동안에, 실행 컴퓨팅 시스템(201)은 종결 메시지(close message)를 실행 컴퓨팅 시스템(202)에 전송할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(202)에 이전의 요청이 성공적이었음을 통지한다. 따라서, 실행 컴퓨팅 시스템(201)으로부터 실행 컴퓨팅 시스템(202)으로의 종결 메시지의 전송은 완료 상태(503)로부터 종결 상태(closing state)(504)로의 천이(512)를 야기한다.
종결 상태(504)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 종결 메시지를 수신할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(201)에 실행 컴퓨팅 시스템(202)이 동작을 성공적으로 마무리하였음을 통지한다. 따라서, 실행 컴퓨팅 시스템(202)로부터 실행 컴퓨팅 시스템(201)으로의 종결 메시지의 전송은 종결 상태(504)로부터 종료 상태(505)로의 천이를 야기한다.
또한, 완료 상태(503)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)에 보상 메시지(compensate message)를 전송할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(202)에 수행되고 있는 작업이 상당한 정도 마무리되지 않아야 함을 통지한다. 따라서, 실행 컴퓨팅 시스템(201)으로부터 실행 컴퓨팅 시스템(202)으로의 보상 메시지의 전송은 완료 상태(503)로부터 보상 상태(compensating state)(506)로의 천이를 야기한다.
보상 상태(506)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 보상 메시지를 수신할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(202)에 보상 동작이 성공적이었음을 통지한다. 따라서, 실행 컴퓨팅 시스템(202)으로부터 실행 컴퓨팅 시스템(201)으로의 보상 메시지의 전송은 보상 상태(506)로부터 종료 상태(505)로의 천이를 야기한다.
이와 달리, 보상 상태(506)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)으로부터 폴트 메시지를 수신할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(201)에 실행 컴퓨팅 시스템(202)이 보상 상태(506)로부터 벗어났음을 통지한다. 따라서, 실행 컴퓨팅 시스템(202)으로부터 실행 컴퓨팅 시스템(201)으로의 폴트 메시지의 전송은 보상 상태(506)로부터 폴트 상태(507)로의 천이를 야기한다.
폴트 상태(507)인 동안에, 실행 컴퓨팅 시스템(201)은 실행 컴퓨팅 시스템(202)에 포겟 메시지(forget message)를 전송할 수 있을 것이다. 이것은 실행 컴퓨팅 시스템(202)에 실행 컴퓨팅 시스템(201)이 폴트를 인식하고 있음을 통지한다. 따라서, 실행 컴퓨팅 시스템(201)으로부터 실행 컴퓨팅 시스템(202)으로의 포겟 메시지의 전송은 폴트 상태(507)로부터 종료 상태(505)로의 천이(514)를 야기한다.
도 6은 메시지 교환 패턴을 따르는 메시지 트랜잭션에 관여된 메시지 교환 패턴 애플리케이션을 이용하여 코드 생성 컴퓨팅 시스템(301)이 테스트 컴퓨팅 시스템(401)의 기능을 테스트하는 코드를 자동으로 생성하는 방법(600)의 흐름도를 도시한다. 이러한 코드는 테스트 컴퓨팅 시스템(401)이 다른 조직과의 메시지 트랜잭션에 관여할 것을 요구하지 않거나, 심지어 몇몇 경우에는 다른 컴퓨팅 시스템과의 통신을 요구하지 않고서도 시뮬레이션을 허용한다. 방법(600)은 도 5의 특정한 예시적인 메시지 교환 패턴 정의를 자주 참조하여 기술될 것이다.
코드 생성 컴퓨팅 시스템은 상기된 메시지 교환 패턴 정의와 같은 메시지 교환 패턴 정의에 액세스한다(동작 601). 그 후에, 코드 생성 컴퓨팅 시스템은 메시지 교환 패턴 정의를 이용하여 메시지 교환 패턴 시뮬레이션 코드를 자동으로 생성하는 기능적인, 결과지향적인 단계를 수행한다(단계 610). 단계 610은 이러한 결과를 수행하는 소정의 상응하는 특정 동작을 포함할 수 있을 것이다. 예시된 실시예에서, 단계(610)는 상응하는 동작 611 및 612를 포함한다.
구체적으로, 메시지 교환 패턴 정의가 유효 전송 메시지가 테스트 컴퓨팅 시스템에 의해서 전송되는 것을 허용하는 각각의 상태에 대하여, 코드 생성 컴퓨팅 시스템은 적어도 유효한 전송 메시지의 전송을 시뮬레이션하는 코드를 자동으로 생성한다(동작 611). 예컨대, 도 5의 활성 상태(501)를 고려하자. 활성 상태(501)는 하나의 유효 메시지인 취소 메시지가 전송되는 것을 허용한다. 취소 메시지가 전송될 3% 가능성이 나타나 있다. 이러한 퍼센트는 메시지 교환 패턴 정의에 의해서 특정될 수 있을 것이며/특정될 수 있거나, 사용자 또는 코드 생성 컴퓨팅 시스템에 의해서 특정될 수 있을 것이다. 이러한 전송과 관련된 퍼센트는 테스팅 프로세스동안 시간이 지남에 따라 동적으로 변경될 것이다. 취소 메시지의 조건부 전송을 시뮬레이션하기 위하여, 코드 생성 컴퓨팅 시스템은 아래의 의사 코드 문서를 따르는 코드를 생성할 수 있을 것이며, 여기에는 용이한 설명을 위하여 라인 번호가 매겨져 있다.
1. main
2. {
3. Do State501()
4. {
5. Flip a Coin
6. if Coin is in 3% range
7. Send(Cancel)
8. Go to DoState502
9. end if
10. }
11. .
12. .
13. .
14. }
이러한 의사 코드에서, 타이틀이 라인 1에 생성된 메인 프로그램이 생성되며, 그 개시 괄호는 라인 2에 위치하며, 종료 괄호가 라인 14에 위치한다. 그 후에 DoState501로 불리는 서브루틴이 생성된다. 라인 3은 라인 4의 개시 괄호와 라인 10의 종료 괄호를 이용하여 괄호로 둘러싸인 서브루틴을 식별한다. 그 후에 의사 랜덤 값을 생성하기 위하여 코드가 생성된다(라인 5 참조). 그 후에 조건부 코드가 생성되어 랜덤 값이 적절히 주어진다면(라인 6 참조), 적어도 취소 메시지의 전송이 시뮬레이션되며(라인 7 참조), 다음 상태로의 실행으로 진행하도록 코드가 생성되어(라인 8 참조) 이로 인하여 다음 적절한 상태로 천이한다.
도 6을 다시 살피면, 메시지 교환 패턴 정의가 유효 수신 메시지의 수신을 허용하는 각각의 상태에 대하여, 코드 생성 컴퓨팅 시스템은 유효 수신 메시지의 수신과 천이될 상태를 나타내는 다른 코드로의 천이를 시뮬레이션하는 코드를 생성한다. 예컨대, 활성 상태(501)는 3개의 유효 메시지, 즉 10%의 발생 가능성을 가지는 엑시트 메시지, 75%의 발생 가능성을 가지는 완료 메시지 및 2%의 발생 가능성을 가지는 폴트 메시지의 수신을 허용한다. 이것은 예시적인 의사 코드에서 동일한 DoState501 서브루틴 내에 아래와 같은 추가적인 조건부 문장을 추가함으로써 시뮬레이션된다.
1. main
2. {
3. DoState501()
4. {
5. Flip a Coin
6. if Coin is in the appropriate 3% range
7. Send(Cancel)
8. Go to DoState502
9. end if
10. if Coin is in the appropriate 10% range
11. Receive(Exited)
12. Go to DoState505
13. endif
14. if Coin is in the appropriate 75% range
15. Receive(Completed)
16. Go to DoState503
17. end if
18. if Coin is in the appropriate 2% range
19. Receive(Faulted)
20. Go to DoState507
21. end if
22. }
23. .
24. .
25. .
26. }
상태(505)로의 적절한 상태 천이를 가지는 엑시트 메시지의 수신의 시뮬레이션(라인 10 내지 13 참조), 상태(503)로의 적절한 상태 천이를 가지는 완료 메시지의 수신의 시뮬레이션(라인 14 내지 17 참조) 및 상태(507)로의 적절한 상태 천이를 가지는 폴트 메시지의 수신의 시뮬레이션(라인 18 내지 21 참조)을 위하여 조건부로 실행되는 의사 코드의 추가에 주목할 필요가 있다.
추가적으로, 무효 메시지의 전송 또는 수신은 전송 또는 수신 또는 소정의 무효 메시지에 양의 발생 확률을 할당함으로써 시뮬레이션될 수 있을 것이다. 이들 무효 메시지는 메시지 교환 패턴을 따르지 않기 때문에 메시지 교환 패턴 정의에 의해서 특정되지 않을 수 있을 것이다. 대신에, 이들은 사용자 또는 코드 생성 컴퓨팅 시스템에 의해서 입력될 수 있을 것이다. 예컨대, 활성 상태(501)인 동안에, 화살표(541)에 의해서 표시된 바와 같이 무효 메시지가 전송될 수 있다(7% 발생 가능성을 가짐). 또한, 화살표(542)로 나타난 바와 같이 무효 메시지가 수신될 수 있을 것이다(3% 발생 가능성을 가짐). 무효 메시지의 수신 및 전송의 시뮬레이션은 메시지 교환 패턴을 따르지 않는 것을 다루어야 하는 그 실제 가능성을 테스트하는 시뮬레이션을 가능하게 한다. 이들 무효 메시지에 대한 유사한 코드 또한 자동으로 생성될 수 있을 것이다. 예컨대, 아래의 의사 코드는 이전의 예를 무효 메시지의 전송(라인 25 내지 27 참조) 및 수신(라인 22 내지 24 참조)을 조건부로 시뮬레이션하는 코드를 생성하는 것으로 확장한다.
1. main
2. {
3. Do State501()
4. {
5. Flip a Coin
6. if Coin is in the appropriate 3% range
7. Send(Cancel)
8. Go to DoState502
9. end if
10. if Coin is in the appropriate 10% range
11. Receive(Exited)
12. Go to DoState505
13. end if
14. if Coin is in the appropriate 75% range
15. Receive(Completed)
16. Go to DoState503
17. end if
18. if Coin is in the appropriate 2% range
19. Receive(Faulted)
20. Go to DoState507
21. end if
22. if Coin is in the appropriate 3% range
23. Receive(Invalid Message)
24. end if
25. if Coin is in the appropriate 7% range
26. Send(Invalid Message)
27. end if
28. }
29. .
30. .
31. .
32. }
이러한 생성 프로세스는 자신의 분기 확률을 가지는 다른 상태(예컨대, 상태 502 내지 507)를 위한 서브루틴을 생성하도록 수행될 수도 있을 것이다. 코드 생성 프로세스는 주 프로그램을 생성하는 단계(예컨대, “main" 프로그램), 각각의 상태에 대한 서브루틴을 생성하는 단계, 다수의 이벤트가 발생할 수 있는 각각의 상태에 대한 난수를 생성하는 단계 및 그 후에 난수에 기초하여 이벤트를 조건부로 실행하는 단계를 포함한다. 이것은 매우 절차적인 프로세스이며 판단 호출을 요구하는 방식을 거의 포함하지 않기 때문에 코드 생성 프로세스는 자동화될 여지가 클 것이다. 사용자가 개입할 여지가 설사 있다고 하더라도 이는 사소한 것이다. 예컨대, 사용자는 각각의 유효 메시지 타입에 대한 발생 확률을 추정하여 (관련 확률과 함께)무효 메시지 수신 또는 전송이 발생할 것인지 여부를 나타낼 필요가 있을 수도 있다. 그러나, 사용자는 실제로는 코드 자체를 드래프팅(drafting)할 필요가 없을 것이다. 따라서, 코드가 보다 용이하게 생성된다.
더욱이, “전송” 및 “수신” 기능은 실제 이용 동안에 발생할 수 있는 메시지의 전송 및 수신을 단지 시뮬레이션하도록 만들어 질 것이다. 따라서, 메시지 교환 패턴 애플리케이션을 테스트하기 위하여 궁극적으로 메시지 교환 패턴에 관련될 다른 조직과의 협력에 의존할 필요가 없다. 일 실시예에서, 전송 및 수신 자체는 시뮬레이션이 실제 네트워크 트래픽을 야기하지 않아서 네트워크 자원을 보존하도록 시뮬레이션될 수 있을 것이다.
본 발명은 본 발명의 기술적 사상 및 근본적인 특징을 벗어나지 않고서 다른 특정 형태로 구현될 수 있을 것이다. 상기된 실시예는 모든 점에 있어서 단지 예시적인 것이며, 한정적인 것이 아니다. 따라서, 본 발명의 범위는 상기된 상세한 설명에 의해서 나타나는 것이 아니라 첨부된 특허청구범위에 의해서 나타난다. 그 의미와 범위에 있어서 청구항과 등가물인 모든 변경은 본 발명의 범위 내에 포함된다.
본 발명의 장점은 궁극적으로 이용될 실제 네트워크 환경에서 애플리케이션을 테스트할 필요 없이 메시지 교환 패턴 애플리케이션을 테스트하는 메커니즘에 있다. 더욱이, 이러한 테스트가 메시지 교환 패턴 애플리케이션이 테스트될 때마다 매번 추가적인 테스트 소프트웨어의 제작을 필요로하지 않고서도 이루어질 수 있다면, 이 또한 본 발명의 장점이 될 것이다.
도 1은 본 발명의 특징들을 실시할 수 있는 적절한 컴퓨팅 시스템을 도시하는 도면.
도 2는 각기 메시지 교환 패턴 애플리케이션을 이용하여 메시지 교환 패턴을 구현하는 2개의 컴퓨팅 시스템의 네트워크 환경을 도시하는 도면.
도 3은 테스트 컴퓨팅 시스템 상에서 메시지 교환 패턴을 내부적으로 시뮬레이션하는 코드를 자동으로 생성하는 코드 생성 컴퓨팅 시스템을 도시하는 도면.
도 4는 코드 생성 컴퓨팅 시스템에 의해서 생성된 시뮬레이션 코드를 이용하여 메시지 교환 패턴을 내부적으로 시뮬레이션하는 테스트 컴퓨팅 시스템을 도시하는 도면.
도 5는 임의의 메시지 교환 패턴에서의 진행 상태를 트랙킹하는 데에 이용될 수 있는 상태 천이 트리를 도시하는 도면.
도 6은 코드 생성 컴퓨팅 시스템이 내부적으로 메시지 교환 패턴을 시뮬레이션하는 시뮬레이션 코드를 자동으로 생성하는 방법의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 컴퓨팅 시스템
201, 202 : 실행 컴퓨팅 시스템
210, 220 : 메시지 교환 패턴 애플리케이션
301 : 코드 생성 컴퓨팅 시스템
302 : 메시지 교환 패턴 정의
303 : 시뮬레이션 코드 생성 모듈
304 : 시뮬레이션 코드
401 : 테스트 컴퓨팅 시스템
402 : 시뮬레이터

Claims (32)

  1. 시스템 메모리내의 컴퓨터 실행가능 명령을 수행할 수 있는 하나 이상의 프로세서를 포함하는 코드 생성 컴퓨팅 시스템에서, 상기 코드 생성 컴퓨팅 시스템이 메시지 교환 패턴 애플리케이션을 이용하여 테스트 컴퓨팅 시스템의 기능을 테스트하는 코드를 자동으로 생성하여 메시지 교환 패턴을 따르는 메시지 트랜잭션에 관여하는 방법으로서,
    상기 방법은
    다수의 상태들을 정의하는 메시지 교환 패턴 정의에 액세스하는 단계- 상기 메시지 교환 패턴 정의는 상기 다수의 상태들 각각에 대하여 그 상태에 대한 메시지 교환 패턴에 따르는 하나 이상의 유효 메시지의 표시와, 어느 컴퓨팅 시스템이 주어진 상태에 대하여 각각의 유효 메시지를 전송할 수 있는지에 대한 표시와, 적어도 상기 다수의 상태들 중 하나를 식별하는 몇몇 유효 메시지에 대하여 상기 유효 메시지가 천이되는 경우에 대한 상태 천이 표시를 더 가짐 -와,
    상기 메시지 교환 패턴 정의가 유효 전송 메시지가 상기 테스트 컴퓨팅 시스템에 의해서 전송되는 것을 허용하는 각각의 상태에 대하여, 적어도 상기 유효 전송 메시지의 전송을 시뮬레이션하고, 상기 유효 전송 메시지가 전송되는 경우에 상태 천이를 나타내는 다른 코드로 천이하는 코드를 생성하는 단계와,
    상기 메시지 교환 패턴 정의가 유효 수신 메시지가 수신되는 것을 허용하는 각각의 상태에 대하여, 유효 수신 메시지의 수신을 시뮬레이션하고, 상기 유효 수신 메시지가 수신되는 경우에 상태 천이를 나타내는 다른 코드로 천이하는 코드를 생성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태에서 다수의 유효 전송 메시지 중 어느 것이 전송될지를 나타내는 방법.
  3. 제2항에 있어서,
    상기 메시지 교환 패턴 정의는 상기 특정 상태에 대한 다수의 유효 전송 메시지 각각에 대하여 주어진 특정 상태에 대하여 상기 다수의 유효 전송 메시지 각각이 전송될 퍼센트 가능성을 나타내며, 상기 방법은 적어도 상기 다수의 유효 전송 메시지 각각을 시뮬레이션하고, 주어진 전송에 대하여 적절한 상태 천이를 수행하는 코드를 자동으로 생성하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서,
    의사 랜덤 값을 생성하고 상기 의사 랜덤 값 및 상기 퍼센트 가능성에 기초하여 전송을 위한 상기 다수의 유효 전송 메시지들 중 하나를 선택하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    적어도 하나의 상태에 대하여, 적어도 무효 전송 메시지의 전송을 시뮬레이션하는 코드를 생성하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서,
    주어진 특정 상태에서 상기 무효 전송 메시지가 전송될 퍼센트 가능성이 또한 표시되며, 상기 방법은 의사 랜덤 값을 생성하고, 상기 의사 랜덤 값 및 상기 퍼센트 가능성에 기초하여 전송에 대하여 상기 무효 전송 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태인 경우에, 다수의 유효 수신 메시지 중 어느 하나가 수신될지를 나타내는 방법.
  8. 제7항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태에 대한 상기 다수의 유효 수신 메시지 각각에 대하여, 주어진 특정한 상태에서 상기 다수의 유효 수신 메시지 각각이 수신될 퍼센트 가능성을 나타내고, 상기 방법은 상기 다수의 유효 수신 메시지 각각을 시뮬레이션하며 주어진 전송에 대하여 적절한 상태 천이를 수행하는 코드를 자동으로 생성하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    의사 랜덤 값을 생성하고 상기 의사 랜덤 값 및 상기 퍼센트 가능성에 기초하여 시뮬레이션된 수신에 대하여 다수의 유효 수신 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서,
    적어도 하나의 상태에 대하여,
    무효 전송 메시지의 수신을 시뮬레이션하는 코드를 생성하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 주어진 특정 상태에 대하여 상기 무효 수신 메시지가 수신될 퍼센트 가능성 또한 나타나고, 상기 방법은 의사 랜덤 값을 생성하며 상기 의사 랜덤 값과 상기 퍼센트 가능성에 기초하여 시뮬레이션된 수신에 대하여 상기 무효 수신 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 방법.
  12. 제1항에 있어서,
    상기 메시지 교환 패턴 정의는 WSDL(Web Services Description Language) 표준을 이용하여 정의되는 방법.
  13. 제1항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태인 경우에 부과될 타이밍 규칙을 더 정의하는 방법.
  14. 시스템 메모리 내의 컴퓨터 실행가능 명령들을 실행할 수 있는 하나 이상의 프로세서들을 포함하는 코드 생성 컴퓨팅 시스템에서 이용될 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 프로그램 제품은, 상기 코드 생성 컴퓨팅 시스템이 메시지 교환 패턴 애플리케이션을 이용하여 테스트 컴퓨팅 시스템의 기능을 테스트하는 코드를 자동으로 생성하여 메시지 교환 패턴을 따르는 메시지 트랜잭션에 관련하는 방법을 수행하며,
    상기 컴퓨터 프로그램 제품은, 상기 코드 생성 컴퓨팅 시스템의 하나 이상의 프로세서에 의해서 수행되는 경우에 상기 코드 생성 컴퓨팅 시스템이 상기 방법을 수행하도록 하는 하나 이상의 컴퓨터 판독가능 매체를 포함하며,
    상기 방법은
    다수의 상태들을 정의하는 메시지 교환 패턴 정의에 액세스하는 단계- 상기 메시지 교환 패턴 정의는 상기 다수의 상태들 각각에 대하여 그 상태에 대한 메시지 교환 패턴에 따르는 하나 이상의 유효 메시지의 표시와, 어느 컴퓨팅 시스템이 주어진 상태에 대하여 각각의 유효 메시지를 전송할 수 있는지에 대한 표시와, 적어도 상기 다수의 상태들 중 하나를 식별하는 몇몇 유효 메시지에 대하여 상기 유효 메시지가 천이되는 경우에 대한 상태 천이 표시를 더 가짐 -와,
    상기 메시지 교환 패턴 정의가 유효 전송 메시지가 상기 테스트 컴퓨팅 시스템에 의해서 전송되는 것을 허용하는 각각의 상태에 대하여, 적어도 상기 유효 전송 메시지의 전송을 시뮬레이션하고, 상기 유효 전송 메시지가 전송되는 경우에 상태 천이를 나타내는 다른 코드로 천이하는 코드를 생성하는 단계와,
    상기 메시지 교환 패턴 정의가 유효 수신 메시지가 수신되는 것을 허용하는 각각의 상태에 대하여, 유효 수신 메시지의 수신을 시뮬레이션하고, 상기 유효 수신 메시지가 수신되는 경우에 상태 천이를 나타내는 다른 코드로 천이하는 코드를 생성하는 단계
    를 포함하는 컴퓨터 프로그램 제품.
  15. 제14항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태인 경우에 다수의 유효 전송 메시지 중 어느 하나가 전송될지를 나타내는 컴퓨터 프로그램 제품.
  16. 제15항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태에 대한 다수의 유효 전송 메시지 각각에 대하여, 주어진 특정 상태에 대하여 다수의 유효 전송 메시지 각각이 전송되어야 할 퍼센트 가능성을 나타내는며, 상기 방법은 적어도 다수의 유효 전송 메시지들 각각을 시뮬레이션하고, 주어진 전송에 대하여 적절한 상태 천이를 수행하는 코드를 자동으로 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  17. 제16항에 있어서,
    의사 랜덤 값을 생성하고, 상기 의사 랜덤 값과 상기 퍼센트 가능성에 기초하여 전송을 위하여 다수의 유효 전송 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  18. 제14항에 있어서,
    적어도 하나의 상태에 대하여
    적어도 무효 전송 메시지의 전송을 시뮬레이션하는 코드를 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  19. 제18항에 있어서,
    상기 주어진 특정 상태에서 상기 무효 전송 메시지가 전송될 퍼센트 가능성 또한 나타내고, 상기 방법은 의사 랜덤 값을 생성하고, 상기 의사 랜덤 값과 상기 퍼센트 가능성에 기초하여 전송을 위하여 상기 무효 전송 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  20. 제14항에 있어서,
    상기 메시지 교환 패턴 정의는 특정한 상태에 있는 경우에 다수의 유효 수신 메시지들 중 어느 하나가 수신될지를 나타내는 컴퓨터 프로그램 제품.
  21. 제20항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태에 대한 다수의 유효 수신 메시지 각각에 대하여, 주어진 특정 상태에 대하여 다수의 유효 수신 메시지 각각이 수신될 퍼센트 가능성을 나타내고, 상기 방법은 다수의 유효 수신 메시지 각각을 시뮬레이션하는 코드를 자동으로 생성하고, 주어진 전송에 대하여 적절한 상태 천이를 수행하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  22. 제21항에 있어서,
    의사 랜덤 값을 생성하며, 상기 의사 랜덤 값과 상기 퍼센트 가능성에 기초하여 시뮬레이션된 수신을 위하여 다수의 유효 수신 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  23. 제14항에 있어서,
    무효 전송 메시지의 수신을 시뮬레이션하는 코드를 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  24. 제23항에 있어서,
    주어진 특정 상태에 대하여 무효 수신 메시지가 수신될 퍼센트 가능성 또한 나타내며, 상기 방법은 의사 랜덤 값을 생성하고, 상기 의사 랜덤 값 및 상기 퍼센트 가능성에 기초하여 시뮬레이션된 수신에 대하여 무효 수신 메시지 중 하나를 선택하는 코드를 생성하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  25. 제14항에 있어서,
    상기 메시지 교환 패턴 정의는 WSDL(Web Services Description Language) 표준을 이용하여 정의되는 컴퓨터 프로그램 제품.
  26. 제14항에 있어서,
    상기 메시지 교환 패턴 정의는 특정 상태인 경우에 부가될 타이밍 규칙 또한 정의하는 컴퓨터 프로그램 제품.
  27. 제14항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 매체인 컴퓨터 프로그램 제품.
  28. 제27항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 시스템 메모리를 포함하는 컴퓨터 프로그램 제품.
  29. 제27항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 영구 메모리를 포함하는 컴퓨터 프로그램 제품.
  30. 제29항에 있어서,
    상기 영구 메모리는 자기 디스크인 컴퓨터 프로그램 제품.
  31. 시스템 메모리 내의 컴퓨터 실행가능 명령을 실행할 수 있는 하나 이상의 프로세서를 포함하는 코드 생성 컴퓨팅 시스템에서, 상기 코드 생성 컴퓨팅 시스템이 메시지 교환 패턴을 따르는 메시지 트랜잭션에 관여된 메시지 교환 패턴 애플리케이션을 이용하여 테스트 컴퓨팅 시스템의 기능을 테스트하는 코드를 자동으로 생성하는 방법으로서,
    상기 방법은
    다수의 상태들을 정의하는 메시지 교환 패턴 정의에 액세스하는 단계- 상기 메시지 교환 패턴 정의는 상기 다수의 상태들 각각에 대하여 그 상태에 대한 메시지 교환 패턴에 따르는 하나 이상의 유효 메시지의 표시와, 어느 컴퓨팅 시스템이 주어진 상태에 대하여 각각의 유효 메시지를 전송할 수 있는지에 대한 표시와, 적어도 상기 다수의 상태들 중 하나를 식별하는 몇몇 유효 메시지에 대하여 상기 유효 메시지가 천이되는 경우에 대한 상태 천이 표시를 더 가짐 -와,
    상기 메시지 교환 패턴 정의를 이용하여 메시지 교환 패턴 시뮬레이션 코드를 자동으로 생성하는 단계
    를 포함하는 방법.
  32. 제31항에 있어서,
    상기 메시지 교환 패턴 정의를 이용하여 메시지 교환 패턴 시뮬레이션 코드를 자동으로 생성하는 단계는
    상기 메시지 교환 패턴 정의가 유효 전송 메시지가 상기 테스트 컴퓨팅 시스템에 의해서 전송되는 것을 허용하는 각각의 상태에 대하여, 적어도 상기 유효 전송 메시지의 전송을 시뮬레이션하고, 상기 유효 전송 메시지가 전송되는 경우에 상태 천이를 나타내는 다른 코드로 천이하는 코드를 생성하는 단계와,
    상기 메시지 교환 패턴 정의가 유효 수신 메시지가 수신되는 것을 허용하는 각각의 상태에 대하여, 유효 수신 메시지의 수신을 시뮬레이션하고, 상기 유효 수신 메시지가 수신되는 경우에 상태 천이를 나타내는 다른 코드로 천이하는 코드를 생성하는 단계
    를 포함하는 방법.
KR1020040110466A 2004-01-23 2004-12-22 메시지 교환 패턴 시뮬레이션 코드의 자동화된 생성 KR101031960B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/763,311 2004-01-23
US10/763,311 US7370317B2 (en) 2004-01-23 2004-01-23 Automated generation of message exchange pattern simulation code

Publications (2)

Publication Number Publication Date
KR20050076808A true KR20050076808A (ko) 2005-07-28
KR101031960B1 KR101031960B1 (ko) 2011-04-29

Family

ID=34750408

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040110466A KR101031960B1 (ko) 2004-01-23 2004-12-22 메시지 교환 패턴 시뮬레이션 코드의 자동화된 생성

Country Status (17)

Country Link
US (1) US7370317B2 (ko)
EP (1) EP1577777A3 (ko)
JP (1) JP5008829B2 (ko)
KR (1) KR101031960B1 (ko)
CN (1) CN1645824B (ko)
AU (1) AU2004240189B8 (ko)
BR (1) BRPI0405719A (ko)
CA (1) CA2490593A1 (ko)
IL (1) IL165890A (ko)
MX (1) MXPA05000417A (ko)
MY (1) MY145248A (ko)
NO (1) NO20050334L (ko)
NZ (1) NZ537524A (ko)
RU (1) RU2373565C2 (ko)
SG (1) SG113532A1 (ko)
TW (1) TWI362002B (ko)
ZA (1) ZA200410330B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2838217B1 (fr) * 2002-04-05 2004-06-25 De Chelle Yvonne Auberlet Procede et dispositif de generation de logiciels executables sur mesure et evolutifs sans programmation informatique
US20060184914A1 (en) * 2005-02-17 2006-08-17 Microsoft Corporation Random code generation
US7930683B2 (en) * 2006-03-31 2011-04-19 Sap Ag Test automation method for software programs
KR20090064531A (ko) * 2006-08-23 2009-06-19 츠다코마 고교 가부시키가이샤 공작기계용의 가공용 헤드
US8056090B2 (en) * 2007-06-29 2011-11-08 International Business Machines Corporation Reducing layering overhead in collective communication operations
US8984120B2 (en) * 2010-12-16 2015-03-17 International Business Machines Corporation Determining an unexpected disconnect event constraint within a text exchange session
TWI564711B (zh) * 2016-02-05 2017-01-01 立端科技股份有限公司 節省網路能源之方法
DE102020107141B4 (de) * 2020-03-16 2022-03-17 Dspace Gmbh Simulieren einer Steuergerätekommunikation zwischen einem zu testenden Steuergerät und mindestens einem weiteren Steuergerät
US11366705B1 (en) * 2021-07-29 2022-06-21 Apex.AI, Inc. Deterministic replay of events between software entities

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557798A (en) 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
JPH03295339A (ja) * 1990-04-13 1991-12-26 Oki Electric Ind Co Ltd プロトコル検証用試験方式
JPH06149618A (ja) * 1992-11-10 1994-05-31 Matsushita Electric Ind Co Ltd 自動実行装置および自動実行方法
JP3075664B2 (ja) * 1994-03-07 2000-08-14 ケイディディ株式会社 通信プロトコル適合性試験装置
JPH0847014A (ja) * 1994-07-27 1996-02-16 Toshiba Corp 交換機ソフトウェアの開発支援/保守方式
JPH08235098A (ja) * 1995-02-22 1996-09-13 Mitsubishi Electric Corp 分散アプリケーション通信方式
JP4253056B2 (ja) * 1998-08-03 2009-04-08 株式会社東芝 テスト装置、テストケース評価装置、およびテスト結果解析装置
JP2000322288A (ja) * 1999-05-06 2000-11-24 Fujitsu Ltd 分散オブジェクト開発システム、および、分散オブジェクト開発をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US7366759B2 (en) * 2001-02-22 2008-04-29 Parity Communications, Inc. Method and system for characterizing relationships in social networks
US7020850B2 (en) 2001-05-02 2006-03-28 The Mathworks, Inc. Event-based temporal logic
EP1337080A3 (en) * 2002-02-15 2005-06-08 Hitachi, Ltd. Method of controlling the network devices
CN1452352A (zh) * 2002-04-19 2003-10-29 上海广电信息产业股份有限公司 通过互联网实现智能家用电器设备远程控制的系统和方法
US7689430B2 (en) * 2002-12-16 2010-03-30 International Business Machines Corporation Access to web services
JP4403794B2 (ja) 2003-02-28 2010-01-27 株式会社デンソー 制御プログラムの検査方法及び検査装置及び検査プログラム
US20050080608A1 (en) 2003-06-30 2005-04-14 Joe Burns Simulator for request/response systems
US6920410B2 (en) * 2003-07-08 2005-07-19 Hewlett-Packard Development Company, L.P. Systems and methods for testing a network service
US7451211B2 (en) 2004-01-23 2008-11-11 Microsoft Corporation Message exchange pattern tracking to avoid invalid message exchange

Also Published As

Publication number Publication date
EP1577777A3 (en) 2008-08-27
ZA200410330B (en) 2006-09-27
CN1645824A (zh) 2005-07-27
US7370317B2 (en) 2008-05-06
IL165890A (en) 2010-04-15
TW200527291A (en) 2005-08-16
AU2004240189B2 (en) 2010-04-01
AU2004240189B8 (en) 2010-04-29
MXPA05000417A (es) 2005-08-16
CA2490593A1 (en) 2005-07-23
AU2004240189A1 (en) 2005-08-11
EP1577777A2 (en) 2005-09-21
CN1645824B (zh) 2010-05-26
NO20050334L (no) 2005-07-25
BRPI0405719A (pt) 2005-09-20
KR101031960B1 (ko) 2011-04-29
US20050166186A1 (en) 2005-07-28
NO20050334D0 (no) 2005-01-21
SG113532A1 (en) 2005-08-29
JP5008829B2 (ja) 2012-08-22
RU2373565C2 (ru) 2009-11-20
MY145248A (en) 2012-01-13
TWI362002B (en) 2012-04-11
JP2005209209A (ja) 2005-08-04
RU2004137211A (ru) 2006-05-27
IL165890A0 (en) 2006-01-15
NZ537524A (en) 2006-06-30

Similar Documents

Publication Publication Date Title
US9396046B2 (en) Graph based data model for API ecosystem insights
JP5583769B2 (ja) ホストとなるコンピュータ環境における仮想オブジェクト間接化
JP5008829B2 (ja) メッセージ交換パターンシミュレーションコードの自動生成
Kraemer et al. Tool support for the rapid composition, analysis and implementation of reactive services
Margara et al. We have a DREAM: Distributed reactive programming with consistency guarantees
US20060248406A1 (en) Method for handling a detected error in a script-based application
KR20080104303A (ko) 데이터 구조를 갖는 하나 이상의 컴퓨터 판독가능 매체, 서비스가 데이터를 처리하는 방법 및 이 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품
Mirakhorli et al. Tracing non-functional requirements
Sama et al. Multi-layer faults in the architectures of mobile, context-aware adaptive applications
Kazhamiakin et al. Analysis of realizability conditions for web service choreographies
CN117112060A (zh) 组件库构建方法、装置、电子设备及存储介质
CN109388435A (zh) 实现app同时多次开启操作的方法和装置
CN110598419A (zh) 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质
CN111506904B (zh) 漏洞在线修复的方法和装置
CN111951040A (zh) 信息发送方法及装置、电子设备、存储介质
CN110489180A (zh) 一种埋点上报方法、装置、介质和电子设备
CN116051031A (zh) 项目调度系统、介质及电子设备
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
Vain et al. Model-based testing of real-time distributed systems
Álvarez et al. Integrating schedulability analysis and sdl in an object-oriented methodology for embedded real-time systems
CN112506781A (zh) 测试监控方法、装置、电子设备、存储介质及程序产品
Cledou et al. Coordination of tasks on a Real-Time OS
Prokić et al. Correct orchestration of Federated Learning generic algorithms: formalisation and verification in CSP
Mirisaee et al. A framework for context-aware university mobile organizer
CN113377677A (zh) 一种单元测试方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee