KR20180044174A - 프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법 - Google Patents

프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180044174A
KR20180044174A KR1020170026665A KR20170026665A KR20180044174A KR 20180044174 A KR20180044174 A KR 20180044174A KR 1020170026665 A KR1020170026665 A KR 1020170026665A KR 20170026665 A KR20170026665 A KR 20170026665A KR 20180044174 A KR20180044174 A KR 20180044174A
Authority
KR
South Korea
Prior art keywords
procedure
message
data
msc
test
Prior art date
Application number
KR1020170026665A
Other languages
English (en)
Inventor
이우용
이도영
송재호
엄태일
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US15/694,060 priority Critical patent/US10592212B2/en
Publication of KR20180044174A publication Critical patent/KR20180044174A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시의 기술적 사상의 일측면에 따른 방법은, 복수의 액터들 중 제1 액터 및 적어도 하나의 제2 액터 사이 일련의 메시지들을 정의하는 복수의 프로시저들에 대한 정보를 포함하는 제1 입력 데이터를 획득하는 단계, 복수의 프로시저들간 관계에 대한 정보를 포함하는 제2 입력 데이터를 획득하는 단계, 및 제1 및 제2 입력 데이터를 해석함으로써 제어 데이터를 생성하는 단계, 및 제어 데이터에 기초하여, 일련의 메시지들을 처리함으로써 복수의 프로시저들을 제어하는 단계를 포함할 수 있다.

Description

프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법{SYSTEM AND METHOD FOR SOFTWARE DEVELOPMENT BASED ON PROCEDURE}
본 개시의 기술적 사상은 소프트웨어 개발에 관한 것으로서, 자세하게는 소프트웨어 개발을 위한 시스템 및 방법에 관한 것이다.
프로세서를 포함하는 장치의 성능은, 프로세서에 의해서 실행되는 소프트웨어에 의해서 좌우될 수 있다. 장치에 요구되는 사양이 고도화됨에 따라 소프트웨어는 높은 복잡도를 가질 수 있고, 짧은 개발 기간 동안 높은 신뢰도를 가지는 소프트웨어를 완성하는 것은, 장치의 성능뿐만 아니라 생산성을 향상시킬 수 있다.
본 개시의 기술적 사상은 소프트웨어 개발에 관한 것으로서, 프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 방법은, 병렬 실행가능한 복수의 액터(actor)들을 포함하는 소프트웨어 개발을 위하여 컴퓨팅 시스템에 의해서 구현될 수 있다. 본 방법은, 복수의 액터들 중 제1 액터 및 적어도 하나의 제2 액터 사이 일련의 메시지들을 정의하는 복수의 프로시저들에 대한 정보를 포함하는 제1 입력 데이터를 획득하는 단계, 복수의 프로시저들간 관계에 대한 정보를 포함하는 제2 입력 데이터를 획득하는 단계, 및 제1 및 제2 입력 데이터를 해석함으로써 제어 데이터를 생성하는 단계, 및 제어 데이터에 기초하여, 일련의 메시지들을 처리함으로써 복수의 프로시저들을 제어하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 컴퓨팅 시스템은, 병렬 실행가능한 복수의 액터들을 포함하는 소프트웨어 개발을 위한 컴퓨팅 시스템으로서, 적어도 하나의 프로세서 및 메모리를 포함할 수 있다. 적어도 하나의 프로세서는, 복수의 액터들 중 제1 액터 및 적어도 하나의 제2 액터 사이 일련의 메시지들을 정의하는 복수의 프로시저들에 대한 정보를 포함하는 제1 입력 데이터를 획득하기 위하여 복수의 프로시저들 중 적어도 하나를 MSC(Message Sequence Chart)로 디스플레이함으로써, 제1 입력 데이터를 획득하는 단계, 제1 데이터에 기초하여 제어 데이터를 생성하는 단계, 복수의 프로시저들이 일련의 메시지들을 처리하는 동작에 대한 정보를 포함하는 기능 데이터를 획득하는 단계, 및 제어 데이터 및 기능 데이터에 기초하여, 일련의 메시지들을 처리함으로써 복수의 프로시저들을 제어하는 단계를 수행할 수 있다.
본 개시의 기술적 사상에 따른 소프트웨어 개발을 위한 시스템 및 방법에 의하면, 설계자에게 직관적인 개발 환경을 제공함으로써 높은 효율성을 가지는 소프트웨어의 개발을 가능하게 할 수 있다.
또한, 본 개시의 기술적 사상에 따른 소프트웨어 개발을 위한 시스템 및 방법에 의하면, 설계 단계에서 작성된 데이터가 테스트 단계에서 재사용됨으로써 소프트웨어 개발 기간을 단축시킬 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 컴퓨팅 시스템의 블록도를 나타낸다.
도 2는 본 개시의 예시적 실시예에 따른 소프트웨어 개발 플랫폼을 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시예에 따라 도 2의 MSC 에디터에 의해서 제공되는 디스플레이의 예시를 나타낸다.
도 4는 본 개시의 예시적 실시예에 따라 도 2의 해석기에 의해서 생성되는 제어 데이터의 예시를 나타내는 도면이다.
도 5a 내지 도5c는 본 개시의 예시적 실시예에 따른 도 2의 제2 입력 데이터의 예시를 나타낸다.
도 6은 본 개시의 예시적 실시예에 따라 도 2의 프로시저 제어 프레임워크의 예시적인 블록도를 나타낸다.
도 7은 본 개시의 예시적 실시예에 따라 도 2의 프로시저 제어 프레임워크의 동작의 예시를 나타내는 순서도이다.
도 8a 내지 도 8c는 본 개시의 예시적 실시예에 따라 도 7의 단계 S30에 포함되는 동작들의 예시들을 나타내는 순서도들이다.
도 9는 본 개시의 예시적 실시예에 따른 소프트웨어 개발 플랫폼을 나타내는 블록도이다.
도 10은 본 개시의 예시적 실시예에 따라 도 9의 MSC 에디터에 의해서 제공되는 디스플레이의 예시를 나타낸다.
도 11은 본 개시의 예시적 실시예에 따라 테스트 케이스를 정의하는 MSC들의 예시를 나타낸다.
도 12는 본 개시의 예시적 실시예에 따라 도 9의 테스트 프레임워크의 예시를 나타내는 블록도이다.
도 13은 본 개시의 예시적 실시예에 따라 도 9의 MSC 에디터에 의해서 제공되는 디스플레이의 예시를 나타낸다.
도 14a 및 도 14b는 본 개시의 예시적 실시예들에 따라 도 9의 MSC 에디터에 의해서 제공되는 디스플레이의 예시들을 나타낸다.
도 15는 본 개시의 예시적 실시예에 따른 소프트웨어 개발 플랫폼을 나타내는 블록도이다.
도 16은 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 방법을 나타내는 순서도이다.
도 17은 본 개시의 예시적 실시예에 따라 도 16의 단계 S110의 예시를 나타내는 순서도이다.
도 18은 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 방법을 나타내는 순서도이다.
도 1은 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 컴퓨팅 시스템(10)의 블록도를 나타낸다. 컴퓨팅 시스템(10)은 데스크탑 컴퓨터, 워크스테이션, 서버 등과 같이 고정형 컴퓨팅 시스템일 수도 있고, 랩탑 컴퓨터 등과 같이 휴대형 컴퓨팅 시스템일 수도 있다. 도 1에 도시된 바와 같이, 컴퓨터 시스템(10)은 프로세서(들)(11), RAM(Random Access Memory)(12), 비휘발성 메모리(13), 입출력 장치들(14), 네트워크 인터페이스(15) 및 저장 장치(16)를 포함할 수 있다. 프로세서(들)(11), RAM(Random Access Memory)(12), 비휘발성 메모리(13), 입출력 장치들(14), 네트워크 인터페이스(15) 및 저장 장치(16)는 버스(17)에 연결될 수 있고, 버스(17)를 통해서 서로 통신할 수 있다.
프로세서(들)(11)는 프로세싱 유닛으로 지칭될 수도 있고, 예컨대 마이크로프로세서(micro-processor), AP(Application Processor), DSP(Digital Signal Processor), GPU(Graphic Processing Unit)과 같이 임의의 명령어 세트(예컨대, IA-32(Intel Architecture-32), 64 비트 확장 IA-32, x86-64, PowerPC, Sparc, MIPS, ARM, IA-64 등)를 실행할 수 있는 코어를 포함할 수 있다. 프로세서(들)(11)는 버스(17)를 통해서 메모리, 즉 RAM(12) 또는 비휘발성 메모리(13)에 액세스할 수 있고, RAM(12) 또는 비휘발성 메모리(13)에 저장된 명령어들을 실행할 수 있다. 예를 들면, RAM(12) 또는 비휘발성 메모리(13)는 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 프로그램(또는 소프트웨어 개발 플랫폼) 및 그것의 적어도 일부를 저장할 수 있고, 프로그램은 프로세서(들)(11)로 하여금 소프트웨어 개발 플랫폼을 수행하도록 할 수 있다.
소프트웨어의 어플리케이션들 중 하나로서, 통신 프로토콜은 실시간성이 요구될 뿐만 아니라 높은 복잡도를 가지므로, 통신 프로토콜을 위한 소프트웨어는 계층적 아키텍쳐(layered architecture)를 사용하여 레이어별로 모듈화될 수 있다. 이에 따라, 통신 프로토콜을 위한 소프트웨어는 메시지-구동(message-driven) 기반의 멀티-쓰레드(multi-thread) 구조를 가지도록 개발될 수 있다. 프로시저는 어떤 행동을 수행하기 위한 일련의 작업순서로서, 본 명세에서 프로시저는 하나의 액터가 다른 하나 이상의 액터와 하나 이상의 메시지를 주고 받는 과정을 지칭할 수 있고, 하나의 MSC 상으로 표현되는 단위일 수 있다. 예를 들면, 프로시저는 하나의 쓰레드가 일련의 메시지들을 처리하기 위하여 수행하는 단위를 지칭할 수 있고, 하나의 쓰레드는 복수의 프로시저들을 수행할 수 있다.
프레임워크(framework)는 높은 복잡도를 가지는 소프트웨어를 개발하는데 있어서 필수적일 수 있고, 프레임워크는 멀티-쓰레드 구조의 소프트웨어를 위하여 프로시저와 관계된 일련의 메시지들을 정확하게 처리하고 프로시저들의 관계를 고려하여 프로시저들을 제어하는 것이 요구될 수 있다. 후술되는 바와 같이, 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 시스템 및 방법은, 일련의 메시지들의 순차적 처리 및 프로시저들 사이 관계의 처리를 담당하는 부분(예컨대, 제어 로직(control logic)으로 지칭될 수 있다) 및 프로시저에서 메시지 파라미터를 이용하여 실제적인 처리를 담당하는 부분(예컨대, 기능 로직(functional logic)으로 지칭될 수 있다)을 분리시키는 프레임워크를 제공함으로써 소프트웨어 개발의 복잡도를 감소시킬 뿐만 아니라 향상된 유지보수성(maintainability)을 달성할 수 있다.
비휘발성 메모리(13)는 컴퓨팅 시스템(10)에 공급되는 전력이 차단되더라도 저장된 데이터를 소실하지 아니할 수 있고, 예를 들면 EEPROM(non-volatile memory such as a Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있다.
입출력 장치들(14)은 키보드, 포인팅 장치 등과 같은 입력 장치를 포함할 수 있고, 디스플레이 장치, 프린터 등과 같은 출력 장치를 포함할 수 있다. 예를 들면, 사용자는 입출력 장치들(14)을 통해서, 프로세서(들)(11)에 의한 소프트웨어 개발을 위한 방법의 수행을 트리거할 수도 있고, 도 2의 제1 및 제2 입력 데이터(D_IN1, D_IN2)의 적어도 일부분이나 기능 데이터(D_FUN)의 적어도 일부분을 입력할 수 있으며, MSC 에디터(110)가 제공하는 MSC(Message Sequence Chart)를 확인할 수도 있다.
네트워크 인터페이스(15)는 컴퓨팅 시스템(10) 외부의 네트워크에 대한 액세스를 제공할 수 있다. 예를 들면, 네트워크는 다수의 상호연결된 컴퓨팅 시스템들 및 통신 링크들을 포함할 수 있고, 통신 링크들은 유선 링크들, 광학 링크들, 무선 링크들 또는 임의의 다른 형태의 링크들을 포함할 수 있다.
저장 장치(16)는 비휘발성 메모리를 포함할 수도 있고, 자기 테이프, 광학 디스크, 자기 디스크와 같은 저장 매체를 포함할 수도 있다. 또한, 저장 장치(16)는 컴퓨팅 시스템(10)으로부터 탈착 가능할 수도 있다. 저장 장치(16)는 본 개시의 예시적 실시예에 따른 프로그램을 저장할 수 있으며, 프로그램이 프로세서(들)(11)에 의해서 실행되기 이전에 프로그램 또는 그것의 적어도 일부가 RAM(12) 또는 비휘발성 메모리(13)로 로딩될 수 있다. 다르게는, 저장 장치(16)는 프로그램 언어로 작성된 파일을 저장할 수 있고, 그 파일로부터 컴파일러 등에 의해서 생성된 프로그램 또는 그것의 적어도 일부가 RAM(12) 또는 비휘발성 메모리(13)로 로딩될 수 있다.
저장 장치(16)는 프로세서(들)(11)에 의해서 처리될 데이터 또는 프로세서(들)(11)에 의해서 처리된 데이터를 저장할 수도 있다. 즉, 프로세서(들)(11)는 프로그램에 따라, 저장 장치(16)에 저장된 데이터를 처리함으로써 데이터를 생성할 수 있고, 생성된 데이터를 저장 장치(16)에 저장할 수도 있다. 예를 들면, 저장 장치(16)는, 도 2의 제어 데이터(D_CTR) 및/또는 기능 데이터(D_FUN)를 저장할 수도 있고, 도 9의 테스트 데이터 저장소(500)와 같이 테스트 데이터(T_DAT)를 저장할 수도 있다.
도 2는 본 개시의 예시적 실시예에 따른 소프트웨어 개발 플랫폼(5)을 나타내는 블록도이다. 도 2의 소프트웨어 개발 플랫폼(5)은 프로그램으로서 도 1의 RAM(12), 비휘발성 메모리(13) 및 저장 장치(16) 중 적어도 하나에 전체 또는 적어도 일부가 저장될 수 있고, 프로세서(들)(11)에 의해서 실행됨으로써 소프트웨어 개발을 위한 동작을 수행할 수 있다. 도 2에 도시된 바와 같이, 소프트웨어 개발 플랫폼(5)은 사용자 인터페이스(100) 및 프레임워크(200)를 포함할 수 있다. 본 명세서에서 소프트웨어 개발 플랫폼(5)의 구성요소들이 동작을 수행하는 것은, 소프트웨어 개발 플랫폼(5)의 구성요소들이 프로세서(예컨대, 도 1의 프로세서(들)(11))에 의해서 실행됨으로써 동작을 수행하는 것을 의미하는 것으로 가정된다.
사용자 인터페이스(100)는 사용자가 제공하는 입력 및 사용자에 제공되는 출력을 처리할 수 있다. 예를 들면, 사용자 인터페이스(100)는 도 1의 입출력 장치들(14)을 통해서 수신되는 사용자 입력을 처리할 수 있는 한편, 사용자에게 제공되는 출력을 위하여 입출력 장치들(14)에 데이터를 전송할 수 있다. 이하에서, 사용자 인터페이스(100)의 구성요소들이 사용자의 입력 및 출력을 처리하는 것은, 입출력 장치들(예컨대, 도 1의 입출력 장치들(14))을 통해서 사용자의 입력 및 출력을 처리하는 것을 의미하는 것으로 가정된다. 도 2에 도시된 바와 같이, 사용자 인터페이스(100)는 MSC 에디터(110), 관계 에디터(120), 해석기(130) 및 메시지 핸들러 에디터(140)를 포함할 수 있다.
MSC 에디터(110)는 사용자에게 MSC를 디스플레이할 수 있고, 사용자로부터 제1 입력 데이터(D_IN1)의 적어도 일부를 수신함으로써 제1 입력 데이터(D_IN1)를 해석기(130)에 제공할 수 있다. 제1 입력 데이터(D_IN1)는 사용자에 의해서 설계된 프로시저에 대한 정보를 포함할 수 있다. MSC는, 도 3을 참조하여 후술되는 바와 같이, 2이상의 엔티티(entity)들 사이에서 전달되는 일련의 메시지들을 나타내는 도표로서 소프트웨어 개발 단계에서 프로시저를 나타내는데 사용될 수 있다. 예를 들면, 프로세스 및 쓰레드(thread)와 같이, 소프트웨어에서 병렬적으로 실행가능한 단위를 지칭하는 액터(actor)가 송수신하는 일련의 메시지들이 MSC로 표현될 수 있다. 프로시저는 액터와 관계된 일련의 메시지들로 구성될 수 있고, 사용자는 MSC 에디터(110)가 제공하는 MSC를 변경함으로써 프로시저를 설계할 수 있고, MSC 에디터(110)는 변경된 MSC로부터 제1 입력 데이터(D_IN1)를 추출하여 해석기(130)에 제공할 수 있다. MSC 에디터(110) 및 제1 입력 데이터(D_IN1)에 대한 자세한 내용은, 도 3을 참조하여 후술될 것이다.
관계 에디터(120)는 사용자로부터 제2 데이터(D_IN2)의 적어도 일부를 수신할 수 있고, 제2 입력 데이터(D_IN2)를 해석기(130)에 제공할 수 있다. 제2 입력 데이터(D_IN2)는 복수의 프로시저들 사이 관계에 대한 정보를 포함할 수 있다. 예를 들면, 관계 에디터(120)는 사용자에게 복수의 프로시저들 사이 관계를 나타내는 테이블을 디스플레이할 수 있고, 사용자는 테이블을 변경함으로써 프로시저들 사이 관계를 정의할 수 있고, 관계 에디터(120)는 변경된 테이블로부터 제2 입력 데이터(D_IN2)를 추출하여 해석기(130)에 제공할 수 있다. 관계 에디터(120) 및 제2 입력 데이터(D_IN2)에 대한 자세한 내용은 도 5a 내지 도 5c를 참조하여 후술될 것이다.
해석기(130)는 MSC 에디터(110)로부터 수신되는 제1 입력 데이터(D_IN1) 및 관계 에디터(120)로부터 수신되는 제2 입력 데이터(D_IN2)를 해석함으로써 제어 데이터(D_CTR)를 생성할 수 있다. 제어 데이터(D_CTR)는 소프트웨어에서 일련의 메시지들의 처리 및 프로시저들 사이 관계의 처리를 담당하는 부분(또는 제어 로직)에 대응할 수 있다. 즉, 해석기(130)는 프로시저에 대한 정보를 포함하는 제1 입력 데이터(D_IN1) 및 프로시저들 간 관계에 대한 정보를 포함하는 제2 입력 데이터(D_IN2)로부터 제어 데이터(D_CTR)를 생성할 수 있고, 프레임워크(200)에 제공할 수 있다. 도 4를 참조하여 후술되는 바와 같이, 제어 데이터(D_CTR)는 프레임워크(200)가 프로시저들을 제어하는데 이용 가능한 데이터 구조를 포함할 수 있다.
메시지 핸들러 에디터(140)는 사용자로부터 기능 데이터(D_FUN)의 적어도 일부를 수신할 수 있고, 기능 데이터(D_FIN)를 프레임워크(200)에 제공할 수 있다. 기능 데이터(D_FUN)는 프로시저에서 메시지의 처리를 담당하는 부분, 즉 메시지 핸들러(또는 기능 로직)에 대응할 수 있다. 메시지 핸들러 에디터(140)는 프레임워크(200)가 제공하는 템플릿 데이터(D_TEM)에 기초하여 메시지 핸들러를 위한 템플릿을 사용자에게 디스플레이할 수 있고, 사용자는 템플릿을 참조하여 메시지 핸들러를 설계할 수 있다. 메시지 핸들러 에디터(140)는 사용자에 의해서 설계된 메시지 핸들러를 포함하는 기능 데이터(D_FUN)를 프레임워크(200)에 제공할 수 있다.
전술된 바와 같이, 사용자 인터페이스(100)는 사용자에게 제어 로직 및 기능 로직 각각을 설계하기 위한 분리된 경로들을 제공할 수 있고, 이에 따라 사용자는 병렬적으로 실행가능한 복수의 액터들(예컨대, 쓰레드들)을 포함하는 소프트웨어를 효율적으로 설계할 수 있다. 제어 로직을 위하여, MSC 에디터(110)는 프로시저를 정의하기 위한 환경을 사용자에게 제공할 수 있고, 관계 에디터(120)는 프로시저들 간 관계를 정의하기 위한 환경을 사용자에게 제공할 수 있다.
프레임워크(200)는 사용자 인터페이스(100)로부터 제어 데이터(D_CTR) 및 기능 데이터(D_FUN)를 수신할 수 있고, 사용자 인터페이스(100)에 템플릿 데이터(D_TEM)를 제공할 수 있다. 템플릿 데이터(D_TEM)는 제어 데이터(D_CTR) 및 기능 데이터(D_FUN)에 기초하여 생성될 수 있고, 사용자의 소프트웨어 설계를 조력하기 위하여 사용자 인터페이스(100)를 통해서 사용자에게 제공되는 정보를 포함할 수 있다. 예를 들면, 템플릿 데이터(D_TEM)는 제어 데이터(D_CTR)에서 정의된 메시지들 및 프로시저들에 대한 정보를 포함할 수 있고, MSC 에디터(110)는 템플릿 데이터(D_TEM)에 기초하여 일련의 메시지들을 디스플레이할 수 있고, 관계 에디터(120)는 템플릿 데이터(D_TEM)에 기초하여 복수의 프로시저들의 명칭들을 디스플레이할 수 있다. 도 2에 도시된 바와 같이, 프레임워크(200)는 프로시저 제어 프레임워크(210)를 포함할 수 있다.
프로시저 제어 프레임워크(210)는 제어 데이터(D_CTR)에 기초하여 일련의 메시지들을 처리함으로써 프로시저들을 제어할 수 있다. 예를 들면, 제어 데이터(D_CTR)는 메시지의 유형에 대한 정보를 포함할 수 있고, 프로시저 제어 프레임워크(210)는 하나의 액터에서 메시지가 수신되는 경우, 메시지의 유형에 따라 신규 프로시저를 트리거하거나 프로시저를 종료(abort)하거나 프로시저의 수행을 계속 진행(proceed)할 수 있다. 또한, 프로시저 제어 프레임워크(210)는, 제어 데이터(D_CTR)에 포함된 프로시저들 간 관계 정보에 기초하여 트리거된 신규 프로시저 및 수행 중인 프로시저를 처리할 수 있다. 또한, 프로시저 제어 프레임워크(210)는 기능 데이터(D_FUN)에 의해서 정의된 메시지 핸들러에 기초하여 액터가 수신된 메시지에 응답하여 수행하는 동작을 처리할 수 있다. 이와 같이, 프로시저 제어 프레임워크(210)는 제어 데이터(D_CTR)에 기초하여 일련의 메시지들 및 복수의 프로시저들을 정확하게 제어함으로써 복수의 액터들을 포함하는 소프트웨어 개발을 위한 효율적인 프레임워크를 사용자에게 제공할 수 있다. 프로시저 제어 프레임워크(210)에 대한 자세한 내용은 도 6등을 참조하여 후술될 것이다.
도 3은 본 개시의 예시적 실시예에 따라 도 2의 MSC 에디터(110)에 의해서 제공되는 디스플레이의 예시를 나타낸다. 도 2를 참조하여 전술된 바와 같이, MSC 에디터(110)는 사용자에게 MSC를 디스플레이할 수 있고, 사용자 입력에 따라 변경된 MSC로부터 제1 입력 데이터(D_IN1)를 추출할 수 있다. 이하에서 도 3은 도 2를 참조하여 설명될 것이다.
도 3을 참조하면, 프로시저 설계 영역(20)은 MSC 영역(21) 및 탐색 영역(22)을 포함할 수 있다. MSC 영역(21)은 사용자가 프로시저를 정의하는 공간으로서, 도 3에 도시된 바와 같이, 사용자에 의해서 편집이 가능한 프로시저의 명칭(20_1), 액터들(20_2, 20_3), 메시지들(20_4, 20_5) 및 메시지 옵션(20_6)을 디스플레이할 수 있다. 탐색 영역(22)은 사용자가 MSC 편집을 위한 도구들을 제공할 수도 있고, (예컨대, 도 2의 템플렛 데이터(D_TEM)에 기초한) 템플릿들을 제공할 수도 있다. 비록 도 3의 MSC 영역(21)에서 2개의 액터들(20_2, 20_3) 및 2개의 메시지들(20_4, 20_5)이 도시되었으나, 본 개시의 예시적 실시예들이 이에 제한되지 아니하는 점은 이해될 것이다.
MSC 에디터(110)에 의해서 추출되는 제1 입력 데이터(D_IN1)는 액터에 대한 정보를 포함할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, MSC 에디터(110)는 액터 편집 영역(23)을 제공할 수 있고, 사용자는 액터 편집 영역(23)에서 액터의 명칭, 프로시저의 개시와 동시에 개시되는 메인 액터인지 여부 등과 같은 액터에 관한 정보를 입력할 수 있다.
MSC 에디터(110)에 의해서 추출되는 제1 입력 데이터(D_IN1)는 메시지에 대한 정보를 포함할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, MSC 에디터(110)는 메시지 편집 영역(24)을 제공할 수 있고, 사용자는 메시지 편집 영역(24)에서 메시지의 명칭, 메시지 핸들러의 식별자, 메시지 유형 등과 같은 메시지에 관한 정보를 입력할 수 있다. 메시지 핸들러는 프로시저에서 메시지를 처리하는 동작을 수행하는 것으로서, 도 2의 기능 데이터(D_FUN)에서 정의될 수 있고, 사용자는 메시지 편집 영역(24)에서 메시지 핸들러의 식별자(예컨대, 명칭, 경로 등)를 입력함으로써 해당 메시지와 메시지 핸들러를 링크시킬 수 있다.
메시지는 메시지 유형에 따라, 프로시저 트리거 메시지, 프로시저 내부(inner) 메시지 또는 임의(arbitrary) 메시지로 분류될 수 있다. 프로시저 트리거 메시지는 MSC에서 가장 먼저 송수신되는 메시지로서 신규 프로시저를 트리거할 수 있다. 임의 메시지는, 예컨대 타이머 만료(expiry) 메시지와 같이, 프로시저가 수행되는 동안 임의의 시점에서 발생 가능할 수 있다. 프로시저 내부 메시지는 프로시저 트리거 메시지 및 프로시저 내부 메시지를 제외한 메시지로서, 해당 프로시저의 수행 중에 처리될 수 있다. 도 6을 참조하여 후술되는 바와 같이, 도 2의 프로시저 제어 프레임워크(210)는 메시지의 유형에 따라 프로시저를 제어할 수 있다.
MSC 에디터(110)에 의해서 추출되는 제1 입력 데이터(D_IN1)는 메시지의 옵션(또는 메시지 발생 옵션)에 대한 정보를 포함할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, MSC 에디터(110)는 메시지 옵션 편집 영역(25)을 제공할 수 있고, 사용자는 메시지 옵션 편집 영역(25)에서 메시지 옵션을 입력할 수 있다. 예를 들면, 사용자는 메시지 옵션 편집 영역(25)에서 MSC 사양이 제안하는 메시지 옵션들과 유사한 옵션들, 예컨대 OPT, PAR, IF/ELSE, ALT, LOOP 등을 입력할 수 있다. 또한, 메시지 옵션 편집 영역(25) 및 도 2의 프레임워크(200)는 메시지 옵션으로서 LOCK을 지원할 수 있다. LOCK 옵션은 다른 임의의 프로시저들보다 우선 처리될 필요가 있는 프로시저의 부분들(또는 노드들)에 대하여 우선권을 배정하기 위하여 사용될 수 있고, 다수의 프로시저들이 동시에 수행되는 경우 적절하게 활용될 수 있다.
도 4는 본 개시의 예시적 실시예에 따라 도 2의 해석기(130)에 의해서 생성되는 제어 데이터(D_CTR)의 예시를 나타내는 도면이다. 구체적으로, 도 4의 좌측은 액터 A(31)의 제1 프로시저를 정의하는 MSC(D41)를 나타내고, 도 4의 우측은 MSC(D41)로부터 생성된 제어 데이터(D_CTR)의 일부(D42)를 예시적으로 나타낸다. 도 2를 참조하여 전술된 바와 같이, 해석기(130)는 제1 및 제2 입력 데이터(D_IN1, D_IN2)를 해석함으로써 프레임워크(200)가 처리할 수 있는 형식을 가지는 제어 데이터(D_CTR)를 생성할 수 있다. 이하에서 도 4는 도 2 및 도 3을 참조하여 설명될 것이다.
도 4의 좌측을 참조하면, MSC(D41)는 2개의 액터들(31, 32) 사이 일련의 메시지들(MSG1 내지 MSG5)을 정의할 수 있다. 제1 메시지(MSG1)는 트리거 메시지로서 액터 A(31)가 트리거 메시지를 수신할 경우, 일련의 메시지들(MSG1 내지 MGS5)을 정의하는 제1 프로시저를 개시할 수 있다. MSC(D41)에 도시된 바와 같이, 액터 A(31)의 제1 프로시저는, 메시지들(MSG1 내지 MSG5) 각각을 처리하는 동작을 수행하는 부분들(N1 내지 N5)로서 분리될 수 있다. 예를 들면, 제1 메시지(MSG1)를 처리하는 동작은 'N1'에 의해서 수행될 수 있고, 제2 메시지(MSG2)에 응답하여 제3 메시지(MSG3)를 송신하는 동작은 'N2'에 의해서 수행될 수 있다.
도 4에 도시된 바와 같이, 메시지 옵션으로서 'ALT'가 MSC(D41)에서 정의될 수 있고, 제1 프로시저는 'N1'에서 수신되는 메시지에 따라 상이한 동작을 수행할 수 있다. 즉, 'N1'에서 액터 A(31)가 제2 메시지(MSG2)를 수신하는 경우, 제2 메시지(MSG2)는 'N2'에 의해서 처리됨으로써 제3 메시지(MSG3)가 송신될 수 있고, 'N3'가 후속하는 동작을 수행할 수 있다. 다른 한편으로, 'N1'에서 액터 A(31)가 제4 메시지(MSG4)를 수신하는 경우, 제4 메시지(MSG4)는 'N4'에 의해서 처리됨으로써 제5 메시지(MSG5)가 송신될 수 있고, 'N5'가 후속하는 동작을 수행할 수 있다. 제1 프로시저의 부분들(N1 내지 N5) 각각은 기능 데이터(D_FUN)에 의해서 정의될 수 있다.
도 2의 해석기(130)는 제1 데이터(D_IN1)로부터 트리 구조의 데이터를 생성할 수 있다. 예를 들면, MSC(D41)에서 제1 프로시저는 메시지들(MSG1 내지 MSG5)을 각각 처리하는 부분들(N1 내지 N5)을 포함할 수 있고, 제어 데이터(D_CTR)의 일부(D42)에서 제1 프로시저는 부분들(N1 내지 N5)이 수행되는 순서에 따라 나열된 트리 구조로 표현될 수 있다. 즉, 트리의 노드들은 메시지들을 각각 처리하는 제1 프로시저의 부분들(N1 내지 N5)에 대응할 수 있고, 제1 프로시저의 부분들(N1 내지 N5)은 메시지들(MSG1 내지 MSG5)에 각각 대응되므로, 트리의 노드들은 메시지들에 대응되는 것으로 지칭될 수도 있다. 이하에서, 프로시저에서 메시지를 처리하는 동작 단위(예컨대, N1 등)는 노드로서 지칭될 수 있다. 프레임워크(200)는 트리 구조의 데이터(D42)를 포함하는 제어 데이터(D_CTR)에 기초하여 노드들을 순차적으로 추적하고 메시지들을 처리함으로써 제1 프로시저를 제어할 수 있다.
도 5a 내지 도 5c는 본 개시의 예시적 실시예에 따른 도 2의 제2 입력 데이터(D_IN2)의 예시를 나타낸다. 도 2를 참조하여 전술된 바와 같이, 제2 입력 데이터(D_IN2)는 복수의 프로시저들 사이 관계에 대한 정보를 포함하는 데이터일 수 있다. 도 5a 내지 도 5c에 도시된 바와 같이, 도 2의 관계 입력기(120)는 복수의 프로시저들 사이의 관계를 나타내는 테이블들(D50 내지 D54)을 디스플레이할 수 있고, 사용자는 테이블들(D50 내지 D54)을 변경함으로써 복수의 프로시저들 사이 관계를 정의할 수 있다.
도 5a를 참조하면, 액터에 의해서 수행되는 프로시저들은 속성에 따라 프로시저 그룹들로 그룹핑될 수 있다. 예를 들면, 도 5a에 도시된 바와 같이, 소프트웨어가 실행되는 장치가 통신 장치인 경우, 통신 장치의 상태에 따라 대기 상태를 나타내는 'Idle', 다른 통신 장치와 통신가능한 상태를 나타내는 'Conn' 및 기타 상태를 나타내는 'Etc'과 같은 프로시저 그룹들이 존재할 수 있고, 프로시저 그룹들 각각은 프로시저 그룹이 나타내는 통신 장치의 상태에서 액터가 수행할 수 있는 프로시저들을 포함할 수 있다. 관계 에디터(120)는 프로시저 그룹들을 나타내는 테이블(D50)을 디스플레이할 수 있고, 사용자는 테이블(D50)을 변경함으로써 프로시저 그룹을 편집, 예컨대 삭제, 추가, 변경할 수 있다.
도 5b를 참조하면, 프로시저 그룹들 각각에 포함되는 프로시저들이 정의될 수 있다. 예를 들면, 도 5b에 도시된 바와 같이, 액터는 6개의 프로시저들(즉, 'Reselection', 'Reconfiguration', 'Paging', 'SI Reading ', 'PLMN Scan' 및 'Handover')을 수행할 수 있고, 6개의 프로시저들 각각은 3개의 프로시저 그룹들(즉, 'Idle', 'Conn', 'Etc') 중 적어도 하나에 포함될 수 있다. 예를 들면, 프로시저 'Reselection'은 2개의 프로시저 그룹들(즉, 'Idle', 'Etc')에 포함될 수 있다. 관계 에디터(120)는 프로시저들 및 프로시저 그룹을 나타내는 테이블(D51)을 디스플레이할 수 있고, 사용자는 테이블(D51)을 변경함으로써 프로시저들 및 프로시저 그룹들 사이 관계를 정의할 수 있다.
도 5c를 참조하면, 하나의 프로시저 그룹에서 프로시저들 사이 관계가 정의될 수 있다. 예를 들면, 도 5c의 테이블(D52)에 도시된 바와 같이, 프로시저 그룹 'Idle'에서, 4개의 프로시저들(즉, 'Reselection', 'Paging', 'SI Reading' 및 'PLMN Scan') 사이 관계가 정의될 수 있다. 2개의 프로시저들 사이 관계는 하나의 프로시저가 수행되는 동안 다른 프로시저가 트리거되는 경우, 2개의 프로시저들의 수행에 관한 정보를 의미할 수 있고, 이에 따라 프로시저 그룹들 'Idle', 'Conn' 및 'Etc'에 각각 대응하는 도 5c에 도시된 테이블들(D52, D53, D54) 각각은 충돌 행렬(conflict matrix)로서 지칭될 수도 있다.
도 5c에 도시된 바와 같이, 2개의 프로시저들 사이 관계는 4개의 옵션들 중 하나일 수 있다. 즉, 2개의 프로시저들 사이 관계는, 트리거된 프로시저가 수행 중인 프로시저와 동시에 수행될 수 있음을 나타내거나(즉, 도 5c에서 'concurrent'), 트리거된 프로시저가 수행 중인 프로시저를 종료시키고 수행됨을 나타내거나(즉, 도 5c에서 'run abort'), 트리거된 프로시저가 수행 중인 프로시저의 종료시까지 지연되어 수행됨을 나타내거나(즉, 도 5c에서 'trigger defer'), 트리거된 프로시저가 수행 중인 프로시저에 의해서 무시됨(즉, 도 5c에서 'trigger ignore')을 나타낼 수 있다. 예를 들면, 테이블(D52)에 도시된 바와 같이, 프로시저 'SI Reading'이 수행되는 동안 트리거된 프로시저 'Reselection'은 동시에 수행될 수 있는 한편, 프로시저 'SI Reading'이 수행되는 동안 트리거된 프로시저 'Paging'에 의해서 프로시저 'SI Reading'은 종료될 수 있다.
도 6은 본 개시의 예시적 실시예에 따라 도 2의 프로시저 제어 프레임워크(210)의 예시적인 블록도를 나타낸다. 도 2를 참조하여 전술된 바와 같이, 도 6의 프로시저 제어 프레임워크(210')는 제어 데이터(D_CTR) 및 기능 데이터(D_FUN)를 수신할 수 있고, 제어 데이터(D_CTR) 및 기능 데이터(D_FUN)에 기초하여 프로시저들을 제어할 수 있다. 도 6에 도시된 바와 같이, 프로시저 제어 프레임워크(210')에 수신되는 제어 데이터(D_CTR)는 도 2의 제1 데이터(D_IN1)로부터 생성된 트리 구조의 데이터(D61) 및 도 2의 제2 데이터(D_IN2)로부터 생성된 테이블을 포함하는 데이터(D62)를 포함할 수 있다.
도 6을 참조하면, 프로시저 프레임워크(210')는 메시지 유형 분류기(211), 프로시저 축조기(212), 충돌 제어기(213), 프로시저 큐들(214) 및 프로시저 제어기(215)를 포함할 수 있다. 메시지 유형 분류기(211)는 메시지 유형에 따라 메시지를 프로시저 축조기(212) 또는 프로시저 제어기(215)에 전달할 수 있다. 예를 들면, 메시지 유형 분류기(211)는 프로시저 트리거 메시지를 프로시저 축조기(212)에 전달할 수 있는 한편, 프로시저 내부 메시지 또는 임의 메시지를 프로시저 제어기(215)에 전달할 수 있다.
프로시저 축조기(212)는 메시지 유형 분류기(211)로부터 수신된 메시지, 즉 프로시저 트리거 메시지에 응답하여 신규 프로시저(또는 프로시저 핸들러)를 생성할 수 있다. 예를 들면, 프로시저 축조기(212)는 제어 데이터(D_CTR)에 포함된 트리 구조의 데이터(D61)에 기초하여, 메시지 유형 분류기(211)로부터 수신된 메시지를 프로시저 트리거 메시지로서 가지는 프로시저에 대한 정보를 획득할 수 있고, 획득된 정보에 기초하여 프로시저(또는 프로시저 핸들러)를 생성할 수 있다.
충돌 제어기(213)는 프로시저 축조기(212)에 의해서 생성된 프로시저와 수행 중인 프로시저들 사이 관계에 관한 정보를 프로시저 제어기(215)에 제공할 수 있다. 예를 들면, 수행 중인 프로시저들은 프로시저 큐들(214)에 포함된 런 큐(214_1)에 있는 프로시저들(또는 프로시저 핸들러들)을 지칭할 수 있고, 충돌 제어기(213)는 런 큐(214_1)에 엑세스할 수 있고, 제어 데이터(D_CTR)에서 프로시저들 사이 관계에 관한 정보를 나타내는 테이블을 포함하는 데이터(D62)를 참조할 수 있다. 충돌 제어기(213)는 프로시저 트리거 메시지, 생성된 프로시저, 프로시저들의 관계에 대한 정보들을 프로시저 제어기(215)에 제공할 수 있다.
프로시저 제어기(215)는 메시지 유형 분류기(211)로부터 수신된 메시지 및 충돌 제어기(213)로부터 수신된 메시지를 처리함으로써 프로시저들을 제어할 수 있다. 도 6에 도시된 바와 같이, 프로시저 제어기(215)는 프로시저 큐들(214)에 엑세스할 수 있고, 프로시저 큐들(214)는 현재 수행 중인 프로시저들을 담고 있는 런 큐(214_1), 현재 수행중인 프로시저가 수행 완료시 수행될 프로시저들을 담고 있는 디퍼(defer) 큐(214_2) 및 종료될 프로시저들을 담고 있는 어볼트(abort) 큐(214_3)를 포함할 수 있다. 프로시저 제어기(215)는 프로시저를 프로시저 큐들(214)에 포함된 큐로부터 인출하거나 큐에 삽입함으로써 프로시저를 제어할 수 있다. 프로시저 제어기(215)의 동작에 관한 자세한 내용은 도 8a 내지 도 8c를 참조하여 후술될 것이다.
도 7은 본 개시의 예시적 실시예에 따라 도 2의 프로시저 제어 프레임워크(210)의 동작의 예시를 나타내는 순서도이다. 예를 들면, 도 7에 도시된 동작은, 도 2의 제어 프레임워크(210)의 예시로서 도 6의 프로시저 제어 프레임워크(210')에 의해서 수행될 수 있고, 도 7은 도 6을 참조하여 설명될 것이다.
도 7을 참조하면, 단계 S10에서 메시지의 수신 여부를 판단하는 동작이 수행될 수 있고, 메시지가 수신되는 경우 단계 S20에서 메시지 유형을 판별하는 동작이 수행 될 수 있다. 예를 들면, 메시지 유형 분류기(211)는 메시지의 수신 여부를 판단할 수 있고, 메시지가 수신되지 아니하는 경우 메시지의 수신을 대기할 수 있는 한편, 메시지가 수신된 경우 메시지 유형을 판별하는 동작을 수행할 수 있다.
단계 S30에서, 메시지 유형에 따른 동작이 수행될 수 있다. 예를 들면, 메시지 유형 분류기(211)는 메시지 유형이 신규 프로시저를 트리거하기 위한 프로시저 트리거 메시지인 경우 프로시저 축조기(212)에 메시지를 전달할 수 있는 한편, 프로시저 트리거 메시지와 다른 메시지 유형인 경우, 프로시저 제어기(215)에 메시지를 전달할 수 있다. 단계 S30에 대한 자세한 내용은 도 8a 내지 도 8c를 참조하여 후술될 것이다.
도 8a 내지 도 8c는 본 개시의 예시적 실시예에 따라 도 7의 단계 S30에 포함되는 동작들(S31, S32, S33)의 예시들을 나타내는 순서도들이다. 구체적으로, 도 8a의 순서도는 본 개시의 예시적 실시예에 따라 메시지 유형이 프로시저 내부 메시지인 경우의 동작(S31)을 나타내고, 도 8b의 순서도는 본 개시의 예시적 실시예에 따라 메시지 유형이 임의 메시지인 경우의 동작(S32)을 나타내고, 도 8c는 본 개시의 예시적 실시예에 따라 메시지 유형이 프로시저 트리거 메시지인 경우의 동작(S33)을 나타낸다. 예를 들면, 도 8a 내지 도 8c에 도시된 동작들은 도 6의 프로시저 제어 프레임워크(210')에 의해서 수행될 수 있고, 이하에서 도 8a 내지 도 8c는 도 6을 참조하여 설명될 것이다.
도 8a를 참조하면, 메시지 유형이 프로시저 내부 메시지인 경우, 단계 S31_1에서 런 큐(214_1)에 존재하는 프로시저를 검색하는 동작이 수행된다. 예를 들면, 프로시저 제어기(215)는 런 큐(214_1)에 엑세스함으로써 런 큐(214_1)에 있는 프로시저들(또는 프로시저 핸들러들) 중 하나를 인출할 수 있다.
단계 S31_2에서, 인출된 프로시저에 의해서 프로시저 내부 메시지가 처리가능한지 여부를 판단하는 동작이 수행될 수 있다. 예를 들면, MSC 등에 기초하여 생성된 제어 데이터(D_CTR)는 일련의 메시지들을 정의하는 프로시저에 관한 정보를 포함할 수 있고, 인출된 프로시저의 현재 수행중인 노드에 의해서 프로시저 내부 메시지의 처리가 가능한지 여부가 판단될 수 있다. 인출된 프로시저에 의해서 프로시저 내부 메시지의 처리가 가능한 경우 단계 S31_3 내지 단계 S31_5에서 프로시저에 따라 프로시저 내부 메시지를 처리하는 동작이 후속해서 수행될 수 있는 한편, 그렇지 아니한 경우 단계 S31_6이 후속해서 수행될 수 있다.
단계 S31_3에서, 내부 메시지 핸들러를 호출하는 동작이 수행될 수 있다. 예를 들면, 기능 데이터(D_FUN)에 의해서 프로시저의 현재 노드가 정의된 경우, 즉 현재 노드에 대응하는 메시지 핸들러가 정의된 경우, 프로시저 제어기(215)는 메시지 핸들러에 따라 프로시저 내부 메시지를 처리할 수 있으며 다음 노드로 프로시저를 진행시킬 수 있다.
단계 S31_4에서, 검색된 프로시저의 마지막 노드에 도달되었는지 여부를 판단하는 동작이 수행 될 수 있다. 프로시저가 마지막 노드에 도달한 경우, 단계 S31_5에서, 런 큐(214_1)에서 프로시저를 삭제하는 동작이 수행될 수 있다. 즉, 프로시저는 종료할 수 있다.
단계 S31_6에서, 검색된 프로시저가 런 큐(214_1)의 마지막 프로시저인지 여부를 판단하는 동작이 수행될 수 있다. 검색된 프로시저가 런 큐(214_1)의 마지막 프로시저가 아닌 경우, 즉 내부 메시지를 처리 가능한지 여부가 판단되지 아니한 프로시저가 런 큐(214_1)에 잔존하는 경우, 단계 S31_1이 후속해서 수행되어 런 큐(214_1)에 있는 다음 프로시저가 검색될 수 있다. 다른 한편으로, 인출된 프로시저가 런 큐(214_1)의 마지막 프로시저인 경우, 즉 런 큐(214_1)에 있는 모든 프로시저들에 대하여 내부 메시지의 처리가 불가능한 것으로 판단된 경우, 내부 메시지를 처리하는 동작(S31)은 종료할 수 있다. 런 큐(214_1)에 있는 모든 프로시저들에 대하여 처리가 불가능한 내부 메시지는, 예컨대 도 8b를 참조하여 후술되는 바와 같이, 프로시저 제어 프레임워크(210')에 의해 임의 메시지로서 처리될 수 있는지 판단될 수 있다.
도 8b를 참조하면, 메시지 유형이 임의 메시지인 경우, 단계 S32_1에서 런 큐(214_1)에서 프로시저를 검색하는 동작이 수행될 수 있고, 그 다음에 단계 S32_2에서 검색된 프로시저에 의해서 임의 메시지가 처리가능한지 여부를 판단하는 동작이 수행될 수 있다. 검색된 프로시저에 의해서 임의 메시지의 처리가 가능한 경우 단계 S32_3 내디 단계 S32_5에서 임의 메시지 핸들러에 따라 메시지를 처리하는 동작이 후속해서 수행될 수 있는 한편, 그렇지 아니한 경우 단계 S32_6이 후속해서 수행될 수 있다.
단계 S32_3에서, 임의 메시지 핸들러를 호출하는 동작이 수행될 수 있다. 예를 들면, 프로시저 제어기(215)는 임의 메시지를 처리하는 임의 메시지 핸들러를 호출함으로써 임의 메시지 핸들러가 임의 메시지를 처리하도록 제어할 수 있다.
단계 S32_4에서, 검색된 프로시저의 마지막 노드에 도달되었는지 여부를 판단하는 동작이 수행 될 수 있다. 프로시저가 마지막 노드에 도달한 경우, 단계 S32_5에서, 런 큐(214_1)에서 프로시저를 삭제하는 동작이 수행될 수 있다. 즉, 프로시저는 종료할 수 있다.
단계 S32_6에서, 검색된 프로시저가 런 큐(214_1)의 마지막 프로시저인지 여부를 판단하는 동작이 수행될 수 있다. 검색된 프로시저가 런 큐(214_1)의 마지막 프로시저가 아닌 경우, 단계 S32_1이 후속해서 수행될 수 있다. 다른 한편으로, 인출된 프로시저가 런 큐(214_1)의 마지막 프로시저인 경우, 임의 메시지를 처리하는 동작(S32)은 종료할 수 있다. 런 큐(214_1)에 있는 모든 프로시저들에 대하여 하게 되며 해당 메시지는 현재 진행중인 어떤 프로시저에서도 처리가 불가능한 임의 메시지는 이후 제어 프레임워크에 의해 에러 처리될 수 있다(예를 들면, 에러 핸들러가 호출될 수 있다).
도 8c를 참조하면, 메시지 유형이 프로시저 트리거 메시지인 경우, 단계 S33_10에서 프로시저를 생성하는 동작이 수행될 수 있다. 예를 들면, 프로시저 축조기(212)는 프로시저 트리거 메시지에 따라 제어 데이터(D_CTR)에 기초하여 프로시저(또는 프로시저 핸들러)를 생성할 수 있다.
단계 S33_20에서 런 큐(214_1)의 프로시저들 및 트리거된 프로시저 사이 관계를 확인하는 동작이 수행될 수 있다. 예를 들면, 충돌 제어기(213)는 제어 데이터(D_CTR)을 참조하고 런 큐(214_1)에 엑세스함으로써 런 큐(214_1)의 프로시저들 및 트리거된 프로시저 사이 관계를 확인할 수 있고, 확인된 프로시저 관계에 대한 정보를 프로시저 제어기(215)에 전달할 수 있다.
단계 S33_30, 단계 S33_40 및 단계 S33_50에 의해서, 런 큐(214_1)의 프로시저들 및 트리거된 프로시저 사이 관계에 따라 상이한 동작들이 수행될 수 있다. 즉, 트리거된 프로시저가 수행 중인 프로시저를 종료시키고 수행되는 경우 단계 S33_31 내지 단계 S33_34가 수행될 수 있고, 트리거된 프로시저가 수행 중인 프로시저와 동시에 수행될 수 있는 경우 단계 S33_41 및 단계 S33_42가 수행될 수 있고, 트리거된 프로시저가 수행 중인 프로시저의 종료시까지 지연되어 수행되는 경우 단계 S33_51이 수행될 수 있고, 트리거된 프로시저가 무시되는 경우 프로시저 트리거 메시지를 처리하는 동작(S33)은 종료할 수 있다.
트리거된 프로시저가 수행 중인 프로시저를 종료시키고 수행되는 경우, 단계 S33_31에서 종료될 프로시저들(또는 프로시저 핸들러들)을 런 큐(214_1)에서 어볼트 큐(214_2)로 이동시키는 동작이 수행될 수 있다. 예를 들면, 프로시저 제어기(215)는 런 큐(214_1)의 프로시저들 중 트리거된 프로시저에 의해서 종료될 프로시저들을 어볼트 큐(214_2)로 이동시킬 수 있다.
단계 S33_32에서 어볼트 큐(214_2)에서 프로시저를 검색하는 동작이 수행 될 수 있고, 그 다음에 단계 S33_33에서 프로시저의 중단 핸들러를 실행하는 동작이 수행될 수 있다. 예를 들면, 프로시저 제어기(215)는 어볼트 큐(214_2)에서 검색된 프로시저에 대응하는 프로시저 중단 핸들러를 호출할 수 있다.
단계 S33_34에서, 검색된 프로시저가 어볼트 큐(214_2)의 마지막 프로시저인지 여부를 판단하는 동작이 수행될 수 있다. 검색된 프로시저가 어볼트 큐(214_2)의 마지막 프로시저가 아닌 경우, 즉 대응되는 중단 핸들러가 실행되지 아니한 프로시저가 어볼트 큐(214_2)에 잔존하는 경우, 단계 S33_32가 후속해서 수행될 수 있다. 다른 한편으로, 검색된 프로시저가 어볼트 큐(214_2)의 마지막 프로시저인 경우, 즉 어볼트 큐(214_2)에 있는 모든 프로시저들에 대하여 중단 핸들러가 실행된 경우, 프로시저 트리거 메시지를 처리하는 동작(S33)은 종료할 수 있다.
트리거된 프로시저가 수행 중인 프로시저와 동시에 수행되는 경우, 단계 S33_40에서 트리거된 프로시저의 첫 번째 노드가 수행될 수 있다. 예를 들면, 기능 데이터(D_FUN)에 의해서 프로시저의 현재 노드가 정의된 경우, 즉 현재 노드에 대응하는 메시지 핸들러가 정의된 경우, 프로시저 제어기(215)는 메시지 핸들러에 따라 프로시저 트리거 메시지를 처리할 수 있으며 다음 노드로 진행할 수 있다.
단계 S33_42에서, 트리거된 프로시저를 런 큐(214_1)에 삽입하는 동작이 수행될 수 있다. 예를 들면, 프로시저 제어기(215)는 트리거된 프로시저(또는 프로시저 핸들러)를 런 큐(214_1)에 삽입할 수 있고, 이에 따라 트리거된 프로시저는 수행 중인 프로시저들 중 하나가 될 수 있다.
트리거된 프로시저가 수행 중인 프로시저의 종료시까지 지연되어 수행되는 경우, 단계 S33_51에서 트리거된 프로시저를 디퍼 큐(412_3)에 삽입하는 동작이 수행될 수 있다. 예를 들면, 프로시저 제어기(215)는 트리거된 프로시저를 디퍼 큐(33_51)에 삽입할 수 있고, 수행 중인 프로시저가 종료되는 경우 디퍼 큐(412_3)로부터 프로시저를 검색할 수 있다. 프로시저 제어기(215)는 검색된 프로시저에 대하여 현재 수행 가능한지 다시 한번 조건 체크(예를 들면, 단계들(S33_20, S33_40, S33_50 등))가 수행된 이후에 수행 가능하다고 판단될 경우, 프로시저의 첫 번째 노드를 수행한 후 런 큐(214_1)에 삽입할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 소프트웨어 개발 플랫폼(5')을 나타내는 블록도이다. 도 2의 소프트웨어 개발 플랫폼(5)와 유사하게, 도 9의 소프트웨어 개발 플랫폼(5')은 프로그램으로서 도 1의 RAM(12), 비휘발성 메모리(13) 및 저장 장치(16) 중 적어도 하나에 전체 또는 적어도 일부가 저장될 수 있고, 프로세서(들)(11)에 의해서 실행됨으로써 소프트웨어 개발을 위한 동작을 수행할 수 있다. 도 2의 소프트웨어 개발 플랫폼(5)과 비교할 때, 도 9의 소프트웨어 개발 플랫폼(5')의 프레임워크(400)는 테스트 프레임워크(420)를 더 포함할 수 있고, 소프트웨어의 테스트를 위한 프레임워크를 사용자에게 제공할 수 있다. 이하에서 도 9에 대한 설명 중 도 2에 대한 설명과 중복되는 부분은 생략될 것이다.
도 9에 도시된 바와 같이, 사용자 인터페이스(300)는 MSC 에디터(310) 및 해석기(330)를 포함할 수 있고, 비록 도시되지 아니하였으나 관계 에디터 및 메시지 핸들러 에디터를 더 포함할 수도 있다. MSC 에디터(310)는, 도 10을 참조하여 후술되는 바와 같이 테스트 케이스를 나타내는 MSC를 디스플레이할 수도 있고, 도 13을 참조하여 후술되는 바와 같이 테스트 케이스의 실행 결과 나타내는 MSC를 디스플레이할 수도 있다. 사용자는 MSC를 변경함으로써 테스트 케이스를 용이하게 정의할 수 있고, 테스트 케이스의 실행 결과를 나타내는 MSC를 통해서 테스트 결과를 용이하게 확인할 수 있다. 또한, MSC 에디터(310)는 테스트 플로우를 디스플레이할 수 있고, 사용자는 MSC를 변경함으로써 테스트 플로우를 용이하게 제어할 수 있다.
도 9에 도시된 바와 같이, MSC 에디터(310)는 MSC로부터 제3 입력 데이터(D_IN3)를 추출하여 해석기(330)에 제공할 수 있다. 제3 입력 데이터(D_IN3)는 테스트 케이스에 대한 정보, 예컨대 액터, 프로시저, 메시지 등에 대한 정보를 포함할 수도 있고, 테스트 플로우의 제어에 대한 정보를 포함할 수도 있다. 또한, 도 9에 도시된 바와 같이, MSC 에디터(310)는 프레임워크(400)로부터 테스트 결과 데이터(T_RES)를 수신할 수 있고, 테스트 결과 데이터(T_RES)를 MSC와 함께 디스플레이할 수 있다.
해석기(330)는 제3 입력 데이터(D_IN3)를 해석함으로써 테스트 데이터(T_DAT) 및 테스트 구성 데이터(T_CON)를 생성하여 프레임워크(400)에 제공할 수 있다. 테스트 데이터(T_DAT)는 테스트 케이스에 대한 정보를 포함할 수 있고, 테스트 구성 데이터(T_CON)는 테스트 플로우의 제어를 위하여 사용자가 입력한 정보를 포함할 수 있다. 도 9에 도시된 바와 같이, 테스트 데이터(T_DAT)는 테스트 데이터 저장소(500)에 저장될 수도 있고, 테스트 데이터 저장소(500)에 저장된 테스트 데이터(T_DAT)가 프레임워크(400)에 제공될 수도 있다.
프레임워크(400)는 프로시저 제어 프레임워크(410) 및 테스트 프레임워크(420)를 포함할 수 있다. 테스트 프레임워크(420)는 테스트 데이터(T_DAT) 및 테스트 구성 데이터(T_CON)를 수신할 수 있고, 테스트 결과 데이터(T_RES)를 사용자 인터페이스(300)에 제공할 수 있고, 사용자가 설계한 소프트웨어의 테스트를 위한 프레임워크를 제공할 수 있다. 테스트 프레임워크(420)에 대한 자세한 내용은 도 12를 참조하여 후술될 것이다.
도 10은 본 개시의 예시적 실시예에 따라 도 9의 MSC 에디터(310)에 의해서 제공되는 디스플레이의 예시를 나타낸다. 도 9를 참조하여 전술된 바와 같이, MSC 에디터(310)는 테스트 케이스에 대한 정보를 입력 받기 위하여 사용자에게 MSC를 디스플레이할 수 있고, 사용자 입력에 따라 변경된 MSC로부터 테스트 케이스에 대한 정보를 포함하는 제3 입력 데이터(D_IN3)를 추출할 수 있다. 이하에서 도 10은 도 9를 참조하여 설명될 것이다.
도 10을 참조하면, 테스트 케이스 설계 영역(40)은 MSC 영역(41) 및 탐색 영역(42)을 포함할 수 있다. MSC 영역(41)은 사용자가 테스트 케이스를 정의하는 공간으로서, 도 10에 도시된 바와 같이, 사용자에 의해서 편집이 가능한 테스트 케이스의 명칭(40_1), 액터들(401_2, 40_3), 메시지들(40_4, 40_5) 및 메시지 옵션(40_6)을 디스플레이할 수 있다. 탐색 영역(42)은 테스트 케이스들을 탐색하기 위한 도구를 제공할 수도 있고, 테스트 케이스의 요약 정보를 제공할 수도 있다.
MSC 에디터(310)에 의해서 추출되는 제3 입력 데이터(D_IN3)는 액터에 대한 정보를 포함할 수 있다. 예를 들면, 도 10에 도시된 바와 같이, MSC 에디터(310)는 액터 편집 영역(43)을 제공할 수 있고, 사용자는 액터 편집 영역(43)에서 액터의 명칭, 스텁(stub) 액터인지 여부 등과 같은 액터에 관한 정보를 입력할 수 있다. 스텁 액터(또는 목(mock) 액터)는 테스트 대상이 되는 액터와 메시지를 송수신하는 액터를 지칭할 수 있고, 테스트 프레임워크(420)는 사용자가 정의한 MSC, 즉 테스트 케이스에 기초하여 스텁 액터를 자동으로 생성할 수 있다. 예를 들면, 도 10에서 액터 B(40_3)이 스텁 액터인 경우, 테스트 프레임워크(420)는 메시지(40_4)가 수신되면, 메시지(40_4)에 따라 메시지(40_5)를 송신하는 코드를 자동으로 생성할 수 있다.
MSC 에디터(310)에 의해서 추출되는 제3 입력 데이터(D_IN3)는 메시지에 대한 정보를 포함할 수 있다. 예를 들면, 도 10에 도시된 바와 같이, MSC 에디터(310)는 메시지 편집 영역(44)을 제공할 수 있고, 사용자는 메시지 편집 영역(44)에서 메시지 매개변수들에 관한 정보를 입력할 수 있다. 즉, 액터 A(40_2)가 테스트 대상인 경우, 사용자는 메시지(40_4)의 매개변수들의 값들을 수신 메시지의 매개변수들의 값들로서 입력할 수 있고, 메시지(40_5)의 매개변수들의 값들을 송신 메시지의 매개변수들의 값들로서 입력할 수 있다. 액터 A(40_2)의 테스트를 위하여, 수신 메시지의 매개변수들의 값들이 모두 입력될 수 있는 한편, 송신 메시지의 매개변수들 중 검증이 필요한 매개변수들의 값들만이 입력될 수 있다. 일 실시예에서 수신 메시지의 매개변수들의 값들 중 사용자에 의해서 입력되지 아니한 것은 디폴트 값을 가질 수도 있다.
도 11은 본 개시의 예시적 실시예에 따라 테스트 케이스를 정의하는 MSC들의 예시를 나타낸다. 도 10을 참조하여 전술된 바와 같이, 테스트 케이스를 정의하는 MSC는 테스트 대상이 되는 액터 및 스텁 액터를 포함할 수 있다. 도 11에 도시된 바와 같이, MSC는 2개 이상의 액터들을 포함하도록 정의될 수 있다.
일 실시예에서, MSC는 2이상의 테스트 대상 액터들 및 2이상의 스텁 액터들을 포함할 수도 있다. 예를 들면, 도 11의 좌측에 도시된 바와 같이, MSC(D11)는 테스트 대상인 액터 A(51) 및 2개의 스텁 액터들(52, 53)을 포함할 수 있다. 또한, 도 11의 우측에 도시된 바와 같이, MSC(D11')는 테스트 대상인 2개의 액터들(51, 52') 및 스텁 액터(53)를 포함할 수 있다. 도 11의 MSC(D11)과 같이 하나의 액터를 테스트하는 것은 유닛 테스트로서 지칭될 수 있고, 도 11의 MSC(D11')과 같이 2이상의 액터들을 테스트하는 것은 집적(integration) 테스트로서 지칭될 수 있다.
사용자에 의해서 스텁 액터는 테스트 대상인 액터로 변경될 수 있다. 예를 들면, 사용자는 도 9의 MSC 에디터(310)를 사용하여, MSC(D11)에서 스텁 액터인 액터 B(52)를 구현된(예컨대, 사용자에 의해서 정의된 기능 데이터(D_FUN)를 가지는) 액터 B'(52')로 대체함으로써 MSC(D11')를 설계할 수 있다. 이에 따라, 액터 A(51) 및 액터 B'(52')가 테스트될 수 있고, 이러한 방식으로 다수의 액터들을 포함하는 소프트웨어가 점진적으로 테스트될 수 있다.
도 12는 본 개시의 예시적 실시예에 따라 도 9의 테스트 프레임워크(420)의 예시를 나타내는 블록도이다. 도 9를 참조하여 전술된 바와 같이, 도 12의 테스트 프레임워크(420')는 테스트 데이터(T_DAT) 및 테스트 구성 데이터(T_CON)를 수신할 수 있고, 테스트 결과 데이터(T_RES)를 생성할 수 있다. 도 12에 도시된 바와 같이, 테스트 프레임워크(420')는 테스트 케이스 파서(421), 테스트 케이스 생성기(422), 테스트 케이스 라이브러리(423), 테스트 매니저(424) 및 판정 매니저(425)를 포함할 수 있다.
테스트 케이스 파서(421)는, 테스트 데이터(T_DAT)에 포함되고 MSC로부터 추출된 테스트 케이스에 대한 정보를 해석함으로써 트리 구조의 데이터를 생성할 수 있다. 예를 들면, 도 2의 해석기(130)와 유사하게, 테스트 케이스 파서(421)는 MSC의 액터가 송수신하는 메시지들에 대응하는 노드들로서 구성된 트리 구조의 데이터를 생성할 수 있다.
테스트 케이스 생성기(422)는 테스트 케이스 파서(421)로부터 제공된 트리 구조의 데이터에 각각의 노드에 대하여 판정 기준(verdict criteria)을 부가함으로써 실행 가능하도록 구조화된 테스트 케이스를 생성할 수 있다. 예를 들면, 테스트 케이스 생성기(422)는 도 10의 디스플레이에서 사용자에 의해서 입력된 메시지 매개변수들의 값들을, 노드들 각각이 수신하거나 송신하는 메시지의 매개변수들의 값들을 판정하는 기준으로서 트리 구조의 데이터에 부가할 수 있다. 테스트 케이스 생성기(422)에 의해서 생성된 구조화된 테스트 케이스는 테스트 케이스 라이브러리(423)에 저장될 수 있다.
테스트 매니저(424)는, 테스트 플로우를 제어하기 위한 정보를 포함하는 테스트 구성 데이터(T_CON)에 기초하여 테스트 케이스 라이브러리(423)로부터 테스트 케이스를 선택할 수 있고, 선택된 테스트 케이스를 실행할 수 있다. 테스트 매니저(424)는 테스트 구성 데이터(T_CON)에 기초하여, 테스트 케이스 중 일부를 재실행하거나, 특정한 지점에서 중지하거나, 테스트 케이스 중 일부를 스킵하거나, 테스트 케이스의 실행 중 매개변수를 설정할 수도 있다. 도 13을 참조하여 후술되는 바와 같이, 테스트 매니저(424)가 수신하는 테스트 구성 데이터(T_CON)는, MSC 에디터(예컨대, 도 9의 MSC 에디터(310))를 통해서 디스플레이되는 MSC를 사용자가 변경하거나 MSC에 추가적인 정보를 입력함으로써 생성될 수 있다.
판정 매니저(425)는 테스트 케이스의 실행에 따른 수행 결과 및 판정 기준에 기초하여 테스트 결과 데이터(T_RES)를 생성할 수 있다. 테스트 결과 데이터(T_RES)는 사용자 인터페이스(예컨대, 도 9의 사용자 인터페이스(300))를 통해서 사용자에게 제공될 수도 있고, 저장 장치에 저장될 수도 있다.
도 13은 본 개시의 예시적 실시예에 따라 도 9의 MSC 에디터(310)에 의해서 제공되는 디스플레이의 예시를 나타낸다. 도 12를 참조하여 전술된 바와 같이, MSC 에디터(310)는 테스트 케이스의 실행 결과를 디스플레이하기 위하여 MSC를 디스플레이할 수 있다. 또한, MSC 에디터(310)는 사용자 입력에 따라 테스트 플로우에 대한 정보를 포함하는 제3 입력 데이터(D_IN3)를 추출할 수 있다.
도 13을 참조하면, 테스트 케이스 실행 영역(60)은 MSC 영역(61) 및 탐색 영역(62)을 포함할 수 있다. MSC 영역(61)은, 도 10의 MSC 영역(41)과 유사하게, 사용자에 의해서 정의된 테스트 케이스를 MSC로 디스플레이할 수 있고, 테스트 플로우를 디스플레이할 수 있다. 즉, MSC 영역(61)은 테스트 케이스 중 현재까지 실행된 완료된 부분 및 실행되지 아니한 부분을 디스플레이할 수 있고, 사용자에 의해서 정의된 실행 중단 지점을 디스플레이할 수도 있다. 탐색 영역(62)은 테스트 케이스들을 탐색하기 위한 도구를 제공할 수 있고, 테스트 케이스의 실행 결과에 대한 요약 정보를 제공할 수 있으며, 테스트 로그들을 제공할 수 있다.
MSC 에디터(310)에 의해서 디스플레이되는 테스트 케이스의 실행 결과는 메시지에 대한 정보를 포함할 수 있다. 예를 들면, 도 13에 도시된 바와 같이, MSC 에디터(310)는 메시지 표시 영역(63)을 제공할 수 있고, 메시지 표시 영역(63)에서 메시지의 매개변수들의 기대값들, 즉 테스트 케이스에 의해서 미리 정의된 값들 및 메시지의 매개변수들의 실제값들, 즉, 테스트 케이스의 실행에 의해서 획득된 값들이 디스플레이될 수 있다.
MSC 에디터(310)에 의해서 디스플레이되는 테스트 케이스의 실행 결과는 로그에 대한 정보를 포함할 수 있다. 예를 들면, 도 13에 도시된 바와 같이, MSC 에디터(310)는 로그 표시 영역(64)을 제공할 수 있고, 테스트 케이스의 실행 과정에서 발생한 로그들을 디스플레이 할 수 있다.
도 14a 및 도 14b는 본 개시의 예시적 실시예들에 따라 도 9의 MSC 에디터(310)에 의해서 제공되는 디스플레이의 예시들을 나타낸다. 구체적으로, 도 14a 및 도 14b는 MSC 에디터(310)에 의해서 디스플레이되는 테스트 케이스의 실행 결과의 예시들을 나타낸다.
도 14a를 참조하면, MSC 에디터(310)는 테스트 케이스의 실행 중 테스트 케이스에서 미리 정의된 메시지와 상이한 메시지가 발생한 경우, 이러한 이벤트를 디스플레이할 수 있다. 예를 들면 도 14a에 도시된 바와 같이, 메시지 'MSG1_CNF'가 액터 A(70_1a)로부터 액터 B(70_2a)로 송신된 후, 테스트 케이스는 메시지 'MSG2_REQ' 또는 메시지 'MSG3_REQ'가 액터 A(70_1a)로부터 액터 B(70_2a)로 송신되는 것으로 정의한 한편, 테스트 케이스의 실행 결과에 따라 메시지 'MSG4_IND'가 액터 A(70_1a)로부터 액터 B(70_2a)로 송신될 수 있다. 테스트 케이스 실행 영역(70a)은 테스트 케이스에 의해서 정의된 메시지들을 하나의 그룹(70_3a)으로 디스플레이할 수 있고, 테스트 케이스의 실행 결과에 따른 메시지를 하나의 그룹(70_4a)으로 디스플레이할 수 있다. 또한, MSC 에디터(310)는 판정 표시 영역(71a)을 제공할 수 있고, 판정 표시 영역(71a)에서 테스트 케이스 및 테스트 케이스의 실행 결과 사이 불일치에 대한 상세 정보를 디스플레이할 수 있다.
도 14b를 참조하면, MSC 에디터(310)는 테스트 케이스의 실행 중 테스트 케이스에서 미리 정의된 메시지의 매개변수들의 값들과 상이한 매개변수의 값들이 발생한 경우, 이러한 이벤트를 디스플레이할 수 있다. 예를 들면, 도 14b에 도시된 바와 같이, 액터 A(70_1b)로부터 액터 B(70_2b)로 송신되는 메시지 'MSG6_IND'의 매개변수들 중 'cell_id'의 값은 테스트 케이스 및 테스트 케이스의 실행 결과 사이에서 일치하는 반면, 'measure_value'의 값은 테스트 케이스 및 테스트 케이스의 실행 결과 사이에서 일치하지 아니할 수 있다. 테스트 케이스 실행 영역(70b)은 일치하지 아니하는 매개변수의 값을 가지는 메시지를 하나의 그룹(70_3b)으로 디스플레이할 수 있다. 또한, MSC 에디터(310)는 판정 표시 영역(71b)을 제공할 수 있고, 판정 표시 영역(71b)에서 테스트 케이스 및 테스트 케이스의 실행 결과 사이 불일치에 대한 상세 정보를 디스플레이할 수 있다.
도 15는 본 개시의 예시적 실시예에 따른 소프트웨어 개발 플랫폼(5")을 나타내는 블록도이다. 도 9의 소프트웨어 개발 플랫폼(5')과 유사하게, 도 15의 소프트웨어 개발 플랫폼(5")은 프로그램으로서 도 1의 RAM(12), 비휘발성 메모리(13) 및 저장 장치(16) 중 적어도 하나에 전체 또는 적어도 일부가 저장될 수 있고, 프로세서(들)(11)에 의해서 실행됨으로써 소프트웨어 개발을 위한 동작을 수행할 수 있다. 도 9의 소프트웨어 개발 플랫폼(5')과 비교할 때, 도 15의 소프트웨어 개발 플랫폼(5")은 MSC 추출기(800)를 더 포함할 수 있다. 이하에서 도 15에 대한 설명 중 도 9에 대한 설명과 중복되는 부분은 생략될 것이다.
도 15에 도시된 바와 같이, 사용자 인터페이스(600)는 MSC 에디터(610) 및 해석기(630)를 포함할 수 있고, 비록 도시되지 아니하였으나 관계 에디터 및 메시지 핸들러 에디터를 더 포함할 수도 있다. MSC 에디터(610)는, MSC 추출기(800)로부터 제공되는 MSC 데이터(D_MSC)에 따라 MSC를 디스플레이할 수 있다. 후술되는 바와 같이, MSC 데이터(D_MSC)는 테스트 결과 데이터(T_RES)로부터 생성된 것으로서, MSC 에디터(610)에 의해서 디스플레이된 MSC는 사용자에 의해서 프로시저 또는 테스트 케이스를 정의하는데 사용될 수 있다. 즉, MSC 에디터(610)는 사용자 입력에 의해서 변경된 MSC로부터 제1 입력 데이터(D_IN1) 및/또는 제3 입력 데이터(D_IN3)를 추출할 수 있고, 해석기(630)는 1 입력 데이터(D_IN1) 및/또는 제3 입력 데이터(D_IN3)를 해석함으로써 제어 데이터(D_CTR) 및/또는 테스트 데이터(T_DAT)를 프레임워크(700)에 제공할 수 있다. 프레임워크(700)는 프로시저 제어 프레임워크(710) 및 테스트 프레임워크(720)를 포함할 수 있고, 테스트 프레임워크(720)는 테스트 케이스를 실행함으로써 테스트 결과 데이터(T_RES)를 생성할 수 있다.
MSC 추출기(800)는 테스트 결과 데이터(T_RES)에 기초하여 MSC 데이터(D_MSC)를 생성할 수 있다. 도 13을 참조하여 전술된 바와 같이, 테스트 결과 데이터(T_RES)는 테스트 케이스를 실행하는 과정에서 발생한 로그들을 포함할 수 있다. MSC 추출기(800)는 로그들로부터 액터들, 메시지들 및 메시지들의 매개변수들 등에 관한 정보를 수집할 수 있고, 수집된 정보로부터 MSC를 나타내는 MSC 데이터(D_MSC)를 생성할 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 방법을 나타내는 순서도이다. 예를 들면, 도 16의 방법은 도 2의 소프트웨어 개발 플랫폼(5)에 의해서 수행될 수 있다. 이하에서 도 16은 도 2를 참조하여 설명될 것이다.
도 16을 참조하면, 단계 S110에서 제1 입력 데이터(D_IN1)를 획득하는 동작이 수행될 수 있다. 제1 입력 데이터(D_IN1)는 사용자에 의해서 설계된 프로시저에 대한 정보를 포함하는 데이터를 지칭할 수 있다. 예를 들면, MSC 에디터(110)는 사용자 입력에 기초하여 제1 입력 데이터(D_IN1)를 추출할 수 있다. 단계 S110에 대한 자세한 내용은 도 17을 참조하여 후술될 것이다.
단계 S120에서, 제2 입력 데이터(D_IN2)를 획득하는 동작이 수행될 수 있다. 제2 입력 데이터(D_IN2)는 복수의 프로시저들 사이 관계에 대한 정보를 포함하는 데이터를 지칭할 수 있다. 예를 들면, 관계 에디터(120)는 사용자 입력에 기초하여 제2 입력 데이터(D_IN2)를 추출할 수 있다.
단계 S130에서, 제1 및 제2 입력 데이터(D_IN1, D_IN2)로부터 제어 데이터(D_CTR)를 생성하는 동작이 수행될 수 있다. 예를 들면, 해석기(130)는 제1 및 제2 입력 데이터(D_IN1, D_IN2)를 해석함으로써 일련의 메시지들의 처리 및 프로시저들 사이 관계의 처리를 담당하는 부분(즉, 제어 로직)에 대응하는 제어 데이터(D_CTR)를 생성할 수 있다. 도 4를 참조하여 전술된 바와 같이, 제어 데이터(D_CTR)는 메시지들에 대응하는 노드들로 구성된 트리 구조의 데이터 및 프로시저들 사이 관계를 나타내는 테이블들을 포함할 수 있다.
단계 S140에서, 기능 데이터(D_FUN)를 획득하는 동작이 수행될 수 있다. 예를 들면, 메시지 핸들러 에디터(140)는 사용자 입력으로부터, 프로시저에서 메시지의 처리를 담당하는 부분(즉, 기능 로직 또는 메시지 핸들러)에 대응하는 기능 데이터(D_FUN)를 추출할 수 있다. 도 16에 도시된 바와 같이, 단계 S130이 수행된 이후 단계 S140이 수행되지 아니하고, 단계 S150이 수행될 수도 있다.
단계 S150에서, 메시지들을 처리함으로써 프로시저들을 제어하는 동작이 수행될 수 있다. 예를 들면, 프로시저 제어 프레임워크(210)는 제어 데이터(D_CTR)에 포함된 프로시저 및 메시지 정보에 기초하여 프로시저를 트리거하거나, 수행하거나 또는 종료할 수 있다. 도 16에 도시된 바와 같이, 단계 S140에 의해서 기능 데이터(D_FUN)가 획득되는 경우, 프로시저 제어 프레임워크(210)는 기능 데이터(D_FUN)에 기초하여 메시지 핸들러에 따라 메시지를 처리할 수 있다.
도 17은 본 개시의 예시적 실시예에 따라 도 16의 단계 S110의 예시를 나타내는 순서도이다. 도 16을 참조하여 전술된 바와 같이, 도 17의 단계 S110'에서, 제1 입력 데이터(D_IN1)를 획득하는 동작이 수행될 수 있다. 예를 들면, 도 17의 단계 S110'은 도 2의 소프트웨어 개발 프레임워크(5)에 의해서 수행될 수 있고, 이하에서 도 17은 도 2를 참조하여 설명될 것이다.
도 17을 참조하면, 단계 S111에서 프로시저를 MSC로 디스플레이하는 동작이 수행될 수 있고, 단계 S112에서 사용자 입력에 따라 MSC를 변경하는 동작이 수행될 수 있다. 그 다음에, 단계 S113에서, MSC로부터 제1 입력 데이터(D_IN1)를 추출하는 동작이 수행될 수 있다. 예를 들면, MSC 에디터(110)는 액터들 사이 일련의 메시지들을 정의하는 프로시저를 MSC로 디스플레이할 수 있고, 사용자 입력에 따라 MSC를 변경, 예컨대 액터 및/또는 메시지를 추가, 삭제 또는 수정할 수 있다. MSC 에디터(110)는 변경된 MSC로부터 제1 입력 데이터(D_IN1)를 추출할 수 있다.
도 18은 본 개시의 예시적 실시예에 따른 소프트웨어 개발을 위한 방법을 나타내는 순서도이다. 구체적으로 도 18은 소프트웨어 개발 과정에서 소프트웨어를 테스트하는 방법을 나타내는 순서도이다. 예를 들면, 도 18의 방법은 도 9의 소프트웨어 개발 프레임워크(5')에 의해서 수행될 수 있고, 이하에서 도 18은 도 9를 참조하여 설명될 것이다.
도 18을 참조하면, 단계 S120에서 테스트 데이터(T_DAT)를 획득하는 동작이 수행될 수 있고, 단계 S220에서 테스트 설정 데이터(T_CON)를 획득하는 다. 예를 들면, 도 17의 단계 S110'과 유사하게, 테스트 에디터(310)는 MSC를 디스플레이할 수 있고, 사용자 입력에 따라 변경된 MSC로부터 제3 입력 데이터(D_IN3)를 추출할 수 있다. 제3 입력 데이터(D_IN3)는 테스트 케이스에 대한 정보를 포함할 수 있고, 테스트 플로우의 제어에 대한 정보를 포함할 수 있다. 해석기(330)는 제3 입력 데이터(D_IN3)를 해석함으로써 테스트 데이터(T_DAT) 및 테스트 설정 데이터(T_CON)를 생성할 수 있다. 또한, 테스트 데이터(T_DAT)는 테스트 데이터 저장소(500)로부터 획득될 수도 있다.
단계 S230에서, 테스트 케이스를 실행함으로써 테스트 결과 데이터(T_RES)를 생성하는 동작이 수행될 수 있다. 예를 들면, 테스트 프레임워크(420)는 테스트 데이터(T_DAT)로부터 실행 가능하도록 구조화된 테스트 케이스를 생성할 수 있고, 테스트 구성 데이터(T_CON)에 따라 테스트 케이스를 실행함으로써 테스트 결과 데이터(T_RES)를 생성할 수 있다. 테스트 결과 데이터(T_RES)는 사용자 인터페이스(300)에 전달되어 디스플레이될 수도 있다. 또한, 도 15에 도시된 바와 같이, 테스트 결과 데이터(T_RES)에 포함된 로그들로부터 MSC 추출기(800)에 의해서 MSC가 추출될 수 있고, 추출된 MSC는 MSC 에디터(610)에 의해서 디스플레이될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 병렬 실행가능한 복수의 액터(actor)들을 포함하는 소프트웨어 개발을 위하여, 컴퓨팅 시스템에 의해서 구현되는 방법으로서,
    상기 복수의 액터들 중 제1 액터 및 적어도 하나의 제2 액터 사이 일련의 메시지들을 정의하는 복수의 프로시저들에 대한 정보를 포함하는 제1 입력 데이터를 획득하는 단계;
    상기 복수의 프로시저들간 관계에 대한 정보를 포함하는 제2 입력 데이터를 획득하는 단계;
    상기 제1 및 제2 입력 데이터를 해석함으로써 제어 데이터를 생성하는 단계; 및
    상기 제어 데이터에 기초하여, 상기 일련의 메시지들을 처리함으로써 상기 복수의 프로시저들을 제어하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 입력 데이터는, 상기 복수의 프로시저들 각각이 정의하는 일련의 메시지들에 대한 정보를 포함하고,
    상기 일련의 메시지들에 대한 정보는, 상기 일련의 메시지들 각각의 명칭, 메시지 핸들러의 식별자, 메시지의 유형 및 메시지의 발생 옵션 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 일련의 메시지들 각각의 유형은, 프로시저 트리거 메시지, 프로시저 내부 메시지 또는 임의(arbitrary) 메시지인 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 복수의 프로시저들을 제어하는 단계는,
    상기 적어도 하나의 제2 액터로부터 상기 제1 액터에 수신된 메시지의 유형을 판별하는 단계;
    상기 수신된 메시지의 유형이 상기 프로시저 트리거 메시지인 경우, 상기 제2 입력 데이터에 기초하여 신규 프로시저를 제어하는 단계; 및
    상기 수신된 메시지의 유형이 상기 프로시저 내부 메시지 또는 상기 임의 메시지인 경우, 실행중인 적어도 하나의 프로시저에 기초하여 상기 수신된 메시지를 처리하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 제2 입력 데이터는, 상기 복수의 프로시저들 중 제1 프로시저가 수행 동안 상기 복수의 프로시저들 중 제2 프로시저가 트리거되는 경우 상기 제1 및 제2 프로시저의 수행에 관한 정보를 포함하고,
    상기 제1 및 제2 프로시저의 수행에 관한 정보는, 상기 제2 프로시저가 수행가능함을 나타내거나, 상기 제1 프로시저가 종료됨을 나타내거나, 상기 제1 프로시저가 종료시까지 상기 제2 프로시저가 지연 수행됨을 나타내거나, 상기 제2 프로시저가 무시됨을 나타내는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 제1 입력 데이터를 획득하는 단계는,
    상기 복수의 프로시저들 중 적어도 하나를 MSC(Message Sequence Chart)로 디스플레이하는 단계;
    사용자 입력에 응답하여 상기 MSC를 변경하는 단계; 및
    변경된 상기 MSC로부터 상기 제1 입력 데이터를 추출하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 제어 데이터는, 상기 제1 액터가 일련의 메시지들을 각각 처리하는 동작들에 대응하는 노드들을 포함하는 트리 구조를 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 복수의 프로시저들을 테스트하기 위하여 상기 제1 액터 및 상기 적어도 하나의 제2 액터 사이 일련의 테스트 메시지들을 정의하는 테스트 케이스에 대한 정보를 포함하는 테스트 데이터를 획득하는 단계;
    테스트 플로우를 설정하는 테스트 설정 데이터를 획득하는 단계; 및
    상기 제어 데이터, 상기 테스트 데이터 및 상기 테스트 설정 데이터에 기초하여 상기 제1 액터를 테스트함으로써 테스트 결과 데이터를 생성하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 테스트 데이터는, 상기 테스트 메시지들 중 적어도 하나의 테스트 메시지가 가지는 매개변수에 대한 정보를 포함하는 것을 특징으로 하는 방법.
  10. 제8항에 있어서,
    상기 테스트 결과 데이터는 로그 데이터를 포함하고,
    상기 로그 데이터로부터 MSC를 추출하는 단계; 및
    추출된 MSC를 디스플레이하는 단계를 더 포함하는 방법.
KR1020170026665A 2016-10-21 2017-02-28 프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법 KR20180044174A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/694,060 US10592212B2 (en) 2016-10-21 2017-09-01 System and method for software development based on procedures

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662410906P 2016-10-21 2016-10-21
US62/410,906 2016-10-21
US201662426879P 2016-11-28 2016-11-28
US62/426,879 2016-11-28

Publications (1)

Publication Number Publication Date
KR20180044174A true KR20180044174A (ko) 2018-05-02

Family

ID=62183752

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170026665A KR20180044174A (ko) 2016-10-21 2017-02-28 프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR20180044174A (ko)

Similar Documents

Publication Publication Date Title
WO2020211205A1 (zh) 一种数据处理方法及相关产品
WO2018036342A1 (zh) 基于csar的模型文件的可视化设计方法及装置
US9280331B2 (en) Hash-based change tracking for software make tools
US10120658B2 (en) Method and system for realizing software development tasks
CN107341054B (zh) 任务执行方法、装置及计算机可读存储介质
CN109308213B (zh) 基于改进任务调度机制的多任务断点调试方法
JP4815195B2 (ja) ジョブ実行管理方法、ジョブ実行管理システム及びジョブ実行管理プログラム
US20130014082A1 (en) Method of configuring business logic supporting multi-tenancy
EP3396542A1 (en) Database operating method and device
CN105138405A (zh) 基于待释放资源列表的MapReduce任务推测执行方法和装置
US20050144596A1 (en) Method and apparatus for parallel action processing
CN105893233B (zh) 用于自动测试固件的方法和系统
US10338891B2 (en) Migration between model elements of different types in a modeling environment
US10592212B2 (en) System and method for software development based on procedures
KR20180044174A (ko) 프로시저에 기반한 소프트웨어 개발을 위한 시스템 및 방법
CN107885527A (zh) 一种测试系统的代码修改方法及装置
CN110806891A (zh) 嵌入式设备软件版本的生成方法及装置
JP6516343B2 (ja) アプリケーションユーザーインターフェース自動テスト方法、電子装置、システム及び記憶媒体
WO2022222378A1 (zh) 一种内核裁剪方法及计算设备
CN116402325A (zh) 业务流程自动化处理方法及装置
CN113342512B (zh) 一种io任务静默与驱动方法、装置及相关设备
KR102046622B1 (ko) 워크플로우 기반 소프트웨어 서비스 시스템 및 이 시스템의 각 기능을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램
US10769055B2 (en) Dynamically revising an in-process build
CN110968412B (zh) 一种任务执行方法、系统及存储介质
CN112905270A (zh) 工作流实现方法、装置、平台、电子设备以及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal