KR101731629B1 - Method and device for automatic generating go code from circus - Google Patents
Method and device for automatic generating go code from circus Download PDFInfo
- Publication number
- KR101731629B1 KR101731629B1 KR1020150186580A KR20150186580A KR101731629B1 KR 101731629 B1 KR101731629 B1 KR 101731629B1 KR 1020150186580 A KR1020150186580 A KR 1020150186580A KR 20150186580 A KR20150186580 A KR 20150186580A KR 101731629 B1 KR101731629 B1 KR 101731629B1
- Authority
- KR
- South Korea
- Prior art keywords
- code
- circus
- function
- schema
- module
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G06F17/30371—
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Library & Information Science (AREA)
- Stored Programmes (AREA)
Abstract
입력 모듈, 실행 코드 변환 모듈, 및 모니터링 코드 변환 모듈을 포함하는 Go 코드 자동 생성 장치에서의 Circus 명세로부터 Go 코드를 자동으로 생성하는 방법이 개시된다. Go 코드 자동 생성 방법은 Circus 정형 명세 언어로 작성된 Circus 명세를 입력받는 Circus 명세 입력 단계, 및 상기 Circus 명세를 변환 함수를 이용하여 Go 코드로 자동 변환하는 Go 코드 생성 단계를 포함하되, 상기 Go 코드 생성 단계는 상기 Circus 명세에서 상태 스키마, 오퍼레이션 스키마, 또는 시스템 행위(system behavior)에 대한 명세 부분을 Go 코드의 실제 동작하는 부분인 제1 코드로 변환하는 제1 코드 변환 과정, 및 상기 Circus 명세에서 불변속성(invariants)에 대한 부분을 상기 제1 코드의 동작 중에 검증 속성 위배 여부를 모니터링하기 위한 부분인 제2 코드로 변환하는 제2 코드 변환 과정을 포함한다. A method for automatically generating a Go code from a Circus specification in an automatic Go code generation device including an input module, an execution code conversion module, and a monitoring code conversion module is disclosed. The Go code automatic generation method includes a Circus specification input step for receiving a Circus specification written in a Circus specification specification language and a Go code generation step for automatically converting the Circus specification to a Go code using a conversion function, A first code conversion process for converting a specification part for a state schema, an operation schema, or a system behavior into a first code that is an actual operating part of the Go code in the Circus specification, And a second code conversion process of converting a portion of the invariants into a second code that is a part for monitoring whether the verification property violates during operation of the first code.
Description
본 발명의 개념에 따른 실시 예는 정형명세언어인 Circus로부터 프로그램 언어인 Go 코드를 자동으로 생성하는 방법 및 장치에 관한 것으로, 특히 Circus의 상태, 오퍼레이션 및 행위 명세는 Go 코드의 실제 동작하는 부분으로 변환하고, 검증 속성인 불변속성(Invariants)은 동작하는 코드를 모니터링하기 위한 코드로 변환하는 Go코드 자동 생성 방법 및 장치에 관한 것이다.An embodiment according to the concept of the present invention relates to a method and apparatus for automatically generating a Go code, which is a programming language, from a formal specification language, Circus. In particular, Circus's state, operation and behavior specification are part of the Go code And Invariants, which is a verification attribute, converts a working code into a code for monitoring.
본 특허는 정형명세 언어인 Circus로 작성된 명세를 바탕으로 대응하는 Go 코드로 자동 변환하는 기술을 제시하고 있다. 즉, Circus 명세를 입력으로 받아 실행 가능한 Go 코드를 자동으로 생성한다. This patent proposes a technology to automatically convert to the corresponding Go code based on the specification written in the formal specification language Circus. In other words, it takes the Circus specification as input and automatically generates an executable Go code.
정형 기법은 수학이나 논리 기반의 명세와 설계의 기술을 사용하여 컴퓨터 시스템이나 소프트웨어를 개발하는 기법으로 정형 명세(Formal Specification) 및 정형 검증(Formal Verification)을 포함한다. 정형 명세는 수리논리 등을 이용하여 시스템의 동작 환경, 시스템 요구사항, 시스템의 설계 등을 기술하는 것이고, 정형 검증은 수학적, 논리적 증명방법을 통해 시스템의 설계와 시스템 요구사항의 만족 여부를 증명하는 것이다.Formal techniques include formal specification and formal verification as techniques for developing computer systems or software using techniques of mathematical or logic-based specification and design. The formal specification is to describe the system operating environment, system requirements, and system design using mathematical logic, etc. Formal verification is a mathematical and logical proof method that demonstrates system design and system requirements. will be.
정형 검증 등을 통하여 정형 명세가 제대로 동작함을 증명하였다 하더라도, 그 정형 명세를 소프트웨어 코드(소스 코드)로 구현하는 과정이 정확하지 않거나 코드가 명세와 다르게 작성되는 경우, 개발에서 의도하였던 결과물을 생성하지 못하는 문제점이 발생한다.If the process of implementing the formal specification into software code (source code) is not correct, or the code is written differently from the specification, even if it proves that the formal specification works properly through formal verification, etc., A problem that can not be solved occurs.
특히, 정형 명세를 바탕으로 개발자가 수동으로 개발할 경우, 개발자의 실수(Human Faults)가 발생할 수 있으며, 따라서 명세대로 동작하지 않는 코드가 작성될 수 있다. 즉, 개발자가 정형 명세를 제대로 이해하지 못하거나 실수가 코드에 삽입되어 올바르지 못한 코드가 생성될 수 있는 문제점이 있다.In particular, when a developer develops manually based on a formal specification, a developer's mistakes (Human Faults) can occur, and therefore code that does not work as specified can be written. That is, the developer may not understand the formal specification properly or a mistake may be inserted in the code, resulting in the generation of incorrect code.
따라서, 정형 명세로부터 정확한 코드를 자동으로 생성할 수 있는 코드 변환 방법이 요구된다. Therefore, a code conversion method capable of automatically generating an accurate code from a formal specification is required.
『A. Freitas and A. Cavalcanti, "Automatic Translation from Circus to Java", In FM 2006, pages 1 15-130, Springer, 2006 Circus』에서 프로그램 언어로 자동 번역하는 기술에 대해 공지하고 있으나, 프로그램 언어가 Go코드가 아닌 Java를 이용하며, 번역 시 실제 동작 부분과 모니터링 부분으로 각각 변환하지 않는다."A. It is known that a technology for automatic translation into a programming language in Freitas and A. Cavalcanti, "Automatic Translation from Circus to Java ", In FM 2006, pages 15-130, Springer, 2006 Circus, It does not translate into actual operation part and monitoring part in translation.
본 발명이 이루고자 하는 기술적인 과제는 정형명세언어인 Circus로부터 프로그램 언어인 Go 코드를 자동으로 생성하는 방법 및 장치를 제공하는 것이다. The technical problem to be solved by the present invention is to provide a method and an apparatus for automatically generating a Go code as a programming language from a formal specification language Circus.
또한, Circus의 불변속성(Invariants)을 모니터링 코드로 변환하고, 이를 이용하여 변환된 코드의 동작을 모니터링함으로써 신뢰성 높은 Go 코드 자동 생성 방법 및 장치를 제공하는 것이다.Also, a method and an apparatus for automatically generating a Go code with high reliability are provided by converting the invariants of Circus into monitoring codes and monitoring the operation of the converted code by using the same.
본 발명의 실시 예에 따른 Circus 명세로부터 Go 코드를 자동으로 생성하는 방법은 Circus 정형 명세 언어로 작성된 Circus 명세를 입력받는 Circus 명세 입력 단계, 및 상기 Circus 명세를 변환 함수를 이용하여 Go 코드로 자동 변환하는 Go 코드 생성 단계를 포함하되, 상기 Go 코드 생성 단계는 상기 Circus 명세에서 상태 스키마, 오퍼레이션 스키마, 또는 시스템 행위(system behavior)에 대한 명세 부분을 Go 코드의 실제 동작하는 부분인 제1 코드로 변환하는 제1 코드 변환 과정, 및 상기 Circus 명세에서 불변속성(invariants)에 대한 부분을 상기 제1 코드의 동작 중에 검증 속성 위배 여부를 모니터링하기 위한 부분인 제2 코드로 변환하는 제2 코드 변환 과정을 포함한다. The method for automatically generating the Go code from the Circus specification according to the embodiment of the present invention includes a Circus specification input step for inputting a Circus specification written in the Circus specification specification language and an automatic conversion process for converting the Circus specification to a Go code using a conversion function The Go code generation step converts the specification part of the state schema, operation schema, or system behavior into the first code, which is an actual operating part of the Go code, in the Circus specification And a second code conversion process for converting a portion of the invariants in the Circus specification to a second code for monitoring whether the verification property violates during operation of the first code, .
본 발명의 실시 예에 따른 Go 코드 자동 생성 장치는 Circus로 작성된 정형 명세를 입력받아 이에 대응하는 Go 코드를 자동으로 생성함으로써 개발자의 실수가 삽입될 가능성을 제거하고 소스 코드의 신뢰도 및 정확도를 높이는 효과가 있다.The automatic Go code generating apparatus according to the embodiment of the present invention receives the formal specification written in the Circus and automatically generates the Go code corresponding thereto, thereby eliminating the possibility that the developer's mistake is inserted and enhancing the reliability and accuracy of the source code .
또한, 본 발명의 실시 예에 따른 Go 코드 자동 생성 장치는 다양한 측면에서 명세한 Circus 기반 정형 명세를 스켈레톤 단위의 코드 또는 함수 단위의 코드가 아닌 전체적인 실행 가능한 코드로 생성할 수 있다. In addition, the Go code automatic generation apparatus according to the embodiment of the present invention can generate the Circus-based formal specification specified in various aspects as a whole executable code instead of a skeleton-based code or a function-based code.
또한, 본 발명의 실시 예에 따른 Go 코드 자동 생성 장치는 Circus의 불변속성(Invariants)를 이용하여 모니터링 코드를 생성함으로써, Go 코드 동작 중에 검중 속성을 위배하는지 여부를 모니터링할 수 있다.In addition, the automatic Go code generating apparatus according to the embodiment of the present invention can monitor whether or not the check attribute is violated during the Go code operation by generating the monitoring code using the invariants of the Circus.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 Go 코드 자동 생성 장치의 기능 블럭도이다.
도 2는 Circus로 명세된 정형 명세로부터 Go 코드 변환하는 변환 개념을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 Circus로부터 Go 코드를 자동으로 생성하는 방법을 도시한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 변환 함수의 변환 규칙을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 변환 함수 동작의 일례를 도시한 도면이고, 도 6은 본 발명의 일 실시예에 따른 변환 함수의 일례를 표시한 도면이다.
도 7a는 본 발명의 일 실시예에 따른 코드 자동 생성 장치의 입력값인 Circus 명세의 일례를 도시한 도면이고, 도 7b는 도 7a의 Circus 명세를 자동 변환하여 출력한 Go 코드를 도시한 도면이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS In order to more fully understand the drawings recited in the detailed description of the present invention, a detailed description of each drawing is provided.
1 is a functional block diagram of an automatic Go code generating apparatus according to an embodiment of the present invention.
FIG. 2 is a diagram showing a conversion concept of Go code conversion from a formal specification specified as Circus.
3 is a flowchart illustrating a method of automatically generating a Go code from a Circus according to an embodiment of the present invention.
4 is a diagram illustrating a conversion rule of a conversion function according to an embodiment of the present invention.
FIG. 5 illustrates an example of a transform function according to an embodiment of the present invention, and FIG. 6 illustrates an example of a transform function according to an exemplary embodiment of the present invention. Referring to FIG.
FIG. 7A is a diagram illustrating an example of a Circus specification that is an input value of the automatic code generation apparatus according to an embodiment of the present invention, and FIG. 7B is a diagram illustrating a Go code automatically outputting the Circus specification of FIG. .
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.It is to be understood that the specific structural or functional description of embodiments of the present invention disclosed herein is for illustrative purposes only and is not intended to limit the scope of the inventive concept But may be embodied in many different forms and is not limited to the embodiments set forth herein.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.The embodiments according to the concept of the present invention can make various changes and can take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. It should be understood, however, that it is not intended to limit the embodiments according to the concepts of the present invention to the particular forms disclosed, but includes all modifications, equivalents, or alternatives falling within the spirit and scope of the invention.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.The terms first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The terms may be named for the purpose of distinguishing one element from another, for example, without departing from the scope of the right according to the concept of the present invention, the first element may be referred to as a second element, The component may also be referred to as a first component.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises" or "having" and the like are used to specify that there are features, numbers, steps, operations, elements, parts or combinations thereof described herein, But do not preclude the presence or addition of one or more other features, integers, steps, operations, components, parts, or combinations thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings attached hereto.
우선, 본 발명에서 이용하는 정형 명세 기법 및 코드에 대하여 설명한다.First, the formal specification technique and code used in the present invention will be described.
본 발명에서 코드 변환을 위하여 입력하는 정형 명세 언어는 Circus이다. Circus는 2000년 York Univ.에서 개발한 언어로써, 상태 기반 정형 명세 언어인 Z와 프로세스 알제브라(Process Algebra)인 CSP를 합친 언어이다. 시스템의 상태 및 각각의 오퍼레이션은 Z로 정의하며 시스템 전체 또는 부분 행위는 CSP를 이용하여 정의한다. Circus는 시스템 기능 명세뿐만 아니라 행위 명세를 함께 나타냄으로써 다양한 측면 명세 가능하다는 특징을 가지고 있다. In the present invention, the formal specification language input for code conversion is Circus. Circus is a language developed by York Univ. In 2000. It is a combination of state-based formal specification language Z and process Algebra CSP. The state of the system and each operation are defined as Z, and system-wide or partial actions are defined using CSP. Circus has the feature that various aspects can be specified by expressing the behavior specification as well as the system functional specification.
또한, 본 발명에서 코드 변환에 결과물에 이용하는 프로그램 언어는 Go 코드(Golang이라고도 함)이다. Go 코드는 2009년 12월 Google에서 개발되었으며, C언어 기반으며 동시성(Concurrancy) 부분을 Golang언어 설계 시 CSP 언어에 기반하였다. Golang은 가비지 컬렉션 및 타입 안정성(type safety)을 제공한다. 특히, 고루틴, 채널 및 select 구문을 제공함으로써 동시성(Concurrancy)을 제공하는 특징이 있다.Further, in the present invention, the program language used for the result of code conversion is Go code (also called Golang). Go code was developed by Google in December 2009 and is based on the C language and concurrency based on the CSP language in the Golang language design. Golang provides garbage collection and type safety. In particular, there is a feature that provides concurrency by providing high routine, channel, and select statements.
이하, 도 1 내지 도 2를 참조하여, 본 발명의 일 실시예에 따라 Circus 명세를 Go 코드로 변환하는 Go 코드 자동 변환 장치에 대해 상술한다.Hereinafter, a Go code automatic conversion apparatus for converting a Circus specification into a Go code according to an embodiment of the present invention will be described in detail with reference to FIGS. 1 and 2. FIG.
도 1은 본 발명의 일 실시예에 따른 Go 코드 자동 생성 장치(100)의 기능 블럭도이다. 도 1을 참조하면, Go 코드 자동 생성 장치(100)는 입력 모듈(110), 변환 모듈(120), 모니터링 모듈(130), 메모리(180), 및 제어 모듈(190)를 포함한다.1 is a functional block diagram of an automatic Go
본 명세서에서 사용되는 모듈이라 함은 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나 한 종류의 하드웨어를 의미하는 것은 아니다.The module used in the present specification may mean a functional and structural combination of hardware for carrying out the technical idea of the present invention and software for driving the hardware. For example, the module may mean a logical unit of a predetermined code and a hardware resource for executing the predetermined code, and does not necessarily mean a physically connected code or a kind of hardware.
Go 코드 자동 생성 장치(100)의 입력 모듈(110)은 Circus 정형 명세 언어로 명세한 Circus 명세를 입력으로 받는다.The
변환 모듈(120)은 Circus 정형 명세 언어를 Go 코드로 변환한다. 구체적으로, Circus 명세의 전체 또는 일부 명세 및 명세 내의 심볼을 입력받아 대응하는 코드를 도출하거나 해당하는 함수에 입력값을 전달하여 최종 Go 코드를 토출한다.The
변환 모듈(120)은 크게 Go 코드에서 실제 동작하는 부분의 코드를 생성하는 실행 코드 변환 모듈(121, 이하 제1 변환 모듈이라고 함) 및 동작하는 코드를 모니터링 하기 위한 코드를 생성하는 모니터링 코드 변환 모듈(123, 이하 제2 변환 모듈이라고 함)로 나뉜다. The
도 2는 Circus로 명세된 정형 명세로부터 Go 코드 변환하는 변환 개념을 도시한 도면이다. 도 2를 참조하면, 제1 변환 모듈(121)은 Circus 정형 명세 언어 중 상태 스키마(State Schema), 오퍼레이션 스키마(Operation Schema), 및 시스템 행위(System Behavior)와 관련된 명세를 Go 코드의 실제 동작하는 부분(correct program)으로 변환한다. FIG. 2 is a diagram showing a conversion concept of Go code conversion from a formal specification specified as Circus. Referring to FIG. 2, the
제2 변환 모듈(123)는 Circus 정형 명세 언어 중 검증 속성인 불변속성(Invariants)을 실행 코드 변환 모듈(121)에 의하여 생성된 코드가 동작할 때, 즉 프로그램을 실행(execution)할 때, 동시에 동작하며 검증 속성을 위배하는지 여부를 모니터링(Runtime Mornitoring)할 수 있는 모니터링 코드(Mornitoring Code)로 변환한다. The
검증 모듈(130)은 상기 제2 변환 모듈(123)에서 생성한 모니터링 코드를 이용하여 상기 제1 변환 모듈(121)에서 생성한 프로그램 코드가 동작하는 동안, 검증 속성 위배 여부를 모니터링한다.The
메모리(180)는 프로그램 메모리와 데이터 메모리를 포함할 수 있다. 상기 프로그램 메모리에는 Go 코드 자동 생성 장치(100)의 동작을 제어하기 위한 프로그램들이 저장될 수 있다. 상기 데이터 메모리에는 상기 프로그램들을 수행하는 과정 중에 발생하는 데이터들이 저장될 수 있다.The
제어 모듈(190)은 Go 코드 자동 생성 장치(100)의 전반적인 동작을 제어한다. 즉, 입력 모듈(110), 변환 모듈(120), 검증 모듈(130) 및 메모리(180)의 동작을 제어할 수 있다.The
이하, 도 3 내지 도 7b를 참조하여, 본 발명의 일 실시예에 따른 Go 코드 자동 생성 장치를 이용한 Circus 명세로부터 Go 코드를 자동으로 생성하는 방법에 대하여 자세히 살펴보도록 한다.Hereinafter, a method of automatically generating the Go code from the Circus specification using the automatic Go code generating apparatus according to an embodiment of the present invention will be described in detail with reference to FIG. 3 to FIG. 7B.
도 3은 자동으로 Circus 명세를 Go 코드로 변환하는 방법을 설명하기 위한 흐름도이다. 3 is a flowchart for explaining a method of automatically converting the Circus specification into the Go code.
먼저, Go 코드 자동 변환 장치는 Circus 명세를 입력받는다(S100). 다음, 도면에는 도시하지 않았으나, 입력된 Circus 명세를 정형 검증하는 단계를 더 포함할 수 있다.First, the Go code automatic conversion apparatus receives the Circus specification (S100). Next, although not shown in the figure, it may further include a step of regularly verifying the input Circus specification.
다음, 입력된 Circus 명세를 Go 코드로 변환한다(S200). Go 코드 변환 단계는 실행 코드 변환 단계(또는 '제1 코드 변환 단계'라고 함, S210) 및 모니터링 코드 변환 단계(또는 '제2 코드 변환 단계'라고 함, S230)를 포함한다.Next, the inputted Circus specification is converted into Go code (S200). Go code conversion step includes an execution code conversion step (or a first code conversion step, S210) and a monitoring code conversion step (or a second code conversion step, S230).
제1 코드 변환 단계(S210)에서 Circus의 상태 및 오퍼레이션과 CSP의 행위 명세를 Go 코드의 실제 동작하는 코드 부분인 제1 코드 변환하고, 제2 코드 변환 단계(S230)에서 Circus 명세 중 검증 속성인 불변속성(Invariants)을 모니터링 코드인 제2 코드로 변환한다. 제2 코드는 이후 모니터링 단계(S300)에서 검증 속성을 위배 여부를 모니터링하는데 이용한다.In the first code conversion step S210, the state and operation of the Circus and the behavior specification of the CSP are converted into a first code, which is a code part of the Go code that actually operates. In the second code conversion step S230, Converts invariants to second code, the monitoring code. The second code then uses the verification attribute in monitoring step S300 to monitor for violation.
구체적으로 본 발명의 일 실시예에 따른 코드 변환 전략은 표 1과 같다. Specifically, the code conversion strategy according to an embodiment of the present invention is shown in Table 1.
본 발명의 일 실시예에 따른 코드 변환 단계(S200)에서 코드 변환은 함수들을 통해 이루어진다. 도 4는 본 발명의 일 실시예에 따른 변환 함수의 변환 규칙을 도시한 도면이다. 도 4를 참고하면, 함수들은 Circus의 전체 또는 일부 명세 및 명세 내의 심볼을 입력받아 대응하는 코드를 도출하거나 또는 해당하는 함수에 입력값을 전달한다. 상기 함수들은 반복적으로 수행함으로써 최종 Go 코드를 도출한다. 변환 함수(Translation Function)은 로 표시한다.In the code conversion step S200 according to an embodiment of the present invention, code conversion is performed through functions. 4 is a diagram illustrating a conversion rule of a conversion function according to an embodiment of the present invention. Referring to FIG. 4, the functions receive symbols corresponding to all or part of the specifications and specifications of Circus, and derive corresponding codes or transfer input values to corresponding functions. The functions are repeatedly performed to derive the final Go code. The Translation Function .
이하, 도 5 내지 도 6을 참고하여, Circus로 작성된 명세의 각각의 부분들을 Go 코드로 변환하는 과정에 대하여 살펴보도록 한다. 도 5는 본 발명의 일 실시예에 따른 변환 함수 동작의 일례를 도시한 도면이다.Hereinafter, with reference to FIG. 5 to FIG. 6, a process of converting each part of the specification written in Circus into Go code will be described. 5 is a diagram showing an example of the conversion function operation according to an embodiment of the present invention.
도 5의 (a)를 참조하면, 예를 들어, 전체 명세는 Program으로써 이는 AC 또는 B일 수 있다. 또한, A는 a로 B는 b로 C는 c로 문법적인(Syntactic) 변환이 이루어질 수 있다. 변환 함수를 살펴보면 전체 명세인 Program은 Program 함수에 적용된다. 이때, Program이 AC일 경우 AC 함수에 적용하며, B일 경우 B 함수에 적용한다. AC일 경우 각각 A 함수와 C 함수에 적용하며 사이에 프로그램 코드인 “&”를 추가한다. A, B, C는 다시 a, b, c 함수에 입력값 a, b, c로 적용하며 a, b, c는 각 해당 함수에 적용되어 프로그램 코드인 “Program code a”, “Program code b”, “Program code c”를 도출한다.Referring to Figure 5 (a), for example, the full specification may be a program, which may be AC or B, Also, Syntactic conversion can be done with A as a, B as b, and C as c. If you look at the conversion function, the full specification Program is applied to the Program function. At this time, it is applied to AC function when program is AC, and to B function when B is program. In case of AC, it is applied to A function and C function, respectively, and the program code "&" is added between them. A, B, and C are applied to a, b, and c functions as input values a, b, and c. A, b, and c are applied to the corresponding functions to generate "program code a" , &Quot; program code c "
도 5의 (b)를 참조하여 변환 함수를 이용하여 변환하는 과정을 살펴보면, AC라는 전체 명세를 변환할 경우, Program함수 정의에 따라 명세 AC를 AC 함수에 적용한다. AC 함수는 다시 A를 A함수에 C를 C함수에 적용하고 프로그램 코드 &를 중간에 삽입한다. A와 C는 각각 A, C 함수에 적용되어 입력값 a, c를 a, c함수에 적용하며 “Program code a”와 “Program code c”를 도출한다. 이에 최종적으로 “Program code a & Program code c”라는 코드가 도출된다.Referring to FIG. 5 (b), when converting the entire specification called AC, the specification AC is applied to the AC function according to the definition of the program function. The AC function again applies A to the A function, C to the C function, and inserts the program code & in the middle. A and C are applied to A and C functions, respectively, and input values a and c are applied to a and c functions, and "program code a" and "program code c" are derived. Finally, the code "Program code a & Program code c" is derived.
도 6은 본 발명의 일 실시예에 따른 변환 함수의 일례를 표시한 도면이다. 도 6에 도시된 변환 함수는 ProcDecl 함수로써 프로세스 정의에 대한 변환을 정의하고 있다. ProcDecl 함수에 “process N = ProcDef” 입력이 오면 해당하는 Go 코드('func main{' 부터 '}'까지)를 생성하고 메인 함수 내에 ProcDef 심볼을 procDef 함수에 다시 적용한다.6 is a diagram illustrating an example of a transform function according to an embodiment of the present invention. The transformation function shown in FIG. 6 defines a transformation for a process definition as a ProcDecl function. When the "process N = ProcDef" input is given to the ProcDecl function, the corresponding Go code (from 'func main {' to '}') is generated and the ProcDef symbol is reapplied to the procDef function in the main function.
이하, 도 7a 및 도 7b를 참고하여, 본 발명의 일 실시예에 따른 Go 코드 변환 장치가 Circus로 작성된 명세를 입력받아 자동으로 변환하여 출력한 Go 코드의 예를 자세히 살펴보도록 한다. Hereinafter, an example of the Go code, which receives the specification written in the Circus and automatically converts and outputs the output, will be described in detail with reference to FIGS. 7A and 7B.
도 7a는 입력값인 Circus로 작성된 정형 명세의 예시적인 도면이고, 도 7b는 도 7a의 Circus 명세를 입력값으로 하여 미리 정의된 변환 함수들에 의하여 변환된 결과값인 Go 코드를 도시한 도면이다.FIG. 7A is an exemplary diagram of a formal specification created with an input value Circus, and FIG. 7B is a diagram illustrating a Go code, which is a result value converted by predefined conversion functions with the Circus specification of FIG. 7A as an input value .
상태 스키마의 상태 v는 전역변수 v로 선언되며 오퍼레이션 AddOp는 함수 AddOp()로 변환된다. 또한, 프로세스의 전체 액션 (u X ? out!v -> AddOp ; X)는 함수 Accumulator1Main()함수로 정의되며 내용은 함수 내의 코드로 변환된다. 함수 v_Type은 상태 변수 v에 대한 타입 속성이며 함수 콜 앞에 go 키워드가 붙어 코드가 동작할 때 동시에 실행하여 속성 위배 여부를 검증하는 모니터링 코드로 변환된다. 만약 상태 스키마에 불변속성이 정의되어 있다면 이 역시 마찬가지로 동시에 실행하며 모니터링 코드로 변환된다.The state v of the state schema is declared as a global variable v, and the operation AddOp is converted to the function AddOp (). Also, the entire action of the process (u X? Out! V -> AddOp; X) is defined by the function Accumulator1Main () and the contents are converted into code in the function. The function v_Type is a type attribute for the state variable v. It is converted into a monitoring code that checks whether the property is violated by executing the code at the same time when the code is executed with the keyword go before the function call. If an immutable attribute is defined in the state schema, it is also executed concurrently and converted to monitoring code.
다음, Go 코드를 실행하고 동시에 모니터링 코드를 이용하여 속성 위배 여부를 모니터링한다(S300). 일반적으로, 소프트웨어 개발 시 우선 명세 단계에서 1차적으로 Circus 명세가 만족해야 할 속성들을 위배하는지 검증한다. 이후 코딩 단계에서 자동으로 변환된 코드의 동작 중에 만족해야 할 속성들을 위배하는지 여부를 모니터링 코드를 이용하여 모니터링함으로써, 속성 위배 여부를 2차적으로 검증할 수 있다.Next, the Go code is executed and at the same time, the property code violation is monitored using the monitoring code (S300). Generally, during software development, first verify that the Circus specification violates the attributes that must be satisfied. It is possible to secondarily verify whether or not the attribute violation is caused by monitoring using the monitoring code whether or not the attributes to be satisfied are violated during the operation of the automatically converted code in the coding step.
본 발명의 일 실시예에 따른 Go 코드 자동 생성 장치 및 Go 코드 자동 생성 방법을 이용하여, 보다 정확한 Go 코드를 자동으로 생성할 수 있으며, 또한, 모니터링 코드를 추가적으로 생성하여 속성 위배 여부에 대한 모니터링을 수행함으로써 보다 정확하고 신뢰도 높은 소프트웨어 개발이 가능하다.It is possible to automatically generate a more accurate Go code by using the automatic Go code generating device and the Go code automatic generating method according to an embodiment of the present invention and additionally generate a monitoring code to monitor the property violation It is possible to develop more accurate and reliable software.
상술한 스케줄러가 계층적으로 존재하는 실시간 시스템을 정형 검증하는 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 프로그램은 상기 기록매체에 저장되며, 상기 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다. 또한, 상기 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 명령어 세트가 저장되고 실행될 수 있다.A method for formally verifying a real-time system in which the scheduler exists in a hierarchical manner can be implemented in a general-purpose digital computer that can be created as a program that can be executed in a computer and operates the program using a computer-readable recording medium have. The program is stored on the recording medium, and the recording medium may be a storage medium such as a magnetic storage medium (e.g., ROM, floppy disk, hard disk, etc.), an optical reading medium (e.g., CD ROM, . In addition, the recording medium may be distributed and distributed to a network-connected computer system so that a computer-readable instruction set can be stored and executed in a distributed manner.
본 발명에서 개시된 블록도들은 본 발명의 원리들을 구현하기 위한 회로를 개념적으로 표현한 형태라고 당업자에게 해석될 수 있을 것이다. 유사하게, 임의의 흐름 차트, 흐름도, 상태 전이도, 의사코드 등은 컴퓨터 판독가능 매체에서 실질적으로 표현되어, 컴퓨터 또는 프로세서가 명시적으로 도시되든지 아니든지 간에 이러한 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스를 나타낸다는 것이 당업자에게 인식될 것이다. The block diagrams disclosed herein may be construed to those skilled in the art to conceptually represent circuitry for implementing the principles of the present invention. Likewise, any flow chart, flow diagram, state transitions, pseudo code, etc., may be substantially represented in a computer-readable medium to provide a variety of different ways in which a computer or processor, whether explicitly shown or not, It will be appreciated by those skilled in the art.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.
100 : Go 코드 자동 생성 장치
110 : 입력 모듈 120 : 변환 모듈
130 : 모니터링 모듈 180 : 메모리100: Go code automatic generation device
110: input module 120: conversion module
130: Monitoring module 180: Memory
Claims (6)
상기 Circus 명세에서 상태 스키마, 오퍼레이션 스키마, 또는 시스템 행위(system behavior)에 대한 명세 부분을 Go 코드로 변환하는 제1 변환 모듈, 및
상기 Circus 명세에서 불변속성(invariants)에 대한 부분을 Go 코드로 제2 변환 모듈을 포함하되,
상기 제1 변환 모듈은 Go 코드의 실제 동작하는 부분인 제1 코드를 생성하고,
상기 제2 변환 모듈은 상기 제1 코드의 동작 중에 검증 속성 위배 여부를 모니터링하기 위한 제2 코드를 생성하는,
Go 코드 자동 생성 장치.
Circus Input module that receives Circus specification written in formal specification language,
A first transformation module for transforming the specification part of the state schema, operation schema, or system behavior into the Go code in the Circus specification, and
A second transform module for transforming the portion of the invariants in the Circus specification to a Go code,
The first transformation module generates a first code which is an actual operating part of the Go code,
Wherein the second conversion module generates a second code for monitoring whether the verification property violates during operation of the first code,
Go code automatic generation device.
상기 제1 코드를 실행할 때, 상기 제2 코드를 동시에 실행하여 검증 속성 위배 여부를 모니터링하는 검증 모듈을 더 포함하는,
Go 코드 자동 생성 장치.
The method according to claim 1,
Further comprising: a verification module that, when executing the first code, executes the second code concurrently to monitor whether the verification property violates,
Go code automatic generation device.
Go 코드 자동 생성 장치의 입력 모듈이 Circus 정형 명세 언어로 작성된 Circus 명세를 입력받는 Circus 명세 입력 단계; 및
Go 코드 자동 생성 장치의 변환 모듈이 상기 Circus 명세를 변환 함수를 이용하여 Go 코드로 자동 변환하는 Go 코드 생성 단계;를 포함하되,
상기 Go 코드 생성 단계는,
상기 Circus 명세에서 상태 스키마, 오퍼레이션 스키마, 또는 시스템 행위(system behavior)에 대한 명세 부분을 Go 코드의 실제 동작하는 부분인 제1 코드로 변환하는 제1 코드 변환 과정; 및
상기 Circus 명세에서 불변속성(invariants)에 대한 부분을 상기 제1 코드의 동작 중에 검증 속성 위배 여부를 모니터링하기 위한 부분인 제2 코드로 변환하는 제2 코드 변환 과정;을 포함하는,
Circus로부터 Go 코드를 자동으로 생성하는 방법.
A method for automatically generating a Go code from a Circus specification,
A Circus specification input step in which the input module of the Go code automatic generation device receives the Circus specification written in the Circus specification specification language; And
And a Go code generating step of automatically converting the Circus specification into a Go code using a conversion function,
The Go code generation step includes:
A first code conversion step of converting the specification part of the state schema, operation schema, or system behavior into the first code, which is an actual operating part of the Go code, in the Circus specification; And
And a second code conversion process for converting a portion of invariants in the Circus specification to a second code for monitoring whether the verification property violates during operation of the first code.
How to automatically generate Go code from Circus.
Go 코드 자동 생성 장치의 검증 모듈이 상기 제1 코드를 실행할 때, 상기 제2 코드를 동시에 실행하여 검증 속성 위배 여부를 모니터링하는 모니터링 단계를 더 포함하는,
Circus로부터 Go 코드를 자동으로 생성하는 방법.
The method of claim 3,
Further comprising a monitoring step of, when the verification module of the automatic Go-code generating device executes the first code, simultaneously executing the second code to monitor whether the verification property violates the verification code.
How to automatically generate Go code from Circus.
Go 코드 자동 생성 장치의 검증 모듈이 상기 Circus 명세를 정형 검증(Formal Verification)하는 단계를 더 포함하는,
Circus로부터 Go 코드를 자동으로 생성하는 방법.
5. The method of claim 4,
Further comprising: a verification module of the Go code automatic generation device performing a formal verification of the Circus specification.
How to automatically generate Go code from Circus.
상기 Go 코드 생성 단계는,
상기 Circus 명세의 시스템 프로세스는 상기 Go 코드의 메인 함수 내에서 호출되는 각각의 함수로 변환하고,
상기 Circus 명세의 채널은 상기 Go 코드의 채널로 변환하고,
상기 Circus 명세의 상태 스키마의 상태는 Go 코드의 채널로 전역 변수로 변환하고,
상기 Circus 명세의 상태 스키마의 불변속성은 Go 코드의 메인 함수 내의 고루틴(goroutine) 함수로 변환하고,
상기 Circus 명세의 오퍼레이션 스키마는 Go 코드의 함수로 변환하고,
상기 Circus 명세의 오퍼레이션 스키마 내에 선언된 상태는 Go 코드의 함수 내의 지역 변수로 변환하고,
상기 Circus 명세의 오퍼레이션 스키마 내에 선언된 입력 및 출력은 Go 코드의 함수로 입력 및 출력으로 변환하고,
상기 Circus 명세의 액션은 Go 코드의 함수로 변환하는 것을 특징으로 하는,
Circus로부터 Go 코드를 자동으로 생성하는 방법.The method of claim 3,
The Go code generation step includes:
The system process of the Circus specification converts each function to be called in the main function of the Go code,
The channel of the Circus specification is converted into the channel of the Go code,
The state of the state schema of the Circus specification is converted into a global variable as a channel of Go code,
The invariant attribute of the state schema of the Circus specification is converted into a goroutine function in the main function of Go code,
The operation schema of the Circus specification is converted into a function of Go code,
The state declared in the operation schema of the Circus specification is converted into a local variable in the Go code function,
The input and output declared in the operation schema of the Circus specification are converted to input and output as a function of Go code,
And the action of the Circus specification is converted into a function of Go code.
How to automatically generate Go code from Circus.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150186580A KR101731629B1 (en) | 2015-12-24 | 2015-12-24 | Method and device for automatic generating go code from circus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150186580A KR101731629B1 (en) | 2015-12-24 | 2015-12-24 | Method and device for automatic generating go code from circus |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101731629B1 true KR101731629B1 (en) | 2017-05-02 |
Family
ID=58742993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150186580A Expired - Fee Related KR101731629B1 (en) | 2015-12-24 | 2015-12-24 | Method and device for automatic generating go code from circus |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101731629B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947431A (en) * | 2019-03-28 | 2019-06-28 | 北京字节跳动网络技术有限公司 | A kind of code generating method, device, equipment and storage medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070261120A1 (en) | 2006-01-23 | 2007-11-08 | Arbaugh William A | Method & system for monitoring integrity of running computer system |
US20090132995A1 (en) | 2000-04-04 | 2009-05-21 | Jose Iborra | Automatic software production system |
US20100131929A1 (en) | 2008-11-24 | 2010-05-27 | Microsoft Corporation | Efficient invariant inference for program verification |
-
2015
- 2015-12-24 KR KR1020150186580A patent/KR101731629B1/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132995A1 (en) | 2000-04-04 | 2009-05-21 | Jose Iborra | Automatic software production system |
US20070261120A1 (en) | 2006-01-23 | 2007-11-08 | Arbaugh William A | Method & system for monitoring integrity of running computer system |
US20100131929A1 (en) | 2008-11-24 | 2010-05-27 | Microsoft Corporation | Efficient invariant inference for program verification |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947431A (en) * | 2019-03-28 | 2019-06-28 | 北京字节跳动网络技术有限公司 | A kind of code generating method, device, equipment and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528100B (en) | System and method for model-based techniques and processes for safety-critical software development | |
Cabot et al. | UMLtoCSP: a tool for the formal verification of UML/OCL models using constraint programming | |
US9418230B2 (en) | Automated tools for building secure software programs | |
Heidenreich et al. | Closing the gap between modelling and java | |
US8041554B1 (en) | Method and system for the development of high-assurance microcode | |
US7146605B2 (en) | Automatic abstraction of software source | |
US9639442B2 (en) | Modified condition/decision coverage test case automation | |
US20140214396A1 (en) | Specification properties creation for a visual model of a system | |
US10169217B2 (en) | System and method for test generation from software specification models that contain nonlinear arithmetic constraints over real number ranges | |
US9715372B2 (en) | Executable guidance experiences based on implicitly generated guidance models | |
Blanchard et al. | Logic against ghosts: Comparison of two proof approaches for a list module | |
Scandurra et al. | Functional requirements validation by transforming use case models into Abstract State Machines | |
US20050138602A1 (en) | System and method for deriving a process-based specification | |
CN119623391A (en) | Method, system, device and medium for automatically creating digital-analog hybrid simulation environment | |
KR101731629B1 (en) | Method and device for automatic generating go code from circus | |
US20120291019A1 (en) | Program verification apparatus based on model verifying and storage medium | |
Buckl et al. | FTOS: Model-driven development of fault-tolerant automation systems | |
US8412668B2 (en) | Offline formal verification of executable models | |
Popić et al. | The benefits of the coding standards enforcement and it's influence on the developers' coding behaviour: A case study on two small projects | |
KR20190059701A (en) | Method and apparatus for generating DEVS based simulation model and code | |
Ha et al. | Meta-validation of UML structural diagrams and behavioral diagrams with consistency rules | |
CN112559359A (en) | Based on S2ML safety critical system analysis and verification method | |
de Andrade et al. | Test Generation from Bounded Algebraic Specifications using Alloy. | |
Drechsler et al. | Automated and quality-driven requirements engineering | |
Blech | A Tool for the Certification of PLCs based on a Coq Semantics for Sequential Function Charts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
T11-X000 | Administrative time limit extension requested |
St.27 status event code: U-3-3-T10-T11-oth-X000 |
|
P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
PC1903 | Unpaid annual fee |
St.27 status event code: A-4-4-U10-U13-oth-PC1903 Not in force date: 20220425 Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE |
|
K11-X000 | Ip right revival requested |
St.27 status event code: A-6-4-K10-K11-oth-X000 |
|
PC1903 | Unpaid annual fee |
St.27 status event code: N-4-6-H10-H13-oth-PC1903 Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE Not in force date: 20220425 |
|
PR0401 | Registration of restoration |
St.27 status event code: A-6-4-K10-K13-oth-PR0401 |
|
PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 6 |
|
PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 7 |
|
PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 8 |